public IActionResult CreateOwner([FromBody] OwnerCreateDto owner) { try { if (owner == null) { _logger.LogError("Owner object sent from client is null."); return(BadRequest("Owner object is null")); } if (!ModelState.IsValid) { _logger.LogError("Invalid owner object sent from client."); return(BadRequest("Invalid model object")); } var ownerEntity = _mapper.Map <Owner>(owner); _repository.Owner.CreateOwner(ownerEntity); _repository.Commit(); var createdOwner = _mapper.Map <OwnerViewModel>(ownerEntity); // CreatedAtRoute return 201 for creation so we can see this is a create operation. return(CreatedAtRoute("OwnerById", new { id = createdOwner.Id }, createdOwner)); } catch (Exception ex) { _logger.LogError($"Something went wrong inside CreateOwner action: {ex.Message}"); return(StatusCode(500, "Internal server error")); } }
public async Task <ActionResult <VehicleToReturnDto> > AddVehicleOwner(int id, OwnerCreateDto ownerCreateDto) { var validator = new OwnerValidator(); var res = validator.Validate(ownerCreateDto); if (res.IsValid) { var owner = _mapper.Map <OwnerCreateDto, Owner>(ownerCreateDto); var spec = new VehiclesSpecification(id); var vehicle = await _unitOfWork.Repository <Vehicle>().GetEntityWithSpec(spec); _unitOfWork.Repository <Owner>().Add(owner); var result = await _unitOfWork.Complete(); if (result <= 0) { return(BadRequest(new ApiResponse(400, "Problem creating owner"))); } vehicle.AddOwner(owner.Id, id); _unitOfWork.Repository <Vehicle>().Update(vehicle); var result2 = await _unitOfWork.Complete(); if (result2 <= 0) { return(BadRequest(new ApiResponse(400, "Problem adding owner vehicle"))); } return(_mapper.Map <Vehicle, VehicleToReturnDto>(vehicle)); } else { return(BadRequest(res.Errors)); } }