private List <DebtCollectRequest> FormDebtCollectRequests(BudgetPeriodData pd) { var requests = new List <DebtCollectRequest>(); for (int i = 0; i < pd.RawPeriodData.Count; i++) { var req = new DebtCollectRequest() { Department = _departments.Departments[i], Allocated = pd.DepartmentsAllocatedBudget[i], Spent = pd.DepartmentsSpentMoney[i], Cards = _cardsPeriodManager.GetCardsArrangement(_departments.Departments[i]), Costs = pd.RawPeriodData[i].GetEachResourceMonthCost() }; requests.Add(req); } return(requests); }
private void ProcessDepartmentDiff(int diff, DebtCollectRequest r) { if (diff < 0) { diff = Math.Abs(diff); r.Department.IndebtednessCount++; r.Department.ProcessBudgetExceed((float)r.Allocated / r.Spent); List <ICard> randomDepCards = r.Cards.OrderBy(x => _random.Next()).ToList(); var ddc = new DepartmentDebtCollector(r.Department, diff, randomDepCards, r.Costs); ddc.CheckCard += CheckIndebtednessCount; ddc.ProcessCards(); if (ddc.Diff > 0) { ddc.ProcessCards(true); } } else { r.Department.IndebtednessCount = Math.Min(r.Department.IndebtednessCount, DebtCountBorder); r.Department.IndebtednessCount--; } }