private void setResourceAdapter()

in Android/app/src/main/java/com/harvard/studyappmodule/SurveyResourcesFragment.java [355:651]


  private void setResourceAdapter() {
    RealmList<Resource> resources = new RealmList<>();
    if (resourceArrayList != null) {
      for (int i = 0; i < resourceArrayList.size(); i++) {
        if (resourceArrayList.get(i).getAudience() != null
            && resourceArrayList.get(i).getAudience().equalsIgnoreCase("All")) {
          if (resourceArrayList.get(i).getAvailability() != null
              && resourceArrayList.get(i).getAvailability().getAvailableDate() != null
              && !resourceArrayList
                  .get(i)
                  .getAvailability()
                  .getAvailableDate()
                  .equalsIgnoreCase("")) {
            try {
              Calendar expiryDate = Calendar.getInstance();
              expiryDate.setTime(
                  AppController.getDateFormatForResourceAvailability()
                      .parse(resourceArrayList.get(i).getAvailability().getExpiryDate()));
              expiryDate.set(Calendar.HOUR, 11);
              expiryDate.set(Calendar.MINUTE, 59);
              expiryDate.set(Calendar.SECOND, 59);
              expiryDate.set(Calendar.AM_PM, Calendar.PM);

              Calendar availableDate = Calendar.getInstance();
              availableDate.setTime(
                  AppController.getDateFormatForResourceAvailability()
                      .parse(resourceArrayList.get(i).getAvailability().getAvailableDate()));
              availableDate.set(Calendar.HOUR, 0);
              availableDate.set(Calendar.MINUTE, 0);
              availableDate.set(Calendar.SECOND, 0);
              availableDate.set(Calendar.AM_PM, Calendar.AM);

              Calendar currentday = Calendar.getInstance();
              if ((currentday.getTime().before(expiryDate.getTime())
                      || currentday.getTime().equals(expiryDate.getTime()))
                  && (currentday.getTime().after(availableDate.getTime())
                      || currentday.getTime().equals(availableDate.getTime()))) {
                resources.add(resourceArrayList.get(i));
              }
            } catch (ParseException e) {
              Logger.log(e);
            }
          } else {
            resources.add(resourceArrayList.get(i));
          }

        } else if (resourceArrayList.get(i).getAudience() != null
            && resourceArrayList.get(i).getAudience().equalsIgnoreCase("Limited")) {
          if (resourceArrayList
              .get(i)
              .getAvailability()
              .getAvailabilityType()
              .equalsIgnoreCase("AnchorDate")) {
            if (resourceArrayList
                .get(i)
                .getAvailability()
                .getSourceType()
                .equalsIgnoreCase("ActivityResponse")) {
              if (resourceArrayList
                  .get(i)
                  .getAvailability()
                  .getAvailableDate()
                  .equalsIgnoreCase("")) {
                StepRecordCustom stepRecordCustom =
                    dbServiceSubscriber.getSurveyResponseFromDB(
                        ((SurveyActivity) context).getStudyId()
                            + "_STUDYID_"
                            + AppController.getSourceActivityId(resourceArrayList.get(i)),
                        AppController.getSourceKey(resourceArrayList.get(i)),
                        realm);
                if (stepRecordCustom != null) {
                  Calendar startCalender = Calendar.getInstance();

                  Calendar endCalender = Calendar.getInstance();

                  JSONObject jsonObject = null;
                  try {
                    jsonObject = new JSONObject(stepRecordCustom.getResult());
                    startCalender.setTime(
                        AppController.getDateFormatForApi().parse("" + jsonObject.get("answer")));
                    startCalender.add(
                        Calendar.DATE, resourceArrayList.get(i).getAvailability().getStartDays());
                    if (resourceArrayList.get(i).getAvailability().getStartTime() == null
                        || resourceArrayList
                            .get(i)
                            .getAvailability()
                            .getStartTime()
                            .equalsIgnoreCase("")) {
                      startCalender.set(Calendar.HOUR_OF_DAY, 0);
                      startCalender.set(Calendar.MINUTE, 0);
                      startCalender.set(Calendar.SECOND, 0);
                    } else {
                      String[] time =
                          resourceArrayList.get(i).getAvailability().getStartTime().split(":");
                      startCalender.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
                      startCalender.set(Calendar.MINUTE, Integer.parseInt(time[1]));
                      startCalender.set(Calendar.SECOND, Integer.parseInt(time[2]));
                    }
                    NotificationDbResources notificationsDb = null;
                    RealmResults<NotificationDbResources> notificationsDbs =
                        dbServiceSubscriber.getNotificationDbResources(
                            AppController.getSourceActivityId(resourceArrayList.get(i)),
                            ((SurveyActivity) context).getStudyId(),
                            RESOURCES,
                            realm);
                    if (notificationsDbs != null && notificationsDbs.size() > 0) {
                      for (int j = 0; j < notificationsDbs.size(); j++) {
                        if (notificationsDbs
                            .get(j)
                            .getResourceId()
                            .equalsIgnoreCase(resourceArrayList.get(i).getResourcesId())) {
                          notificationsDb = notificationsDbs.get(j);
                          break;
                        }
                      }
                    }

                    endCalender.setTime(
                        AppController.getDateFormatForApi().parse("" + jsonObject.get("answer")));
                    endCalender.add(
                        Calendar.DATE, resourceArrayList.get(i).getAvailability().getEndDays());

                    if (resourceArrayList.get(i).getAvailability().getEndTime() == null
                        || resourceArrayList
                            .get(i)
                            .getAvailability()
                            .getEndTime()
                            .equalsIgnoreCase("")) {
                      endCalender.set(Calendar.HOUR_OF_DAY, 23);
                      endCalender.set(Calendar.MINUTE, 59);
                      endCalender.set(Calendar.SECOND, 59);
                    } else {
                      String[] time =
                          resourceArrayList.get(i).getAvailability().getEndTime().split(":");
                      endCalender.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
                      endCalender.set(Calendar.MINUTE, Integer.parseInt(time[1]));
                      endCalender.set(Calendar.SECOND, Integer.parseInt(time[2]));
                    }

                    Calendar currentday = Calendar.getInstance();

                    if ((currentday.getTime().after(startCalender.getTime())
                            || currentday.getTime().equals(startCalender.getTime()))
                        && (currentday.getTime().before(endCalender.getTime())
                            || currentday.getTime().equals(endCalender.getTime()))) {
                      resources.add(resourceArrayList.get(i));
                    }
                  } catch (JSONException | ParseException e) {
                    Logger.log(e);
                  }
                }
              }
            } else {
              // if anchordate is enrollment date
              Calendar startCalender = Calendar.getInstance();
              Calendar endCalender = Calendar.getInstance();
              try {
                for (int j = 0; j < arrayList.size(); j++) {
                  if (resourceArrayList
                      .get(i)
                      .getResourcesId()
                      .equalsIgnoreCase(arrayList.get(j).getTargetActivityId())) {
                    startCalender.setTime(
                        AppController.getDateFormatForApi()
                            .parse(arrayList.get(j).getAnchorDate()));
                    startCalender.add(
                        Calendar.DATE, resourceArrayList.get(i).getAvailability().getStartDays());

                    endCalender.setTime(
                        AppController.getDateFormatForApi()
                            .parse(arrayList.get(j).getAnchorDate()));
                    endCalender.add(
                        Calendar.DATE, resourceArrayList.get(i).getAvailability().getEndDays());
                    break;
                  }
                }
                if (resourceArrayList.get(i).getAvailability().getStartTime() == null
                    || resourceArrayList
                        .get(i)
                        .getAvailability()
                        .getStartTime()
                        .equalsIgnoreCase("")) {
                  startCalender.set(Calendar.HOUR_OF_DAY, 0);
                  startCalender.set(Calendar.MINUTE, 0);
                  startCalender.set(Calendar.SECOND, 0);
                } else {
                  String[] time =
                      resourceArrayList.get(i).getAvailability().getStartTime().split(":");
                  startCalender.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
                  startCalender.set(Calendar.MINUTE, Integer.parseInt(time[1]));
                  startCalender.set(Calendar.SECOND, Integer.parseInt(time[2]));
                }

                NotificationDbResources notificationsDb = null;
                RealmResults<NotificationDbResources> notificationsDbs =
                    dbServiceSubscriber.getNotificationDbResources(
                        AppController.getSourceActivityId(resourceArrayList.get(i)),
                        ((SurveyActivity) context).getStudyId(),
                        RESOURCES,
                        realm);
                if (notificationsDbs != null && notificationsDbs.size() > 0) {
                  for (int j = 0; j < notificationsDbs.size(); j++) {
                    if (notificationsDbs
                        .get(j)
                        .getResourceId()
                        .equalsIgnoreCase(resourceArrayList.get(i).getResourcesId())) {
                      notificationsDb = notificationsDbs.get(j);
                      break;
                    }
                  }
                }

                if (resourceArrayList.get(i).getAvailability().getEndTime() == null
                    || resourceArrayList
                        .get(i)
                        .getAvailability()
                        .getEndTime()
                        .equalsIgnoreCase("")) {
                  endCalender.set(Calendar.HOUR_OF_DAY, 23);
                  endCalender.set(Calendar.MINUTE, 59);
                  endCalender.set(Calendar.SECOND, 59);
                } else {
                  String[] time =
                      resourceArrayList.get(i).getAvailability().getEndTime().split(":");
                  endCalender.set(Calendar.HOUR_OF_DAY, Integer.parseInt(time[0]));
                  endCalender.set(Calendar.MINUTE, Integer.parseInt(time[1]));
                  endCalender.set(Calendar.SECOND, Integer.parseInt(time[2]));
                }

                Calendar currentday = Calendar.getInstance();

                if ((currentday.getTime().after(startCalender.getTime())
                        || currentday.getTime().equals(startCalender.getTime()))
                    && (currentday.getTime().before(endCalender.getTime())
                        || currentday.getTime().equals(endCalender.getTime()))) {
                  resources.add(resourceArrayList.get(i));
                }
              } catch (ParseException e) {
                Logger.log(e);
              }
            }
          } else {
            resources.add(resourceArrayList.get(i));
          }
        } else if (resourceArrayList.get(i).getAudience() == null) {
          resources.add(resourceArrayList.get(i));
        }
      }
    } else {
      addStaticVal();
    }

    for (int i = 0; i < resources.size(); i++) {
      boolean status = false;
      try {
        if (resources.get(i) != null
            && resources.get(i).getAvailability().getSourceActivityId() != null) {
          status = true;
        }
      } catch (Exception e) {
        e.printStackTrace();
      }
      if (status) {
        NotificationDbResources notificationsDb = null;
        RealmResults<NotificationDbResources> notificationsDbs =
            dbServiceSubscriber.getNotificationDbResources(
                AppController.getSourceActivityId(resources.get(i)),
                ((SurveyActivity) context).getStudyId(),
                RESOURCES,
                realm);
        if (notificationsDbs != null && notificationsDbs.size() > 0) {
          for (int j = 0; j < notificationsDbs.size(); j++) {
            if (notificationsDbs
                .get(j)
                .getResourceId()
                .equalsIgnoreCase(resources.get(i).getResourcesId())) {
              notificationsDb = notificationsDbs.get(j);
              break;
            }
          }
        }
        if (notificationsDb == null) {
          setRemainder(
              Calendar.getInstance(),
              AppController.getSourceActivityId(resources.get(i)),
              ((SurveyActivity) context).getStudyId(),
              resources.get(i).getNotificationText(),
              resources.get(i).getResourcesId());
        }
      }
    }

    studyRecyclerView.setLayoutManager(new LinearLayoutManager(context));
    studyRecyclerView.setNestedScrollingEnabled(false);
    ResourcesListAdapter resourcesListAdapter = new ResourcesListAdapter(context, resources, this);
    studyRecyclerView.setAdapter(resourcesListAdapter);
  }