public ScenarioCampaignFailureOutput ProcessFile(Guid scenarioId, string folder) { string filename = FileHelpers.GetPathToFileIfExists(folder, FileName); var result = new ScenarioCampaignFailureOutput { ScenarioId = scenarioId, Data = new List <ScenarioCampaignFailure>() }; if (String.IsNullOrEmpty(filename)) { return(result); } _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0, 0, $"Processing output file {filename}")); var importSettings = CSVImportSettings.GetImportSettings(filename, typeof(ScenarioCampaignFailureHeaderMap), typeof(ScenarioCampaignFailureIndexMap)); using var scenarioCampaignFailureImportRepository = new CSVScenarioCampaignFailureImportRepository(importSettings); var fileData = scenarioCampaignFailureImportRepository.GetAll(); if (fileData is null || !fileData.Any()) { _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForException(0, 0, $"Error generating Scenario Campaign Failure, data not found", new ObjectNotFoundException())); return(result); } var salesAreas = _dataSnapshot.AllSalesAreas.Value.ToDictionary(s => s.CustomId); var campaigns = _dataSnapshot.AllCampaigns.Value.ToDictionary(c => c.ExternalId); foreach (var data in fileData) { try { _ = salesAreas.TryGetValue(data.SalesAreaNumber, out var salesArea); _ = campaigns.TryGetValue(data.CampaignExternalId, out var campaign); var salesAreaName = salesArea?.Name ?? "Unknown"; var salesAreaGroupName = campaign?.SalesAreaCampaignTarget .Where(sact => !(sact.SalesAreaGroup is null)) .Select(sact => sact.SalesAreaGroup) .FirstOrDefault(sag => sag.SalesAreas.Any(sa => sa.Equals(salesAreaName, StringComparison.OrdinalIgnoreCase))) ?.GroupName; var scenarioCampaignFailure = new ScenarioCampaignFailure { ScenarioId = scenarioId, ExternalCampaignId = data.CampaignExternalId, SalesArea = salesAreaName, SalesAreaGroup = salesAreaGroupName, Length = Duration.FromSeconds(data.SpotLength), MultipartNo = data.MultipartNumber, StrikeWeightStartDate = DateHelper.GetDate(data.StrikeWeightStartDate.ToString(), "yyyyMMdd"), StrikeWeightEndDate = DateHelper.GetDate(data.StrikeWeightEndDate.ToString(), "yyyyMMdd"), DayPartStartTime = ToTimeSpan(data.DayPartStartTime.ToString().PadLeft(6, '0')), DayPartEndTime = ToTimeSpan(data.DayPartEndTime.ToString().PadLeft(6, '0')), DayPartDays = data.DayPartDays, FailureType = data.FailureType, FailureCount = data.NumberOfFailures, PassesEncounteringFailure = DecryptPassIds(data.PassesEncounteringFailure), }; result.Data.Add(scenarioCampaignFailure); } catch (ObjectNotFoundException exception) { _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForException(0, 0, $"Error generating Scenario Campaign Failure for campaign id {data.CampaignExternalId}", exception)); } } _auditEventRepository.Insert(AuditEventFactory.CreateAuditEventForInformationMessage(0, 0, $"Processed output file {filename}")); return(result); }
public void Add(ScenarioCampaignFailure scenarioCampaignFailure) => _dbContext.Add(_mapper.Map <ScenarioCampaignFailureEntity>(scenarioCampaignFailure), post => post.MapTo(scenarioCampaignFailure), _mapper);