protected override string BuildNotificationHtmlBody(string template, OnCallDailyNotification notification) { var result = template; var referenceTimeLabel = notification.ReferenceTime.ToString("dd/MM/yy"); if (notification.UnresolvedIssues.Any()) { result = InjectIssueStatus( notification.UnresolvedIssues.Where(i => i.IssueStatus == (int)IssueStatusKeys.New).ToList(), result, HtmlPlaceholders.NewIssues, HtmlSnippets.NoNewIssuesReportedOn(referenceTimeLabel)); result = InjectIssueStatus( notification.UnresolvedIssues.Where(i => i.IssueStatus == (int)IssueStatusKeys.Working).ToList(), result, HtmlPlaceholders.WorkingIssues, HtmlSnippets.NoWorkingIssuesOn(referenceTimeLabel)); result = InjectIssueStatus( notification.UnresolvedIssues.Where(i => i.IssueStatus == (int)IssueStatusKeys.WaitingForCustomer).ToList(), result, HtmlPlaceholders.WaitingForCustomerIssues, HtmlSnippets.NoIssuesWaitingForCustomerOn(referenceTimeLabel)); } else { result = result .Replace(HtmlPlaceholders.NewIssues, HtmlSnippets.NoNewIssuesReportedOn(referenceTimeLabel)) .Replace(HtmlPlaceholders.WorkingIssues, HtmlSnippets.NoWorkingIssuesOn(referenceTimeLabel)) .Replace(HtmlPlaceholders.WaitingForCustomerIssues, HtmlSnippets.NoIssuesWaitingForCustomerOn(referenceTimeLabel)); } result = result.Replace(HtmlPlaceholders.ReportDate, referenceTimeLabel); return(result); }
protected override string BuildNotificationBody(string template, WeeklySummaryNotification notification) { var newIssuesTrendPct = notification.GetNewIssuesTrendPct(); var newIssuesTrendImg = HtmlSnippets.GetTrendImage(newIssuesTrendPct, Images.UpArrowRed, Images.DownArrowGreen); var closedIssuesTrendPct = notification.GetIssuesClosedTrendPct(); var closedIssuesTrendImg = HtmlSnippets.GetTrendImage(closedIssuesTrendPct, Images.UpArrowGreen, Images.DownArrowRed); var unresolvedIssuesTrendPct = notification.GetIssuesUnresolvedTrendPct(); var unresolvedIssuesTrendImg = HtmlSnippets.GetTrendImage(unresolvedIssuesTrendPct, Images.UpArrowRed, Images.DownArrowGreen); var waitingIssuesTrendPct = notification.GetIssuesWaitingForCustomerTrendPct(); var waitingIssuesTrendImg = HtmlSnippets.GetTrendImage(waitingIssuesTrendPct, Images.UpArrowRed, Images.DownArrowGreen); var workingIssuesTrendPct = notification.GetIssuesInProgressTrendPct(); var workingIssuesTrendImg = HtmlSnippets.GetTrendImage(workingIssuesTrendPct, Images.UpArrowRed, Images.DownArrowGreen); var slaUnresolvedPctDeltaImg = HtmlSnippets.GetTrendImage(notification.UnresolvedPercentageDelta, Images.UpArrowRed, Images.DownArrowGreen); var slaAverageTimeToResolutionDelta = notification.LastWeek.AverageTimeToResolution - notification.PriorWeek.AverageTimeToResolution; var slaAverageTimeToResolutionImg = HtmlSnippets.GetTrendImage(slaAverageTimeToResolutionDelta.Ticks, Images.UpArrowRed, Images.DownArrowGreen); var result = template .Replace(HtmlPlaceholders.ReportDate, notification.ReferenceTime.ToString("dd/MM/yy")) // new support requests .Replace(HtmlPlaceholders.NewIssueCountPriorWeek, notification.PriorWeek.CreatedCount.ToString("N0")) .Replace(HtmlPlaceholders.NewIssueCountLastWeek, notification.LastWeek.CreatedCount.ToString("N0")) .Replace(HtmlPlaceholders.NewIssueCountDeltaValue, HtmlSnippets.GetTrendPercentageString(newIssuesTrendPct)) .Replace(HtmlPlaceholders.NewIssueCountDeltaImage, newIssuesTrendImg) // closed support requests .Replace(HtmlPlaceholders.ClosedIssueCountPriorWeek, notification.PriorWeek.ClosedCount.ToString("N0")) .Replace(HtmlPlaceholders.ClosedIssueCountLastWeek, notification.LastWeek.ClosedCount.ToString("N0")) .Replace(HtmlPlaceholders.ClosedIssueCountDeltaValue, HtmlSnippets.GetTrendPercentageString(closedIssuesTrendPct)) .Replace(HtmlPlaceholders.ClosedIssueCountDeltaImage, closedIssuesTrendImg) // unresolved support requests .Replace(HtmlPlaceholders.UnresolvedIssueCountPriorWeek, notification.PriorWeek.UnresolvedCount.ToString("N0")) .Replace(HtmlPlaceholders.UnresolvedIssueCountLastWeek, notification.LastWeek.UnresolvedCount.ToString("N0")) .Replace(HtmlPlaceholders.UnresolvedIssueCountDeltaValue, HtmlSnippets.GetTrendPercentageString(unresolvedIssuesTrendPct)) .Replace(HtmlPlaceholders.UnresolvedIssueCountDeltaImage, unresolvedIssuesTrendImg) // waiting on customer .Replace(HtmlPlaceholders.WaitingForCustomerIssueCountPriorWeek, notification.PriorWeek.WaitingForCustomerCount.ToString("N0")) .Replace(HtmlPlaceholders.WaitingForCustomerIssueCountLastWeek, notification.LastWeek.WaitingForCustomerCount.ToString("N0")) .Replace(HtmlPlaceholders.WaitingForCustomerIssueCountDeltaValue, HtmlSnippets.GetTrendPercentageString(waitingIssuesTrendPct)) .Replace(HtmlPlaceholders.WaitingForCustomerIssueCountDeltaImage, waitingIssuesTrendImg) // in progress .Replace(HtmlPlaceholders.InProgressIssueCountPriorWeek, notification.PriorWeek.InProgressCount.ToString("N0")) .Replace(HtmlPlaceholders.InProgressIssueCountLastWeek, notification.LastWeek.InProgressCount.ToString("N0")) .Replace(HtmlPlaceholders.InProgressIssueCountDeltaValue, HtmlSnippets.GetTrendPercentageString(workingIssuesTrendPct)) .Replace(HtmlPlaceholders.InProgressIssueCountDeltaImage, workingIssuesTrendImg) // SLA - unresolved pct .Replace(HtmlPlaceholders.UnresolvedPercentagePriorWeek, notification.PriorWeek.GetUnresolvedPercentage().ToString("P0")) .Replace(HtmlPlaceholders.UnresolvedPercentageLastWeek, notification.LastWeek.GetUnresolvedPercentage().ToString("P0")) .Replace(HtmlPlaceholders.UnresolvedPercentageDeltaValue, notification.UnresolvedPercentageDelta.ToString("P0")) .Replace(HtmlPlaceholders.UnresolvedPercentageDeltaImage, slaUnresolvedPctDeltaImg) // SLA - average time to resolution .Replace(HtmlPlaceholders.AvgTimeToResolutionPriorWeek, notification.PriorWeek.AverageTimeToResolution.ToString(@"d\d' 'hh\:mm")) .Replace(HtmlPlaceholders.AvgTimeToResolutionLastWeek, notification.LastWeek.AverageTimeToResolution.ToString(@"d\d' 'hh\:mm")) .Replace(HtmlPlaceholders.AvgTimeToResolutionDeltaValue, slaAverageTimeToResolutionDelta.ToString(@"d\d' 'hh\:mm")) .Replace(HtmlPlaceholders.AvgTimeToResolutionDeltaImage, slaAverageTimeToResolutionImg); // Top 3 support request reasons last week result = FillInTopSupportRequestReasons(notification.TopSupportRequestReasonsLastWeek, result); // who has open issues assigned result = FillInUnresolvedIssuesByAssignedTo(notification, result); return(result); }