| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 | 
							- using System;
 
- using System.ComponentModel;
 
- using System.Linq.Expressions;
 
- using InABox.Core;
 
- namespace Comal.Classes
 
- {
 
-     [UserTracking("Project Management")]
 
-     public class Job : Entity, IPersistent, IRemotable, IScheduleAction, IOneToMany<Schedule>, IStringAutoIncrement<Job>,
 
-         ILicense<ProjectManagementLicense>, IExportable, IImportable, IMergeable, IScannable
 
-     {
 
-         #region General
 
-         [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)]
 
-         [EditorSequence(0)]
 
-         public string JobNumber { get; set; }
 
-         //[Obsolete("Replaced by JobNumber", true)]
 
-         //[IntegerEditor(Editable = Editable.Hidden)]
 
-         //public int Number { get; set; }
 
-         [TextBoxEditor]
 
-         [EditorSequence(1)]
 
-         public string Name { get; set; }
 
-         [SecondaryIndex]
 
-         [EnumLookupEditor(typeof(JobType))]
 
-         [EditorSequence(2)]
 
-         public JobType JobType { get; set; }
 
-         [EditorSequence(3)]
 
-         public CustomerLink Customer { get; set; }
 
-         [EditorSequence(4)]
 
-         public Address SiteAddress { get; set; }
 
-         [EditorSequence(5)]
 
-         public AccountLink Account { get; set; }
 
-         #endregion
 
-         [NotesEditor]
 
-         [EditorSequence("Notes", 1)]
 
-         public string[] Notes { get; set; }
 
-         #region Other
 
-         [TextBoxEditor]
 
-         [EditorSequence("Other", 1)]
 
-         public string URL { get; set; }
 
-         [ColorEditor]
 
-         [EditorSequence("Other", 2)]
 
-         public string Color { get; set; }
 
-         #endregion
 
-         #region Project Management
 
-         [TextBoxEditor]
 
-         [EditorSequence("Project Management", 1)]
 
-         public string SetoutsFolder { get; set; }
 
-         [Caption("Supervisor")]
 
-         [EditorSequence("Project Management", 2)]
 
-         public EmployeeLink EmployeeLink { get; set; }
 
-         [Caption("Manager")]
 
-         [EditorSequence("Project Management", 3)]
 
-         public EmployeeLink ManagerLink { get; set; }
 
-         [TimeOfDayEditor]
 
-         [EditorSequence("Project Management", 4)]
 
-         public TimeSpan UsualStart { get; set; }
 
-         [TimeOfDayEditor]
 
-         [EditorSequence("Project Management", 5)]
 
-         public TimeSpan UsualFinish { get; set; }
 
-         // This is the Activity to which the Usual Start/Finish Applies
 
-         // Other activitiy timesheets are not affected by this
 
-         [EditorSequence("Project Management", 6)]
 
-         public ActivityLink UsualActivity { get; set; }
 
-         [EditorSequence("Project Management", 7)]
 
-         public DateTime ExpectedCompletionDate { get; set; }
 
-         [EditorSequence("Project Management", 8)]
 
-         public DateTime Completed { get; set; }
 
-         //[SecondaryIndex]
 
-         //[EditorSequence(9)]
 
-         //public Boolean Active { get; set; }
 
-         [EditorSequence("Project Management", 9)]
 
-         public JobStatusLink JobStatus { get; set; }
 
-         #endregion
 
-         [TimeOfDayEditor(Editable = Editable.Hidden)]
 
-         public TimeSpan LabourHours { get; set; }
 
-         [NullEditor]
 
-         [Obsolete("Why does this even exist?")]
 
-         public ProductStyleLink Style { get; set; }
 
-         [NullEditor]
 
-         [Aggregate(typeof(JobAssignmentCount))]
 
-         public int Assignments { get; set; }
 
-         [NullEditor]
 
-         [Aggregate(typeof(JobOpenAssignmentCount))]
 
-         public int OpenAssignments { get; set; }
 
-         [NullEditor]
 
-         public ScheduleLink ScheduleLink { get; set; }
 
-         [DoNotPersist]
 
-         [DoNotSerialize]
 
-         public static String JobNumberPrefix { get; set; }
 
-         public Expression<Func<Job, string>> AutoIncrementField() => x => x.JobNumber;
 
-         public Filter<Job> AutoIncrementFilter() => null;
 
-         public String AutoIncrementPrefix() => JobNumberPrefix;
 
-         public string AutoIncrementFormat() => "{0:D4}";
 
-         
 
-         protected override void Init()
 
-         {
 
-             base.Init();
 
-             Customer = new CustomerLink(() => this);
 
-             Account = new AccountLink();
 
-             //Designer = new EmployeeLink();
 
-             //ProjectManager = new EmployeeLink();
 
-             SiteAddress = new Address();
 
-             UsualActivity = new ActivityLink();
 
-             EmployeeLink = new EmployeeLink();
 
-             ManagerLink = new EmployeeLink();
 
-             ScheduleLink = new ScheduleLink();
 
-             JobStatus = new JobStatusLink();
 
-             JobType = JobType.Project;
 
-             //Active = true;
 
-             Notes = new string[] { };
 
-             Customer.Account.PropertyChanged += Account_PropertyChanged;
 
-             Customer.Delivery.PropertyChanged += Delivery_PropertyChanged;
 
-             Style = new ProductStyleLink();
 
-         }
 
-         private void Delivery_PropertyChanged(object sender, PropertyChangedEventArgs e)
 
-         {
 
-             var value = CoreUtils.GetPropertyValue(Customer.Delivery, e.PropertyName);
 
-             CoreUtils.SetPropertyValue(SiteAddress, e.PropertyName, value);
 
-         }
 
-         private void Account_PropertyChanged(object sender, PropertyChangedEventArgs e)
 
-         {
 
-             if (e.PropertyName.Equals("ID"))
 
-                 Account.ID = Customer.Account.ID;
 
-             else if (e.PropertyName.Equals("Code"))
 
-                 Account.Code = Customer.Account.Code;
 
-             else if (e.PropertyName.Equals("Name"))
 
-                 Account.Name = Customer.Account.Name;
 
-         }
 
-         public override string ToString()
 
-         {
 
-             return string.Format("{0}: {1}", JobNumber, Name);
 
-         }
 
-     }
 
- }
 
 
  |