| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Windows;using System.Windows.Media.Imaging;using Comal.Classes;using InABox.Clients;using InABox.Core;using InABox.DynamicGrid;namespace PRSDesktop{        internal class EmployeeRoleGrid : DynamicDataGrid<EmployeeRole>    {        public EmployeeRoleGrid()        {            ColumnsTag = "EmployeeRoles";            Options.BeginUpdate()                .Clear()                .Add(DynamicGridOption.SelectColumns)                .Add(DynamicGridOption.AddRows)                .Add(DynamicGridOption.DeleteRows)                .Add(DynamicGridOption.MultiSelect)                .EndUpdate();        }        public Guid EmployeeID { get; set; }                protected override void Reload(Filters<EmployeeRole> criteria, Columns<EmployeeRole> columns, ref SortOrder<EmployeeRole> sort,            Action<CoreTable, Exception> action)        {            if (EmployeeID == Guid.Empty)                criteria.Add(new Filter<EmployeeRole>().None());            else                criteria.Add(new Filter<EmployeeRole>(x => x.EmployeeLink).LinkValid(EmployeeID));            base.Reload(criteria, columns, ref sort, action);        }        protected override bool CanCreateItems()        {            return EmployeeID != Guid.Empty;        }        protected override bool CanDeleteItems(params CoreRow[] rows)        {            return EmployeeID != Guid.Empty;        }        protected override EmployeeRole CreateItem()        {            var result = base.CreateItem();            result.EmployeeLink.ID = EmployeeID;            return result;        }                protected override void DoAdd(bool OpenEditorOnDirectEdit = false)        {            if (EmployeeID == Guid.Empty)                MessageBox.Show("Please select an Employee first!");            else            {                var ids = Data.ExtractValues<EmployeeRole, Guid>(c => c.RoleLink.ID).Distinct().ToArray();                MultiSelectDialog<Role> dlg = new MultiSelectDialog<Role>(                    new Filter<Role>(x => x.ID).NotInList(ids),                    new Columns<Role>(x => x.ID).Add(x => x.Code).Add(x => x.Description),                    true);                if (dlg.ShowDialog() == true)                {                    List<EmployeeRole> updates = new List<EmployeeRole>();                    foreach (var newid in dlg.IDs())                    {                        EmployeeRole newrole = new EmployeeRole();                        newrole.EmployeeLink.ID = EmployeeID;                        newrole.RoleLink.ID = newid;                        updates.Add(newrole);                    }                    if (updates.Any())                    {                        new Client<EmployeeRole>().Save(updates, "Updated by User");                        Refresh(false, true);                        DoChanged();                    }                }            }        }    }        }
 |