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()); }