123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- 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; }
- public Expression<Func<Job, string>> AutoIncrementField()
- {
- return x => x.JobNumber;
- }
- public Filter<Job> AutoIncrementFilter()
- {
- return null;
- }
- public string AutoIncrementFormat()
- {
- return "{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);
- }
- }
- }
|