public async Task <IActionResult> PartialUpdateProgrammeAsync(string id, [FromBody] JsonPatchDocument <ProgrammeDto> patchProgramme) { try { var programmeFromDb = await _programmeRepository.FindByIdAsync(id); if (programmeFromDb == null) { return(NotFound($"Programme {id} not found")); } var programmeToPatch = new ProgrammeDto { Name = programmeFromDb.Name, Description = programmeFromDb.Description }; patchProgramme.ApplyTo(programmeToPatch, ModelState); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!TryValidateModel(patchProgramme)) { return(BadRequest(ModelState)); } // Map all properties except Id programmeFromDb.Name = programmeToPatch.Name; programmeFromDb.Description = programmeToPatch.Description; var result = _programmeRepository.Update(programmeFromDb); if (result == null) { _logger.LogError($"Programme ${programmeFromDb.ProgrammeId} update failed."); return(NotFound()); } await _programmeRepository.SaveChangesAsync(); } catch (DataAccessException e) { _logger.LogCritical(e, "Partial update failed."); return(BadRequest($"Update of programme {id} failed.")); } return(NoContent()); }
public IHttpActionResult CreateProgramme(ProgrammeDto programmeDto) { if (!ModelState.IsValid) { return(BadRequest()); } var programme = Mapper.Map <ProgrammeDto, Programme>(programmeDto); _context.Programmes.Add(programme); _context.SaveChanges(); programmeDto.Id = programme.Id; return(Created(new Uri(Request.RequestUri + "/" + programme.Id), programmeDto)); }
public void Put(int id, [FromBody] ProgrammeDto programmeDto) { if (!ModelState.IsValid) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var programmeInDb = _context.Programmes.SingleOrDefault(p => p.Id == id); if (programmeInDb == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } Mapper.Map(programmeDto, programmeInDb); _context.SaveChanges(); }
public async Task <IActionResult> PutProgrammeAsync(string id, [FromBody] ProgrammeDto programme) { if (id != programme.ProgrammeId) { _logger.LogWarning($"Put programme. Id {id} does not match {programme.ProgrammeId}."); return(BadRequest()); } try { var programmeFromDb = await _programmeRepository.FindByIdAsync(id); if (programmeFromDb == null) { _logger.LogWarning($"Get programme. Id {id} not found."); return(NotFound($"Programme {id} not found")); } // Map all properties except Id programmeFromDb.Name = programme.Name; programmeFromDb.Description = programme.Description; var result = _programmeRepository.Update(programmeFromDb); if (result == null) { _logger.LogWarning($"Put programme. Id {id} not found."); return(NotFound()); } await _programmeRepository.SaveChangesAsync(); } catch (DataAccessException e) { _logger.LogCritical(e, "Update failed."); return(BadRequest($"Update of programme {id} failed.")); } return(NoContent()); }
public async Task <ActionResult <ProgrammeDto> > PostProgrammeAsync([FromBody] ProgrammeDto programme) { if (programme.Description == programme.Name) { // Business rule - Name and Description must be different ModelState.AddModelError(programme.Description, $"Name: {programme.Name} and description: {programme.Description} should be different."); } if (!ModelState.IsValid) { _logger.LogError("Partial update failed."); return(BadRequest(ModelState)); } var programmeToDb = _mapper.Map <Programme>(programme); try { var addedProgramme = await _programmeRepository.AddAsync(programmeToDb); await _programmeRepository.SaveChangesAsync(); var programmeToReturn = _mapper.Map <ProgrammeDto>(addedProgramme); return(CreatedAtAction("GetProgramme", new { id = addedProgramme.ProgrammeId }, programmeToReturn)); } catch (DataAccessException e) { _logger.LogError(e, "Post programme failed."); return(BadRequest("Post programme failed.")); } catch (Exception e) { _logger.LogError(e, "Post programme failed."); return(BadRequest("Post programme failed.")); } }