示例#1
0
        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 = "Транзакція не видалена"
            }));
        }
示例#2
0
 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());
        }