public IActionResult RegisterNewTransference([FromBody] NewTransferDto transferDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            return(Ok());
        }
        public NewTransferResponseDto PerformTransfer(NewTransferDto newTransferDto)
        {
            bool uowStatus = false;

            try
            {
                uowStatus = _unitOfWork.BeginTransaction();
                Account originAccount      = _accountRepository.GetByNumberWithUpgradeLock(newTransferDto.FromAccountNumber);
                Account destinationAccount = _accountRepository.GetByNumberWithUpgradeLock(newTransferDto.ToAccountNumber);
                _transferDomainService.PerformTransfer(originAccount, destinationAccount, newTransferDto.Amount);

                Movement originMovement = new Movement();
                originMovement.Balance            = newTransferDto.Amount;
                originMovement.Account_id         = _accountRepository.GetByNumber(newTransferDto.FromAccountNumber);
                originMovement.Account_destino_id = _accountRepository.GetByNumber(newTransferDto.FromAccountNumber);
                originMovement.Movement_type_id   = 4;
                originMovement.CreatedAt          = DateTime.UtcNow;


                Movement destinationMovement = new Movement();
                destinationMovement.Balance            = newTransferDto.Amount;
                destinationMovement.Account_id         = _accountRepository.GetByNumber(newTransferDto.ToAccountNumber);
                destinationMovement.Account_destino_id = _accountRepository.GetByNumber(newTransferDto.ToAccountNumber);
                destinationMovement.Movement_type_id   = 3;
                destinationMovement.CreatedAt          = DateTime.UtcNow;

                _movementRepository.SaveOrUpdate(originMovement);
                _movementRepository.SaveOrUpdate(destinationMovement);
                _accountRepository.SaveOrUpdate(originAccount);
                _accountRepository.SaveOrUpdate(destinationAccount);
                _unitOfWork.Commit(uowStatus);
                return(new NewTransferResponseDto
                {
                    HttpStatusCode = StatusCodes.Status201Created,
                    StringResponse = new ApiStringResponse(TransactionAppConstants.TransferPerformed)
                });
            }
            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 PerformTransfer([FromBody] NewTransferDto newTransferDto)
        {
            NewTransferResponseDto response = _transactionApplicationService.PerformTransfer(newTransferDto);

            return(StatusCode(response.HttpStatusCode, response.StringResponse));
        }