|  | @@ -69,6 +69,7 @@ using ValidationResult = InABox.Clients.ValidationResult;
 | 
	
		
			
				|  |  |  using System.Diagnostics.CodeAnalysis;
 | 
	
		
			
				|  |  |  using System.Runtime.InteropServices;
 | 
	
		
			
				|  |  |  using FastReport.Export.Email;
 | 
	
		
			
				|  |  | +using InABox.Wpf;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  namespace PRSDesktop
 | 
	
		
			
				|  |  |  {
 | 
	
	
		
			
				|  | @@ -491,8 +492,11 @@ namespace PRSDesktop
 | 
	
		
			
				|  |  |              AddSetupSeparator(tab);
 | 
	
		
			
				|  |  |              AddSetupAction(tab, "Custom Modules", ManageModules, PRSDesktop.Resources.script).SetSecurityToken<CanCustomiseModules>();
 | 
	
		
			
				|  |  |              AddSetupAction(tab, "Reports", ManageReports, PRSDesktop.Resources.printer).SetSecurityToken<CanDesignReports>();
 | 
	
		
			
				|  |  | +            AddSetupAction(tab, "Email Templates", ManageEmailTemplates, PRSDesktop.Resources.email).SetSecurityToken<CanDesignReports>();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          private void ConfigureMainScreen()
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1791,10 +1795,51 @@ namespace PRSDesktop
 | 
	
		
			
				|  |  |          #region Email
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          private void DoEmailReport(DataModel model, byte[] data)
 | 
	
		
			
				|  |  | +        {           
 | 
	
		
			
				|  |  | +            CheckTemplates(model, data);           
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        private void CheckTemplates(DataModel model, byte[] data)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              string attachmentName = DetermineName(model);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            EmailUtils.CreateEMLFile(attachmentName, data, App.EmployeeEmail, "Emailing report for " + attachmentName);
 | 
	
		
			
				|  |  | +            //this section is meant to be for parsing templates into emails - not working yet!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //var templates = new Client<DataModelTemplate>().Query(new Filter<DataModelTemplate>(x => x.Model).IsEqualTo(model.Name));
 | 
	
		
			
				|  |  | +            //if (templates.Rows.Any())
 | 
	
		
			
				|  |  | +            //{
 | 
	
		
			
				|  |  | +            //    var context = new ContextMenu();
 | 
	
		
			
				|  |  | +            //    foreach (var row in templates.Rows)
 | 
	
		
			
				|  |  | +            //    {
 | 
	
		
			
				|  |  | +            //        var menu = new MenuItem
 | 
	
		
			
				|  |  | +            //        {
 | 
	
		
			
				|  |  | +            //            Header = row.Get<DataModelTemplate, string>(x => x.Name),
 | 
	
		
			
				|  |  | +            //            Tag = row
 | 
	
		
			
				|  |  | +            //        };
 | 
	
		
			
				|  |  | +            //        menu.Click += (o, args) =>
 | 
	
		
			
				|  |  | +            //        {
 | 
	
		
			
				|  |  | +            //            var chosenrow = ((MenuItem)o).Tag as CoreRow;                       
 | 
	
		
			
				|  |  | +            //            try
 | 
	
		
			
				|  |  | +            //            {
 | 
	
		
			
				|  |  | +            //                var data = chosenrow.Get<DataModelTemplate, string>(x => x.Template);
 | 
	
		
			
				|  |  | +            //                var to = chosenrow.Get<DataModelTemplate, string>(x => x.To);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //                var body = DataModelUtils.ParseTemplate(model, data);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //            }
 | 
	
		
			
				|  |  | +            //            catch (Exception err)
 | 
	
		
			
				|  |  | +            //            {
 | 
	
		
			
				|  |  | +            //                MessageBox.Show("Unable to Parse Template!\n\n" + err.Message);
 | 
	
		
			
				|  |  | +            //            }
 | 
	
		
			
				|  |  | +            //        };
 | 
	
		
			
				|  |  | +            //        context.Items.Add(menu);
 | 
	
		
			
				|  |  | +            //    }
 | 
	
		
			
				|  |  | +            //    context.IsOpen = true;
 | 
	
		
			
				|  |  | +            //}
 | 
	
		
			
				|  |  | +            //else
 | 
	
		
			
				|  |  | +            //{              
 | 
	
		
			
				|  |  | +                EmailUtils.CreateEMLFile(attachmentName, data, App.EmployeeEmail, "Emailing report for " + attachmentName);
 | 
	
		
			
				|  |  | +            //}                
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          private string DetermineName(DataModel model)
 | 
	
	
		
			
				|  | @@ -1814,11 +1859,11 @@ namespace PRSDesktop
 | 
	
		
			
				|  |  |                  else if (table.Rows.Count > 1)
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      foreach (CoreRow row in table.Rows)
 | 
	
		
			
				|  |  | -                    {                     
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  |                          title = title + row.Get<PurchaseOrder, string>(x => x.PONumber) + ", ";
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      title = title.Substring(0, title.Length - 2);
 | 
	
		
			
				|  |  | -                }                
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              return title;
 | 
	
	
		
			
				|  | @@ -3764,6 +3809,23 @@ namespace PRSDesktop
 | 
	
		
			
				|  |  |              ReloadReports(section, model);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        private void ManageEmailTemplates()
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            if (CurrentTab is null || CurrentPanel is null)
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var section = CurrentPanel.SectionName;
 | 
	
		
			
				|  |  | +            var model = CurrentPanel.DataModel(Selection.None);
 | 
	
		
			
				|  |  | +            if (model == null)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                MessageBox.Show("No DataModel for " + CurrentTab.Header);
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var window = new EmailTemplateManagerWindow(model);
 | 
	
		
			
				|  |  | +            window.ShowDialog();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          private void ManageReportsMenu_Click(object sender, RoutedEventArgs e)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              ManageReports();
 |