private boolean validateUtilDateAndProfessional(Date date, ProfessionalDTO professionalDTO) {
    // recupera dailySchedule para verificar se o o dia é util para o profissional
    if (date != null && professionalDTO != null) {
      Calendar toValidateCal = Calendar.getInstance(TimeZone.getDefault());
      toValidateCal.setTime(date);

      System.out.println(
          "Validando profissional " + professionalDTO.getName() + " na data de " + toValidateCal);

      if (selectedDateFreeProfessionalDTOSet.contains(professionalDTO)) {
        // se o profissional selecionado estiver na lista de profissionais livres alimenta
        // professionalForSchedule

        // for (ProfessionalForSchedule professionalForSchedule : selectedDateFreeFullProfList) {
        // if (professionalForSchedule.getProfessionalDTO().getId().equals(professionalDTO.getId()))
        // {
        // initFinishVariables(professionalForSchedule, toValidateCal);

        // System.out.println("Validado profissional pelo selectedDateFreeProfessionalDTOSet");
        // return true;
        //    }
        // }
        initFinishVariables(professionalDTO, toValidateCal);
        return true;
      } else if (selectedProfFreeCalendars != null) {
        // se a lista de dias livres do profissional selecionado foi igual a data selecionada,
        // alimenta professionalForSchedule
        for (Calendar freeCalendar : selectedProfFreeCalendars) {
          if (DateUtilMoti.isSameDay(freeCalendar, toValidateCal)
              && selectedProfessionalDTO
                  .getId()
                  .equals(
                      professionalDTO
                          .getId())) // todo Falta verificar a veracidade do profissional com a
                                     // data???
          {
            // ProfessionalForSchedule professionalForSchedule = new
            // ProfessionalForSchedule(dailyScheduleDTO.getProfessional(),
            // selectedProfServiceDTOList, dailyScheduleDTOs);
            initFinishVariables(professionalDTO, toValidateCal);
            System.out.println("Validado profissional pelo selectedProfFreeDailyScheduleDTOList");
            return true;
          }
        }
      }
    }
    return false;
  }
  private boolean executeFreeDaysJson(ProfessionalDTO professionalDTO) {
    // requisicao de banco para recuperar lista de dias livres, para mostrar no calendario

    /*
    //precisa recuperar servicos para calcular tempo livre
    ServiceService serviceService = new ServiceService();
    selectedProfServiceDTOList = new ArrayList<>();
    try {
        selectedProfServiceDTOList.clear();
        selectedProfServiceDTOList = serviceService.findAllByProfessionalId(professionalDTO.getId());
    } catch (Exception e) {
        e.printStackTrace();
        Log.i("doInBackground", "Não conseguiu executar TaskRetrieveFreeDays, erro ao recuperar serviceDTOList");
        return false;
    }

    //recupera os dias disponiveis
    selectedProfFreeDailyScheduleDTOList = FreeTimeCalculator.getFreeDatesFromProfessional(professionalDTO, selectedProfServiceDTOList);
    if (selectedProfFreeDailyScheduleDTOList == null) {
        Log.i("doInBackground", "Não conseguiu executar TaskRetrieveFreeDays, erro ao recuperar selectedProfFreeDailyScheduleDTOList");
        selectedProfFreeDailyScheduleDTOList = new ArrayList<>();
        return false;
    }*/
    DailyScheduleService dailyScheduleService = new DailyScheduleService();
    selectedProfFreeCalendars = new ArrayList<>();
    try {
      selectedProfFreeCalendars =
          dailyScheduleService.findAvailableDatesToScheduling(professionalDTO.getId());
    } catch (Exception e) {
      e.printStackTrace();
      Log.i(
          "doInBackground",
          "Não conseguiu executar TaskRetrieveFreeDays, erro ao recuperar selectedProfFreeCalendars");
      return false;
    }
    return true;
  }