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));
        }
Example #2
0
        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.."));
            }
        }