public async Task <LoanResult> CreateLoanAsync(CreateLoanRequestModel createLoanRequestModel) { var command = createLoanRequestModel.ToCommand(); var validationErrors = _commandRunner.Validate(command, null); if (validationErrors.Any()) { return(new LoanResult { ValidationErrors = validationErrors }); } var id = await _commandRunner.Execute(command, null); var loanDto = await GetLoanByIdAsync(id); return(new LoanResult { LoanDto = loanDto }); }
public async Task <IActionResult> CreateLoan([FromBody] CreateLoanRequestModel createLoanRequestModel) { if (!ModelState.IsValid) { return(BadRequest()); } try { var loanResult = await _loanService.CreateLoanAsync(createLoanRequestModel); if (loanResult.HasErrors()) { return(BadRequest(loanResult.ValidationErrors)); } return(CreatedAtAction(nameof(GetLoanById), new { id = loanResult.LoanDto.LoanId }, loanResult.LoanDto)); } catch (ValidationException validationException) { return(StatusCode(500, validationException.Message)); } }