123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Windows;
- using System.Windows.Controls;
- using com.sun.security.ntlm;
- using Comal.Classes;
- using InABox.Core;
- using InABox.Clients;
- using InABox.DynamicGrid;
- using Microsoft.Win32;
- using SaveFileDialog = Microsoft.Win32.SaveFileDialog;
- namespace PRSDesktop
- {
- public class QualificationManyToManyGrid<T> : DynamicManyToManyGrid<EmployeeQualification, T> where T : Entity, new()
- {
- public QualificationManyToManyGrid()
- {
- Options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns, DynamicGridOption.MultiSelect);
- HiddenColumns.Add(x => x.Qualification.Renewal);
- HiddenColumns.Add(x => x.Expiry);
- }
- protected override void ReconfigureEditors(DynamicEditorGrid grid, EmployeeQualification[] items)
- {
- base.ReconfigureEditors(grid, items);
- var renewal = grid.GetPropertyValue("Qualification.Renewal");
- var expiry = grid.FindEditor("Expiry");
- expiry.SetEnabled(true);// renewal.Equals(QualificationRenewal.Manual));
- }
- protected override Dictionary<string, object> EditorValueChanged(DynamicEditorForm editor, EmployeeQualification[] items, string name,
- object value)
- {
- var result = base.EditorValueChanged(editor, items, name, value);
- if (name.Equals("Qualification.Renewal"))
- foreach (var item in items)
- {
- var expiry = item.CalculateExpiry(item.Qualified, (QualificationRenewal)value, item.Qualification.Period, item.Expiry);
- if (expiry != item.Expiry)
- {
- item.Expiry = expiry;
- result["Expiry"] = expiry;
- }
- }
- return result;
- }
- }
- public class QualificationEmployeeGrid : QualificationManyToManyGrid<Qualification>
- {
- }
- public class EmployeeQualificationGrid : QualificationManyToManyGrid<Employee>
- {
- private readonly Button LoadQualificationTemplate;
- private readonly Button SaveQualificationTemplate;
- public EmployeeQualificationGrid()
- {
- LoadQualificationTemplate = AddButton("Load Template", null, "Load Template", LoadQualificationTemplate_Click);
- LoadQualificationTemplate.Visibility = Visibility.Visible;
- SaveQualificationTemplate = AddButton("Save Template", null, "Save Template", SaveQualificationTemplate_Click);
- SaveQualificationTemplate.Visibility = Visibility.Visible;
- }
- private bool LoadQualificationTemplate_Click(Button sender, CoreRow[] selectedRows)
- {
- var dialog = new MultiSelectDialog<EmployeeQualificationTemplate>(null, null, false);
- if (dialog.ShowDialog())
- {
- var templateID = dialog.IDs().First();
-
- var qualificationIds = new Client<EmployeeQualificationTemplateItem>().Query(
- new Filter<EmployeeQualificationTemplateItem>(x => x.Template.ID).IsEqualTo(templateID),
- new Columns<EmployeeQualificationTemplateItem>(x => x.Qualification.ID))
- .Rows.Select(x => (Guid)x["Qualification.ID"]).ToArray();
- var qualifications = new Client<Qualification>().Load(
- new Filter<Qualification>(x => x.ID).InList(qualificationIds));
- var guids = CurrentGuids();
- var newItems = new List<EmployeeQualification>();
- foreach (var qualification in qualifications)
- {
- if (!guids.Contains(qualification.ID))
- {
- var newQualification = CreateItem();
- newQualification.Qualification.ID = qualification.ID;
- newQualification.Qualification.Synchronise(qualification);
- newItems.Add(newQualification);
- }
- }
- SaveItems(newItems.ToArray());
- return true;
- }
- return false;
- /*var dlg = new OpenFileDialog();
- dlg.Filter = "JSON files (*.json)|*.json|All files (*.*)|*.*";
- if(dlg.ShowDialog() == true)
- {
- Guid[] list;
- using (var stream = dlg.OpenFile())
- {
- list = Serialization.Deserialize<Guid[]>(stream);
- }
- var qualifications = new Client<Qualification>().Load(
- new Filter<Qualification>(x => x.ID).InList(list));
- var guids = CurrentGuids();
- var newItems = new List<EmployeeQualification>();
- foreach (var qualification in qualifications)
- {
- if (!guids.Contains(qualification.ID))
- {
- var newQualification = CreateItem();
- newQualification.Qualification.ID = qualification.ID;
- newQualification.Qualification.Synchronise(qualification);
- newItems.Add(newQualification);
- }
- }
- SaveItems(newItems.ToArray());
- return true;
- }
- return false;*/
- }
- private bool SaveQualificationTemplate_Click(Button sender, CoreRow[] selectedRows)
- {
- var dialog = new MultiSelectDialog<EmployeeQualificationTemplate>(null, null, false);
- if (dialog.ShowDialog())
- {
- var templateID = dialog.IDs().First();
- var templateItems = new Client<EmployeeQualificationTemplateItem>().Query(
- new Filter<EmployeeQualificationTemplateItem>(x => x.Template.ID).IsEqualTo(templateID),
- new Columns<EmployeeQualificationTemplateItem>(x => x.ID)).Rows.Select(x => x.ToObject<EmployeeQualificationTemplateItem>()).ToArray();
- new Client<EmployeeQualificationTemplateItem>().Delete(templateItems, "Deleted because re-save of template");
- List<EmployeeQualificationTemplateItem> newItems = new();
- foreach(var item in Data.Rows)
- {
- var newItem = new EmployeeQualificationTemplateItem();
- newItem.Template.ID = templateID;
- newItem.Qualification.ID = (Guid)item["Qualification.ID"];
- newItems.Add(newItem);
- }
- new Client<EmployeeQualificationTemplateItem>().Save(newItems, "Save to template");
- }
- return false;
- /*
- var list = new List<Guid>();
- foreach(var item in Data.Rows)
- {
- var qualification = item.ToObject<EmployeeQualification>();
- list.Add(qualification.Qualification.ID);
- }
- var dlg = new SaveFileDialog();
- dlg.Filter = "JSON files (*.json)|*.json|All files (*.*)|*.*";
- dlg.AddExtension = true;
- if(dlg.ShowDialog() == true)
- {
- using(var stream = dlg.OpenFile())
- {
- Serialization.Serialize(list, stream);
- }
- }
- return false;
- */
- }
- protected override void DoAdd()
- {
- var filter = GetFilter() as Filter<Qualification>;
- var dlg = new MultiSelectDialog<Qualification>(filter, null, true);
- if (dlg.ShowDialog())
- {
- var guids = CurrentGuids();
- var items = dlg.Items(null);
- var single = items.Length == 1;
- if (single)
- {
- var item = items.First();
- var newItem = CreateItem();
- newItem.Qualification.ID = item.ID;
- newItem.Qualification.Synchronise(item);
- if (EditItems(new EmployeeQualification[] { newItem }))
- {
- Refresh(false, true);
- }
- }
- else
- {
- foreach (var item in items)
- {
- if (!guids.Contains(item.ID))
- {
- var newItem = CreateItem();
- newItem.Qualification.ID = item.ID;
- newItem.Qualification.Synchronise(item);
- SaveItem(newItem);
- }
- }
- Refresh(false, true);
- }
- }
- }
- }
- }
|