Exemplo n.º 1
0
        public TransferResultDTO TransferTransaction(TransferInDTO dto)
        {
            TransferResultDTO result = new TransferResultDTO();

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

                var fromAccount   = accountRepository.GetAll(x => x.Id == dto.FromAccountId && x.CustomerId == dto.CustomerId && x.Status == 1).FirstOrDefault();
                var accountNo     = dto.ToAccountNo.Substring(0, 4);
                var accountIntNo  = Convert.ToInt32(accountNo);
                var customerNo    = dto.ToAccountNo.Substring(4, 5);
                var customerIntNo = Convert.ToInt32(customerNo);

                var toCustomer = customerRepository.GetAll(x => x.CustomerNo == customerIntNo && x.Status == 1).FirstOrDefault();
                var toAccount  = accountRepository.GetAll(x => x.AccountNo == accountIntNo && x.CustomerId == toCustomer.Id && x.Status == 1).FirstOrDefault();

                if (fromAccount == null || toAccount == null)
                {
                    result.IsSuccess       = false;
                    result.ResponseMessage = "Geçersiz bir işlem yürütüldü. Girdiğiniz bilgileri kontrol ediniz.";
                }
                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);
            }
        }
Exemplo n.º 2
0
        public ActionResult Transfer(TransferInDTO dto)
        {
            if (dto.FromAccountId == 0 || dto.FromBalance <= 0 || string.IsNullOrWhiteSpace(dto.ToAccountNo))
            {
                TempData["Error"] = "Girdiğiniz bilgileri kontrol ediniz.";
                return(Redirect($"/Account/Transfer"));
            }

            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/Transfer"));
            }
        }