public async Task <ServiceResult> RentAsync(RentingRequestModel requestModel) { #region Input Validation bool customerExists = await _customerService.AnyAsync(c => c.Id == requestModel.CustomerId); if (!customerExists) { return(new ServiceResult { StatusCode = HttpStatusCode.BadRequest, Message = "Customer not found" }); } var equipmentWithType = (await _equipmentService.GetWithTypeAsync(e => e.Id == requestModel.EquipmentId && e.IsAvailable)).FirstOrDefault(); if (equipmentWithType is null) { return(new ServiceResult { StatusCode = HttpStatusCode.BadRequest, Message = "Equipment not available" }); } #endregion RentalModel rentalModel = _mapper.Map <RentalModel>(requestModel); rentalModel = await _rentalService.RentAsync(rentalModel, equipmentWithType.TypeId); EquipmentModel equipment = _mapper.Map <EquipmentModel>(equipmentWithType); equipment.IsAvailable = false; _equipmentService.Update(equipment); await _equipmentService.SaveChangesAsync(); return(new ServiceResult { StatusCode = HttpStatusCode.OK, Message = "Success", Data = rentalModel }); }
public async Task <ActionResult <ServiceResult> > RentAsync(RentingRequestModel requestModel) { return(await _equipmentFacade.RentAsync(requestModel)); }