public async Task <IActionResult> Create(CreateTransferViewmodel transferToCreate) { var transfer = _mapper.Map <Transfer>(transferToCreate); await _authorizationService.HandleCreateUpdateAsync(transfer); var createdTransfer = await _transferService.Create(transfer); var model = _mapper.Map <TransferViewmodel>(createdTransfer); return(Created(Request.Path, model)); }
public ActionResult CreateBankTransfer([FromBody] BankTransferCreationDto bankTransferCreationDto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var requesterBankAccount = _context.BankAccounts.SingleOrDefault(ba => ba.Id == bankTransferCreationDto.RequesterBankAccountId); if (requesterBankAccount == null) { return(NotFound()); } if (requesterBankAccount.Balance - bankTransferCreationDto.Value < requesterBankAccount.DebitLimit * -1) { ModelState.AddModelError(nameof(requesterBankAccount.DebitLimit), "Not sufficient founds. Debit limit is exceeded."); return(BadRequest(ModelState)); } var targetBankAccount = _context.BankAccounts.FirstOrDefault(ba => ba.Iban == bankTransferCreationDto.ReceiverIban); if (targetBankAccount == null) { _externalTransferService.Create(requesterBankAccount, new BankAccount { Iban = bankTransferCreationDto.ReceiverIban }, (decimal)bankTransferCreationDto.Value); } else { try { _internalTransferService.Create(requesterBankAccount, targetBankAccount, (decimal)bankTransferCreationDto.Value); } catch (ArgumentException exception) { ModelState.AddModelError(exception.ParamName, exception.Message); return(BadRequest(ModelState)); } } return(Ok()); }
public IHttpActionResult MoneyTransfer([FromBody] Transfer model, int sendId) { if (ModelState.IsValid) { var sendCustomer = _accountService.GetById(sendId); if (sendCustomer != null && sendCustomer.Balance > 0) { var receivedCustomer = _customerService.GetByNo(model.ReceiverNo); if (receivedCustomer != null) { var received = _accountService.GetByCustomerNo(model.ReceiverNo, model.AdditionalReceiverNo); if (received != null) { if (sendCustomer.Balance >= model.Balance && model.Balance > 0) { _transferService.Create(new Transfer() { TransferType = "MoneyTransfer", WebOrMobil = "Web", Date = DateTime.Now, SendingCustomerNo = sendCustomer.AccountNo, AdditionalSendingCustomerNo = sendCustomer.AdditionalAccountNo, ReceiverNo = received.AccountNo, AdditionalReceiverNo = received.AdditionalAccountNo, Balance = model.Balance }); _accountService.Update(new Account() { Id = sendCustomer.Id, AccountNo = sendCustomer.AccountNo, AdditionalAccountNo = sendCustomer.AdditionalAccountNo, Balance = sendCustomer.Balance - model.Balance, CustomerId = sendCustomer.CustomerId, IsDelete = sendCustomer.IsDelete }); _accountService.Update(new Account() { Id = received.Id, AccountNo = received.AccountNo, AdditionalAccountNo = received.AdditionalAccountNo, Balance = received.Balance + model.Balance, CustomerId = received.CustomerId, IsDelete = received.IsDelete }); return(Ok("İşlem Basarıyla gerceklesti")); } else { return(BadRequest("Bakiye Sıfırın Altında YA DA HESABINIZDA YETERLİ MİKTAR YOK. Havale Gerçekleştirilemedi..")); } } else { return(BadRequest("Hesap Numarası Bulunamadı. Lütfen kontrol ediniz..")); } } else { return(BadRequest("Alan Müşteri Numarası Bulunamadı. Lütfen kontrol ediniz..")); } } else { return(BadRequest("Hesap Bulunamadı veya Hesaptaki Bakiyeniz 0 ın Altında. Lütfen kontrol ediniz..")); } } else { return(BadRequest("Eksik Bilgi Girildi.. Tekrar Deneyiniz..")); } }