public IdentityResult RemoveLastSchoolTransaction(string schoolId) { School school = _context.Schools.Include(sch => sch.SchoolTransactions).FirstOrDefault(sch => sch.Id == schoolId); IEnumerable <SchoolTransaction> schoolTransactions = _context.SchoolTransactions.Where(sctr => sctr.SchoolId == schoolId) .OrderByDescending(sctr => sctr.PayedDateTime).ToList(); SchoolTransaction transaction = school.SchoolTransactions.OrderByDescending(sch => sch.PayedDateTime).FirstOrDefault(); if (transaction == null) { return(IdentityResult.Failed(new IdentityError { Description = "Транзакція не знайдена" })); } if (_context.SchoolTransactions.Remove(transaction).State == EntityState.Deleted) { school.Balance = transaction.OldBalance; if (transaction.Payed < 0) { school.PayedMonth = new DateTime(); school.IsPayed = false; } _context.SaveChanges(); return(IdentityResult.Success); } return(IdentityResult.Failed(new IdentityError { Description = "Транзакція не видалена" })); }
public IdentityResult AddSchoolTransaction(SchoolTransaction transaction) { if (_context.SchoolTransactions.Add(transaction).State == EntityState.Added) { School school = _context.Schools.FirstOrDefault(sch => sch.Id == transaction.SchoolId); if (school != null) { school.Balance = transaction.NewBalance; _context.SaveChanges(); return(IdentityResult.Success); } } return(IdentityResult.Failed(new IdentityError { Description = "Сплата не зарахована" })); }
public IActionResult AddSchoolPayment(SchoolTransaction transaction) { if (string.IsNullOrEmpty(transaction.SchoolId)) { return(NoContent()); } if (transaction.Payed == 0) { TempData["ErrorMessage"] = "Сума повинна бути відмінна від 0"; return(RedirectToAction("SchoolDetails", new { schoolId = transaction.SchoolId })); } School school = _paymentService.GetSchoolFinance(transaction.SchoolId); if (school == null) { return(NotFound()); } SchoolTransaction newTransaction = new SchoolTransaction { Payed = transaction.Payed, OldBalance = school.Balance, NewBalance = school.Balance + transaction.Payed, Description = transaction.Description, PayedDateTime = DateTime.Now, SchoolId = transaction.SchoolId, }; IdentityResult result = _paymentService.AddSchoolTransaction(newTransaction); if (result.Succeeded) { TempData["SuccessMessage"] = "Баланс школи успішно поповнено"; school = _schoolService.GetSchool(school.Id); } else { TempData["ErrorMessage"] = result.Errors.FirstOrDefault().Description; } return(RedirectToAction("SchoolDetails", new { schoolId = transaction.SchoolId })); }
public IdentityResult PayForSchool(string schoolId, string description) { School school = _context.Schools.FirstOrDefault(sch => sch.Id == schoolId); //if price == 0 don't create transaction but giv access to school if (school.Price == 0) { return(IdentityResult.Success); } if (IsDatePassed(school.PayedMonth, false)) { if (school.Balance >= school.Price) { school.IsPayed = true; school.PayedMonth = DateTime.Now; if (string.IsNullOrEmpty(description)) { description = "Автоматична сплата за місяць"; } SchoolTransaction schoolTransaction = new SchoolTransaction { SchoolId = schoolId, Payed = -school.Price, Description = description, PayedDateTime = DateTime.Now, OldBalance = school.Balance, NewBalance = school.Balance - school.Price, }; school.Balance -= school.Price; if (_context.SchoolTransactions.Add(schoolTransaction).State == EntityState.Added) { _context.SaveChanges(); return(IdentityResult.Success); } } } return(IdentityResult.Failed()); }