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 void highlightDailyScheduleList(List<Calendar> freeCalendars) {
    // marca os dias livres e rearruma a lista de profissionais

    if (freeCalendars != null) {
      screenCalendar.clearHighlightedDates();

      professionalAdapter.clearAvailableMarks();
      professionalAdapter.removeMark(professionalLV.getCheckedItemPosition());
      System.out.println(professionalLV.getCheckedItemPosition());
      if (selectedDate != null) {
        // Toast.makeText(getActivity(), selectedProfessionalDTO.getName() + " não está livre no dia
        // selecionado.", Toast.LENGTH_LONG).show();
        clearSelectedDate();
      }
      Collection<Date> freeDatesCollection = new ArrayList<>();
      for (Calendar freeCalendar : freeCalendars) {
        freeDatesCollection.add(DateUtilMoti.convertCalendarToDate(freeCalendar));
      }
      screenCalendar.highlightDates(freeDatesCollection);
      if (freeDatesCollection.size() <= 0)
        Toast.makeText(getContext(), "Profissional sem dias livres", Toast.LENGTH_SHORT).show();
    }
    finishUpViewLoad();
  }