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;
}
}
}