123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- 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<Employee>
- {
- private bool ShowAll;
- public EmployeeGrid()
- {
- Options.AddRange(
- DynamicGridOption.FilterRows,
- DynamicGridOption.SelectColumns,
- DynamicGridOption.MultiSelect
- );
- ActionColumns.Add(new DynamicScheduleEditorColumn<Employee>());
- HiddenColumns.Add(x => x.ActiveSchedules);
- HiddenColumns.Add(x => x.Thumbnail.ID);
- HiddenColumns.Add(x => x.Thumbnail.FileName);
- ActionColumns.Add(new DynamicImageColumn<Employee>(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<Employee>(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<EmployeeForm, Employee, EmployeeLink>(newItem, row.Get<Employee, Guid>(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<EmployeeActivity, Employee>(row.ToObject<Employee>(), x => x.Employee.ID, x => x.ID)).ShowDialog();
- }
- private void ShowRoleFormsWindow(CoreRow row)
- {
- DynamicGridUtils.CreateGridWindow("Employee Role Forms",
- new DynamicCrossJoinGrid<EmployeeDigitalForm, Employee>(row.ToObject<Employee>(), 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<Employee> criteria, Columns<Employee> columns, ref SortOrder<Employee> sort,
- Action<CoreTable, Exception> action)
- {
- if (!ShowAll)
- criteria.Add(new Filter<Employee>(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<CanViewOrgChartByEmployee>())
- return new NullEditor();
- return base.GetEditor(item, column);
- }
- }
- }
|