| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | 
							- 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),
 
-                 new Columns<Activity>(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.Duration;
 
-         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(JobActivityBudgetAggregate))]
 
-         public TimeSpan Budget { get; set; }
 
-         
 
-         [EditorSequence(3)]
 
-         [DurationEditor(Visible = Visible.Default, Summary = Summary.Sum)]
 
-         [Aggregate(typeof(JobActivityBookedAggregate))]
 
-         public TimeSpan Booked { get; set; }        
 
-         
 
-         [EditorSequence(3)]
 
-         [DurationEditor(Visible = Visible.Default, Summary = Summary.Sum)]
 
-         [Aggregate(typeof(JobActivityActualAggregate))]
 
-         public TimeSpan Actual { get; set; }
 
-         protected override void Init()
 
-         {
 
-             base.Init();
 
-             JobLink = new JobLink();
 
-             ActivityLink = new AssignmentActivityLink();
 
-         }
 
-     }
 
-     
 
-     
 
-     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 Duration { get; set; }
 
-         
 
-         protected override void Init()
 
-         {
 
-             base.Init();
 
-             JobLink = new JobLink();
 
-             ActivityLink = new AssignmentActivityLink();
 
-         }
 
-     }
 
-     
 
- }
 
 
  |