@Override
 public Thumbnail getThumbnails() {
   Thumbnail questionThumbnail = super.getThumbnails();
   if (getAssets() != null) {
     if (questionThumbnail == null) {
       questionThumbnail = new Thumbnail();
     }
     for (AssessmentQuestionAssetAssoc assests : getAssets()) {
       if (assests != null
               && assests.getAsset() != null
               && BaseUtil.getYoutubeVideoId(assests.getAsset().getName()) != null
           || assests.getAsset().getName().contains("http://www.youtube.com")) {
         questionThumbnail.setUrl(
             "img.youtube.com/vi/"
                 + BaseUtil.getYoutubeVideoId(assests.getAsset().getUrl())
                 + "/1.jpg");
       } else {
         questionThumbnail.setUrl(
             getAssetURI()
                 + getFolder()
                 + (assests == null || assests.getAsset() == null
                     ? null
                     : assests.getAsset().getName()));
       }
       break;
     }
   }
   return questionThumbnail;
 }
  @Override
  @Transactional(readOnly = true, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
  public Map<String, Object> getInvites(String gooruOid, String status, int limit, int offset) {
    StringBuilder key = new StringBuilder(INVITE_USER_STATUS_KEY).append(status);
    List<Map<String, Object>> resultSet =
        getInviteRepository().getInvitee(gooruOid, key.toString(), limit, offset);
    Map<String, Object> searchResults = new HashMap<String, Object>();
    List<Map<String, Object>> users = new ArrayList<Map<String, Object>>();
    int count = 0;
    if (resultSet != null && resultSet.size() > 0) {
      for (Map<String, Object> result : resultSet) {
        Object gooruUid = result.get(GOORU_UID);
        if (gooruUid != null) {
          result.put(
              PROFILE_IMG_URL,
              BaseUtil.changeHttpsProtocolByHeader(
                      settingService.getConfigSetting(
                          ConfigConstants.PROFILE_IMAGE_URL, TaxonomyUtil.GOORU_ORG_UID))
                  + "/"
                  + String.valueOf(gooruUid)
                  + ".png");
        }
        users.add(result);
      }
      count = getInviteRepository().getInviteeCount(gooruOid, key.toString());
    }

    searchResults.put(TOTAL_HIT_COUNT, count);
    searchResults.put(SEARCH_RESULT, users);
    return searchResults;
  }
  @Override
  public ActionResponseDTO<CollectionItem> createClasspageItem(
      String assignmentGooruOid,
      String classpageGooruOid,
      CollectionItem collectionItem,
      User user,
      String type)
      throws Exception {
    Classpage classpage = null;
    if (type != null && type.equalsIgnoreCase(CollectionType.USER_CLASSPAGE.getCollectionType())) {
      if (classpageGooruOid != null) {
        classpage = this.getClasspage(classpageGooruOid, null, null);
      } else {
        classpage =
            this.getCollectionRepository()
                .getUserShelfByClasspageGooruUid(
                    user.getGooruUId(), CollectionType.USER_CLASSPAGE.getCollectionType());
      }
      if (classpage == null) {
        classpage = new Classpage();
        classpage.setTitle(MY_CLASSPAGE);
        classpage.setCollectionType(CollectionType.USER_CLASSPAGE.getCollectionType());
        classpage.setClasspageCode(BaseUtil.base48Encode(7));
        classpage.setGooruOid(UUID.randomUUID().toString());
        ContentType contentType =
            (ContentType)
                this.getCollectionRepository().get(ContentType.class, ContentType.RESOURCE);
        classpage.setContentType(contentType);
        ResourceType resourceType =
            (ResourceType)
                this.getCollectionRepository()
                    .get(ResourceType.class, ResourceType.Type.CLASSPAGE.getType());
        classpage.setResourceType(resourceType);
        classpage.setLastModified(new Date(System.currentTimeMillis()));
        classpage.setCreatedOn(new Date(System.currentTimeMillis()));
        classpage.setSharing(Sharing.PRIVATE.getSharing());
        classpage.setUser(user);
        classpage.setOrganization(user.getPrimaryOrganization());
        classpage.setCreator(user);
        classpage.setDistinguish(Short.valueOf(ZERO));
        classpage.setRecordSource(NOT_ADDED);
        classpage.setIsFeatured(0);
        this.getCollectionRepository().save(classpage);
      }
      collectionItem.setItemType(ShelfType.AddedType.SUBSCRIBED.getAddedType());
    } else {
      classpage = this.getClasspage(classpageGooruOid, null, null);
      collectionItem.setItemType(ShelfType.AddedType.ADDED.getAddedType());
    }

    Collection collection =
        this.getCollectionRepository()
            .getCollectionByGooruOid(assignmentGooruOid, classpage.getUser().getGooruUId());
    Errors errors = validateClasspageItem(classpage, collection, collectionItem);
    if (collection != null) {
      if (!errors.hasErrors()) {
        collectionItem.setCollection(classpage);
        collectionItem.setResource(collection);
        int sequence =
            collectionItem.getCollection().getCollectionItems() != null
                ? collectionItem.getCollection().getCollectionItems().size() + 1
                : 1;
        collectionItem.setItemSequence(sequence);
        this.getCollectionRepository().save(collectionItem);
      }
    } else {
      throw new Exception("invalid assignmentId -" + assignmentGooruOid);
    }

    return new ActionResponseDTO<CollectionItem>(collectionItem, errors);
  }