/// <summary>Flattens the duration.</summary> /// <param name="salesAreaCampaignTarget">The sales area campaign target.</param> /// <returns></returns> public DurationFlattenModel FlattenDuration(SalesAreaCampaignTarget salesAreaCampaignTarget) { var durationFlattenModel = new DurationFlattenModel(); if (salesAreaCampaignTarget is null) { return(durationFlattenModel); } if (!(salesAreaCampaignTarget.Multiparts is null)) { durationFlattenModel.DurationTargetRatings = salesAreaCampaignTarget.Multiparts.Sum(m => m.DesiredPercentageSplit); durationFlattenModel.DurationActualRatings = salesAreaCampaignTarget.Multiparts.Sum(m => m.CurrentPercentageSplit); var ticks = salesAreaCampaignTarget.Multiparts.FirstOrDefault()?.Lengths?.Select(x => x.Length) .FirstOrDefault().BclCompatibleTicks ?? default; durationFlattenModel.DurationSecs = Convert.ToInt32(TimeSpan.FromTicks(ticks).TotalSeconds); } durationFlattenModel.DurationTargetActualDiff = durationFlattenModel.DurationActualRatings - durationFlattenModel.DurationTargetRatings; durationFlattenModel.DurationTargetAchievedPct = GetDurationTargetAchievedPct(); return(durationFlattenModel); decimal GetDurationTargetAchievedPct() => Math.Round(durationFlattenModel.DurationTargetRatings == 0 ? 0 : durationFlattenModel.DurationActualRatings / durationFlattenModel.DurationTargetRatings * 100, 2, MidpointRounding.AwayFromZero); }
/// <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); }