123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Linq.Expressions;
- using InABox.Clients;
- using InABox.Core;
- namespace Comal.Classes
- {
-
- public class JobActivityLookup : LookupGenerator<JobActivity>
- {
- public JobActivityLookup(JobActivity[] items) : base(items)
- {
- AddColumn("Code", typeof(string));
- AddColumn("Description", typeof(string));
- AddColumn("Color", typeof(string));
- }
- protected override void DoGenerateLookups()
- {
- Clear();
- var acts = new Client<Activity>().Query(
- new Filter<Activity>(x=>x.IsLeave).IsEqualTo(false),
- Columns.None<Activity>().Add(x => x.ID, x => x.Code, x => x.Description, x => x.Color),
- new SortOrder<Activity>(x => x.Code)
- );
- foreach (var row in acts.Rows)
- AddValue(
- row.Get<Activity, Guid>(col => col.ID),
- string.Format("{0}: {1}", row.Get<Activity, string>(col => col.Code),
- row.Get<Activity, string>(col => col.Description)),
- row.Get<Activity, string>(col => col.Code),
- row.Get<Activity, string>(col => col.Description),
- row.Get<Activity, string>(col => col.Color)
- );
- }
- }
- public class JobActivityActualAggregate : CoreAggregate<JobActivitySummary, Assignment, TimeSpan>
- {
- public override Expression<Func<Assignment, TimeSpan>> Aggregate => x => x.Actual.Duration;
- public override Dictionary<Expression<Func<Assignment, object>>, Expression<Func<JobActivitySummary, object>>> Links =>
- new Dictionary<Expression<Func<Assignment, object>>, Expression<Func<JobActivitySummary, object>>>()
- {
- { Assignment => Assignment.JobLink.ID, JobActivitySummary => JobActivitySummary.JobLink.ID },
- { Assignment => Assignment.ActivityLink.ID, JobActivitySummary => JobActivitySummary.ActivityLink.ID }
- };
- public override AggregateCalculation Calculation => AggregateCalculation.Sum;
- }
-
- public class JobActivityBookedAggregate : CoreAggregate<JobActivitySummary, Assignment, TimeSpan>
- {
- public override Expression<Func<Assignment, TimeSpan>> Aggregate => x => x.Booked.Duration;
- public override Dictionary<Expression<Func<Assignment, object>>, Expression<Func<JobActivitySummary, object>>> Links =>
- new Dictionary<Expression<Func<Assignment, object>>, Expression<Func<JobActivitySummary, object>>>()
- {
- { Assignment => Assignment.JobLink.ID, JobActivitySummary => JobActivitySummary.JobLink.ID },
- { Assignment => Assignment.ActivityLink.ID, JobActivitySummary => JobActivitySummary.ActivityLink.ID }
- };
- public override AggregateCalculation Calculation => AggregateCalculation.Sum;
- }
-
- public class JobActivityBudgetAggregate : CoreAggregate<JobActivitySummary, JobActivity, TimeSpan>
- {
- public override Expression<Func<JobActivity, TimeSpan>> Aggregate => x => x.Budget;
- public override Dictionary<Expression<Func<JobActivity, object>>, Expression<Func<JobActivitySummary, object>>> Links =>
- new Dictionary<Expression<Func<JobActivity, object>>, Expression<Func<JobActivitySummary, object>>>()
- {
- { JobActivity => JobActivity.JobLink.ID, JobActivitySummary => JobActivitySummary.JobLink.ID },
- { JobActivity => JobActivity.ActivityLink.ID, JobActivitySummary => JobActivitySummary.ActivityLink.ID }
- };
- public override AggregateCalculation Calculation => AggregateCalculation.Sum;
- }
-
- public class JobActivityQuoteAggregate : CoreAggregate<JobActivitySummary, JobActivity, TimeSpan>
- {
- public override Expression<Func<JobActivity, TimeSpan>> Aggregate => x => x.Quote;
- public override Dictionary<Expression<Func<JobActivity, object>>, Expression<Func<JobActivitySummary, object>>> Links =>
- new Dictionary<Expression<Func<JobActivity, object>>, Expression<Func<JobActivitySummary, object>>>()
- {
- { JobActivity => JobActivity.JobLink.ID, JobActivitySummary => JobActivitySummary.JobLink.ID },
- { JobActivity => JobActivity.ActivityLink.ID, JobActivitySummary => JobActivitySummary.ActivityLink.ID }
- };
- public override AggregateCalculation Calculation => AggregateCalculation.Sum;
- }
- public interface IJobActivity
- {
- JobLink JobLink { get; set; }
- AssignmentActivityLink ActivityLink { get; set; }
- }
-
- public class JobActivityAssignmentUnionGenerator : AutoEntityUnionGenerator<IJobActivity>
- {
- protected override void Configure()
- {
- AddTable<JobActivity>();
- AddTable<Assignment>();
- }
- public override bool Distinct => true;
- public override Column<IJobActivity>[] IDColumns => new Column<IJobActivity>[]
- {
- new Column<IJobActivity>(x => x.JobLink.ID),
- new Column<IJobActivity>(x => x.ActivityLink.ID)
- };
- }
- [AutoEntity(typeof(JobActivityAssignmentUnionGenerator))]
- public class JobActivitySummary : Entity, IRemotable, IPersistent, IJobActivity, IOneToMany<Job>, ILicense<ProjectManagementLicense>
- {
- [NullEditor]
- public JobLink JobLink { get; set; }
- [EditorSequence(1)]
- [Caption("Activity",IncludePath = false)]
- public AssignmentActivityLink ActivityLink { get; set; }
- [EditorSequence(2)]
- [DurationEditor(Visible = Visible.Default, Summary = Summary.Sum)]
- [Aggregate(typeof(JobActivityQuoteAggregate))]
- public TimeSpan Quote { get; set; }
-
- [EditorSequence(3)]
- [DurationEditor(Visible = Visible.Default, Summary = Summary.Sum)]
- [Aggregate(typeof(JobActivityBudgetAggregate))]
- public TimeSpan Budget { get; set; }
-
- [EditorSequence(4)]
- [DurationEditor(Visible = Visible.Default, Summary = Summary.Sum)]
- [Aggregate(typeof(JobActivityBookedAggregate))]
- public TimeSpan Booked { get; set; }
-
- [EditorSequence(5)]
- [DurationEditor(Visible = Visible.Default, Summary = Summary.Sum)]
- [Aggregate(typeof(JobActivityActualAggregate))]
- public TimeSpan Actual { get; set; }
- }
-
-
- public class JobActivity : Entity, IRemotable, IPersistent, IManyToMany<Job, Activity>, ILicense<ProjectManagementLicense>, IJobActivity
- {
- [EditorSequence(1)]
- [EntityRelationship(DeleteAction.Cascade)]
- public JobLink JobLink { get; set; }
- [EditorSequence(2)]
- [EntityRelationship(DeleteAction.SetNull)]
- public AssignmentActivityLink ActivityLink { get; set; }
-
- [EditorSequence(3)]
- [DurationEditor(Summary = Summary.Sum)]
- public TimeSpan Quote { get; set; }
-
- [EditorSequence(4)]
- [DurationEditor(Summary = Summary.Sum)]
- public TimeSpan Budget { get; set; }
- }
-
- }
|