import {StringUtils} from "../../utils/string-utils.class";
import {SelectionCriteria} from "../../utils/entities/contentProvider";

export class CommunityInfo {
  title: string;
  shortTitle:string;
  communityId: string;
  queryId: string;
  type: string;
  /** @warning Use pipe in HTML or StringUtils.getLogoUrl in components */
  logoUrl: string;
  description: string;
  managers: string[];
  date:Date;
  subjects: string[];
  status:"all" | "manager" | "hidden" | "PUBLIC" | "RESTRICTED" | "PRIVATE";
  claim: "all" | "managersOnly" | "membersOnly";
  membership: "open" | "byInvitation";
  zenodoCommunity:string;
  otherZenodoCommunities: string[];
  isUpload: boolean;
  isSubscribed: boolean;
  isManager: boolean;
  fos: string[] = [];
  sdg: string[] = []
  selectionCriteria: SelectionCriteria;
  plan: "starter" | "extended";

  public static checkIsUpload(response: CommunityInfo | CommunityInfo[]): any | any[] {
    if (Array.isArray(response)) {
      response.forEach(value => {
        value.isUpload = value.logoUrl && !StringUtils.isValidUrl(value.logoUrl);
      });
    } else {
      response.isUpload = response.logoUrl && !StringUtils.isValidUrl(response.logoUrl);
    }
    return response;
  }

  public isOpen() {
    return !(this.membership && this.membership === 'byInvitation');
  }

  public isPublic(){
    return this.status == "all" || this.status == "PUBLIC";
  }
  public isRestricted(){
    return this.status == "manager" || this.status == "RESTRICTED";
  }
  public isPrivate(){
    return this.status == "hidden" || this.status == "PRIVATE";
  }
  public validateStatus(){
    if(!(this.isPrivate() || this.isRestricted() || this.isPublic())){
      this.status = "PRIVATE";
    }
  }
}
// export const prodReadyCommunities = ["dh-ch", "ee", "fam", "mes", "ni", "covid-19", "dariah", "epos", "egi"];
