Beispiel #1
0
        public TransferResultDTO TransferTransaction(VirmanInDTO dto)
        {
            TransferResultDTO result = new TransferResultDTO();

            using (BaseContext context = ContextFactory.Create())
            {
                IUnitOfWork           uow = new BaseUnitOfWork(context);
                IRepository <Account> accountRepository = uow.GetRepository <Account>();

                var fromAccount = accountRepository.GetAll(x => x.Id == dto.FromAccountId && x.CustomerId == dto.CustomerId && x.Status == 1).FirstOrDefault();
                var toAccount   = accountRepository.GetAll(x => x.Id == dto.ToAccountId && x.Status == 1).FirstOrDefault();

                if (fromAccount == null || toAccount == null)
                {
                    result.IsSuccess       = false;
                    result.ResponseMessage = "Geçersiz bir işlem yürütüldü.";
                }
                else if (fromAccount.Balance < dto.FromBalance)
                {
                    result.IsSuccess       = false;
                    result.ResponseMessage = "Hesabınızda yeteri kadar bakiye bulunmamaktadır.";
                }
                else if (fromAccount.CustomerId != dto.CustomerId)
                {
                    result.IsSuccess       = false;
                    result.ResponseMessage = "Fraud işlem algılandı. İşlem iptal edildi.";
                }
                else
                {
                    fromAccount.Balance -= dto.FromBalance;
                    toAccount.Balance   += dto.FromBalance;
                    uow.SaveChanges();

                    result.IsSuccess       = true;
                    result.ResponseMessage = "Transfer başarıyla gerçekleştirildi.";
                }

                return(result);
            }
        }
        public ActionResult Virman(VirmanInDTO dto)
        {
            if (dto.FromAccountId == 0 || dto.FromBalance <= 0 || dto.ToAccountId == -1)
            {
                TempData["Error"] = "Girdiğiniz bilgileri kontrol ediniz.";
                return(Redirect($"/Account/Virman"));
            }

            dto.CustomerId = UserSession.Info.Id;
            TransferResultDTO result = _accountService.TransferTransaction(dto);

            if (result.IsSuccess)
            {
                TempData["Success"] = result.ResponseMessage;
                return(Redirect($"/Account/Index"));
            }
            else
            {
                TempData["Error"] = "Girdiğiniz bilgileri kontrol ediniz.";
                return(Redirect($"/Account/Virman"));
            }
        }