public async Task <IActionResult> AlterarEndereco([FromRoute] int id, [FromBody] ConsumidorEndereco endereco) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != endereco.IdConsumidorEndereco) { return(BadRequest()); } //Verifica se existe o endereço dentro do consumidor Consumidor consumidor = _context.Consumidores.AsNoTracking().Include(x => x.Enderecos).FirstOrDefault(x => x.IdConsumidor == endereco.IdConsumidor); if (consumidor.Enderecos.Count(x => x.IdConsumidorEndereco == id) == 0) { return(NotFound()); } //Se marcou endereço como principal, deixa os outros como secundários if (endereco.Principal) { List <ConsumidorEndereco> lstEnderecosCons = _context.ConsumidorEnderecos.Where(x => x.IdConsumidor == endereco.IdConsumidor && x.IdConsumidorEndereco != endereco.IdConsumidorEndereco).ToList(); lstEnderecosCons.ForEach(x => x.Principal = false); } _context.Entry(endereco).State = EntityState.Modified; await _context.SaveChangesAsync(); return(Ok(endereco)); }
public async Task <IActionResult> InserirEndereco([FromBody] ConsumidorEndereco endereco) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Consumidor consumidor = _context.Consumidores.Include(x => x.Enderecos).FirstOrDefault(x => x.IdConsumidor == endereco.IdConsumidor); if (consumidor == null) { return(NotFound()); } //Se marcou endereço como principal, deixa os outros como secundários if (endereco.Principal) { foreach (var end in consumidor.Enderecos) { end.Principal = false; } } consumidor.Enderecos.Add(endereco); await _context.SaveChangesAsync(); return(Ok(endereco)); }