123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- namespace PRSDesktop
- {
- public class JobGrid : DynamicDataGrid<Job>
- {
- private Guid _statusid = Guid.Empty;
- public JobGrid()
- {
- HiddenColumns.Add(x => x.ID);
- HiddenColumns.Add(x => x.JobNumber);
- HiddenColumns.Add(x => x.Name);
- HiddenColumns.Add(x => x.Customer.ID);
- HiddenColumns.Add(x => x.Customer.Code);
- HiddenColumns.Add(x => x.Customer.Name);
- HiddenColumns.Add(x => x.SiteAddress.Street);
- HiddenColumns.Add(x => x.SiteAddress.City);
- HiddenColumns.Add(x => x.SiteAddress.State);
- HiddenColumns.Add(x => x.SiteAddress.PostCode);
- HiddenColumns.Add(x => x.Account.ID);
- HiddenColumns.Add(x => x.Account.Code);
- HiddenColumns.Add(x => x.Account.Name);
- HiddenColumns.Add(x => x.Notes);
- HiddenColumns.Add(x => x.JobStatus.ID);
- HiddenColumns.Add(x => x.JobStatus.Active);
- HiddenColumns.Add(x => x.DefaultScope.ID);
- ActionColumns.Add(new DynamicMapColumn<Job>(this, x => x.SiteAddress.Location));
- }
- protected override void DoReconfigure(FluentList<DynamicGridOption> options)
- {
- base.DoReconfigure(options);
- options.AddRange(
- DynamicGridOption.RecordCount,
- DynamicGridOption.SelectColumns,
- DynamicGridOption.FilterRows
- );
- }
- public Guid StatusID
- {
- get => _statusid;
- set
- {
- _statusid = value;
- Refresh(false, true);
- }
- }
- protected override void Reload(Filters<Job> criteria, Columns<Job> columns, ref SortOrder<Job>? sort, Action<CoreTable?, Exception?> action)
- {
- if (_statusid != Guid.Empty)
- criteria.Add(new Filter<Job>(x => x.JobStatus.ID).IsEqualTo(_statusid));
- sort = new SortOrder<Job>(x => x.JobNumber, SortDirection.Descending);
- base.Reload(criteria, columns, ref sort, action);
- }
- public override DynamicEditorPages LoadEditorPages(Job item)
- {
- var pages = new DynamicEditorPages(new IDynamicEditorPage[]
- {
- new DynamicManyToManyGrid<JobDocument,Job>(),
- new DynamicManyToManyGrid<JobStyle,Job>(),
- new DynamicOneToManyGrid<Job,JobDocumentSetTag>(),
- new JobFormDefinitionGrid(),
- new DynamicOneToManyGrid<Job, JobProductMapping>(),
- });
- return pages;
- }
- protected override Job CreateItem()
- {
- var result = base.CreateItem();
- var defstatus = new Client<JobStatus>().Query(new Filter<JobStatus>(x => x.Default).IsEqualTo(true));
- if (defstatus.Rows.Any())
- result.JobStatus.ID = defstatus.Rows.First().Get<JobStatus, Guid>(x => x.ID);
- return result;
- }
- protected override Dictionary<string, object?> EditorValueChanged(IDynamicEditorForm editor, Job[] items, string name, object value)
- {
- var result = base.EditorValueChanged(editor, items, name, value);
- if (name.Equals("Customer.ID"))
- {
- // false here because a customer has a defaultcontact
- // and we need to load the lookups before we set the default value
- var contact = editor.FindEditor("Contact.ID") as ILookupEditorControl;
- if (contact != null)
- DefineLookups(contact,items,false);
- }
- return result;
- }
- }
- }
|