using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows; using Comal.Classes; using InABox.Clients; using InABox.Core; using InABox.DynamicGrid; using InABox.WPF; namespace PRSDesktop { public class JobBillOfMaterialsItemGrid : DynamicDataGrid { public JobBillOfMaterialsItemGrid() { Options.AddRange( DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns, DynamicGridOption.AddRows, DynamicGridOption.ExportData, DynamicGridOption.FilterRows, DynamicGridOption.MultiSelect, DynamicGridOption.EditRows, DynamicGridOption.DeleteRows ); HiddenColumns.Add(x => x.Dimensions.Unit.ID); HiddenColumns.Add(x => x.Dimensions.Unit.Format); HiddenColumns.Add(x => x.Dimensions.Unit.Formula); HiddenColumns.Add(x => x.Dimensions.Unit.HasLength); HiddenColumns.Add(x => x.Dimensions.Unit.HasWidth); HiddenColumns.Add(x => x.Dimensions.Unit.HasWeight); HiddenColumns.Add(x => x.Dimensions.Unit.HasHeight); HiddenColumns.Add(x => x.Dimensions.Unit.HasQuantity); HiddenColumns.Add(x => x.Dimensions.Length); HiddenColumns.Add(x => x.Dimensions.Width); HiddenColumns.Add(x => x.Dimensions.Height); HiddenColumns.Add(x => x.Dimensions.Weight); HiddenColumns.Add(x => x.Dimensions.Quantity); HiddenColumns.Add(x => x.Dimensions.UnitSize); HiddenColumns.Add(x => x.Dimensions.Value); HiddenColumns.Add(x => x.Product.ID); HiddenColumns.Add(x => x.Product.Code); HiddenColumns.Add(x => x.Product.Name); HiddenColumns.Add(x => x.Style.ID); HiddenColumns.Add(x => x.Style.Code); HiddenColumns.Add(x => x.Style.Description); AddButton("Create Requi", null, CreateRequi); } private bool CreateRequi(System.Windows.Controls.Button btn, CoreRow[] rows) { if (!rows.Any()) { MessageBox.Show("Please select at least one row to add to Requi!"); return false; } JobRequisition jobRequi = new JobRequisition(); jobRequi.Job.ID = JobID; jobRequi.Description = "New Requisition"; var page = new JobRequisitionGrid(); page.OnAfterSave += (form, items) => { MessageBox.Show("Success - Job Requisition Raised."); }; return page.EditItems(new[] { jobRequi }, LoadJobRequiItems, true); } private CoreTable LoadJobRequiItems(Type arg) { Progress.Show("Working"); var result = new CoreTable(); result.LoadColumns(typeof(JobRequisitionItem)); List requiItems = new List(); foreach (CoreRow row in SelectedRows) { JobBillOfMaterialsItem BOMitem = row.ToObject(); JobRequisitionItem requiItem = new JobRequisitionItem(); requiItem.Qty = BOMitem.Quantity; requiItem.Product.ID = BOMitem.Product.ID; requiItem.Product.Code = BOMitem.Product.Code; requiItem.Product.Name = BOMitem.Product.Name; requiItem.Style.ID = BOMitem.Style.ID; requiItem.Style.Code = BOMitem.Style.Code; requiItem.Style.Description = BOMitem.Style.Description; requiItem.Supplier.ID = BOMitem.Supplier.ID; requiItem.Supplier.Code = BOMitem.Supplier.Code; requiItem.Supplier.Name = BOMitem.Supplier.Name; requiItem.Dimensions.CopyFrom(BOMitem.Dimensions); requiItem.Job.ID = JobID; requiItems.Add(requiItem); } result.LoadRows(requiItems); Progress.Close(); return result; } public Guid JobID { get; set; } public Guid BillOfMaterialsID { get; set; } public event DataModelUpdateEvent OnUpdateDataModel; protected override void DoAdd() { if (BillOfMaterialsID.Equals(Guid.Empty) || BillOfMaterialsID.Equals(CoreUtils.FullGuid)) MessageBox.Show("Please select a Bill Of Materials first!"); else base.DoAdd(); } protected override JobBillOfMaterialsItem CreateItem() { var result = base.CreateItem(); result.BillOfMaterials.ID = BillOfMaterialsID; result.Job.ID = JobID; return result; } protected override void Reload(Filters criteria, Columns columns, ref SortOrder sort, Action action) { criteria.Add(new Filter(x => x.BillOfMaterials.ID).IsEqualTo(BillOfMaterialsID)); base.Reload(criteria, columns, ref sort, action); } } }