123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- using System;
- using System.Linq.Expressions;
- using InABox.Core;
- namespace Comal.Classes
- {
- //public class DeliveryAssignments : CoreAggregate<Assignment, Delivery, Guid>
- //{
- // public override Expression<Func<Delivery, Guid>> Aggregate => Delivery => Delivery.ID;
- // //public Expression<Func<Delivery, Guid>> Link => x => x.Assignment.ID;
- // public override AggregateCalculation Calculation => AggregateCalculation.Count;
- // public override Dictionary<Expression<Func<Delivery, object>>, Expression<Func<Assignment, object>>> Links =>
- // new Dictionary<Expression<Func<Delivery, object>>, Expression<Func<Assignment, object>>>
- // {
- // { Delivery => Delivery.Assignment.ID, x => x.ID }
- // };
- //}
- /// <summary>
- /// An assignment represents an anticipated booking for an employee, much like a diary entry
- /// <exclude />
- /// </summary>
- [UserTracking("Assignments")]
- [Caption("Assignments")]
- public class Assignment : Entity, IPersistent, IRemotable, INumericAutoIncrement<Assignment>, IOneToMany<Employee>, IOneToMany<Job>,
- IOneToMany<Kanban>, ILicense<SchedulingControlLicense>, IJobActivity
- {
- private bool bChanging;
- [IntegerEditor(Editable = Editable.Hidden)]
- [EditorSequence(1)]
- public int Number { get; set; }
- [DateEditor]
- [EditorSequence(2)]
- public DateTime Date { get; set; }
- [EntityRelationship(DeleteAction.Cascade)]
- [EditorSequence(3)]
- public EmployeeLink EmployeeLink { get; set; }
- [TextBoxEditor]
- [EditorSequence(4)]
- public string Title { get; set; }
- [MemoEditor]
- [EditorSequence(5)]
- public string Description { get; set; }
- [TimeOfDayEditor]
- [EditorSequence(6)]
- public TimeSpan Start { get; set; }
- [DurationEditor(Summary = Summary.Sum)]
- [EditorSequence(7)]
- public TimeSpan Duration { get; set; }
- [TimeOfDayEditor]
- [EditorSequence(8)]
- public TimeSpan Finish { get; set; }
- [EditorSequence(9)]
- [EntityRelationship(DeleteAction.SetNull)]
- public KanbanLink Task { get; set; }
- [EditorSequence(10)]
- public JobLink JobLink { get; set; }
- [EditorSequence(11)]
- public JobITPLink ITP { get; set; }
- [EditorSequence(12)]
- public AssignmentActivityLink ActivityLink { get; set; }
- [TimestampEditor]
- [EditorSequence(13)]
- public DateTime Completed { get; set; }
- [TimestampEditor]
- [EditorSequence(14)]
- public DateTime Processed { get; set; }
- [NullEditor]
- [EntityRelationship(DeleteAction.Cascade)]
- public LeaveRequestLink LeaveRequestLink { get; set; }
- [NullEditor]
- public DeliveryLink Delivery { get; set; }
- [NullEditor]
- [EntityRelationship(DeleteAction.SetNull)]
- public TimeSheetLink TimeSheetLink { get; set; }
- public Expression<Func<Assignment, int>> AutoIncrementField()
- {
- return x => x.Number;
- }
- public Filter<Assignment> AutoIncrementFilter()
- {
- return null;
- }
- protected override void DoPropertyChanged(string name, object before, object after)
- {
- base.DoPropertyChanged(name, before, after);
- if (bChanging)
- return;
- bChanging = true;
- if (name.Equals("Start"))
- Finish = ((TimeSpan)after).Add(Duration);
- else if (name.Equals("Finish"))
- Duration = ((TimeSpan)after).Subtract(Start);
- else if (name.Equals("Duration"))
- Finish = Start.Add((TimeSpan)after);
- bChanging = false;
- }
- protected override void Init()
- {
- base.Init();
- JobLink = new JobLink();
- ITP = new JobITPLink();
- EmployeeLink = new EmployeeLink();
- LeaveRequestLink = new LeaveRequestLink();
- ActivityLink = new AssignmentActivityLink();
- TimeSheetLink = new TimeSheetLink();
- Delivery = new DeliveryLink();
- Task = new KanbanLink();
- }
- }
- }
|