public NewTransferResponseDto PerformDeposit(NewDepositDto NewDepositDto) { bool uowStatus = false; int type_movement = 2; if (NewDepositDto.Movement == "1") { type_movement = 1; } try { uowStatus = _unitOfWork.BeginTransaction(); Account originAccount = _accountRepository.GetByNumberWithUpgradeLock(NewDepositDto.AccountNumber); _transferDomainService.PerformDeposit(originAccount, NewDepositDto.Amount, NewDepositDto.Movement); Movement movement = new Movement(); movement.Balance = NewDepositDto.Amount; movement.Account_id = _accountRepository.GetByNumber(NewDepositDto.AccountNumber); movement.Account_destino_id = _accountRepository.GetByNumber(NewDepositDto.AccountNumber); movement.Movement_type_id = type_movement; movement.CreatedAt = DateTime.UtcNow; _movementRepository.SaveOrUpdate(movement); _accountRepository.SaveOrUpdate(originAccount); _unitOfWork.Commit(uowStatus); return(new NewTransferResponseDto { HttpStatusCode = StatusCodes.Status201Created, StringResponse = new ApiStringResponse(TransactionAppConstants.DepositPerfomed) }); } catch (Exception ex) { _unitOfWork.Rollback(uowStatus); //TODO: Log exception async, for now write exception in the console Console.WriteLine(ex.Message); return(new NewTransferResponseDto { HttpStatusCode = StatusCodes.Status500InternalServerError, StringResponse = new ApiStringResponse(ApiConstants.InternalServerError) }); } }
public IActionResult PerformDeposit([FromBody] NewDepositDto newDepositDto) { NewTransferResponseDto response = _transactionApplicationService.PerformDeposit(newDepositDto); return(StatusCode(response.HttpStatusCode, response.StringResponse)); }