@Override
  @Transactional(rollbackFor = Exception.class)
  public void inserirEvento(EventoDTO eventoDTO) {

    List<Horario> horarios = horarioManager.obterHorarios(eventoDTO.getHorarios());

    Evento evento = obterEvento(eventoDTO);
    eventoDAO.saveOrUpdate(evento);
    removerHorarios(evento);
    configurarInserirHorarios(horarios, evento);
  }
  @Override
  @Transactional(readOnly = true)
  public List<EventoDTO> consultarEventos(EventoFiltroDTO eventoFiltroDTO) {

    List<EventoDTO> eventos = eventoDAO.consultarEventos(eventoFiltroDTO);

    for (EventoDTO eventoDTO : eventos) {
      List<HorarioDTO> horarios = horarioManager.consultarHorariosDTO(eventoDTO.getId());
      eventoDTO.setHorarios(horarios);
    }

    return eventos;
  }
 private void configurarInserirHorarios(List<Horario> horarios, Evento evento) {
   for (Horario horario : horarios) {
     horario.setEvento(evento);
   }
   horarioManager.inserirHorarios(horarios);
 }
  private void removerHorarios(Evento evento) {

    List<Horario> horariosExclusao = horarioManager.consultarHorarios(evento.getId());

    horarioManager.removerHorarios(horariosExclusao);
  }
 @Override
 public boolean isEventoValido(EventoDTO eventoDTO, List<Horario> horarios) {
   return isCamposEventoValidos(eventoDTO) && horarioManager.isTodosHorariosValidos(horarios);
 }