コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }