Пример #1
0
        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));
        }
Пример #2
0
        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));
        }