public static void GivenAFirstWeekDayThenOrderedArrayOfWeekdaysReturned( DayOfWeek startDayOfWeek, string[] expectedWeek) { // Act var result = DaypartDayFormattingUtilities.GetWeekDaysWithCustomStart(startDayOfWeek); // Assert _ = result.Should().Equal(expectedWeek); }
public Stream GenerateReport <T>(IReadOnlyCollection <ScenarioCampaignFailure> data, T snapshot, DayOfWeek tenantStartDayOfWeek) where T : IFaultTypesHolder, ICampaignsHolder { var results = GenerateReportData(data, snapshot); var weekDays = DaypartDayFormattingUtilities.GetWeekDaysWithCustomStart(tenantStartDayOfWeek); var sheetName = SheetName; var sheetConfiguration = CreateExcelConfigurationBuilder(weekDays, tenantStartDayOfWeek).BuildConfiguration(); var stream = new MemoryStream(); using (var reportBuilder = new OneTableExcelReportBuilder(new ExcelStyleApplier()) .PredefineStyles(GamePlanReportStyles.AllPredefineStyles)) { if (results.Count == 0) { _ = reportBuilder.Sheet(sheetName, sheetBuilder => { sheetBuilder.DataContent(results, sheetConfiguration); }); } else { for (int i = 0, page = 1; i < results.Count; i += PageSize, page++) { // copy for lambda int j = i; _ = reportBuilder.Sheet(sheetName, sheetBuilder => { sheetBuilder.DataContent(results.Skip(j).Take(PageSize).ToArray(), sheetConfiguration); }); sheetName = $"{SheetName} ({page})"; } } reportBuilder.SaveAs(stream); } _ = stream.Seek(0, SeekOrigin.Begin); return(stream); }
public List <ScenarioCampaignFailureModel> ExtendScenarioCampaignFailureModel(List <ScenarioCampaignFailure> scenarioCampaignFailures) { var scenarioCampaignFailureModelList = new List <ScenarioCampaignFailureModel>(); if (scenarioCampaignFailures is null || !scenarioCampaignFailures.Any()) { return(scenarioCampaignFailureModelList); } var campaigns = new Dictionary <string, Campaign>(); var failureTypes = new Dictionary <int, FaultType>(); var failureTypeIds = scenarioCampaignFailures .Select(r => r.FailureType) .Distinct(); var campaignIds = scenarioCampaignFailures .Select(r => r.ExternalCampaignId) .Distinct(); var tenantStartDayOfWeek = _tenantSettingsRepository.GetStartDayOfWeek(); var weekDays = DaypartDayFormattingUtilities.GetWeekDaysWithCustomStart(tenantStartDayOfWeek); failureTypes = _functionalAreaRepository .FindFaultTypes(failureTypeIds.ToList()) .ToDictionary(r => r.Id); campaigns = _campaignRepository .FindByRefs(campaignIds.ToList()) .ToDictionary(r => r.ExternalId); foreach (var item in scenarioCampaignFailures) { var scenarioCampaignResultModel = new ScenarioCampaignFailureModel() { Id = item.Id, ExternalCampaignId = item.ExternalCampaignId, SalesAreaGroupName = item.SalesAreaGroup, SalesAreaName = item.SalesArea, DurationSecs = (int)item.Length.ToTimeSpan().TotalSeconds, MultipartNo = item.MultipartNo, StrikeWeightStartDate = item.StrikeWeightStartDate.ToUniversalTime(), StrikeWeightEndDate = item.StrikeWeightEndDate.ToUniversalTime(), DayPartStartTime = item.DayPartStartTime, DayPartEndTime = item.DayPartEndTime, DayPartDays = DaypartDayFormattingUtilities.FormatWeekDays(weekDays, item.DayPartDays, tenantStartDayOfWeek), FailureType = item.FailureType, FailureCount = item.FailureCount, PassesEncounteringFailure = item.PassesEncounteringFailure }; if (item.ExternalCampaignId != null && campaigns.TryGetValue(item.ExternalCampaignId, out Campaign campaign)) { scenarioCampaignResultModel.CampaignName = campaign.Name; } if (item.FailureType != null && failureTypes.TryGetValue(item.FailureType, out FaultType faultType)) { scenarioCampaignResultModel.FailureTypeName = faultType.Description?.FirstOrDefault(e => e.Key == "ENG").Value; } scenarioCampaignFailureModelList.Add(scenarioCampaignResultModel); } return(scenarioCampaignFailureModelList); }