public IEnumerable <BankWithClients> RetrieveAllBanksWithClients()
        {
            var results = _repo.DebtsForPeopleAndBanks().Result.Where(d => d.Amount > 0);
            var banks   = _repo.AllBanks().Result;

            var bankClients = new List <BankWithClients>();

            foreach (var bank in banks)
            {
                var theBank = new BankWithClients()
                {
                    BankId   = bank.IDBank,
                    BankName = bank.Name,
                    Clients  = new List <Person>()
                };
                bankClients.Add(theBank);
            }

            foreach (var item in bankClients)
            {
                foreach (var debt in results)
                {
                    if (item.BankId == debt.bank.IDBank)
                    {
                        item.Clients.Add(debt.person);
                    }
                }
            }
            return(bankClients);
        }
示例#2
0
        static void Main(string[] args)
        {
            var d = new DebtRepository();

            Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(d.AllBanks()));
            Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(d.AllPersons()));
            Console.WriteLine(System.Text.Json.JsonSerializer.Serialize(d.DebtsForPeopleAndBanks()));
        }
        public RefinanceResponse TransferPersonsDebtToOneBank(int bankId, int personId)
        {
            var bankToTransfer = _repo.AllBanks().Result.Where(b => b.IDBank == bankId).FirstOrDefault();

            if (bankToTransfer == null)
            {
                return(RefinanceResponse.NotFound);
            }
            var person = _repo.AllPersons().Result.Where(p => p.IDPerson == personId).FirstOrDefault();

            if (person == null)
            {
                return(RefinanceResponse.NotFound);
            }

            var debts = _repo.DebtsForPeopleAndBanks().Result.Where(d => d.person.IDPerson == personId);

            if (debts.Count() < 2)
            {
                return(RefinanceResponse.BadRequest);
            }

            var maxDebt = bankToTransfer.MaxDebt;
            int sumDebt = 0;

            foreach (var debt in debts)
            {
                sumDebt += debt.Amount;
            }

            if (sumDebt > maxDebt)
            {
                return(RefinanceResponse.BadRequest);
            }

            foreach (var debt in debts)
            {
                if (debt.bank.IDBank == bankToTransfer.IDBank)
                {
                    debt.Amount = sumDebt;
                }
                else
                {
                    debt.Amount = 0;
                }
            }

            return(RefinanceResponse.Succes);
        }