public IActionResult GetVehicle(string vin) { //TODO: add guard pattern here for this check if (string.IsNullOrWhiteSpace(vin) || vin.Length != 17) { return(BadRequest(vin)); } var entity = _vehicleQueries.GetVehicleByVin(vin); if (entity == null) { return(NotFound(vin)); } var model = _entityMapper.ToVehicleModel(entity); //TODO: replace this with an inteligent way of doing it - JS 29/05/218 var apiUri = Request.GetBaseUri() + Request?.Path.Value; var links = new List <HateoasLink> { new HateoasLink("vehicle.update.full", apiUri, HttpVerbs.Put), new HateoasLink("vehicle.update.partial", apiUri, HttpVerbs.Patch), }; var response = new HateoasResponseObject <VehicleModel>(model, links); return(Ok(response)); }
public IActionResult PartialUpdateVehicle([FromRoute] string vin, [FromBody] VehicleModel model) { //TODO: add guard pattern here for this check if (string.IsNullOrWhiteSpace(vin) || vin.Length != 17) { return(BadRequest(vin)); } //TODO: replace with Guard if (model == null) { return(NoContent()); } if (!_vehicleModelValidation.Validate(model)) { return(BadRequest()); } var entity = _vehicleQueries.GetVehicleByVin(model.Vin); _vehicleModelMapper.UpdateVehicleEntityFromModel(entity, model, true); var updated = _vehicleCommands.UpdateVehicle(entity); if (!updated) { return(BadRequest()); } //TODO: replace this with an inteligent way of doing it - JS 29/05/218 var apiUri = Request.GetBaseUri() + Request?.Path.Value; var links = new List <HateoasLink> { new HateoasLink("vehicle.update.full", $"{apiUri}", HttpVerbs.Put), new HateoasLink("vehicle.get", $"{apiUri}", HttpVerbs.Get), }; var response = new HateoasResponseObject <VehicleModel>(model, links); return(Ok(response)); }