public async Task <IActionResult> PutMorador([FromRoute] int id, [FromBody] Morador morador) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != morador.MoradorId) { return(BadRequest()); } var oldMorador = await _context.Moradores.Include(x => x.Apartamento).FirstOrDefaultAsync(mrd => mrd.Apartamento.ApartamentoId == morador.Apartamento.ApartamentoId && mrd.CPF.Equals(morador.CPF) && mrd.DataNascimento.Date.Equals(morador.DataNascimento.Date)); if (oldMorador != null) { return(NotFound(new { Message = "Não foi possível atualizar o Morador pois o CPF, Data de Nascimento e Apartamento informados já se encontram cadastrado para outro Morador.", Error = true })); } var entityApto = await _context.Apartamentos.FindAsync(morador.Apartamento.ApartamentoId); _context.Entry(entityApto).State = EntityState.Detached; var entityMrd = await _context.Moradores.FindAsync(id); _context.Entry(entityMrd).State = EntityState.Detached; _context.Entry(morador).State = EntityState.Modified; _context.Entry(morador.Apartamento).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!MoradorExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <IActionResult> PutApartamento([FromRoute] int id, [FromBody] Apartamento apartamento) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != apartamento.ApartamentoId) { return(BadRequest()); } //Verifica se os dados do apartamento atualizado já não se encontra na base. var oldApto = _context.Apartamentos.FirstOrDefault(apto => apto.Bloco.Trim().Equals(apartamento.Bloco.Trim()) && apto.Numero == apartamento.Numero); if (oldApto != null) { return(NotFound(new { Message = "Não foi possível atualizar o Apartamento pois o Bloco e Número informados já se encontram cadastrado.", Error = true })); } var entity = await _context.Apartamentos.FindAsync(id); _context.Entry(entity).State = EntityState.Detached; _context.Entry(apartamento).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ApartamentoExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }