Exemplo n.º 1
0
        public async Task <ActionResult> Put(int id, EventoDTO eventoDTO)
        {
            try
            {
                var evento = await _eventoRepository.GetEventoAsyncById(id, false);

                if (evento == null)
                {
                    return(NotFound());
                }

                var idLotes = new List <int>();
                var idRedes = new List <int>();

                eventoDTO.Lotes.ForEach(item => idLotes.Add(item.Id));
                eventoDTO.Redes.ForEach(item => idRedes.Add(item.Id));

                var lotes = evento.Lotes.Where(lote => !idLotes.Contains(lote.Id)).ToArray();
                var redes = evento.Redes.Where(rede => !idRedes.Contains(rede.Id)).ToArray();

                if (lotes.Length > 0)
                {
                    _eventoRepository.DeleteRanger(lotes);
                }

                if (redes.Length > 0)
                {
                    _eventoRepository.DeleteRanger(redes);
                }

                eventoDTO.Id = id;
                _mapper.Map(eventoDTO, evento);
                _eventoRepository.Update(evento);

                if (await _eventoRepository.SaveChangesAsync())
                {
                    return(Ok(_mapper.Map <EventoDTO>(evento)));
                }
            }
            catch (System.Exception)
            {
                return(this.StatusCode(500, "Deu ruim!"));
            }

            return(BadRequest());
        }