public IActionResult UpdateTurmaForEscola(Guid escolaId, Guid id, [FromBody] TurmaForUpdateDto turma) { if (turma == null) { return(BadRequest()); } if (!_elevaRepository.EscolaExists(escolaId)) { return(NotFound()); } var turmaForEscolaFromRepo = _elevaRepository.GetTurmaForEscola(escolaId, id); if (turmaForEscolaFromRepo == null) { var turmaToAdd = Mapper.Map <Turma>(turma); turmaToAdd.Id = id; _elevaRepository.AddTurmaForEscola(escolaId, turmaToAdd); if (!_elevaRepository.Save()) { throw new Exception("Creating a turma with upserting failed to save."); } var turmaToReturn = Mapper.Map <TurmaDto>(turmaToAdd); return(CreatedAtRoute("GetTurmaForEscola", new { escolaId = escolaId, id = turmaToReturn.Id }, turmaToReturn)); } Mapper.Map(turma, turmaForEscolaFromRepo); _elevaRepository.UpdateTurmaForEscola(turmaForEscolaFromRepo); if (!_elevaRepository.Save()) { throw new Exception($"Updating turma {id} for escola {escolaId} failed on save"); } return(NoContent()); }
public IActionResult PartialUpdateTurmaForEscola(Guid escolaId, Guid id, [FromBody] JsonPatchDocument <TurmaForUpdateDto> patchDoc) { if (patchDoc == null) { return(BadRequest()); } if (!_elevaRepository.EscolaExists(escolaId)) { return(NotFound()); } var turmaForEscolaFromRepo = _elevaRepository.GetTurmaForEscola(escolaId, id); if (turmaForEscolaFromRepo == null) { var turmaDto = new TurmaForUpdateDto(); patchDoc.ApplyTo(turmaDto, ModelState); if (turmaDto.Etapa != "Ensino Médio" && turmaDto.Etapa != "Ensino Fundamental") { ModelState.AddModelError(nameof(TurmaForCreationDto), "A etapa não está correta"); } TryValidateModel(turmaDto); if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } var turmaToAdd = Mapper.Map <Turma>(turmaDto); turmaToAdd.Id = id; _elevaRepository.AddTurmaForEscola(escolaId, turmaToAdd); if (!_elevaRepository.Save()) { throw new Exception("Creating a turma with upserting failed to save."); } var turmaToReturn = Mapper.Map <TurmaDto>(turmaToAdd); return(CreatedAtRoute("GetTurmaForEscola", new { escolaId = escolaId, id = turmaToReturn.Id }, turmaToReturn)); } var turmaToPatch = Mapper.Map <TurmaForUpdateDto>(turmaForEscolaFromRepo); patchDoc.ApplyTo(turmaToPatch, ModelState); if (turmaToPatch.Etapa != "Ensino Médio" && turmaToPatch.Etapa != "Ensino Fundamental") { ModelState.AddModelError(nameof(TurmaForCreationDto), "A etapa não está correta"); } TryValidateModel(turmaToPatch); if (!ModelState.IsValid) { return(new UnprocessableEntityObjectResult(ModelState)); } // add validation Mapper.Map(turmaToPatch, turmaForEscolaFromRepo); _elevaRepository.UpdateTurmaForEscola(turmaForEscolaFromRepo); if (!_elevaRepository.Save()) { throw new Exception($"Patching turma {id} for escola {escolaId} failed on save"); } return(NoContent()); }