// GET: Credit/Delete/5 public async Task <IActionResult> Delete(int id) { CreditContract contract = await _context.CreditContracts.Include(c => c.Accounts).Include(c => c.User).FirstAsync(c => c.Id == id); CreditContractViewModel vm = _mapper.Map <CreditContractViewModel>(contract); CreditAccount account = contract.Accounts.FirstOrDefault(a => !a.IsForPercents); CreditAccount percentAccount = contract.Accounts.FirstOrDefault(a => a.IsForPercents); vm.CreditAmount = account?.Credit.ToString("F"); vm.CreditPercent = percentAccount?.Saldo.ToString("F"); vm.UserName = string.Format("{0} {1} {2}", contract.User.Surname, contract.User.FirstName, contract.User.SecondName); return(View(vm)); }
// GET: Credit/Create public async Task <IActionResult> Create() { CreditContractViewModel vm = new CreditContractViewModel(); IEnumerable <Credit> credits = await _context.Credits.ToListAsync(); var cre = new List <SelectListItem>(); foreach (var item in credits) { cre.Add(new SelectListItem() { Selected = false, Text = string.Format("Name: {0}; Rate: {1}; Contract term: {2}", item.Name, item.Rate, item.Term), Value = item.Id.ToString() }); } vm.Credits = cre; IEnumerable <User> users = await _context.Users.ToListAsync(); var usr = new List <SelectListItem>(); foreach (var item in users) { usr.Add(new SelectListItem() { Selected = false, Text = string.Concat(item.Surname, ' ', item.FirstName, ' ', item.SecondName), Value = item.Id.ToString() }); } vm.Users = usr; var cur = new List <SelectListItem>(); foreach (var item in Enum.GetNames(typeof(Currency))) { cur.Add(new SelectListItem() { Selected = false, Text = item, Value = item }); } vm.Currencies = cur; vm.BeginDate = DateTime.Today.ToString("dd.MM.yyyy"); vm.Number = vm.GetHashCode().ToString("0000000000").Substring(0, 10); return(View(vm)); }
public async Task <IActionResult> Create(CreditContractViewModel vm) { try { decimal amount = decimal.Parse(vm.CreditAmount); if (amount > 1000000 || amount < 10) { return(View("Error")); } CreditContract contract = _mapper.Map <CreditContract>(vm); Credit credit = _context.Credits.Find(vm.CreditId); User user = await _context.Users.FindAsync(contract.UserId); int count = await _context.Accounts.Where(a => a.UserId == user.Id).CountAsync(); contract.EndDate = contract.BeginDate.AddMonths(credit.Term); await _context.CreditContracts.AddAsync(contract); await _context.SaveChangesAsync(); Account cashRegisterAccount = await _context.Accounts.FirstOrDefaultAsync(a => a.Name == "cash"); Account frbAccount = await _context.Accounts.FirstOrDefaultAsync(a => a.Name == "frb"); CreditAccount account = new CreditAccount() { IsActive = false, CreditContractId = contract.Id, Credit = 0, Debet = 0, Saldo = 0, IsForPercents = false, UserId = user.Id, Number = "2400" + user.Id.ToString("00000") + (count + 1).ToString("000") + '1', Name = user.Surname + " " + user.FirstName + " " + user.SecondName }; CreditAccount percentAccount = new CreditAccount() { IsActive = false, CreditContractId = contract.Id, Credit = 0, Debet = 0, Saldo = 0, IsForPercents = true, UserId = user.Id, Number = "2470" + user.Id.ToString("00000") + (count + 2).ToString("000") + '2', Name = user.Surname + " " + user.FirstName + " " + user.SecondName }; GiveCreditToClient(ref frbAccount, ref account, amount); Card card = new Card() { Account = account, Pin = Math.Abs(account.Number.GetHashCode()).ToString("0000").Substring(0, 4), Number = "9112" + Math.Abs(contract.Number.GetHashCode()).ToString("00000000").Substring(0, 8), Balance = amount }; await _context.CreditAccounts.AddAsync(account); await _context.CreditAccounts.AddAsync(percentAccount); _context.Accounts.Update(frbAccount); _context.Accounts.Update(cashRegisterAccount); await _context.Cards.AddAsync(card); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } catch { return(View(vm)); } }