using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using Comal.Classes; using InABox.Configuration; using InABox.Core; namespace PRSDesktop { /// /// Interaction logic for TimesheetPanel.xaml /// public partial class TimesheetPanel : UserControl, IPanel { public TimeSheetSettings _settings; public TimesheetPanel() { InitializeComponent(); } public event DataModelUpdateEvent OnUpdateDataModel; public bool IsReady { get; set; } public void Setup() { LoadSettings(); TimeSheets.Refresh(true, false); } public Dictionary Selected() { return new Dictionary { { typeof(TimeSheet).EntityName(), TimeSheets.SelectedRows } }; } public void Shutdown() { } public void CreateToolbarButtons(IPanelHost host) { //host.CreateToolbarButton(new PanelAction() { Caption = "Process", Image = PRSDesktop.Resources.doc_xls, OnExecute = ProcessTimesheets }); } public string SectionName => "Timesheets"; public DataModel DataModel(Selection selection) { var ids = TimeSheets.ExtractValues(x => x.ID, selection).ToArray(); return new BaseDataModel(new Filter(x => x.ID).InList(ids.ToArray())); } public void Refresh() { TimeSheets.StartDate = StartPicker.SelectedDate.Value; if (FutureTimes.IsChecked == true) TimeSheets.EndDate = EndPicker.SelectedDate.Value; else TimeSheets.EndDate = EndPicker.SelectedDate.Value > DateTime.Today ? DateTime.Today : EndPicker.SelectedDate.Value; TimeSheets.Search = Search.Text; TimeSheets.ApprovedOnly = ApprovedTimes.IsChecked == true; TimeSheets.Refresh(false, true); } 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(); FutureTimes.IsChecked = _settings.FutureTimes; ApprovedTimes.IsChecked = _settings.ApprovedOnly; } private void SaveSettings() { if (IsReady) { _settings.View = View.SelectedIndex; _settings.StartDate = StartPicker.SelectedDate.HasValue ? StartPicker.SelectedDate.Value : DateTime.Today; _settings.EndDate = EndPicker.SelectedDate.HasValue ? EndPicker.SelectedDate.Value : DateTime.Today; _settings.FutureTimes = FutureTimes.IsChecked == true; _settings.ApprovedOnly = ApprovedTimes.IsChecked == true; new UserConfiguration().Save(_settings); } } 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 View_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 (e.Key == Key.Enter || e.Key == Key.Return) Refresh(); } private void FutureTimes_Checked(object sender, RoutedEventArgs e) { if (!IsReady) return; SaveSettings(); Refresh(); } private void ApprovedTimes_Checked(object sender, RoutedEventArgs e) { if (!IsReady) return; SaveSettings(); Refresh(); } } }