/// <summary>Maps to campaign flatten model.</summary> /// <param name="baseCampaignFlattenedModel">The base campaign flattened model.</param> /// <param name="salesAreaCampaignTargetFlattenModel">The sales area campaign target flatten model.</param> /// <param name="durationFlattenModel">The duration flatten model.</param> /// <param name="strikeWeightFlattenModel">The strike weight flatten model.</param> /// <param name="dayPartFlattenModel">The day part flatten model.</param> /// <returns></returns> private CampaignFlattenedModel MapToCampaignFlattenModel( CampaignBaseFlattenedModel baseCampaignFlattenedModel, SalesAreaCampaignTargetFlattenModel salesAreaCampaignTargetFlattenModel, DurationFlattenModel durationFlattenModel, StrikeWeightFlattenModel strikeWeightFlattenModel = null, DayPartFlattenModel dayPartFlattenModel = null) { return(_mapper.Map <CampaignFlattenedModel>( Tuple.Create( baseCampaignFlattenedModel, salesAreaCampaignTargetFlattenModel, durationFlattenModel, strikeWeightFlattenModel, dayPartFlattenModel))); }
private CampaignFlattenedModel MapToCreateCampaignFlattenedModel( CampaignBaseFlattenedModel baseCampaignFlattenedModel, SalesAreaCampaignTargetFlattenModel salesAreaCampaignTargetFlattenModel, DurationFlattenModel durationFlattenModel, IMapper mapper, StrikeWeightFlattenModel strikeWeightFlattenModel = null, DayPartFlattenModel dayPartFlattenModel = null) { var campaignFlattenedModel = mapper.Map <CampaignFlattenedModel>(baseCampaignFlattenedModel); campaignFlattenedModel = mapper.Map(salesAreaCampaignTargetFlattenModel, campaignFlattenedModel); campaignFlattenedModel = mapper.Map(durationFlattenModel, campaignFlattenedModel); if (strikeWeightFlattenModel != null) { campaignFlattenedModel = mapper.Map(strikeWeightFlattenModel, campaignFlattenedModel); if (dayPartFlattenModel != null) { campaignFlattenedModel = mapper.Map(dayPartFlattenModel, campaignFlattenedModel); } } return(campaignFlattenedModel); }
/// <summary> /// Converts the specified campaign list into the list of <see cref="CampaignFlattenedModel"/>>. /// </summary> public List <CampaignFlattenedModel> Flatten(IReadOnlyCollection <Campaign> campaigns) { var campaignFlattenedModelList = new List <CampaignFlattenedModel>(); if (campaigns is null || campaigns.Count == 0) { return(campaignFlattenedModelList); } PrepareRelatedCampaignData(campaigns); foreach (var item in campaigns) { var baseCampaignFlattenedModel = new CampaignBaseFlattenedModel() { ExternalCampaignRef = item.ExternalId, CampaignName = item.Name, CampaignGroup = item.CampaignGroup, BusinessType = item.BusinessType, CampaignStartDate = item.StartDateTime, CampaignEndDate = item.EndDateTime, DaysToEndOfCampign = (item.EndDateTime - DateTime.Now).Days, CampaignTargetRatings = item.TargetRatings, CampaignActualRatings = item.ActualRatings, CampaignTargetActualDiff = item.ActualRatings - item.TargetRatings, CampaignTargetAchievedPct = GetCampaignTargetAchievedPct() }; Demographic demographic = null; if (!(item.DemoGraphic is null)) { demographic = ResolveDemographic(item); } baseCampaignFlattenedModel.DemographicName = demographic?.Name ?? string.Empty; var product = ResolveProduct(item); if (!(product is null)) { baseCampaignFlattenedModel.AgencyName = product.AgencyName; baseCampaignFlattenedModel.ProductName = product.Name; baseCampaignFlattenedModel.AdvertiserName = product.AdvertiserName; var childClash = ResolveClash(item); if (!(childClash is null)) { baseCampaignFlattenedModel.ClashName = childClash.Description; var parentClash = ResolveParentClash(item); if (!(parentClash is null)) { baseCampaignFlattenedModel.ParentClashName = parentClash.Description; } } } foreach (var salesAreaCampaignTarget in item.SalesAreaCampaignTarget) { var flattenedSaleAreaCampaignTarget = FlattenSaleAreaCampaignTarget(salesAreaCampaignTarget); var flattenedDuration = FlattenDuration(salesAreaCampaignTarget); if (salesAreaCampaignTarget.CampaignTargets is null || !salesAreaCampaignTarget.CampaignTargets.Any()) { var mappedModel = MapToCampaignFlattenModel( baseCampaignFlattenedModel, flattenedSaleAreaCampaignTarget, flattenedDuration); campaignFlattenedModelList.Add(mappedModel); continue; } foreach (var campaignTarget in salesAreaCampaignTarget.CampaignTargets) { foreach (var strikeWeight in campaignTarget.StrikeWeights) { var flattenedStrikeWeight = FlattenStrikeWeight(strikeWeight); if (strikeWeight.DayParts is null || !strikeWeight.DayParts.Any()) { var mappedModel = MapToCampaignFlattenModel( baseCampaignFlattenedModel, flattenedSaleAreaCampaignTarget, flattenedDuration, flattenedStrikeWeight); campaignFlattenedModelList.Add(mappedModel); continue; } foreach (var dayPart in strikeWeight.DayParts) { var flattenedDayPart = FlattenDayPart(dayPart); var mappedModel = MapToCampaignFlattenModel( baseCampaignFlattenedModel, flattenedSaleAreaCampaignTarget, flattenedDuration, flattenedStrikeWeight, flattenedDayPart); campaignFlattenedModelList.Add(mappedModel); } } } } decimal GetCampaignTargetAchievedPct() => Math.Round(item.TargetRatings == 0 ? 0 : item.ActualRatings / item.TargetRatings * 100, 2, MidpointRounding.AwayFromZero); } return(campaignFlattenedModelList); }