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 }); }
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)); } }