Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TicketSummaryReport
- {
- public void MonthsSummaryReport(TicketSummary tickets, DateTime startDate, DateTime endDate,
- DocX summaryReportDocX, MemoryStream stream)
- {
- int date = (endDate.Month + 1) - startDate.Month;
- //Columns of the table that are labeled (6 : Total Tickets Summary / Open tickets / Awaiting Customer / Hold Tickets / Closed Tickets / Total)
- const int numberLabeledRows = 8;
- Table table = summaryReportDocX.InsertTable(numberLabeledRows, date + 1);
- table.Rows[0].Cells[0].Paragraphs[0].Append("Total Tickets Summary");
- table.Rows[2].Cells[0].Paragraphs[0].Append("Open Tickets");
- table.Rows[3].Cells[0].Paragraphs[0].Append("Awaiting Customer");
- table.Rows[4].Cells[0].Paragraphs[0].Append("On Hold");
- table.Rows[5].Cells[0].Paragraphs[0].Append("Closed Tickets");
- table.Rows[7].Cells[0].Paragraphs[0].Append("Total ");
- for (int i = 1; i <= date; i++)
- {
- string monthName = startDate.AddMonths(i - 1).ToString("MMM", CultureInfo.InvariantCulture);
- if (date <= 12)
- {
- table.Rows[0].Cells[i].Paragraphs[0].Append(monthName);
- }
- else
- {
- table.Rows[0].Cells[i].Paragraphs[0].Append(monthName + " " + startDate.AddMonths(i - 1).Year);
- }
- }
- //iterate through the rows of the table
- for (int row = 2; row <= numberLabeledRows - 1; row++)
- {
- if (row == 6)
- {
- continue;
- }
- //Populate the tables with tickets according to status/ month
- for (int cell = 1; cell <= date; cell++)
- {
- //Need all the tickets that have been edited DURING the month + the status at the end of the month (preferably the 28th);
- switch (row)
- {
- case 2:
- var stageCountOpen =
- tickets.AllDevelopmentTickets.Count(
- t =>
- (t.Stage.ToLower() =="in progress" ||
- t.Stage.ToLower() =="identified") && (t.LastEditDateTime.Month == startDate.AddMonths(cell - 1).Month) && (t.LastEditDateTime.Year == startDate.Year));
- table.Rows[row].Cells[cell].Paragraphs[0].Append(stageCountOpen.ToString(CultureInfo.InvariantCulture));
- break;
- case 3:
- var stageCountAwaitingCustomer =
- tickets.AllDevelopmentTickets.Count(t => (t.Stage.ToLower().Equals("awaiting customer")) && (t.LastEditDateTime.Month == startDate.AddMonths(cell - 1).Month) && (t.LastEditDateTime.Year == startDate.Year));
- table.Rows[row].Cells[cell].Paragraphs[0].Append(stageCountAwaitingCustomer.ToString(CultureInfo.InvariantCulture));
- break;
- case 4:
- var stageCountHold =
- tickets.AllDevelopmentTickets.Count(t => (t.Stage.ToLower().Equals("on hold")) && (t.LastEditDateTime.Month == startDate.AddMonths(cell - 1).Month) && (t.LastEditDateTime.Year == startDate.Year));
- table.Rows[row].Cells[cell].Paragraphs[0].Append(stageCountHold.ToString(CultureInfo.InvariantCulture));
- break;
- case 5:
- var stageCountClosed =
- tickets.AllDevelopmentTickets.Count(t => (t.Stage.ToLower().Equals("closed")) && (t.LastEditDateTime.Month == startDate.AddMonths(cell - 1).Month) && (t.LastEditDateTime.Year == startDate.Year));
- table.Rows[row].Cells[cell].Paragraphs[0].Append(stageCountClosed.ToString(CultureInfo.InvariantCulture));
- break;
- case 7:
- var allTickets = tickets.AllDevelopmentTickets.Count ( t => t.LastEditDateTime.Month == startDate.AddMonths(cell - 1).Month && t.LastEditDateTime.Year == startDate.Year);
- table.Rows[row].Cells[cell].Paragraphs[0].Append(allTickets.ToString(CultureInfo.InvariantCulture));
- break;
- }
- }
- summaryReportDocX.SaveAs(stream);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement