public async Task<IActionResult> Withdraw([FromRoute]Guid id, [FromBody]WithdrawDto dto, CancellationToken cancellationToken = default) { if (null == dto) return BadRequest(); var currency = Currency.FromCode(dto.CurrencyCode); var amount = new Money(currency, dto.Amount); var command = new Withdraw(id, amount); await _mediator.Publish(command, cancellationToken); return Ok(); }
public ActionResult <IncomeDto> WithdrawFromBankToChurch([FromBody] WithdrawDto dto) { try { _transactionService.CreateWithdrawalTransaction(dto); } catch (InsufficientFundsInBankBalanceException e) { return(BadRequest(e.Message)); } return(Ok()); }
public async Task <CurrentAccountDtoResult> UpdateWithdraw(WithdrawDto withdrawDto, Guid userId) { var entity = await FindByUserId(userId); ValidateBalance(entity.Balance, withdrawDto.Value); entity.Balance -= withdrawDto.Value; var result = await _repository.UpdateAsync(entity, entity.Id); await InsertHistory(HistoricCurrentAccountMapper.Description.Withdraw.Key, withdrawDto.Value, entity.Id); return(_mapper.Map <CurrentAccountDtoResult>(result)); }
public void CreateWithdrawalTransaction(WithdrawDto dto) { decimal bankBalance = 0; decimal churchBalance = 0; var latestBankTransaction = Context.Transactions.LastOrDefault(t => t.TransactionSourceTypeId == (int)SiriusEnums.TransactionSourceTypes.BankAccount); var latestChurchTransaction = Context.Transactions.LastOrDefault(t => t.TransactionSourceTypeId == (int)SiriusEnums.TransactionSourceTypes.ChurchAccount); if (latestBankTransaction != null) { bankBalance = latestBankTransaction.Balance; } if (bankBalance - dto.WithdrawalAmount < 0) { throw new InsufficientFundsInBankBalanceException(); } if (latestChurchTransaction != null) { churchBalance = latestChurchTransaction.Balance; } var transactionDebit = new Transaction { Debit = dto.WithdrawalAmount, Balance = churchBalance + dto.WithdrawalAmount, TransactionDate = DateTime.Now, TransactionSourceTypeId = (int)SiriusEnums.TransactionSourceTypes.ChurchAccount, }; var transactionCredit = new Transaction { Credit = dto.WithdrawalAmount, Balance = bankBalance - dto.WithdrawalAmount, TransactionDate = DateTime.Now, TransactionSourceTypeId = (int)SiriusEnums.TransactionSourceTypes.BankAccount, }; Context.Transactions.Add(transactionDebit); Context.Transactions.Add(transactionCredit); Context.SaveChanges(); }
public async Task <ActionResult> Withdraw([FromBody] WithdrawDto dto, Guid userId) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { //var userId = new Guid(User.Identity.Name); var result = await _service.UpdateWithdraw(dto, userId); return(Ok(result)); } catch (ArgumentException ex) { return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message)); } }
public async Task <IActionResult> Withdraw([FromBody] WithdrawDto dto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } LoanVoucher v = _context.LoanVouchers.Include(p => p.Records).FirstOrDefault(p => p.ID == dto.LoanVoucherID); if (v == null) { return(this.AlpsActionWarning("无此ID")); } if (v.Amount < dto.Amount) { return(this.AlpsActionError("取款金额超过存款金额")); } var r = v.Withdraw(dto.OperateTime, dto.Amount, dto.Memo, User.Identity.Name, GetInterestRates(), DoGetLoanSetting().MinDepositDay); await _context.SaveChangesAsync(); return(this.AlpsActionOk(r.ID)); }
public async Task <IActionResult> MakeWithdraw(WithdrawDto withdrawDto) { var user = await _auth.LoginWithAllData(User.FindFirst(ClaimTypes.Name).Value, withdrawDto.Pin); if (user == null) { return(BadRequest("Incorrect Secret Pin")); } // if(!(user.Point.Points >= withdrawDto.Amount)) // return BadRequest("Insufficient Points"); // if (!CardPayment.PayClient(withdrawDto)) // return BadRequest("Transaction failed, please try again later"); // _repo.Update(user); // user.Point.Points -= withdrawDto.Amount; // if(!await _repo.SaveAll()) // return BadRequest("Failed to save transaction"); return(NoContent()); }
public static Boolean PayClient(WithdrawDto withdrawDto) { return(true); }
public CurrentAccountTest() { Id = Guid.NewGuid(); Balance = 1000; UserId = new Guid("3362d96b-e3ff-4cc8-85b5-da08a612e62f"); HistoricCurrentAccountId = Guid.NewGuid(); Movement = "D"; AmountMoved = Balance; entity = new CurrentAccountEntity() { Id = Id, Balance = 1000, UserId = UserId }; entityHistoric = new HistoricCurrentAccountEntity() { Id = Guid.NewGuid(), Movement = Movement, AmountMoved = AmountMoved, CurrentAccountId = Id }; currentAccountDtoResult = new CurrentAccountDtoResult() { Id = Id, Balance = Balance, UserId = UserId }; historicCurrentAccountDtoResult = new HistoricCurrentAccountDtoResult() { Id = HistoricCurrentAccountId, Movement = Movement, AmountMoved = AmountMoved, CurrentAccountId = Id }; listHistoricDtoResult.Add(historicCurrentAccountDtoResult); depositDto = new DepositDto { Value = 500 }; paymentDto = new PaymentDto { Value = 300 }; transferDto = new TransferDto { Value = 400, CpfRecipient = "26687020544" }; withdrawDto = new WithdrawDto { Value = 200 }; currentAccountDtoResultDeposit = new CurrentAccountDtoResult() { Id = Id, Balance = Balance + depositDto.Value, UserId = UserId }; currentAccountDtoResultPayment = new CurrentAccountDtoResult() { Id = Id, Balance = Balance - paymentDto.Value, UserId = UserId }; currentAccountDtoResultTransfer = new CurrentAccountDtoResult() { Id = Id, Balance = Balance - transferDto.Value, UserId = UserId }; currentAccountDtoResultWithdraw = new CurrentAccountDtoResult() { Id = Id, Balance = Balance - withdrawDto.Value, UserId = UserId }; }