public async Task <IActionResult> Post([FromBody] CreateLoanDTO loan) { logger.LogInformation("{username} executed Post({loan}).", User.Identity.Name, loan); return(await TryOrError(logger, async() => { var id = await service.InsertLoanAsync(loan); return new CreatedAtActionResult("Get", "Loan", new { id }, new { id }); })); }
public async Task <ActionResult> Post([FromBody] CreateLoanDTO loan) { try { await _loanService.Post(loan); return(Accepted()); } catch (Exception e) { return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message)); } }
public async Task <int> InsertLoanAsync(CreateLoanDTO dto) { if (dto is null) { throw new ArgumentNullException(nameof(dto)); } if (dto.EmployeeId <= 0) { throw new ArgumentException($"{nameof(dto.EmployeeId)} cannot be less than 1."); } var employee = await employeeRepo.GetEmployeeAsync(dto.EmployeeId); if (employee is null) { throw new KeyNotFoundException($"Could not find employee with Id {dto.EmployeeId}."); } else if (!employee.Status.CanLend) { throw new LendingProhibitedException(); } if (dto.DateFrom > dto.DateTo) { throw new ArgumentException($"{nameof(dto.DateFrom)} cannot be greater than {nameof(dto.DateTo)}."); } return(await loanRepo.InsertLoanAsync( new Loan { EmployeeId = dto.EmployeeId, DateFrom = dto.DateFrom, DateTo = dto.DateTo, RecipientId = dto.RecipientId, Note = dto.Note }, dto.ItemIds ?? new int[0], dto.GenericItemIds ?? new int[0] )); }
public async Task Post(CreateLoanDTO loan) { var registerCommand = _Mapper.Map <RegisterNewLoanCommand>(loan); await _Bus.SendCommand(registerCommand); }