123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.ComponentModel;
- using System.Linq;
- using System.Runtime.CompilerServices;
- using Comal.Classes;
- using comal.timesheets;
- using InABox.Core;
- using Syncfusion.Drawing;
- using Syncfusion.Pdf;
- using Xamarin.Forms.Internals;
- namespace comal.timesheets
- {
- public class AssignmentFormInstance : INotifyPropertyChanged
- {
- private Guid _id = Guid.Empty;
- public Guid ID
- {
- get => _id;
- set => SetField(ref _id, value);
- }
- private String _description = "";
- public String Description
- {
- get => _description;
- set => SetField(ref _description, value);
- }
- private bool _completed = false;
- public bool Completed
- {
- get => _completed;
- set => SetField(ref _completed, value);
- }
- public event PropertyChangedEventHandler PropertyChanged;
- protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
- protected bool SetField<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
- {
- if (EqualityComparer<T>.Default.Equals(field, value)) return false;
- field = value;
- OnPropertyChanged(propertyName);
- return true;
- }
- }
- public class AssignmentEditDataModel : SingleDataModel<Assignment, AssignmentEditDataModelItem>
- {
- public Guid JobID { get; set; }
-
- public Guid EmployeeID { get; set; }
-
- public List<KeyValuePair<Guid, String>> Activities { get; private set; }
- public List<AssignmentFormInstance> Forms { get; private set; }
-
- public PointF Coordinates { get; set; }
-
- public override Columns<Assignment> Columns => new Columns<Assignment>(x => x.ID)
- .Add(x=>x.Number)
- .Add(x => x.Title)
- .Add(x => x.Description)
- .Add(x => x.Date)
- .Add(x => x.Actual.Start)
- .Add(x => x.Actual.Duration)
- .Add(x => x.Actual.Finish)
- .Add(x => x.Booked.Start)
- .Add(x => x.Booked.Duration)
- .Add(x => x.Booked.Finish)
- .Add(c => c.JobLink.ID)
- .Add(c => c.JobLink.JobNumber)
- .Add(c => c.JobLink.Name)
- .Add(c => c.ActivityLink.ID)
- .Add(c => c.ActivityLink.Code)
- .Add(c => c.ActivityLink.Description)
- .Add(c => c.EmployeeLink.ID)
- .Add(c => c.ActivityLink.Color)
- .Add(c => c.Task.ID)
- .Add(c => c.Task.Number)
- .Add(c => c.Task.Title)
- .Add(c => c.Completed);
- public override void BeforeLoad(MultiQuery query, Guid id)
- {
- base.BeforeLoad(query, id);
- query.Add<EmployeeActivity>(
- new Filter<EmployeeActivity>(x => x.ID).IsEqualTo(EmployeeID),
- new Columns<EmployeeActivity>(x=>x.Activity.ID).Add(x=>x.Activity.Code).Add(x=>x.Activity.Description)
- );
-
- if (JobID != Guid.Empty)
- {
- query.Add<Job>(
- new Filter<Job>(x => x.ID).IsEqualTo(JobID),
- new Columns<Job>(x => x.SiteAddress.Location.Latitude)
- .Add(x => x.SiteAddress.Location.Longitude)
- );
- }
- query.Add<AssignmentForm>(
- new Filter<AssignmentForm>(x => x.Parent.ID).IsEqualTo(id),
- new Columns<AssignmentForm>(x => x.ID)
- .Add(x => x.Form.Code)
- .Add(x => x.Form.Description)
- .Add(x => x.FormCompleted)
- );
- }
- public override void AfterLoad(MultiQuery query, Guid id)
- {
- base.AfterLoad(query, id);
-
- Activities = query.Get<EmployeeActivity>().ToDictionary<EmployeeActivity, Guid, String>(
- x => x.Activity.ID,
- (row) => String.Format("{0}: {1}", row.Get<EmployeeActivity, String>(c => c.Activity.Code),
- row.Get<EmployeeActivity, String>(c => c.Activity.Description)),
- x => x.Activity.Code
- ).ToList();
- if (JobID != Guid.Empty)
- {
- Coordinates = query.Get<Job>().Rows.Select(r => new PointF(
- (float)r.Get<Job, double>(c => c.SiteAddress.Location.Longitude),
- (float)r.Get<Job, double>(c => c.SiteAddress.Location.Latitude)
- )).FirstOrDefault();
- }
- else
- Coordinates = PointF.Empty;
- Forms = query.Get<AssignmentForm>()
- .Rows
- .Select(row => new AssignmentFormInstance()
- {
- ID = row.Get<AssignmentForm,Guid>(c=>c.ID),
- Description = row.Get<AssignmentForm, String>(c => c.Form.Description),
- Completed = !row.Get<AssignmentForm,DateTime>(c=>c.FormCompleted).IsEmpty()
- }).ToList();
- //.ToDictionary<AssignmentForm, Guid, String>(
- //x => x.ID,
- //(row) => String.Format("{0}: {1}", row.Get<AssignmentForm, String>(c => c.Form.Code),
- //
- //x => x.Form.Code
- //).ToList();
- }
- }
-
- public class AssignmentEditDataModelItem : SingleDataModelItem<Assignment>
- {
-
- public Guid ID => GetValue(x => x.ID);
-
- public Guid EmployeeID
- {
- get => GetValue(c => c.EmployeeLink.ID);
- set => UpdateValue(c => c.EmployeeLink.ID, value);
- }
- public int Number
- {
- get => GetValue(c => c.Number);
- set => UpdateValue(c=>c.Number,value);
- }
-
- public String Subject
- {
- get => GetValue(c => c.Title);
- set => UpdateValue(c=>c.Title,value);
- }
- public String Description
- {
- get => GetValue(c => c.Description);
- set => UpdateValue(c => c.Description, value);
- }
-
- public DateTime Date
- {
- get => GetValue(c => c.Date);
- set => UpdateValue(c => c.Date, value);
- }
- public TimeSpan Start
- {
- get
- {
- var start = GetValue(c => c.Actual.Start);
- if (start == TimeSpan.Zero)
- start = GetValue(c => c.Booked.Start);
- return start;
- }
- set => UpdateValue(c => c.Actual.Start, value);
- }
- public TimeSpan Duration
- {
- get
- {
- var duration = GetValue(c => c.Actual.Duration);
- if (duration == TimeSpan.Zero)
- duration = GetValue(c => c.Booked.Duration);
- return duration;
- }
- set => UpdateValue(c => c.Actual.Duration, value);
- }
-
- public TimeSpan Finish
- {
- get
- {
- var finish = GetValue(c => c.Actual.Finish);
- if (finish == TimeSpan.Zero)
- finish = GetValue(c => c.Booked.Finish);
- return finish;
- }
- set => UpdateValue(c => c.Actual.Finish, value);
- }
-
- public Guid JobID
- {
- get => GetValue(c => c.JobLink.ID);
- set => UpdateValue(c => c.JobLink.ID, value);
- }
-
- public String JobNumber
- {
- get => GetValue(c => c.JobLink.JobNumber);
- set
- {
- UpdateValue(c => c.JobLink.JobNumber, value, false);
- DoPropertyChanged(nameof(JobDisplay));
- }
- }
-
- public String JobName
- {
- get => GetValue(c => c.JobLink.Name);
- set
- {
- UpdateValue(c => c.JobLink.Name, value, false);
- DoPropertyChanged(nameof(JobDisplay));
- }
- }
-
- public String JobDisplay => JobID != Guid.Empty
- ? String.Format("{0}: {1}", JobNumber, JobName )
- : "(No Job Selected)";
-
- public Guid TaskID
- {
- get => GetValue(c => c.Task.ID);
- set => UpdateValue(c => c.Task.ID, value);
- }
-
- public int TaskNumber
- {
- get => GetValue(c => c.Task.Number);
- set
- {
- UpdateValue(c => c.Task.Number, value, false);
- DoPropertyChanged(nameof(TaskDisplay));
- }
- }
-
- public String TaskName
- {
- get => GetValue(c => c.Task.Title);
- set
- {
- UpdateValue(c => c.Task.Title, value, false);
- DoPropertyChanged(nameof(TaskDisplay));
- }
- }
-
- public String TaskDisplay => TaskID != Guid.Empty
- ? String.Format("{0}: {1}", TaskNumber, TaskName )
- : "(No Task Selected)";
-
- public Guid ActivityID
- {
- get => GetValue(c => c.ActivityLink.ID);
- set => UpdateValue(c => c.ActivityLink.ID, value);
- }
-
- public String ActivityCode
- {
- get => GetValue(c => c.ActivityLink.Code);
- set
- {
- UpdateValue(c => c.ActivityLink.Code, value, false);
- DoPropertyChanged(nameof(ActivityDisplay));
- }
- }
-
- public String ActivityDescription
- {
- get => GetValue(c => c.ActivityLink.Description);
- set
- {
- UpdateValue(c => c.ActivityLink.Description, value, false);
- DoPropertyChanged(nameof(ActivityDisplay));
- }
- }
-
- public String ActivityColor
- {
- get => GetValue(c => c.ActivityLink.Color);
- set
- {
- UpdateValue(c => c.ActivityLink.Color, value, false);
- DoPropertyChanged(nameof(ActivityColor));
- }
- }
- public String ActivityDisplay => ActivityID != Guid.Empty
- ? String.Format("{0}: {1}", ActivityCode, ActivityDescription)
- : "(No Activity Selected)";
- public DateTime Completed
- {
- get => GetValue(c => c.Completed);
- set
- {
- UpdateValue(c => c.Completed, value);
- DoPropertyChanged(nameof(Completed));
- }
- }
-
- }
- }
|