DeliveredOnSitePanel.xaml.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Linq;
  5. using System.Linq.Expressions;
  6. using System.Windows.Controls;
  7. using System.Windows.Input;
  8. using Comal.Classes;
  9. using InABox.Configuration;
  10. using InABox.Core;
  11. using InABox.Wpf;
  12. namespace PRSDesktop
  13. {
  14. /// <summary>
  15. /// Interaction logic for InstallationPanel.xaml
  16. /// </summary>
  17. public partial class DeliveredOnSitePanel : UserControl, IPanel<DeliveryItem>
  18. {
  19. private bool _changing = false;
  20. private string _search = "";
  21. public DeliveredOnSiteSettings _settings;
  22. public DeliveredOnSitePanel()
  23. {
  24. InitializeComponent();
  25. }
  26. public bool IsReady { get; set; }
  27. public Dictionary<string, object[]> Selected()
  28. {
  29. return new Dictionary<string, object[]> { { typeof(DeliveryItem).EntityName(), Items.SelectedRows } };
  30. }
  31. public void Setup()
  32. {
  33. LoadSettings();
  34. Items.Refresh(true, false);
  35. }
  36. public void Shutdown(CancelEventArgs? cancel)
  37. {
  38. }
  39. public void CreateToolbarButtons(IPanelHost host)
  40. {
  41. //host.CreateToolbarButton(new PanelAction() { Caption = "Design Report", OnExecute = DesignReport, Image = PRSDesktop.Resources.edit });
  42. //host.CreateToolbarButton(new PanelAction() { Caption = "View Report", OnExecute = ViewReport, Image = PRSDesktop.Resources.refresh });
  43. }
  44. public void Refresh()
  45. {
  46. Items.StartDate = StartPicker.SelectedDate.Value;
  47. Items.EndDate = EndPicker.SelectedDate.Value;
  48. Items.Search = Search.Text;
  49. Items.Refresh(false, true);
  50. }
  51. public string SectionName => "Delivered On Site";
  52. public DataModel DataModel(Selection selection)
  53. {
  54. var ids = Items.ExtractValues(x => x.ID, selection).ToArray();
  55. return new DeliveryItemDataModel(new Filter<DeliveryItem>(x => x.ID).InList(ids));
  56. }
  57. public event DataModelUpdateEvent? OnUpdateDataModel;
  58. public void Heartbeat(TimeSpan time)
  59. {
  60. }
  61. private void LoadSettings()
  62. {
  63. _settings = new UserConfiguration<DeliveredOnSiteSettings>().Load();
  64. StartPicker.SelectedDate = _settings.StartDate;
  65. EndPicker.SelectedDate = _settings.EndDate;
  66. View.SelectedIndex = _settings.View;
  67. UpdateStartFinishDates();
  68. }
  69. private void SaveSettings()
  70. {
  71. if (IsReady)
  72. {
  73. _settings.View = View.SelectedIndex;
  74. _settings.StartDate = StartPicker.SelectedDate.Value;
  75. _settings.EndDate = EndPicker.SelectedDate.Value;
  76. new UserConfiguration<DeliveredOnSiteSettings>().Save(_settings);
  77. }
  78. }
  79. private Filter<DeliveryItem> SearchFilter(Expression<Func<DeliveryItem, object>> expression)
  80. {
  81. Filter<DeliveryItem> result = null;
  82. var comps = _search.Trim().Split(' ');
  83. foreach (var comp in comps)
  84. result = result == null ? new Filter<DeliveryItem>(expression).Contains(comp) : result.And(expression).Contains(comp);
  85. return result;
  86. }
  87. private void Items_OnReload(object sender, Filters<DeliveryItem> criteria, Columns<DeliveryItem> columns, ref SortOrder<DeliveryItem> sortby)
  88. {
  89. }
  90. public Type DataType()
  91. {
  92. return typeof(DeliveryItem);
  93. }
  94. private void UpdateStartEndPicker(DateTime start, DateTime end)
  95. {
  96. if (StartPicker == null || EndPicker == null)
  97. return;
  98. StartPicker.IsEnabled = false;
  99. EndPicker.IsEnabled = false;
  100. StartPicker.SelectedDate = start;
  101. EndPicker.SelectedDate = end;
  102. }
  103. private void ViewStyle_SelectionChanged(object sender, SelectionChangedEventArgs e)
  104. {
  105. UpdateStartFinishDates();
  106. }
  107. private void UpdateStartFinishDates()
  108. {
  109. if (View.SelectedIndex == 0)
  110. {
  111. UpdateStartEndPicker(DateTime.Today, DateTime.Today);
  112. }
  113. else if (View.SelectedIndex == 1)
  114. {
  115. UpdateStartEndPicker(DateTime.Today.AddDays(0 - 1), DateTime.Today.AddDays(0 - 1));
  116. }
  117. else if (View.SelectedIndex == 2)
  118. {
  119. UpdateStartEndPicker(DateTime.Today.AddDays(0 - (double)DateTime.Today.DayOfWeek).AddDays(1),
  120. DateTime.Today.AddDays(0 - (double)DateTime.Today.DayOfWeek).AddDays(7));
  121. }
  122. else if (View.SelectedIndex == 3)
  123. {
  124. UpdateStartEndPicker(DateTime.Today.AddDays(0 - (double)DateTime.Today.DayOfWeek).AddDays(0 - 6),
  125. DateTime.Today.AddDays(0 - (double)DateTime.Today.DayOfWeek));
  126. }
  127. else if (View.SelectedIndex == 4)
  128. {
  129. UpdateStartEndPicker(new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1),
  130. new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(1).AddDays(0 - 1));
  131. }
  132. else if (View.SelectedIndex == 5)
  133. {
  134. UpdateStartEndPicker(new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(0 - 1),
  135. new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddDays(0 - 1));
  136. }
  137. else if (View.SelectedIndex == 6)
  138. {
  139. UpdateStartEndPicker(new DateTime(DateTime.Today.Year, 1, 1), new DateTime(DateTime.Today.Year, 1, 1).AddYears(1).AddDays(0 - 1));
  140. }
  141. else if (View.SelectedIndex == 7)
  142. {
  143. UpdateStartEndPicker(new DateTime(DateTime.Today.Year, 1, 1).AddYears(0 - 1), new DateTime(DateTime.Today.Year, 1, 1).AddDays(0 - 1));
  144. }
  145. else
  146. {
  147. StartPicker.IsEnabled = true;
  148. EndPicker.IsEnabled = true;
  149. }
  150. if (!IsReady)
  151. return;
  152. SaveSettings();
  153. Refresh();
  154. }
  155. private void SelectedDateChanged(object sender, SelectionChangedEventArgs e)
  156. {
  157. if (!StartPicker.IsEnabled || !EndPicker.IsEnabled || !IsReady)
  158. return;
  159. SaveSettings();
  160. Refresh();
  161. }
  162. private void Search_KeyUp(object sender, KeyEventArgs e)
  163. {
  164. if (string.IsNullOrWhiteSpace(Search.Text) || e.Key == Key.Return)
  165. {
  166. _search = Search.Text;
  167. Refresh();
  168. }
  169. }
  170. }
  171. }