コード例 #1
0
        private void CreateBuilder(IPayDay payDay)
        {
            if (PayDays[0].RecordId == payDay.RecordId)
            {
                Builders.Add(new PayPeriodBuilder(payDay, null));
                return;
            }

            int previousItem = PayDays.FindIndex(pd => pd.RecordId == payDay.RecordId) - 1;

            Builders.Add(new PayPeriodBuilder(payDay, PayDays[previousItem].Date));
        }
コード例 #2
0
        public DateDecimal[] Construct()
        {
            PayDays = PayDays.OrderByDescending(pd => pd.Date).ToList();
            PayDays.ForEach(CreateBuilder);
            Builders.ForEach(b => b.Build());
            Balancer balancer = new Balancer(Builders.ToArray());

            balancer.BalanceBudget();
            Builders.ForEach(GetResult);
            Result = Result.GroupBy(dd => dd.Date).Select(dd => new DateDecimal(dd.Select(x => x.Date).First(), dd.Sum(y => y.Amount))).ToList();
            return(Result.OrderBy(dd => dd.Date).ToArray());
        }