using System; using System.Drawing; using System.Windows; using System.Windows.Controls; using Comal.Classes; using FastReport.DataVisualization.Charting; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; namespace PRSDesktop { internal class EmployeeGrid : DynamicDataGrid { private bool ShowAll; public EmployeeGrid() { Options.AddRange( DynamicGridOption.FilterRows, DynamicGridOption.SelectColumns, DynamicGridOption.MultiSelect ); ActionColumns.Add(new DynamicScheduleEditorColumn()); HiddenColumns.Add(x => x.ActiveSchedules); HiddenColumns.Add(x => x.Thumbnail.ID); HiddenColumns.Add(x => x.Thumbnail.FileName); ActionColumns.Add(new DynamicImageColumn(this, x => x.Thumbnail, true) { Position = DynamicActionColumnPosition.Start }); ActionColumns.Add(new DynamicMenuColumn(MenuBuild) { Position = DynamicActionColumnPosition.Start }); AddButton("Activities", PRSDesktop.Resources.quality.AsBitmapImage(), ShowActivities); AddButton("Role Forms", PRSDesktop.Resources.kanban.AsBitmapImage(), ShowRoleForms); //ActionColumns.Add(new DynamicEmployeeStatusColumn(x => x.InOut)); //HiddenColumns.Add(x => x.InOut); AddButton("Show All", PRSDesktop.Resources.anonymous.AsBitmapImage(Color.White), ToggleFinishedEmployees); } private void MenuBuild(DynamicMenuColumn column, CoreRow? row) { if (row == null) return; var newItem = column.AddItem("Digital Forms", null, null); DynamicGridUtils.PopulateFormMenu(newItem, row.Get(x => x.ID)); column.AddSeparator(); column.AddItem("Activities", PRSDesktop.Resources.quality, ShowActivitiesWindow); column.AddItem("Role Forms", PRSDesktop.Resources.kanban, ShowRoleFormsWindow); } private void ShowActivitiesWindow(CoreRow row) { DynamicGridUtils.CreateGridWindow("Employee Activities", new DynamicCrossJoinGrid(row.ToObject(), x => x.Employee.ID, x => x.ID)).ShowDialog(); } private void ShowRoleFormsWindow(CoreRow row) { DynamicGridUtils.CreateGridWindow("Employee Role Forms", new DynamicCrossJoinGrid(row.ToObject(), x => x.Employee.ID, x => x.ID)).ShowDialog(); } private bool ShowActivities(Button button, CoreRow[] rows) { if(rows.Length == 0) { MessageBox.Show("Please select an employee."); return false; } else if(rows.Length > 1) { MessageBox.Show("Please select only one employee"); return false; } ShowActivitiesWindow(rows[0]); return false; } private bool ShowRoleForms(Button button, CoreRow[] rows) { if(rows.Length == 0) { MessageBox.Show("Please select an employee."); return false; } else if(rows.Length > 1) { MessageBox.Show("Please select only one employee"); return false; } ShowRoleFormsWindow(rows[0]); return false; } public Employee[] Employees { get; private set; } private bool ToggleFinishedEmployees(Button btn, CoreRow[] rows) { ShowAll = !ShowAll; UpdateButton(btn, PRSDesktop.Resources.anonymous.AsBitmapImage(Color.White), ShowAll ? "Hide Finished" : "Show All"); return true; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder sort, Action action) { if (!ShowAll) criteria.Add(new Filter(x => x.FinishDate).IsEqualTo(DateTime.MinValue)); base.Reload(criteria, columns, ref sort, action); } protected override BaseEditor? GetEditor(object item, DynamicGridColumn column) { if (column.ColumnName.StartsWith("OrgChart.") && !Security.IsAllowed()) return new NullEditor(); return base.GetEditor(item, column); } } }