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