예제 #1
0
        public async Task <LoanResult> UpdateLoanAsync(int id, UpdateLoanRequestModel updateLoanRequestModel)
        {
            var loan = await _context.Loans.FirstOrDefaultAsync(loan => loan.LoanId == id);

            if (loan is null)
            {
                return(null);
            }

            var command          = updateLoanRequestModel.ToCommand();
            var validationErrors = _commandRunner.Validate(command, loan);

            if (validationErrors.Any())
            {
                return(new LoanResult {
                    ValidationErrors = validationErrors
                });
            }
            await _commandRunner.Execute(command, loan);

            var loanDto = LoanDto.FromLoanDto(loan);

            return(new LoanResult {
                LoanDto = loanDto
            });
        }
예제 #2
0
        public async Task <IActionResult> UpdateLoan([FromRoute] int id, [FromBody] UpdateLoanRequestModel updateLoanRequestModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            try
            {
                var loanResult = await _loanService.UpdateLoanAsync(id, updateLoanRequestModel);

                if (loanResult is null)
                {
                    return(NotFound());
                }
                if (loanResult.HasErrors())
                {
                    return(BadRequest(loanResult.ValidationErrors));
                }

                return(Ok(loanResult.LoanDto));
            }
            catch (ValidationException validationException)
            {
                return(StatusCode(500, validationException.Message));
            }
        }