public List <FunctionalSkillEarningsEvent> OriginalAndRedundancyFunctionalSkillEarningEventIfRequired(FunctionalSkillEarningsEvent functionalSkillEarning, List <byte> redundancyPeriods)
        {
            var splitResults = new List <FunctionalSkillEarningsEvent> {
                functionalSkillEarning
            };

            if (!redundancyPeriods.Any())
            {
                return(splitResults);
            }

            var redundancyEarningEvent = redundancyEarningEventFactory.CreateRedundancyFunctionalSkillTypeEarningsEvent(functionalSkillEarning);

            splitResults.Add(redundancyEarningEvent);

            foreach (var earning in functionalSkillEarning.Earnings)
            {
                earning.Periods = RemoveRedundancyPeriods(earning.Periods, redundancyPeriods);
            }

            foreach (var earning in redundancyEarningEvent.Earnings)
            {
                earning.Periods = RemoveNonRedundancyPeriods(earning.Periods, redundancyPeriods);
                SetPeriodsToFullContribution(earning.Periods);
            }

            return(splitResults);
        }
Beispiel #2
0
        public List <FunctionalSkillEarningsEvent> SplitFunctionSkillEarningByRedundancyDate(FunctionalSkillEarningsEvent functionalSkillEarning,
                                                                                             DateTime priceEpisodeRedStartDate)
        {
            var splitResults     = new List <FunctionalSkillEarningsEvent>();
            var redundancyPeriod = priceEpisodeRedStartDate.GetPeriodFromDate();

            var redundancyEarningEvent = redundancyEarningEventFactory.CreateRedundancyFunctionalSkillTypeEarningsEvent(functionalSkillEarning);

            foreach (var earning in functionalSkillEarning.Earnings)
            {
                earning.Periods = RemoveRedundancyPeriods(earning.Periods, redundancyPeriod);
            }

            foreach (var earning in redundancyEarningEvent.Earnings)
            {
                earning.Periods = RemovePreRedundancyPeriods(earning.Periods, redundancyPeriod);
                SetPeriodsToFullContribution(earning.Periods);
            }

            splitResults.Add(functionalSkillEarning);
            splitResults.Add(redundancyEarningEvent);

            return(splitResults);
        }