|
@@ -521,8 +521,7 @@ namespace PRSDesktop
|
|
|
() =>
|
|
|
{
|
|
|
ReportUtils.ExportDefinitions.Clear();
|
|
|
- ReportUtils.ExportDefinitions.Add(new ReportExportDefinition("Email Report", PRSDesktop.Resources.email, ReportExportType.PDF,
|
|
|
- DoEmailReport));
|
|
|
+ ReportUtils.ExportDefinitions.AddRange(AddTemplateDefinitions());
|
|
|
|
|
|
//DockManager.SidePanelSize = OutstandingDailyReports(false) ? 0.00F : 30.00F;
|
|
|
|
|
@@ -854,7 +853,7 @@ namespace PRSDesktop
|
|
|
AddSetupAction(HumanResourcesTab, "Activities", ActivityMenu_Click, PRSDesktop.Resources.quality,
|
|
|
Security.CanView<Activity>());
|
|
|
AddSetupAction(HumanResourcesTab, "Qualifications", QualificationMenu_Click, PRSDesktop.Resources.certificate,
|
|
|
- Security.CanView<Qualification>());
|
|
|
+ Security.CanView<Qualification>());
|
|
|
AddSetupAction(HumanResourcesTab, "Rosters", RosterMenu_Click, PRSDesktop.Resources.assignments,
|
|
|
Security.CanView<EmployeeRoster>());
|
|
|
|
|
@@ -1075,6 +1074,80 @@ namespace PRSDesktop
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ private IEnumerable<ReportExportDefinition> AddTemplateDefinitions()
|
|
|
+ {
|
|
|
+ if (CurrentPanel == null)
|
|
|
+ return new List<ReportExportDefinition>() { new ReportExportDefinition("Email Report", PRSDesktop.Resources.email, ReportExportType.PDF,
|
|
|
+ DoEmailReport)};
|
|
|
+ var model = CurrentPanel.DataModel(Selection.Selected);
|
|
|
+ var templates = new Client<DataModelTemplate>().Query(new Filter<DataModelTemplate>(x => x.Model).IsEqualTo(model.Name)
|
|
|
+ .And(x => x.Visible).IsEqualTo(true));
|
|
|
+
|
|
|
+ if (templates.Rows.Any())
|
|
|
+ {
|
|
|
+ List<ReportExportDefinition> list = new List<ReportExportDefinition>();
|
|
|
+ foreach (CoreRow row in templates.Rows)
|
|
|
+ {
|
|
|
+ Action<DataModel, byte[]> action = new Action<DataModel, byte[]>((model, data) =>
|
|
|
+ {
|
|
|
+ DoEmailAction(model, data, row.Get<DataModelTemplate, string>(x => x.Name));
|
|
|
+ });
|
|
|
+ list.Add(new ReportExportDefinition("Email Report", CreateControl(row.Get<DataModelTemplate, string>(x => x.Name)), ReportExportType.PDF, action));
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ return new List<ReportExportDefinition>() { new ReportExportDefinition("Email Report", PRSDesktop.Resources.email, ReportExportType.PDF,
|
|
|
+ DoEmailReport)};
|
|
|
+ }
|
|
|
+
|
|
|
+ private ContentControl CreateControl(string caption)
|
|
|
+ {
|
|
|
+ Frame frame = new Frame();
|
|
|
+ frame.Padding = new Thickness(0);
|
|
|
+ frame.Margin = new Thickness(0);
|
|
|
+
|
|
|
+ Grid grid = new Grid();
|
|
|
+ grid.Margin = new Thickness(0);
|
|
|
+ grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(4, GridUnitType.Star) });
|
|
|
+ grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
|
|
|
+
|
|
|
+ var img = GetImage(PRSDesktop.Resources.email);
|
|
|
+ img.SetValue(Grid.RowProperty, 0);
|
|
|
+ img.Margin = new Thickness(0);
|
|
|
+ grid.Children.Add(img);
|
|
|
+
|
|
|
+ var lbl = new System.Windows.Controls.Label();
|
|
|
+ lbl.Content = caption;
|
|
|
+ lbl.Margin = new Thickness(0);
|
|
|
+ lbl.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center;
|
|
|
+ lbl.SetValue(Grid.RowProperty, 1);
|
|
|
+
|
|
|
+ grid.Children.Add(lbl);
|
|
|
+
|
|
|
+ frame.Content = grid;
|
|
|
+
|
|
|
+ return frame;
|
|
|
+ }
|
|
|
+
|
|
|
+ private System.Windows.Controls.Image GetImage(Bitmap bitmap)
|
|
|
+ {
|
|
|
+ return new System.Windows.Controls.Image
|
|
|
+ {
|
|
|
+ Source = bitmap.AsBitmapImage(),
|
|
|
+ Height = 32.0F,
|
|
|
+ Width = 32.0F,
|
|
|
+ Margin = new Thickness(10)
|
|
|
+ };
|
|
|
+ }
|
|
|
+
|
|
|
+ private void DoEmailAction(DataModel model, byte[] data, string templateName)
|
|
|
+ {
|
|
|
+ var template = new Client<DataModelTemplate>().Query(new Filter<DataModelTemplate>(x => x.Name).IsEqualTo(templateName)).Rows.FirstOrDefault();
|
|
|
+
|
|
|
+ ParseTemplateAndCreateEmail(template, model, data);
|
|
|
+ }
|
|
|
+
|
|
|
private void SetupDock<TSecurityDescriptor>(LayoutAnchorable layout, IDockPanel dock)
|
|
|
where TSecurityDescriptor : ISecurityDescriptor, new()
|
|
|
{
|
|
@@ -1232,6 +1305,9 @@ namespace PRSDesktop
|
|
|
var panel = new T();
|
|
|
CurrentPanel = panel;
|
|
|
|
|
|
+ ReportUtils.ExportDefinitions.Clear();
|
|
|
+ ReportUtils.ExportDefinitions.AddRange(AddTemplateDefinitions());
|
|
|
+
|
|
|
InitializePanelProperties(panel);
|
|
|
|
|
|
CurrentPanel.IsReady = false;
|
|
@@ -1803,57 +1879,17 @@ 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);
|
|
|
-
|
|
|
- var templates = new Client<DataModelTemplate>().Query(new Filter<DataModelTemplate>(x => x.Model).IsEqualTo(model.Name)
|
|
|
- .And(x => x.Visible).IsEqualTo(true));
|
|
|
- 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
|
|
|
- {
|
|
|
- ParseTemplateAndCreateEmail(chosenrow, 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);
|
|
|
- }
|
|
|
+ EmailUtils.CreateEMLFile(attachmentName, data, App.EmployeeEmail, "Emailing report for " + attachmentName);
|
|
|
}
|
|
|
|
|
|
- private void ParseTemplateAndCreateEmail(CoreRow chosenrow, DataModel model, byte[] data)
|
|
|
+ private void ParseTemplateAndCreateEmail(CoreRow row, DataModel model, byte[] data)
|
|
|
{
|
|
|
- var to = chosenrow.Get<DataModelTemplate, string>(x => x.To);
|
|
|
- var Subject = chosenrow.Get<DataModelTemplate, string>(x => x.Subject);
|
|
|
-
|
|
|
- var attachmentName = chosenrow.Get<DataModelTemplate, string>(x => x.AttachmentName);
|
|
|
- var template = chosenrow.Get<DataModelTemplate, string>(x => x.Template);
|
|
|
-
|
|
|
- var body = DataModelUtils.ParseTemplate(model, template);
|
|
|
+ var to = DataModelUtils.ParseTemplate(model, row.Get<DataModelTemplate, string>(x => x.To)).Replace("\n", "").Replace("\r", "");
|
|
|
+ var Subject = DataModelUtils.ParseTemplate(model, row.Get<DataModelTemplate, string>(x => x.Subject)).Replace("\n", "").Replace("\r", "");
|
|
|
+ var attachmentName = DataModelUtils.ParseTemplate(model, row.Get<DataModelTemplate, string>(x => x.AttachmentName)).Replace("\n", "").Replace("\r", "");
|
|
|
+ var body = DataModelUtils.ParseTemplate(model, row.Get<DataModelTemplate, string>(x => x.Template));
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(attachmentName))
|
|
|
attachmentName = model.Name;
|
|
@@ -2170,7 +2206,7 @@ namespace PRSDesktop
|
|
|
var list = new MasterList(typeof(Qualification));
|
|
|
list.ShowDialog();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private void RosterMenu_Click()
|
|
|
{
|
|
|
var list = new MasterList(typeof(EmployeeRoster));
|
|
@@ -2194,8 +2230,8 @@ namespace PRSDesktop
|
|
|
private void StockMovements_Checked(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
LoadWindow<StockMovementPanel>((Fluent.Button)sender);
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
+
|
|
|
private void StockSummaryButton_Clicked(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
LoadWindow<StockSummaryPanel>((Fluent.Button)sender);
|
|
@@ -2388,7 +2424,7 @@ namespace PRSDesktop
|
|
|
// var list = new MasterList(typeof(Roster));
|
|
|
// list.ShowDialog();
|
|
|
// }
|
|
|
-
|
|
|
+
|
|
|
private void OvertimeRulesButton_Click()
|
|
|
{
|
|
|
var list = new MasterList(typeof(OvertimeRule));
|