Ejemplo n.º 1
0
        public async Task <IActionResult> Add(FinanceVm model)
        {
            ViewBag.Users = _db.Users.ToList();

            var user = _db.Users.SingleOrDefault(u => u.Id.Equals(model.UserId));

            if (user == null)
            {
                ModelState.AddModelError("UserId", "Not found");
            }
            if (model.Money <= 0)
            {
                ModelState.AddModelError("Money", "Only positive values");
            }


            if (ModelState.IsValid)
            {
                var transaction = new Transactions();
                transaction.Date   = DateTime.Now;
                transaction.UserId = model.UserId;
                transaction.Money  = model.Money;
                transaction.Type   = model.Type;
                _db.Transactions.Add(transaction);

                switch (transaction.Type)
                {
                case TransactionType.Replenishment:
                    user.Money += model.Money;
                    break;

                case TransactionType.Withdrawal:
                    user.Money -= model.Money;
                    break;
                }

                _db.Users.Update(user);

                _db.SaveChanges();

                await _notify.AboutTransactionAsync(TransactionReason.Passed, user.Email, transaction);

                return(RedirectToAction("Index"));
            }

            return(View(new FinanceVm()));
        }