using System; using System.Collections.Generic; using System.Linq; using System.Windows.Controls; using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; namespace PRSDesktop { /// /// Interaction logic for QuoteCostSheets.xaml /// public partial class QuoteCostSheets : UserControl, IQuotePage, IPanel { private Guid[] costsheetids; public QuoteCostSheets() { InitializeComponent(); } public bool IsReady { get; set; } public void CreateToolbarButtons(IPanelHost host) { } public string SectionName => "Quote Costsheets"; public DataModel DataModel(Selection selected) { var ids = CostSheets.ExtractValues(x => x.ID, selected).ToArray(); return new BaseDataModel(new Filter(x => x.ID).InList(ids)); } public void Heartbeat(TimeSpan time) { } public void Refresh() { CostSheets.Refresh(false, true); Items.Refresh(false, true); } public Dictionary Selected() { return new Dictionary(); } public void Setup() { CostSheets.OnBeforeSave += CostSheets_OnBeforeSave; CostSheets.OnAfterSave += CostSheets_OnAfterSave; CostSheets.OnSelectItem += CostSheets_OnSelectItem; CostSheets.Refresh(true, false); Items.Refresh(true, false); Items.OnChanged += Items_OnChanged; } public event DataModelUpdateEvent OnUpdateDataModel; public void Shutdown() { } public Guid ParentID { get => CostSheets.QuoteID; set => CostSheets.QuoteID = value; } public Dictionary DataEnvironment() { return new Dictionary(); } private void Items_OnChanged(object sender) { CostSheets.Refresh(false, true); } private void CostSheets_OnSelectItem(object sender, DynamicGridSelectionEventArgs e) { var row = e.Rows?.FirstOrDefault(); Items.QuoteCostSheetID = row != null ? row.Get(x => x.ID) : CoreUtils.FullGuid; Items.CostSheetID = row != null ? row.Get(x => x.CostSheet.ID) : CoreUtils.FullGuid; } private void CostSheets_OnBeforeSave(IDynamicEditorForm editor, BaseObject[] items) { costsheetids = items.Cast().Select(x => x.CostSheet.GetOriginalValue(c => c.ID)).ToArray(); } private void CostSheets_OnAfterSave(IDynamicEditorForm editor, BaseObject[] items) { for (var i = 0; i < items.Length; i++) { var qcs = items[i] as QuoteCostSheet; if (qcs != null) { if (qcs.CostSheet.IsValid() && costsheetids[i] == Guid.Empty) Items.SetupCostSheet(qcs.ID, qcs.CostSheet.ID); } } costsheetids = null; } } }