DeliveredOnSitePanel.xaml.cs 6.6 KB

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