public async Task <IActionResult> Edit(int id, EventoDto eventoDto) { try { var evento = await _repository.GetEventoByIdAsync(id, false); if (evento == null) { return(NotFound()); } var idLotes = new List <int>(); var idRedeSociais = new List <int>(); eventoDto.Lotes.ForEach(item => idLotes.Add(item.Id)); eventoDto.RedeSociais.ForEach(item => idRedeSociais.Add(item.Id)); var lotes = evento.Lotes.Where(lote => !idLotes.Contains(lote.Id)).ToArray(); var redesSociais = evento.RedeSociais.Where(rede => !idRedeSociais.Contains(rede.Id)).ToArray(); if (lotes.Length > 0) { _repository.DeleteRange(lotes); } if (redesSociais.Length > 0) { _repository.DeleteRange(redesSociais); } _mapper.Map(eventoDto, evento); _repository.Update(evento); if (await _repository.SaveChangesAsync()) { return(Created($"/api/eventos/{eventoDto.Id}", _mapper.Map <EventoDto>(evento))); } } catch (ApplicationException e) { return(RedirectToAction(nameof(ErrorModel), new { message = e.Message })); } return(BadRequest()); }