EmployeesAssignmentCompletionReportHandlers.cs
4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace Sungero.Docflow
{
partial class EmployeesAssignmentCompletionReportServerHandlers
{
public override void AfterExecute(Sungero.Reporting.Server.AfterExecuteEventArgs e)
{
Functions.Module.DeleteReportData(Constants.EmployeesAssignmentCompletionReport.SourceTableName, EmployeesAssignmentCompletionReport.ReportSessionId);
}
public override void BeforeExecute(Sungero.Reporting.Server.BeforeExecuteEventArgs e)
{
var reportSessionId = System.Guid.NewGuid().ToString();
EmployeesAssignmentCompletionReport.ReportSessionId = reportSessionId;
EmployeesAssignmentCompletionReport.ReportDate = Calendar.Now;
EmployeesAssignmentCompletionReport.DetailedReportLink = Hyperlinks.Functions.OpenEmployeeAssignmentsReport(int.MaxValue.ToString(),
EmployeesAssignmentCompletionReport.PeriodBegin.ToString(),
EmployeesAssignmentCompletionReport.PeriodEnd.ToString());
var departmentIds = EmployeesAssignmentCompletionReport.DepartmentIds.Where(d => d != null).Select(d => d.Value).ToList();
var businessUnitds = EmployeesAssignmentCompletionReport.BusinessUnitIds.Where(d => d != null).Select(d => d.Value).ToList();
if (EmployeesAssignmentCompletionReport.WidgetParameter == null)
{
if (EmployeesAssignmentCompletionReport.BusinessUnit != null)
EmployeesAssignmentCompletionReport.ParamsDescription += Docflow.Resources.ReportBusinessUnitFormat(EmployeesAssignmentCompletionReport.BusinessUnit.Name, System.Environment.NewLine);
if (EmployeesAssignmentCompletionReport.Department != null)
EmployeesAssignmentCompletionReport.ParamsDescription += Docflow.Resources.ReportDepartmentFormat(EmployeesAssignmentCompletionReport.Department.Name, System.Environment.NewLine);
}
else if (!string.IsNullOrEmpty(EmployeesAssignmentCompletionReport.WidgetParameter))
{
EmployeesAssignmentCompletionReport.ParamsDescription += Docflow.Resources.ReportEmployeesFormat(EmployeesAssignmentCompletionReport.WidgetParameter);
}
var needFilter = EmployeesAssignmentCompletionReport.BusinessUnitIds.Any() || departmentIds.Any();
var tableData = Functions.Module.GetDepartmentAssignmentCompletionReportData(businessUnitds,
departmentIds,
EmployeesAssignmentCompletionReport.PeriodBegin.Value, EmployeesAssignmentCompletionReport.PeriodEnd.Value.EndOfDay(),
EmployeesAssignmentCompletionReport.Unwrap == true,
EmployeesAssignmentCompletionReport.WithSubstitution == true, needFilter);
EmployeesAssignmentCompletionReport.AssignmentCount = tableData.Select(d => d.AssignmentsCount).Sum();
EmployeesAssignmentCompletionReport.AffectDisciplineCount = tableData.Select(d => d.AffectDisciplineAssignmentsCount).Sum();
EmployeesAssignmentCompletionReport.OverdueAssignmentsCount = tableData.Select(d => d.OverdueAssignmentsCount).Sum();
EmployeesAssignmentCompletionReport.CompletedInTimeCount = tableData.Select(d => d.CompletedInTimeAssignmentsCount).Sum();
var tableDataSort = EmployeesAssignmentCompletionReport.SortByAssignmentCompletion == false ? tableData.OrderByDescending(d => d.AssignmentsCount).ThenBy(d => d.EmployeeName)
: tableData.OrderBy(d => d.AssignmentsCount == 0).ThenBy(d => d.AssignmentCompletion).ThenBy(d => d.EmployeeName);
var rowIndex = 1;
foreach (var item in tableDataSort)
{
item.RowIndex = rowIndex++;
item.ReportSessionId = reportSessionId;
}
Functions.Module.WriteStructuresToTable(Constants.EmployeesAssignmentCompletionReport.SourceTableName, tableDataSort);
}
}
}