using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Windows.Controls; using System.Windows.Input; using Comal.Classes; using InABox.Configuration; using InABox.Core; namespace PRSDesktop { /// /// Interaction logic for InstallationPanel.xaml /// public partial class DeliveredOnSitePanel : UserControl, IPanel { private bool _changing = false; private string _search = ""; public DeliveredOnSiteSettings _settings; public DeliveredOnSitePanel() { InitializeComponent(); } public bool IsReady { get; set; } public Dictionary Selected() { return new Dictionary { { typeof(DeliveryItem).EntityName(), Items.SelectedRows } }; } public void Setup() { LoadSettings(); Items.Refresh(true, false); } public void Shutdown() { } public void CreateToolbarButtons(IPanelHost host) { //host.CreateToolbarButton(new PanelAction() { Caption = "Design Report", OnExecute = DesignReport, Image = PRSDesktop.Resources.edit }); //host.CreateToolbarButton(new PanelAction() { Caption = "View Report", OnExecute = ViewReport, Image = PRSDesktop.Resources.refresh }); } public void Refresh() { Items.StartDate = StartPicker.SelectedDate.Value; Items.EndDate = EndPicker.SelectedDate.Value; Items.Search = Search.Text; Items.Refresh(false, true); } public string SectionName => "Delivered On Site"; public DataModel DataModel(Selection selection) { var ids = Items.ExtractValues(x => x.ID, selection).ToArray(); return new DeliveryItemDataModel(new Filter(x => x.ID).InList(ids)); } public event DataModelUpdateEvent OnUpdateDataModel; public void Heartbeat(TimeSpan time) { } private void LoadSettings() { _settings = new UserConfiguration().Load(); StartPicker.SelectedDate = _settings.StartDate; EndPicker.SelectedDate = _settings.EndDate; View.SelectedIndex = _settings.View; UpdateStartFinishDates(); } private void SaveSettings() { if (IsReady) { _settings.View = View.SelectedIndex; _settings.StartDate = StartPicker.SelectedDate.Value; _settings.EndDate = EndPicker.SelectedDate.Value; new UserConfiguration().Save(_settings); } } private Filter SearchFilter(Expression> expression) { Filter result = null; var comps = _search.Trim().Split(' '); foreach (var comp in comps) result = result == null ? new Filter(expression).Contains(comp) : result.And(expression).Contains(comp); return result; } private void Items_OnReload(object sender, Filters criteria, Columns columns, ref SortOrder sortby) { } public Type DataType() { return typeof(DeliveryItem); } private void UpdateStartEndPicker(DateTime start, DateTime end) { if (StartPicker == null || EndPicker == null) return; StartPicker.IsEnabled = false; EndPicker.IsEnabled = false; StartPicker.SelectedDate = start; EndPicker.SelectedDate = end; } private void ViewStyle_SelectionChanged(object sender, SelectionChangedEventArgs e) { UpdateStartFinishDates(); } private void UpdateStartFinishDates() { if (View.SelectedIndex == 0) { UpdateStartEndPicker(DateTime.Today, DateTime.Today); } else if (View.SelectedIndex == 1) { UpdateStartEndPicker(DateTime.Today.AddDays(0 - 1), DateTime.Today.AddDays(0 - 1)); } else if (View.SelectedIndex == 2) { UpdateStartEndPicker(DateTime.Today.AddDays(0 - (double)DateTime.Today.DayOfWeek).AddDays(1), DateTime.Today.AddDays(0 - (double)DateTime.Today.DayOfWeek).AddDays(7)); } else if (View.SelectedIndex == 3) { UpdateStartEndPicker(DateTime.Today.AddDays(0 - (double)DateTime.Today.DayOfWeek).AddDays(0 - 6), DateTime.Today.AddDays(0 - (double)DateTime.Today.DayOfWeek)); } else if (View.SelectedIndex == 4) { UpdateStartEndPicker(new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1), new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(1).AddDays(0 - 1)); } else if (View.SelectedIndex == 5) { UpdateStartEndPicker(new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(0 - 1), new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddDays(0 - 1)); } else if (View.SelectedIndex == 6) { UpdateStartEndPicker(new DateTime(DateTime.Today.Year, 1, 1), new DateTime(DateTime.Today.Year, 1, 1).AddYears(1).AddDays(0 - 1)); } else if (View.SelectedIndex == 7) { UpdateStartEndPicker(new DateTime(DateTime.Today.Year, 1, 1).AddYears(0 - 1), new DateTime(DateTime.Today.Year, 1, 1).AddDays(0 - 1)); } else { StartPicker.IsEnabled = true; EndPicker.IsEnabled = true; } if (!IsReady) return; SaveSettings(); Refresh(); } private void SelectedDateChanged(object sender, SelectionChangedEventArgs e) { if (!StartPicker.IsEnabled || !EndPicker.IsEnabled || !IsReady) return; SaveSettings(); Refresh(); } private void Search_KeyUp(object sender, KeyEventArgs e) { if (string.IsNullOrWhiteSpace(Search.Text) || e.Key == Key.Return) { _search = Search.Text; Refresh(); } } } }