123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Media.Imaging;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- using NPOI.OpenXmlFormats.Dml;
- namespace PRSDesktop
- {
- public class MeetingTaskGrid : DynamicDataGrid<MeetingItemKanban>
- {
-
- public MeetingModel? Model { get; set; }
-
- public MeetingTaskGrid()
- {
- Options
- .BeginUpdate()
- .Clear()
- .Add(DynamicGridOption.SelectColumns)
- .EndUpdate();
- HiddenColumns.Add(x => x.Kanban.ID);
- HiddenColumns.Add(x => x.Kanban.Completed);
- ActionColumns.Add(new DynamicImageColumn(StatusImage));
-
- AddButton("", PRSDesktop.Resources.pencil.AsBitmapImage(), EditTask);
- AddButton("", PRSDesktop.Resources.delete.AsBitmapImage(), DeleteTask, DynamicGridButtonPosition.Right);
-
- }
-
- private readonly BitmapImage _status = PRSDesktop.Resources.tick.AsBitmapImage();
-
- private BitmapImage? StatusImage(CoreRow? arg)
- {
- return arg == null
- ? _status
- : arg.Get<MeetingItemKanban, DateTime>(c => c.Kanban.Completed).IsEmpty()
- ? null
- : _status;
- }
-
- protected override void Reload(Filters<MeetingItemKanban> criteria, Columns<MeetingItemKanban> columns, ref SortOrder<MeetingItemKanban> sort,
- Action<CoreTable, Exception> action)
- {
- var meetingfilter = (Model == null) || (Model.ID == Guid.Empty)
- ? new Filter<MeetingItemKanban>().None()
- : new Filter<MeetingItemKanban>(x => x.Entity.Meeting.ID).IsEqualTo(Model.ID);
- criteria.Add(meetingfilter);
- base.Reload(criteria, columns, ref sort, action);
- }
- protected override void DoDoubleClick(object sender)
- {
- if (EditKanban())
- Refresh(false, true);
- }
- private bool EditTask(Button arg1, CoreRow[] arg2)
- {
- return EditKanban();
- }
- private bool EditKanban()
- {
- if ((Model == null) || (Model.ID == Guid.Empty))
- return false;
- if (!SelectedRows.Any())
- return false;
- var ids = SelectedRows.ToArray().Select(r => r.Get<MeetingItemKanban, Guid>(x => x.Kanban.ID)).ToArray();
- var kanbans = new Client<Kanban>().Load(new Filter<Kanban>(x => x.ID).InList(ids));
- var kg = DynamicGridUtils.CreateDynamicGrid(typeof(DynamicDataGrid<>), typeof(Kanban));
- return kg.EditItems(kanbans);
- }
- private bool DeleteTask(Button arg1, CoreRow[] arg2)
- {
- if ((Model == null) || (Model.ID == Guid.Empty))
- return false;
- if (!SelectedRows.Any())
- return false;
- if (MessageBox.Show("This will unlink the selected task from this meeting, but leave the task active.\n\nDo You wish to continue?",
- "Unlink Task", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
- return false;
- var ids = SelectedRows.ToArray().Select(r=>r.Get<MeetingItemKanban,Guid>(x=>x.ID)).ToArray();
- var miks = ids.Select(x => new MeetingItemKanban() { ID = x }).ToArray();
- new Client<MeetingItemKanban>().Delete(miks, "Removed from Meeting");
- return true;
- }
-
- }
- }
|