|
@@ -11,300 +11,317 @@ using InABox.DynamicGrid;
|
|
|
using InABox.WPF;
|
|
|
using InABox.Wpf;
|
|
|
using Syncfusion.Linq;
|
|
|
+using InABox.Configuration;
|
|
|
|
|
|
-namespace PRSDesktop
|
|
|
+namespace PRSDesktop;
|
|
|
+
|
|
|
+public delegate void DeliveryChangedEvent(object sender);
|
|
|
+
|
|
|
+public class DeliveryListSettings : IUserConfigurationSettings
|
|
|
{
|
|
|
- public delegate void DeliveryChangedEvent(object sender);
|
|
|
+ public DynamicGridSelectedFilterSettings Filters { get; set; } = new();
|
|
|
+}
|
|
|
+
|
|
|
+public class DeliveryList : DynamicDataGrid<Delivery>, IMasterDetailControl<Job,Delivery>
|
|
|
+{
|
|
|
+ private readonly BitmapImage docs = PRSDesktop.Resources.doc_png.AsBitmapImage();
|
|
|
+
|
|
|
+ private DeliveryListSettings _settings;
|
|
|
+
|
|
|
+ public DateTime BookingSlot { get; set; }
|
|
|
+ public Guid EmployeeID { get; set; }
|
|
|
+
|
|
|
+ public Job? Master { get; set; }
|
|
|
+
|
|
|
+ public Filter<Delivery> MasterDetailFilter => Master != null
|
|
|
+ ? Master.ID != Guid.Empty
|
|
|
+ ? new Filter<Delivery>(x => x.Job.ID).IsEqualTo(Master.ID)
|
|
|
+ : new Filter<Delivery>().None()
|
|
|
+ : new Filter<Delivery>().All();
|
|
|
+
|
|
|
+ public bool AllJobs { get; }
|
|
|
|
|
|
- public class DeliveryList : DynamicDataGrid<Delivery>, IMasterDetailControl<Job,Delivery>
|
|
|
+ public DeliveryList()
|
|
|
{
|
|
|
- private readonly BitmapImage docs = PRSDesktop.Resources.doc_png.AsBitmapImage();
|
|
|
-
|
|
|
- public DateTime BookingSlot { get; set; }
|
|
|
- public Guid EmployeeID { get; set; }
|
|
|
-
|
|
|
- public Job? Master { get; set; }
|
|
|
-
|
|
|
- public Filter<Delivery> MasterDetailFilter => Master != null
|
|
|
- ? Master.ID != Guid.Empty
|
|
|
- ? new Filter<Delivery>(x => x.Job.ID).IsEqualTo(Master.ID)
|
|
|
- : new Filter<Delivery>().None()
|
|
|
- : new Filter<Delivery>().All();
|
|
|
-
|
|
|
- public bool AllJobs { get; }
|
|
|
-
|
|
|
- public DeliveryList()
|
|
|
- {
|
|
|
- ActionColumns.Add(new DynamicImageColumn(DocumentsImage, DocumentsClick) { Position = DynamicActionColumnPosition.Start });
|
|
|
+ _settings = new UserConfiguration<DeliveryListSettings>().Load();
|
|
|
+ FilterComponent.SetSettings(_settings.Filters, false);
|
|
|
+ FilterComponent.OnFiltersSelected += FilterComponent_OnFilterSelected;
|
|
|
|
|
|
- HiddenColumns.Add(x => x.Notes);
|
|
|
- HiddenColumns.Add(x => x.Job.ID);
|
|
|
- HiddenColumns.Add(x => x.Completed);
|
|
|
- HiddenColumns.Add(x => x.Documents);
|
|
|
- HiddenColumns.Add(x => x.Contact.ID);
|
|
|
- HiddenColumns.Add(x => x.Contact.Name);
|
|
|
+ ActionColumns.Add(new DynamicImageColumn(DocumentsImage, DocumentsClick) { Position = DynamicActionColumnPosition.Start });
|
|
|
|
|
|
- OnCustomiseEditor += CustomiseEditor;
|
|
|
- }
|
|
|
+ HiddenColumns.Add(x => x.Notes);
|
|
|
+ HiddenColumns.Add(x => x.Job.ID);
|
|
|
+ HiddenColumns.Add(x => x.Completed);
|
|
|
+ HiddenColumns.Add(x => x.Documents);
|
|
|
+ HiddenColumns.Add(x => x.Contact.ID);
|
|
|
+ HiddenColumns.Add(x => x.Contact.Name);
|
|
|
|
|
|
- protected override void DoReconfigure(FluentList<DynamicGridOption> options)
|
|
|
- {
|
|
|
- base.DoReconfigure(options);
|
|
|
-
|
|
|
- options.BeginUpdate();
|
|
|
- options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.AddRows, DynamicGridOption.EditRows, DynamicGridOption.SelectColumns,
|
|
|
- DynamicGridOption.FilterRows);
|
|
|
- if (Security.CanDelete<Delivery>())
|
|
|
- options.Add(DynamicGridOption.DeleteRows);
|
|
|
- options.EndUpdate();
|
|
|
- }
|
|
|
+ OnCustomiseEditor += CustomiseEditor;
|
|
|
+ }
|
|
|
|
|
|
+ private void FilterComponent_OnFilterSelected(DynamicGridSelectedFilterSettings filters)
|
|
|
+ {
|
|
|
+ _settings.Filters = filters;
|
|
|
+ _settings.SaveUser();
|
|
|
+ }
|
|
|
|
|
|
+ protected override void DoReconfigure(FluentList<DynamicGridOption> options)
|
|
|
+ {
|
|
|
+ base.DoReconfigure(options);
|
|
|
+
|
|
|
+ options.BeginUpdate();
|
|
|
+ options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.AddRows, DynamicGridOption.EditRows, DynamicGridOption.SelectColumns,
|
|
|
+ DynamicGridOption.FilterRows);
|
|
|
+ if (Security.CanDelete<Delivery>())
|
|
|
+ options.Add(DynamicGridOption.DeleteRows);
|
|
|
+ options.EndUpdate();
|
|
|
+ }
|
|
|
|
|
|
- public event DeliveryChangedEvent DeliveryChanged;
|
|
|
|
|
|
- private void CustomiseEditor(IDynamicEditorForm sender, Delivery[]? items, DynamicGridColumn column, BaseEditor editor)
|
|
|
+
|
|
|
+ public event DeliveryChangedEvent DeliveryChanged;
|
|
|
+
|
|
|
+ private void CustomiseEditor(IDynamicEditorForm sender, Delivery[]? items, DynamicGridColumn column, BaseEditor editor)
|
|
|
+ {
|
|
|
+ if (column.ColumnName.Equals("Completed"))
|
|
|
{
|
|
|
- if (column.ColumnName.Equals("Completed"))
|
|
|
- {
|
|
|
- editor.Editable = Security.IsAllowed<CanSkipDeliveryPhotos>() ? Editable.Enabled : Editable.Disabled;
|
|
|
- }
|
|
|
- // else if (column.ColumnName.Equals("Contact.ID"))
|
|
|
- // {
|
|
|
- // editor.Editable = Editable.Hidden;
|
|
|
- // }
|
|
|
- // else if (column.ColumnName.Equals("Contact.Name"))
|
|
|
- // {
|
|
|
- // editor.Editable = Editable.Enabled;
|
|
|
- // (editor as TextBoxEditor).Buttons = new[]
|
|
|
- // {
|
|
|
- // new(items?.FirstOrDefault(), "Select", 50, ContactNameLookup, true),
|
|
|
- // new EditorButton(items?.FirstOrDefault(), "Clear", 50, ContactNameClear, true)
|
|
|
- // };
|
|
|
- // }
|
|
|
+ editor.Editable = Security.IsAllowed<CanSkipDeliveryPhotos>() ? Editable.Enabled : Editable.Disabled;
|
|
|
}
|
|
|
-
|
|
|
- // private void ContactNameClear(object editor, object? item)
|
|
|
- // {
|
|
|
- // if (item is not Delivery delivery)
|
|
|
- // return;
|
|
|
- //
|
|
|
- // delivery.Contact.ID = Guid.Empty;
|
|
|
- // delivery.Address.Street = "";
|
|
|
- // delivery.Address.City = "";
|
|
|
- // delivery.Address.State = "";
|
|
|
- // delivery.Address.PostCode = "";
|
|
|
- //
|
|
|
- // if(editor is BaseDynamicEditorControl baseEditor)
|
|
|
- // {
|
|
|
- // baseEditor.SetValue(baseEditor.ColumnName, "");
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // private void ContactNameLookup(object editor, object? item)
|
|
|
+ // else if (column.ColumnName.Equals("Contact.ID"))
|
|
|
// {
|
|
|
- // var contacts = new MultiSelectDialog<Contact>(
|
|
|
- // null,
|
|
|
- // null,
|
|
|
- // false
|
|
|
- // );
|
|
|
- //
|
|
|
- // if (contacts.ShowDialog() != true)
|
|
|
- // return;
|
|
|
- //
|
|
|
- // var contact = contacts.Items().FirstOrDefault();
|
|
|
- // if (contact == null)
|
|
|
- // return;
|
|
|
- // if (item is not Delivery delivery)
|
|
|
- // return;
|
|
|
- //
|
|
|
- // delivery.Contact.ID = contact.ID;
|
|
|
- // delivery.Address.Street = contact.Address.Street;
|
|
|
- // delivery.Address.City = contact.Address.City;
|
|
|
- // delivery.Address.State = contact.Address.State;
|
|
|
- // delivery.Address.PostCode = contact.Address.PostCode;
|
|
|
- //
|
|
|
- // if (editor is BaseDynamicEditorControl baseEditor)
|
|
|
- // {
|
|
|
- // baseEditor.SetValue(baseEditor.ColumnName, contact.Name);
|
|
|
- // }
|
|
|
- // //SetEditorValue(item, "Contact.Name", contact.Name);
|
|
|
- // //SetEditorValue(item,"Address.Street",contact.Address.Street);
|
|
|
- // //SetEditorValue(item, "Address.City",contact.Address.City);
|
|
|
- // //SetEditorValue(item, "Address.State",contact.Address.State);
|
|
|
- // //SetEditorValue(item, "Address.PostCode",contact.Address.PostCode);
|
|
|
+ // editor.Editable = Editable.Hidden;
|
|
|
// }
|
|
|
-
|
|
|
- // protected override Dictionary<string, object?> EditorValueChanged(IDynamicEditorForm editor, Delivery[] items, string name, object value)
|
|
|
+ // else if (column.ColumnName.Equals("Contact.Name"))
|
|
|
// {
|
|
|
- // var result = base.EditorValueChanged(editor, items, name, value);
|
|
|
- // if (name.Equals("Job.ID"))
|
|
|
- // {
|
|
|
- // items.ForEach(item => { item.Contact.ID = Guid.Empty; });
|
|
|
- // editor.SetEditorValue("Contact.Name", "");
|
|
|
- // }
|
|
|
- // else if (name.Equals("Contact.Name"))
|
|
|
+ // editor.Editable = Editable.Enabled;
|
|
|
+ // (editor as TextBoxEditor).Buttons = new[]
|
|
|
// {
|
|
|
- // var street = "";
|
|
|
- // var city = "";
|
|
|
- // var state = "";
|
|
|
- // var postcode = "";
|
|
|
- // if (items.First().Contact.IsValid())
|
|
|
- // {
|
|
|
- // street = items.First().Address.Street;
|
|
|
- // city = items.First().Address.City;
|
|
|
- // state = items.First().Address.State;
|
|
|
- // postcode = items.First().Address.PostCode;
|
|
|
- // }
|
|
|
- // else
|
|
|
- // {
|
|
|
- // CoreRow row = null;
|
|
|
- // if (items.First().ID != Guid.Empty)
|
|
|
- // {
|
|
|
- // row = new Client<Job>().Query(
|
|
|
- // new Filter<Job>(x => x.ID).IsEqualTo(items.First().Job.ID),
|
|
|
- // new Columns<Job>(x => x.ID, x => x.SiteAddress.Street, x => x.SiteAddress.City, x => x.SiteAddress.State,
|
|
|
- // x => x.SiteAddress.PostCode)
|
|
|
- // ).Rows.FirstOrDefault();
|
|
|
- // street = row != null ? row.Get<Job, string>(x => x.SiteAddress.Street) : "";
|
|
|
- // city = row != null ? row.Get<Job, string>(x => x.SiteAddress.City) : "";
|
|
|
- // state = row != null ? row.Get<Job, string>(x => x.SiteAddress.State) : "";
|
|
|
- // postcode = row != null ? row.Get<Job, string>(x => x.SiteAddress.PostCode) : "";
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // editor.SetEditorValue("Address.Street", street);
|
|
|
- // editor.SetEditorValue("Address.City", city);
|
|
|
- // editor.SetEditorValue("Address.State", state);
|
|
|
- // editor.SetEditorValue("Address.PostCode", postcode);
|
|
|
- // }
|
|
|
- //
|
|
|
- // return result;
|
|
|
+ // new(items?.FirstOrDefault(), "Select", 50, ContactNameLookup, true),
|
|
|
+ // new EditorButton(items?.FirstOrDefault(), "Clear", 50, ContactNameClear, true)
|
|
|
+ // };
|
|
|
// }
|
|
|
+ }
|
|
|
|
|
|
- private bool DocumentsClick(CoreRow? arg)
|
|
|
- {
|
|
|
- if (arg == null)
|
|
|
- return false;
|
|
|
-
|
|
|
- var docs = new List<IEntityDocument>();
|
|
|
- using (new WaitCursor())
|
|
|
- {
|
|
|
- var deliveryid = arg.Get<Delivery, Guid>(x => x.ID);
|
|
|
- var table = new Client<DeliveryDocument>().Query(
|
|
|
- new Filter<DeliveryDocument>(x => x.EntityLink.ID).IsEqualTo(deliveryid)
|
|
|
- );
|
|
|
- foreach (var row in table.Rows)
|
|
|
- docs.Add(row.ToObject<DeliveryDocument>());
|
|
|
- }
|
|
|
+ // private void ContactNameClear(object editor, object? item)
|
|
|
+ // {
|
|
|
+ // if (item is not Delivery delivery)
|
|
|
+ // return;
|
|
|
+ //
|
|
|
+ // delivery.Contact.ID = Guid.Empty;
|
|
|
+ // delivery.Address.Street = "";
|
|
|
+ // delivery.Address.City = "";
|
|
|
+ // delivery.Address.State = "";
|
|
|
+ // delivery.Address.PostCode = "";
|
|
|
+ //
|
|
|
+ // if(editor is BaseDynamicEditorControl baseEditor)
|
|
|
+ // {
|
|
|
+ // baseEditor.SetValue(baseEditor.ColumnName, "");
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // private void ContactNameLookup(object editor, object? item)
|
|
|
+ // {
|
|
|
+ // var contacts = new MultiSelectDialog<Contact>(
|
|
|
+ // null,
|
|
|
+ // null,
|
|
|
+ // false
|
|
|
+ // );
|
|
|
+ //
|
|
|
+ // if (contacts.ShowDialog() != true)
|
|
|
+ // return;
|
|
|
+ //
|
|
|
+ // var contact = contacts.Items().FirstOrDefault();
|
|
|
+ // if (contact == null)
|
|
|
+ // return;
|
|
|
+ // if (item is not Delivery delivery)
|
|
|
+ // return;
|
|
|
+ //
|
|
|
+ // delivery.Contact.ID = contact.ID;
|
|
|
+ // delivery.Address.Street = contact.Address.Street;
|
|
|
+ // delivery.Address.City = contact.Address.City;
|
|
|
+ // delivery.Address.State = contact.Address.State;
|
|
|
+ // delivery.Address.PostCode = contact.Address.PostCode;
|
|
|
+ //
|
|
|
+ // if (editor is BaseDynamicEditorControl baseEditor)
|
|
|
+ // {
|
|
|
+ // baseEditor.SetValue(baseEditor.ColumnName, contact.Name);
|
|
|
+ // }
|
|
|
+ // //SetEditorValue(item, "Contact.Name", contact.Name);
|
|
|
+ // //SetEditorValue(item,"Address.Street",contact.Address.Street);
|
|
|
+ // //SetEditorValue(item, "Address.City",contact.Address.City);
|
|
|
+ // //SetEditorValue(item, "Address.State",contact.Address.State);
|
|
|
+ // //SetEditorValue(item, "Address.PostCode",contact.Address.PostCode);
|
|
|
+ // }
|
|
|
|
|
|
- if (docs.Any())
|
|
|
- {
|
|
|
- var editor = new DocumentEditor(docs.ToArray());
|
|
|
- //editor.PrintAllowed = Security.IsAllowed<CanPrintFactoryFloorDrawings>();
|
|
|
- editor.SaveAllowed = Security.IsAllowed<CanSaveFactoryFloorDrawings>();
|
|
|
- editor.ShowDialog();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- MessageBox.Show("No Documents Available!");
|
|
|
- }
|
|
|
+ // protected override Dictionary<string, object?> EditorValueChanged(IDynamicEditorForm editor, Delivery[] items, string name, object value)
|
|
|
+ // {
|
|
|
+ // var result = base.EditorValueChanged(editor, items, name, value);
|
|
|
+ // if (name.Equals("Job.ID"))
|
|
|
+ // {
|
|
|
+ // items.ForEach(item => { item.Contact.ID = Guid.Empty; });
|
|
|
+ // editor.SetEditorValue("Contact.Name", "");
|
|
|
+ // }
|
|
|
+ // else if (name.Equals("Contact.Name"))
|
|
|
+ // {
|
|
|
+ // var street = "";
|
|
|
+ // var city = "";
|
|
|
+ // var state = "";
|
|
|
+ // var postcode = "";
|
|
|
+ // if (items.First().Contact.IsValid())
|
|
|
+ // {
|
|
|
+ // street = items.First().Address.Street;
|
|
|
+ // city = items.First().Address.City;
|
|
|
+ // state = items.First().Address.State;
|
|
|
+ // postcode = items.First().Address.PostCode;
|
|
|
+ // }
|
|
|
+ // else
|
|
|
+ // {
|
|
|
+ // CoreRow row = null;
|
|
|
+ // if (items.First().ID != Guid.Empty)
|
|
|
+ // {
|
|
|
+ // row = new Client<Job>().Query(
|
|
|
+ // new Filter<Job>(x => x.ID).IsEqualTo(items.First().Job.ID),
|
|
|
+ // new Columns<Job>(x => x.ID, x => x.SiteAddress.Street, x => x.SiteAddress.City, x => x.SiteAddress.State,
|
|
|
+ // x => x.SiteAddress.PostCode)
|
|
|
+ // ).Rows.FirstOrDefault();
|
|
|
+ // street = row != null ? row.Get<Job, string>(x => x.SiteAddress.Street) : "";
|
|
|
+ // city = row != null ? row.Get<Job, string>(x => x.SiteAddress.City) : "";
|
|
|
+ // state = row != null ? row.Get<Job, string>(x => x.SiteAddress.State) : "";
|
|
|
+ // postcode = row != null ? row.Get<Job, string>(x => x.SiteAddress.PostCode) : "";
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // editor.SetEditorValue("Address.Street", street);
|
|
|
+ // editor.SetEditorValue("Address.City", city);
|
|
|
+ // editor.SetEditorValue("Address.State", state);
|
|
|
+ // editor.SetEditorValue("Address.PostCode", postcode);
|
|
|
+ // }
|
|
|
+ //
|
|
|
+ // return result;
|
|
|
+ // }
|
|
|
|
|
|
+ private bool DocumentsClick(CoreRow? arg)
|
|
|
+ {
|
|
|
+ if (arg == null)
|
|
|
return false;
|
|
|
- }
|
|
|
|
|
|
- private BitmapImage? DocumentsImage(CoreRow? arg)
|
|
|
+ var docs = new List<IEntityDocument>();
|
|
|
+ using (new WaitCursor())
|
|
|
{
|
|
|
- if (arg == null)
|
|
|
- return docs;
|
|
|
- return arg.Get<Delivery, int>(x => x.Documents) > 0 ? docs : null;
|
|
|
+ var deliveryid = arg.Get<Delivery, Guid>(x => x.ID);
|
|
|
+ var table = new Client<DeliveryDocument>().Query(
|
|
|
+ new Filter<DeliveryDocument>(x => x.EntityLink.ID).IsEqualTo(deliveryid)
|
|
|
+ );
|
|
|
+ foreach (var row in table.Rows)
|
|
|
+ docs.Add(row.ToObject<DeliveryDocument>());
|
|
|
}
|
|
|
|
|
|
- protected override Delivery CreateItem()
|
|
|
+ if (docs.Any())
|
|
|
{
|
|
|
- var result = base.CreateItem();
|
|
|
- result.Job.ID = Master?.ID ?? Guid.Empty;
|
|
|
- result.Job.Synchronise(Master ?? new Job());
|
|
|
- return result;
|
|
|
- }
|
|
|
-
|
|
|
- private AssignmentGrid ag = null;
|
|
|
-
|
|
|
- public bool CreateBooking(CoreRow row, Guid employeeid, DateTime time)
|
|
|
- {
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID, string.Format("{0:dd-MMM-yy hh-mm-ss} -> {1}", BookingSlot, EmployeeID));
|
|
|
- var assignment = new Assignment
|
|
|
- {
|
|
|
- Date = time.Date,
|
|
|
- Description = string.Format("Delivery #{0}", row.Get<Delivery, int>(x => x.Number))
|
|
|
- };
|
|
|
- assignment.Booked.Start = time.TimeOfDay;
|
|
|
- assignment.Booked.Finish = time.TimeOfDay.Add(new TimeSpan(2, 0, 0));
|
|
|
- assignment.Delivery.ID = row.Get<Delivery, Guid>(x => x.ID);
|
|
|
- assignment.EmployeeLink.ID = employeeid;
|
|
|
- assignment.JobLink.ID = row.Get<Delivery, Guid>(x => x.Job.ID);
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID, "- Creating Assignment Grid");
|
|
|
- if (ag == null)
|
|
|
- ag = new AssignmentGrid();
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID, "- Editing Assignment");
|
|
|
- if (ag.EditItems(new[] { assignment }))
|
|
|
- {
|
|
|
- using (new WaitCursor())
|
|
|
- {
|
|
|
- new Client<Assignment>().Save(assignment, "Created for Delivery");
|
|
|
- var del = new Client<Delivery>().Load(new Filter<Delivery>(x => x.ID).IsEqualTo(row.Get<Delivery, Guid>(x => x.ID)))
|
|
|
- .FirstOrDefault();
|
|
|
- del.Assignment.ID = assignment.ID;
|
|
|
- new Client<Delivery>().Save(del, "Booked via Scheduler");
|
|
|
- }
|
|
|
- DeliveryChanged?.Invoke(this);
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID, "- Cancelled Edit");
|
|
|
- return false;
|
|
|
+ var editor = new DocumentEditor(docs.ToArray());
|
|
|
+ //editor.PrintAllowed = Security.IsAllowed<CanPrintFactoryFloorDrawings>();
|
|
|
+ editor.SaveAllowed = Security.IsAllowed<CanSaveFactoryFloorDrawings>();
|
|
|
+ editor.ShowDialog();
|
|
|
}
|
|
|
-
|
|
|
- private bool BookClick(CoreRow arg)
|
|
|
+ else
|
|
|
{
|
|
|
- return CreateBooking(arg, EmployeeID, BookingSlot);
|
|
|
+ MessageBox.Show("No Documents Available!");
|
|
|
}
|
|
|
|
|
|
- private BitmapImage BookImage(CoreRow arg)
|
|
|
- {
|
|
|
- if (arg == null)
|
|
|
- {
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID, "BookImage: Row is null!");
|
|
|
- return null;
|
|
|
- }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID,
|
|
|
- string.Format("BookImage {0} -> {1:dd-MMM-yy hh-mm-ss}", arg.Get<Delivery, int>(x => x.Number), BookingSlot));
|
|
|
+ private BitmapImage? DocumentsImage(CoreRow? arg)
|
|
|
+ {
|
|
|
+ if (arg == null)
|
|
|
+ return docs;
|
|
|
+ return arg.Get<Delivery, int>(x => x.Documents) > 0 ? docs : null;
|
|
|
+ }
|
|
|
|
|
|
- if (BookingSlot.IsEmpty())
|
|
|
- {
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID, "BookImage: BookingSlot is Empty!");
|
|
|
- return null;
|
|
|
- }
|
|
|
+ protected override Delivery CreateItem()
|
|
|
+ {
|
|
|
+ var result = base.CreateItem();
|
|
|
+ result.Job.ID = Master?.ID ?? Guid.Empty;
|
|
|
+ result.Job.Synchronise(Master ?? new Job());
|
|
|
+ return result;
|
|
|
+ }
|
|
|
|
|
|
- if (arg.Get<Delivery, DateTime>(x => x.Assignment.Date).IsEmpty())
|
|
|
+ private AssignmentGrid ag = null;
|
|
|
+
|
|
|
+ public bool CreateBooking(CoreRow row, Guid employeeid, DateTime time)
|
|
|
+ {
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID, string.Format("{0:dd-MMM-yy hh-mm-ss} -> {1}", BookingSlot, EmployeeID));
|
|
|
+ var assignment = new Assignment
|
|
|
+ {
|
|
|
+ Date = time.Date,
|
|
|
+ Description = string.Format("Delivery #{0}", row.Get<Delivery, int>(x => x.Number))
|
|
|
+ };
|
|
|
+ assignment.Booked.Start = time.TimeOfDay;
|
|
|
+ assignment.Booked.Finish = time.TimeOfDay.Add(new TimeSpan(2, 0, 0));
|
|
|
+ assignment.Delivery.ID = row.Get<Delivery, Guid>(x => x.ID);
|
|
|
+ assignment.EmployeeLink.ID = employeeid;
|
|
|
+ assignment.JobLink.ID = row.Get<Delivery, Guid>(x => x.Job.ID);
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID, "- Creating Assignment Grid");
|
|
|
+ if (ag == null)
|
|
|
+ ag = new AssignmentGrid();
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID, "- Editing Assignment");
|
|
|
+ if (ag.EditItems(new[] { assignment }))
|
|
|
+ {
|
|
|
+ using (new WaitCursor())
|
|
|
{
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID, "BookImage: Assignment Date is Empty!");
|
|
|
- return PRSDesktop.Resources.rightarrow.AsBitmapImage();
|
|
|
+ new Client<Assignment>().Save(assignment, "Created for Delivery");
|
|
|
+ var del = new Client<Delivery>().Load(new Filter<Delivery>(x => x.ID).IsEqualTo(row.Get<Delivery, Guid>(x => x.ID)))
|
|
|
+ .FirstOrDefault();
|
|
|
+ del.Assignment.ID = assignment.ID;
|
|
|
+ new Client<Delivery>().Save(del, "Booked via Scheduler");
|
|
|
}
|
|
|
+ DeliveryChanged?.Invoke(this);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
|
|
|
- Logger.Send(LogType.Information, ClientFactory.UserID,
|
|
|
- string.Format("BookImage Assignment Date is {0:dd-MMM-yy hh-mm-ss}", arg.Get<Delivery, DateTime>(x => x.Assignment.Date)));
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID, "- Cancelled Edit");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private bool BookClick(CoreRow arg)
|
|
|
+ {
|
|
|
+ return CreateBooking(arg, EmployeeID, BookingSlot);
|
|
|
+ }
|
|
|
|
|
|
+ private BitmapImage BookImage(CoreRow arg)
|
|
|
+ {
|
|
|
+ if (arg == null)
|
|
|
+ {
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID, "BookImage: Row is null!");
|
|
|
return null;
|
|
|
}
|
|
|
-
|
|
|
|
|
|
- protected override void Reload(Filters<Delivery> criteria, Columns<Delivery> columns, ref SortOrder<Delivery>? sort, Action<CoreTable?, Exception?> action)
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID,
|
|
|
+ string.Format("BookImage {0} -> {1:dd-MMM-yy hh-mm-ss}", arg.Get<Delivery, int>(x => x.Number), BookingSlot));
|
|
|
+
|
|
|
+ if (BookingSlot.IsEmpty())
|
|
|
{
|
|
|
- criteria.Add(MasterDetailFilter);
|
|
|
- base.Reload(criteria, columns, ref sort, action);
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID, "BookImage: BookingSlot is Empty!");
|
|
|
+ return null;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ if (arg.Get<Delivery, DateTime>(x => x.Assignment.Date).IsEmpty())
|
|
|
+ {
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID, "BookImage: Assignment Date is Empty!");
|
|
|
+ return PRSDesktop.Resources.rightarrow.AsBitmapImage();
|
|
|
+ }
|
|
|
+
|
|
|
+ Logger.Send(LogType.Information, ClientFactory.UserID,
|
|
|
+ string.Format("BookImage Assignment Date is {0:dd-MMM-yy hh-mm-ss}", arg.Get<Delivery, DateTime>(x => x.Assignment.Date)));
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ protected override void Reload(Filters<Delivery> criteria, Columns<Delivery> columns, ref SortOrder<Delivery>? sort, Action<CoreTable?, Exception?> action)
|
|
|
+ {
|
|
|
+ criteria.Add(MasterDetailFilter);
|
|
|
+ base.Reload(criteria, columns, ref sort, action);
|
|
|
}
|
|
|
+
|
|
|
}
|