| 
					
				 | 
			
			
				@@ -90,6 +90,8 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public bool ShowJobFilter { get; set; } = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public bool ShowDateFilter { get; set; } = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public bool ShowIncompleteForms { get; set; } = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public bool UseIconsForFormTypes { get; set; } = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public string? Category { get; set; } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -136,6 +138,8 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public DigitalFormsDashboard() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             InitializeComponent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DataGrid.RowStyleSelector = new RowStyleSelector(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void Setup() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -183,6 +187,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private ComboBox CategoryBox; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private ComboBox FormBox; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private ComboBox JobBox; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private ComboBox IncompleteFormsBox; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private ComboBox DateTypeBox; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -340,6 +345,22 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             ToPicker.SelectedDateChanged += ToPicker_SelectedDateChanged; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            IncompleteFormsBox = new ComboBox 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Width = 130, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Margin = new Thickness(0, 0, 5, 0), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                VerticalContentAlignment = VerticalAlignment.Center 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            IncompleteFormsBox.ItemsSource = new List<Tuple<string, bool>> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Tuple<string, bool>("Completed Forms", false), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new Tuple<string, bool>("All Forms", true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            IncompleteFormsBox.DisplayMemberPath = "Item1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            IncompleteFormsBox.SelectedValuePath = "Item2"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            IncompleteFormsBox.SelectedValue = Properties.ShowIncompleteForms; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            IncompleteFormsBox.SelectionChanged += IncompleteFormsBox_SelectionChanged; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Print = new Button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Width = 25, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -368,6 +389,7 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Add(FromPicker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Add(ToLabel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Add(ToPicker) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .Add(IncompleteFormsBox) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .AddRight(FilterBtn) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .AddRight(Print) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .EndUpdate(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -375,6 +397,12 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             UpdateCategory(Properties.Category); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private void IncompleteFormsBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Properties.ShowIncompleteForms = (bool)IncompleteFormsBox.SelectedValue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Refresh(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void Filter_Click(object sender, RoutedEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var menu = new ContextMenu(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1096,10 +1124,16 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var jobLink = GetJobLink<T>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var filter = new Filter<T>(x => x.FormCompleted).IsGreaterThanOrEqualTo(From) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .And(x => x.FormCompleted).IsLessThan(To.AddDays(1)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .And(x => x.Form.ID).IsEqualTo(Form!.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .And(x => x.FormCancelled).IsEqualTo(DateTime.MinValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var completedFilter = new Filter<T>(x => x.FormCompleted).IsGreaterThanOrEqualTo(From) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .And(x => x.FormCompleted).IsLessThan(To.AddDays(1)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (Properties.ShowIncompleteForms) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                completedFilter.Or(x => x.FormCompleted).IsEqualTo(FilterConstant.NoDateProvided); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var filter = new Filter<T>(x => x.Form.ID).IsEqualTo(Form!.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .And(x => x.FormCancelled).IsEqualTo(DateTime.MinValue) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .And(completedFilter); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (Properties.JobID != Guid.Empty && Properties.ShowJobFilter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1379,6 +1413,32 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #region DataGrid Configuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private class RowStyleSelector : StyleSelector 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            private Style NormalStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            private Style IncompleteStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            public RowStyleSelector() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                NormalStyle = new Style(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                NormalStyle.Setters.Add(new Setter(VirtualizingCellsControl.BackgroundProperty, new SolidColorBrush(Colors.White))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                IncompleteStyle = new Style(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                IncompleteStyle.Setters.Add(new Setter(VirtualizingCellsControl.BackgroundProperty, new SolidColorBrush(Colors.LightSalmon))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            public override Style SelectStyle(object item, DependencyObject container) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var row = (item as DataRowBase)?.RowData as DataRowView; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (row is null) return NormalStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return (DateTime)row["Completed"] == DateTime.MinValue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    ? IncompleteStyle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    : NormalStyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void DataGrid_AutoGeneratingColumn(object sender, Syncfusion.UI.Xaml.Grid.AutoGeneratingColumnArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             e.Column.TextAlignment = TextAlignment.Center; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1442,8 +1502,10 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 e.Column.Width = 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 e.Column.HeaderStyle = Application.Current.Resources["TemplateHeaderStyle"] as Style; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                (e.Column as GridDateTimeColumn)!.Pattern = DateTimePattern.CustomPattern; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                (e.Column as GridDateTimeColumn)!.CustomPattern = "dd MMM yy hh:mm"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                (e.Column as GridDateTimeColumn)!.DisplayBinding = new Binding { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Path = new PropertyPath(value.Path.Path), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Converter = new DateTimeToStringConverter("dd MMM yy hh:mm") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else if (value.Path.Path.Equals("Completed By")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1464,8 +1526,10 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 e.Column.Width = 100; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 e.Column.HeaderStyle = Application.Current.Resources["TemplateHeaderStyle"] as Style; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                (e.Column as GridDateTimeColumn).Pattern = DateTimePattern.CustomPattern; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                (e.Column as GridDateTimeColumn).CustomPattern = "dd MMM yy hh:mm"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                (e.Column as GridDateTimeColumn)!.DisplayBinding = new Binding { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Path = new PropertyPath(value.Path.Path), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Converter = new DateTimeToStringConverter("dd MMM yy hh:mm") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 |