123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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 MeetingAssignmentGrid :DynamicDataGrid<Assignment>
- {
-
- public MeetingModel? Model { get; set; }
-
- public MeetingAssignmentGrid()
- {
- Options.BeginUpdate()
- .Clear()
- .Add(DynamicGridOption.AddRows)
- .Add(DynamicGridOption.DeleteRows)
- .Add(DynamicGridOption.MultiSelect)
- .EndUpdate();
- }
- protected override DynamicGridColumns LoadColumns()
- {
- return new DynamicGridColumns()
- {
- new DynamicGridColumn()
- {
- ColumnName = CoreUtils.GetFullPropertyName<Assignment, String>(x => x.EmployeeLink.Name, "."),
- Width = 0
- }
- };
- }
- protected override void Reload(Filters<Assignment> criteria, Columns<Assignment> columns, ref SortOrder<Assignment>? sort, Action<CoreTable?, Exception?> action)
- {
- var meetingfilter = (Model == null) || (Model.ID == Guid.Empty)
- ? new Filter<Assignment>().None()
- : new Filter<Assignment>(x => x.Meeting.Link.ID).IsEqualTo(Model.ID);
- criteria.Add(meetingfilter);
- base.Reload(criteria, columns, ref sort, action);
- }
- protected override bool CanCreateItems()
- {
- return Model == null
- ? false
- : base.CanCreateItems();
- }
- protected override Assignment CreateItem()
- {
- var result = base.CreateItem();
- result.Meeting.Link.ID = Model.ID;
- return result;
- }
- protected override void DoAdd(bool OpenEditorOnDirectEdit = false)
- {
- var employeeids = Data.ExtractValues<Assignment, Guid>(x => x.EmployeeLink.ID).Distinct().ToArray();
- var existingfilter = employeeids.Any() ? new Filter<Employee>(x => x.ID).NotInList(employeeids) : null;
- var defaultfilter = LookupFactory.DefineFilter<Employee>();
- var filter = existingfilter != null
- ? existingfilter.And(defaultfilter)
- : defaultfilter;
- MultiSelectDialog<Employee> dlg = new MultiSelectDialog<Employee>(filter, LookupFactory.DefineColumns<Employee>(), true);
- if (dlg.ShowDialog() == true)
- {
- List<Assignment> updates = new List<Assignment>();
- foreach (var item in dlg.Items())
- {
- Assignment assignment = new Assignment();
- assignment.EmployeeLink.ID = item.ID;
- assignment.EmployeeLink.Synchronise(item);
- assignment.Meeting.Link.ID = Model.ID;
- assignment.Date = Model.Date;
- assignment.Booked.Start = Model.Start;
- assignment.Booked.Finish = Model.Finish;
- assignment.ActivityLink.ID = Model.ActivityID;
- assignment.Title = Model.Title;
- assignment.Description = Model.Description;
- updates.Add(assignment);
- }
- if (updates.Any())
- new Client<Assignment>().Save(updates, "Added by Meeting Editor");
- Refresh(false, true);
- }
- }
- }
- }
|