| 
					
				 | 
			
			
				@@ -46,6 +46,9 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [NullEditor] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public Type FormType { get; set; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        [NullEditor] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        public DateTime Processed { get; set; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -91,10 +94,11 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             _mappings = new CoreFieldMap<IDigitalFormInstance, DigitalFormDockModel>() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Add(x => x.ID, x => x.ID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Add(x => x.Form.ID, x => x.FormID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .Add(x=>x.Number, x=>x.Number) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .Add(x => x.Number, x => x.Number) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Add(x => x.Form.Description, x => x.FormName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Add(x => x.FormCompleted, x => x.Completed) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .Add(x => x.FormCompletedBy.UserID, x => x.CompletedBy); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .Add(x => x.FormCompletedBy.UserID, x => x.CompletedBy) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .Add(x => x.FormProcessed, x => x.Processed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             _query = new MultiQuery(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -122,6 +126,17 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             options.EndUpdate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        protected override DynamicGridStyle GetRowStyle(CoreRow row, DynamicGridStyle style) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var result = base.GetRowStyle(row, style); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!row.Get<DigitalFormDockModel, DateTime>(x => x.Processed).IsEmpty()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                result = new DynamicGridRowStyle(result) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Background = new SolidColorBrush(Colors.LightGray), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private bool TypeFilter(CoreRow row, string[] filter) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             string typename = row.Get<DigitalFormDockModel, Type>(x => x.FormType).EntityName().Split('.').Last().SplitCamelCase(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -149,28 +164,82 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var modules = new Client<CustomModule>().Query( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 new Filter<CustomModule>(x => x.DataModel).IsEqualTo(model.Name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .And(x => x.Section).IsEqualTo(formID.ToString()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .And(x => x.Visible).IsEqualTo(true) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 ).Rows.Select(x => x.ToObject<CustomModule>()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             foreach(var module in modules) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                column.AddItem(module.Name, PRSDesktop.Resources.edit, row => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                column.AddItem( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    module.Name,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    PRSDesktop.Resources.edit,  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    row => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if(ScriptDocument.RunCustomModule(model, new Dictionary<string, object[]>(), module.Script)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        try 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            Refresh(true, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if(ScriptDocument.RunCustomModule(model, new Dictionary<string, object[]>(), module.Script)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                Refresh(false, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    catch(CompileException c) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        catch(CompileException c) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            MessageBox.Show(c.Message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        catch(Exception e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            MessageBox.Show(CoreUtils.FormatException(e)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    null, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    row.Get<DigitalFormDockModel, DateTime>(x => x.Processed).IsEmpty() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (modules.Any()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                column.AddSeparator(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (row.Get<DigitalFormDockModel, DateTime>(x => x.Processed).IsEmpty()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                column.AddItem( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    "Mark As Processed", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    PRSDesktop.Resources.lock_sml, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    (row) => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        MessageBox.Show(c.Message); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var form = Activator.CreateInstance(formType) as IDigitalFormInstance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        form.ID = row.Get<DigitalFormDockModel, Guid>(x => x.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        form.FormProcessed = row.Get<DigitalFormDockModel, DateTime>(x => x.Processed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        form.CommitChanges(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        form.FormProcessed = DateTime.Now; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        using (new WaitCursor()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ClientFactory.CreateClient(formType).Save(form, "Marked As Processed"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Refresh(false, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    catch(Exception e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                column.AddItem( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    "Clear Processed Flag", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    PRSDesktop.Resources.lock_sml, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    (row) => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        MessageBox.Show(CoreUtils.FormatException(e)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        var form = Activator.CreateInstance(formType) as IDigitalFormInstance; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        form.ID = row.Get<DigitalFormDockModel, Guid>(x => x.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        form.FormProcessed = row.Get<DigitalFormDockModel, DateTime>(x => x.Processed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        form.CommitChanges(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        form.FormProcessed = DateTime.MinValue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        using (new WaitCursor()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ClientFactory.CreateClient(formType).Save(form, "Processed Flag Cleared"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Refresh(false, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (Security.IsAllowed<CanCustomiseModules>()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 column.AddSeparator(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -207,8 +276,8 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             foreach (var type in _types.Where(x => !ExcludedTypes.Contains(x))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var filter = Filter.Create<IDigitalFormInstance>(type, x => x.FormCompleted) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .IsGreaterThanOrEqualTo(StartDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var filter = Filter.Create<IDigitalFormInstance>(type, x => x.FormCompleted).IsGreaterThanOrEqualTo(StartDate) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .And<IDigitalFormInstance>(x=>x.FormCancelled).IsEqualTo(DateTime.MinValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var cols = Columns.Create<IDigitalFormInstance>(type) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .Add<IDigitalFormInstance>(c => c.ID) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -216,7 +285,8 @@ namespace PRSDesktop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .Add<IDigitalFormInstance>(c => c.Number) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .Add<IDigitalFormInstance>(c => c.Form.Description) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     .Add<IDigitalFormInstance>(c => c.FormCompleted) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .Add<IDigitalFormInstance>(c => c.FormCompletedBy.UserID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .Add<IDigitalFormInstance>(c => c.FormCompletedBy.UserID) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .Add<IDigitalFormInstance>(c => c.FormProcessed); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var sorts = SortOrder.Create<IDigitalFormInstance>(type, x => x.FormCompleted, SortDirection.Descending); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |