Untitled

 avatar
unknown
plain_text
2 years ago
28 kB
3
Indexable
/**
 * Constants related to user status (USER_STATUS)
 *
 * OK       - This is when the user login is fine and user can proceed with any action on the platform.
 * LOCKED   - This is when the user is blocked (for whatever reason) and not allowed login to the platform.
 * NO_TYPE  - This is when a new user registration has happened and the type of the user has not been set in the DB.
 */
export const USER_STATUS = Object.freeze({
  OK: "1001",
  LOCKED: "1002",
  NO_TYPE: "1999"
});

/**
 * Constants related to job posting company status (COMPANY_STATUS)
 *
 * OK       - This is when the user select hiring for client option and submit the company information form.
 * LOCKED   - This is when the user select hiring for client option in company information form.
 */
export const COMPANY_STATUS = Object.freeze({
  OK: "100001",
  LOCKED: "100002"
});

/**
 * Constants related to job posting status (JOB_POSTING_STATUS)
 * Not to be confused with JOB_STATUS. Those are for the Job Status page of the candidate.
 *
 * DRAFT                        - This is when the job posting is in draft mode and not yet posted.
 * SUBMITTED_FOR_AUTO_REVIEW    - This is when the job posting is posted. That would be submitted for review to be handled automatically.
 * SUBMITTED_FOR_MANUAL_REVIEW  - This is when the job is submitted for manual review. For example, by flagging, etc.
 * OK_MANUAL_REVIEWED           - This is when the job posting is fine and can be seen by the candidates. (This is when the job posting is manually reviewed by the Tokhimo team).
 * OK_AUTO_REVIEWED             - This is when the job posting is fine and can be seen by the candidates. (This is when the job posting is auto reviewed by the Tokhimo AI).
 * FLAGGED                      - This is when the job posting is flagged by the feedback of the Candidates/AI and needs review. This reviw is always manual.
 * HIDDEN                       - This is when the job posting is hidden and can not be seen by the candidates.
 */
export const JOB_POSTING_STATUS = Object.freeze({
  DRAFT: "101001",
  SUBMITTED_FOR_AUTO_REVIEW: "101002",
  SUBMITTED_FOR_MANUAL_REVIEW: "101003",
  OK_AUTO_REVIEWED: "101004",
  OK_MANUAL_REVIEWED: "101005",
  FLAGGED: "101006",
  HIDDEN: "101007"
});

/**
 * Constants related to account types. (USER_TYPE)
 *
 * INDIVIDUAL           - This is when type of the account is individual and can apply for company.
 * COMPANY              - This is when type of the account is company and can create jobs and see other candidates.
 * OEM                  - This is for internal use, this allows Tokhimo to access any other user's things and do stuff on other user's behalf.
 * COMPANY_DEPENDENT    - This is when a company has invited another person to manage posts on their behalf. (TBD on this later).
 * SUPER_USER           - This is for Internal Tokhimo users. (They can access anything and bypass any restrictions).
 * NO_TYPE              - This is for a new registration when the type of user is not decided.
 */
export const USER_TYPE = Object.freeze({
  INDIVIDUAL: "2001",
  COMPANY: "2002",
  OEM: "2003",
  COMPANY_DEPENDENT: "2004",
  SUPER_USER: "2005",
  NO_TYPE: "2999"
});

/**
 * Constants related to Contract Types for Job Experiences and Job Postings. (JOB_CONTRACT_TYPE)
 * This is always related to job (either postings or filling of experience).
 *
 * FULL_TIME_EMPLOYEE   - For full time role
 * CONTRACT_EMPLOYEE    - For Contract Role
 * TEMPORARY_EMPLOYEE   - For a temporary Employee
 * INTERNSHIP           - For an intern
 * PART_TIME_JOB        - For Part Time role
 * OTHER                - Anything else.
 */
export const JOB_CONTRACT_TYPE = Object.freeze({
  FULL_TIME_EMPLOYEE: "3001",
  CONTRACT_EMPLOYEE: "3002",
  TEMPORARY_EMPLOYEE: "3003",
  INTERNSHIP: "3004",
  PART_TIME_JOB: "3005",
  OTHER: "3006"
});

export const JOB_CONTRACT_TYPE_T_LABELS = Object.freeze({
  [JOB_CONTRACT_TYPE.FULL_TIME_EMPLOYEE]:
    "t_job_experience_contract_type_full_time_employee",
  [JOB_CONTRACT_TYPE.CONTRACT_EMPLOYEE]:
    "t_job_experience_contract_type_contract_employee",
  [JOB_CONTRACT_TYPE.TEMPORARY_EMPLOYEE]:
    "t_job_experience_contract_type_temporary_employee",
  [JOB_CONTRACT_TYPE.INTERNSHIP]: "t_job_experience_contract_type_internship",
  [JOB_CONTRACT_TYPE.PART_TIME_JOB]:
    "t_job_experience_contract_type_part_time_job",
  [JOB_CONTRACT_TYPE.OTHER]: "t_job_experience_contract_type_other"
});

/**
 * Constants related to language proficiencies. (LANGUAGE_PROFICIENCY)
 * This is used for both Job Postings and User Profile.
 * That is why this is a generic constant.
 *
 * NATIVE               - Native Speaker.
 * CLOSE_TO_NATIVE      - Almost Native, knows the language very well.
 * BUSINESS             - Business Speaker.
 * DAILY_CONVERSATION   - Has basic knowledge.
 * NONE                 - Does not know anything about that language.
 */
export const LANGUAGE_PROFICIENCY = Object.freeze({
  NATIVE: "4001",
  BUSINESS: "4002",
  DAILY_CONVERSATION: "4003",
  NONE: "4004"
});

export const LANGUAGE_PROFICIENCY_T_LABELS = Object.freeze({
  [LANGUAGE_PROFICIENCY.NATIVE]: "t_language_proficiency_native",
  [LANGUAGE_PROFICIENCY.BUSINESS]: "t_language_proficiency_business",
  [LANGUAGE_PROFICIENCY.DAILY_CONVERSATION]:
    "t_language_proficiency_conversational",
  [LANGUAGE_PROFICIENCY.NONE]: "t_language_proficiency_none"
});

/**
 * Constants related to account types. (INDIVIDUAL_USER_VISA_TYPE)
 *
 * VALUES - TODO
 */
export const INDIVIDUAL_USER_VISA_TYPE = Object.freeze({
  ARTIST: "5001",
  BUSINESS_MANAGER: "5002",
  CULTURAL_ACTIVITIES: "5003",
  DEPENDANT: "5004",
  DIPLOMAT: "5005",
  DESIGNATED_ACTIVITIES: "5006",
  ENTERTAINER: "5007",
  HIGHLY_SKILLED_PROFESSIONAL: "5008",
  INSTRUCTOR: "5009",
  INTRA_COMPANY_TRANSFEREE: "5010",
  JOURNALIST: "5011",
  LEGAL_ACCOUNTING_SERVICES: "5012",
  LONG_TERM_RESIDENT: "5013",
  MEDICAL_SERVICES: "5014",
  NURSING_CARE: "5015",
  OFFICIAL: "5016",
  PERMANENT_RESIDENT: "5017",
  PROFESSOR: "5018",
  RELIGIOUS_ACTIVITIES: "5019",
  RESEARCHER: "5020",
  SPECIALIST: "5021",
  SKILLED_LABOR: "5022",
  SPOUSE_CHILD_JA_NATIONAL: "5023",
  SPOUSE_CHILD_PERMA_RESIDENT: "5024",
  SPECIFIED_SKILLED_WORKERS: "5025",
  STUDENT: "5026",
  TECHNICAL_INTERN_TRAINING: "5027",
  TEMPORARY_VISITOR: "5028",
  TRAINEE: "5029"
});

export const INDIVIDUAL_USER_VISA_TYPE_T_LABELS = Object.freeze({
  [INDIVIDUAL_USER_VISA_TYPE.ARTIST]: "t_user_visa_type_artist",
  [INDIVIDUAL_USER_VISA_TYPE.BUSINESS_MANAGER]:
    "t_user_visa_type_business_manager",
  [INDIVIDUAL_USER_VISA_TYPE.CULTURAL_ACTIVITIES]:
    "t_user_visa_type_cultural_activities",
  [INDIVIDUAL_USER_VISA_TYPE.DEPENDANT]: "t_user_visa_type_dependent",
  [INDIVIDUAL_USER_VISA_TYPE.DESIGNATED_ACTIVITIES]:
    "t_user_visa_type_designated_activities",
  [INDIVIDUAL_USER_VISA_TYPE.DIPLOMAT]: "t_user_visa_type_diplomat",
  [INDIVIDUAL_USER_VISA_TYPE.SPECIALIST]:
    "t_user_visa_type_engineer_specialist",
  [INDIVIDUAL_USER_VISA_TYPE.ENTERTAINER]: "t_user_visa_type_entertainer",
  [INDIVIDUAL_USER_VISA_TYPE.HIGHLY_SKILLED_PROFESSIONAL]:
    "t_user_visa_type_highly_skilled_professional",
  [INDIVIDUAL_USER_VISA_TYPE.INSTRUCTOR]: "t_user_visa_type_instructor",
  [INDIVIDUAL_USER_VISA_TYPE.INTRA_COMPANY_TRANSFEREE]:
    "t_user_visa_type_intra_company_transferee",
  [INDIVIDUAL_USER_VISA_TYPE.JOURNALIST]: "t_user_visa_type_journalist",
  [INDIVIDUAL_USER_VISA_TYPE.LEGAL_ACCOUNTING_SERVICES]:
    "t_user_visa_type_legal_accounting_services",
  [INDIVIDUAL_USER_VISA_TYPE.LONG_TERM_RESIDENT]:
    "t_user_visa_type_long_term_resident",
  [INDIVIDUAL_USER_VISA_TYPE.MEDICAL_SERVICES]:
    "t_user_visa_type_medical_services",
  [INDIVIDUAL_USER_VISA_TYPE.NURSING_CARE]: "t_user_visa_type_nursing_care",
  [INDIVIDUAL_USER_VISA_TYPE.OFFICIAL]: "t_user_visa_type_official",
  [INDIVIDUAL_USER_VISA_TYPE.PERMANENT_RESIDENT]:
    "t_user_visa_type_permanent_resident",
  [INDIVIDUAL_USER_VISA_TYPE.PROFESSOR]: "t_user_visa_type_professor",
  [INDIVIDUAL_USER_VISA_TYPE.RELIGIOUS_ACTIVITIES]:
    "t_user_visa_type_religious_activities",
  [INDIVIDUAL_USER_VISA_TYPE.RESEARCHER]: "t_user_visa_type_researcher",
  [INDIVIDUAL_USER_VISA_TYPE.SKILLED_LABOR]: "t_user_visa_type_skilled_labor",
  [INDIVIDUAL_USER_VISA_TYPE.SPECIFIED_SKILLED_WORKERS]:
    "t_user_visa_type_specified_skilled_worker",
  [INDIVIDUAL_USER_VISA_TYPE.SPOUSE_CHILD_JA_NATIONAL]:
    "t_user_visa_type_spouse_or_child_of_japanese_national",
  [INDIVIDUAL_USER_VISA_TYPE.SPOUSE_CHILD_PERMA_RESIDENT]:
    "t_user_visa_type_spouse_or_child_of_permanent_resident",
  [INDIVIDUAL_USER_VISA_TYPE.STUDENT]: "t_user_visa_type_student",
  [INDIVIDUAL_USER_VISA_TYPE.TECHNICAL_INTERN_TRAINING]:
    "t_user_visa_type_technical_intern_training",
  [INDIVIDUAL_USER_VISA_TYPE.TEMPORARY_VISITOR]:
    "t_user_visa_type_temporary_visitor",
  [INDIVIDUAL_USER_VISA_TYPE.TRAINEE]: "t_user_visa_type_trainee"
});

/**
 * Constants related to account types. (INDIVIDUAL_USER_DEGREE_TYPE)
 *
 * VALUES - TODO
 */
export const INDIVIDUAL_USER_DEGREE_TYPE = Object.freeze({
  ADVANCED_DIPLOMA: "6001",
  ASSOCIATE_DEGREE: "6002",
  BACHELOR: "6003",
  DIPLOMA: "6004",
  DOCTOR: "6005",
  EXCHANGE_STUDENT: "6006",
  JURIS_DOCTOR: "6007",
  MASTER: "6008",
  MASTER_OF_EDUCATION: "6009"
});

export const INDIVIDUAL_USER_DEGREE_TYPE_T_LABELS = Object.freeze({
  [INDIVIDUAL_USER_DEGREE_TYPE.ADVANCED_DIPLOMA]:
    "t_education_degree_type_advanced_diploma",
  [INDIVIDUAL_USER_DEGREE_TYPE.ASSOCIATE_DEGREE]:
    "t_education_degree_type_associate_degree",
  [INDIVIDUAL_USER_DEGREE_TYPE.BACHELOR]: "t_education_degree_type_bachelor",
  [INDIVIDUAL_USER_DEGREE_TYPE.DIPLOMA]: "t_education_degree_type_diploma",
  [INDIVIDUAL_USER_DEGREE_TYPE.DOCTOR]: "t_education_degree_type_doctor",
  [INDIVIDUAL_USER_DEGREE_TYPE.EXCHANGE_STUDENT]:
    "t_education_degree_type_exchange_student",
  [INDIVIDUAL_USER_DEGREE_TYPE.JURIS_DOCTOR]:
    "t_education_degree_type_juris_doctor",
  [INDIVIDUAL_USER_DEGREE_TYPE.MASTER]: "t_education_degree_type_master",
  [INDIVIDUAL_USER_DEGREE_TYPE.MASTER_OF_EDUCATION]:
    "t_education_degree_type_master_of_education"
});

// TODO: Confirm about these values.
// {
//     "dropdown_name": "Scale",
//     "options": [
//         "~ Less than 50",
//         "50 ~ 100",
//         "100 ~ 300",
//         "300 ~ 500",
//         "500 ~ 1000",
//         "1000 ~ 3000",
//         "3000 ~ 5000",
//         "5000 or More"
//     ]
// },

// {
//     "dropdown_name": "Job change",
//     "options": [
//         "Soon",
//         "Within 3 Months",
//         "Within 6 Months",
//         "Within 1 Year",
//         "Not Decided Yet"
//     ]
// }

/**
 * Constants related to dialog(modal) actions. (DIALOG_ACTION)
 *
 * AGREE   - To AGREE/CONFIRM and close dialog
 * CANCEL  - To CANCEL and close dialog
 */
export const DIALOG_ACTION = Object.freeze({
  AGREE: "AGREE",
  CANCEL: "CANCEL"
});

/**
 * Constants related to job status. (JOB_STATUS_TAGS)
 * These constants are for frontend display and not for DB references.
 * For DB references, check - JOB_APPLICATION_INVITATION_ACTION_TYPE
 * FIXME: Update this documentation
 *
 * NEW        - For new jobs
 * ACTIVE     - For active jobs
 * APPLIED    - For applied jobs
 * REVOKED    - For revoked jobs
 * INVITED    - For invited jobs
 * AGENCY    -  For jobs posted by agency
 */
export const JOB_STATUS_TAGS = Object.freeze({
  NEW: "NEW",
  ACTIVE: "ACTIVE",
  AGENCY: "AGENCY"
});

export const JOB_APPLICATION_INVITATION_ACTION_TYPE = Object.freeze({
  INVITED: "7001",
  APPLIED: "7002",
  DECLINED: "7003",
  REVOKED: "7004",
  RESUME_PURCHASED: "7005"
});

export const JOB_APPLICATION_INVITATION_ACTION_TYPE_T_LABELS = Object.freeze({
  [JOB_APPLICATION_INVITATION_ACTION_TYPE.INVITED]: "t_general_invited",
  [JOB_APPLICATION_INVITATION_ACTION_TYPE.APPLIED]: "t_general_applied",
  [JOB_APPLICATION_INVITATION_ACTION_TYPE.DECLINED]: "t_general_declined",
  [JOB_APPLICATION_INVITATION_ACTION_TYPE.REVOKED]: "t_general_revoked",
  [JOB_APPLICATION_INVITATION_ACTION_TYPE.RESUME_PURCHASED]:
    "t_general_resume_purchased"
});

/**
 * Constants related to Social Button. (SOCIAL_BUTTON_VARIANT)
 *
 * GOOGLE   - For Google SSO
 * LINKEDIN - For LinkedIn SSO
 */
export const SOCIAL_BUTTON_VARIANT = Object.freeze({
  GOOGLE: "GOOGLE",
  LINKEDIN: "LINKEDIN"
});

// Ellipsis typography default values
export const ELLIPSIS_TYPOGRAPHY_DEFAULT_VALUES = Object.freeze({
  lineClamp: 4,
  color: "text.secondary"
});

// Toast notification time
export const TOAST_DEFAULT_HIDE_DURATION_MS = 3000;

/**
 * Constants related to File Upload Requirements
 *
 * fileSize   - For maximum permitted size of file (in MB)
 * fileFormat - For permitted formats
 */
export const CV_FILE_UPLOAD_CONFIG = Object.freeze({
  fileSize: 6,
  fileFormat: ["pdf"]
});

/**
 * Constants related to job details File Upload Requirements
 *
 * fileSize   - For maximum permitted size of file (in MB)
 * fileFormat - For permitted formats
 */
export const JOB_DESCRIPTION_FILE_UPLOAD_CONFIG = Object.freeze({
  fileSize: 6,
  fileFormat: ["pdf"]
});

/**
 * Constants related to base avatar component
 *
 * fileSize   - For maximum permitted size of file (in MB)
 * fileFormat - For permitted formats
 */
export const AVATAR_IMAGE_UPLOAD_CONFIG = Object.freeze({
  fileSize: 5,
  fileFormat: ["png", "jpeg", "jpg", "gif"]
});

/**
 * Constants related to Image Upload Requirements
 *
 * fileSize   - For maximum permitted size of file (in MB)
 * fileFormat - For permitted formats
 */
export const PROFILE_IMAGE_UPLOAD_CONFIG = Object.freeze({
  fileSize: 5,
  fileFormat: ["png", "jpeg", "jpg", "gif"]
});

/**
 * Constants related to company logo
 *
 * fileSize   - For maximum permitted size of file (in MB)
 * fileFormat - For permitted formats
 */
export const COMPANY_LOGO_UPLOAD_CONFIG = Object.freeze({
  fileSize: 5,
  fileFormat: ["png", "jpeg", "jpg", "gif"]
});

/**
 * Constants related to Environment Types
 *
 * LOCAL   - For when the environment is locally served.
 * PREVIEW - For when the environment is serverd as PR Preview.
 * STAGE   - For when the environment is served on the Staging Website.
 * TEST    - For when the environment is served on the Test Pipeline.
 * PROD    - For when the environment is served on the Prod Website.
 */
export const ENVIRONMENT = Object.freeze({
  LOCAL: "LOCAL",
  PREVIEW: "PREVIEW",
  STAGE: "STAGE",
  TEST: "TEST",
  PROD: "PROD"
});

// Constants related to number of companies user worked
export const INDIVIDUAL_USER_NUMBER_OF_COMPANIES = Object.freeze({
  ONE: "1",
  TWO: "2",
  THREE: "3",
  FOUR: "4",
  FIVE: "5",
  SIX: "6",
  SEVEN: "7",
  EIGHT: "8",
  NINE: "9",
  TEN: "10",
  GREATER_THAN_TEN: "9999"
});

export const INDIVIDUAL_USER_NUMBER_OF_COMPANIES_T_LABELS = Object.freeze({
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.ONE]:
    "t_profile_number_of_companies_one",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.TWO]:
    "t_profile_number_of_companies_two",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.THREE]:
    "t_profile_number_of_companies_three",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.FOUR]:
    "t_profile_number_of_companies_four",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.FIVE]:
    "t_profile_number_of_companies_five",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.SIX]:
    "t_profile_number_of_companies_six",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.SEVEN]:
    "t_profile_number_of_companies_seven",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.EIGHT]:
    "t_profile_number_of_companies_eight",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.NINE]:
    "t_profile_number_of_companies_nine",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.TEN]:
    "t_profile_number_of_companies_ten",
  [INDIVIDUAL_USER_NUMBER_OF_COMPANIES.GREATER_THAN_TEN]:
    "t_profile_number_of_companies_greater_than_ten"
});

/**
 * Constants related to years of experience in job (YEARS_OF_EXPERIENCE)
 * This us used in both User's Job Skill setting and while posting a Job from company side.
 * That's why this is general YEARS_OF_EXPERIENCE and not INDIVIDUAL_USER_YEARS_OF_EXPERIENCE or JOB_YEARS_OF_EXPERIENCE.
 * FIXME: Add comment about the values.
 */
export const YEARS_OF_EXPERIENCE = Object.freeze({
  LESS_THAN_ONE_YEAR: "1",
  ONE_YEAR: "2",
  TWO_YEARS: "3",
  THREE_YEARS: "4",
  FOUR_YEARS: "5",
  FIVE_YEARS: "6",
  SIX_YEARS: "7",
  SEVEN_YEARS: "8",
  EIGHT_YEARS: "9",
  NINE_YEARS: "10",
  TEN_YEARS: "11",
  GREATER_THAN_TEN_YEARS: "9999"
});

export const YEARS_OF_EXPERIENCE_T_LABELS = Object.freeze({
  [YEARS_OF_EXPERIENCE.LESS_THAN_ONE_YEAR]:
    "t_general_year_of_experience_less_than_one_year",
  [YEARS_OF_EXPERIENCE.ONE_YEAR]: "t_general_year_of_experience_one_year",
  [YEARS_OF_EXPERIENCE.TWO_YEARS]: "t_general_year_of_experience_two_years",
  [YEARS_OF_EXPERIENCE.THREE_YEARS]: "t_general_year_of_experience_three_years",
  [YEARS_OF_EXPERIENCE.FOUR_YEARS]: "t_general_year_of_experience_four_years",
  [YEARS_OF_EXPERIENCE.FIVE_YEARS]: "t_general_year_of_experience_five_years",
  [YEARS_OF_EXPERIENCE.SIX_YEARS]: "t_general_year_of_experience_six_years",
  [YEARS_OF_EXPERIENCE.SEVEN_YEARS]: "t_general_year_of_experience_seven_years",
  [YEARS_OF_EXPERIENCE.EIGHT_YEARS]: "t_general_year_of_experience_eight_years",
  [YEARS_OF_EXPERIENCE.NINE_YEARS]: "t_general_year_of_experience_nine_years",
  [YEARS_OF_EXPERIENCE.TEN_YEARS]: "t_general_year_of_experience_ten_years",
  [YEARS_OF_EXPERIENCE.GREATER_THAN_TEN_YEARS]:
    "t_general_year_of_experience_greater_than_ten_years"
});

// FIXME: remove skills list once it will be finalized
export const SKILLS_LIST = [
  { key: "node", label: "Node" },
  { key: "ab", label: "Ab" },
  { key: "abc", label: "Abc" },
  { key: "bcd", label: "Bcd" },
  { key: "abp", label: "Abp" },
  { key: "react", label: "React" },
  { key: "js", label: "Javascript" }
];
// FIXME: remove/fix below comment once auto complete component fixed
// export const SKILLS_LIST = [
//   "Node",
//   "React",
//   "Javascript",
//   "Mongodb",
//   "Python",
//   "C",
//   "C++",
//   "PHP"
// ].sort();

export const MAX_SKILLS = 50;
export const MAX_WORK_EXPERIENCES = 20;
export const MAX_EDUCATIONS = 10;
export const MAX_CERTIFICATIONS = 20;
export const MAX_LANGUAGES = 10;
export const MAX_EXPECTED_SALARY = 50000000;

// Constants related to file.
// FIXME: Documentation will be done later.
// Note: The Paths DO NOT contain trailing slashes.
export const FILES_LOCATION_USER = "user";
export const FILES_LOCATION_TOKHIMO = "tokhimo";

export const FILES_LOCATION_INDIVIDUAL = `${FILES_LOCATION_USER}/individual`;
export const FILES_LOCATION_COMPANY = `${FILES_LOCATION_USER}/company`;

export const FILES_LOCATION_INDIVIDUAL_EN_CV = `${FILES_LOCATION_INDIVIDUAL}/resume/en-cv`;
export const FILES_LOCATION_INDIVIDUAL_JA_CV = `${FILES_LOCATION_INDIVIDUAL}/resume/ja-cv`;
export const FILES_LOCATION_INDIVIDUAL_JA_RIREKISHO = `${FILES_LOCATION_INDIVIDUAL}/resume/ja-rirekisho`;

export const FILES_LOCATION_PROFILE_PICTURE = `${FILES_LOCATION_USER}/profile-picture`;
export const FILES_LOCATION_COMPANY_LOGO = `${FILES_LOCATION_COMPANY}/logo`;

export const FILES_LOCATION_JOB = `${FILES_LOCATION_COMPANY}/jobs`;
export const FILES_LOCATION_JOB_ADDITIONAL_FILE_EN = `${FILES_LOCATION_JOB}/additional-files-en`;
export const FILES_LOCATION_JOB_ADDITIONAL_FILE_JA = `${FILES_LOCATION_JOB}/additional-files-ja`;

// Constants related to language test
export const NONE_OPTION = Object.freeze({
  NONE: "50000"
});
export const NONE_OPTION_T_LABELS = Object.freeze({
  [NONE_OPTION.NONE]: "t_test_none_option"
});

export const JA_LANGUAGE_TEST = Object.freeze({
  NONE: "9001",
  JLPT: "9002",
  NAT: "9003",
  BJT: "9004",
  J_TEST: "9005"
});

export const JA_LANGUAGE_TEST_T_LABELS = Object.freeze({
  [JA_LANGUAGE_TEST.NONE]: "t_ja_language_test_none",
  [JA_LANGUAGE_TEST.JLPT]: "t_ja_language_test_jlpt",
  [JA_LANGUAGE_TEST.NAT]: "t_ja_language_test_nat",
  [JA_LANGUAGE_TEST.BJT]: "t_ja_language_test_bjt",
  [JA_LANGUAGE_TEST.J_TEST]: "t_ja_language_test_j_test"
});

// Constants related to language score
export const JLPT_SCORE = Object.freeze({
  N1: "10001",
  N2: "10002",
  N3: "10003",
  N4: "10004",
  N5: "10005"
});

export const JLPT_SCORE_T_LABELS = Object.freeze({
  [JLPT_SCORE.N1]: "t_jlpt_score_n1",
  [JLPT_SCORE.N2]: "t_jlpt_score_n2",
  [JLPT_SCORE.N3]: "t_jlpt_score_n3",
  [JLPT_SCORE.N4]: "t_jlpt_score_n4",
  [JLPT_SCORE.N5]: "t_jlpt_score_n5"
});

export const NAT_SCORE = Object.freeze({
  LEVEL_1: "20001",
  LEVEL_2: "20002",
  LEVEL_3: "20003",
  LEVEL_4: "20004",
  LEVEL_5: "20005"
});

export const NAT_SCORE_T_LABELS = Object.freeze({
  [NAT_SCORE.LEVEL_1]: "t_nat_score_level_1",
  [NAT_SCORE.LEVEL_2]: "t_nat_score_level_2",
  [NAT_SCORE.LEVEL_3]: "t_nat_score_level_3",
  [NAT_SCORE.LEVEL_4]: "t_nat_score_level_4",
  [NAT_SCORE.LEVEL_5]: "t_nat_score_level_5"
});

export const BJT_SCORE = Object.freeze({
  J1: "30001",
  J2: "30002",
  J3: "30003",
  J4: "30004",
  J5: "30005"
});

export const BJT_SCORE_T_LABELS = Object.freeze({
  [BJT_SCORE.J1]: "t_bjt_score_j1",
  [BJT_SCORE.J2]: "t_bjt_score_j2",
  [BJT_SCORE.J3]: "t_bjt_score_j3",
  [BJT_SCORE.J4]: "t_bjt_score_j4",
  [BJT_SCORE.J5]: "t_bjt_score_j5"
});

export const J_TEST_SCORE = Object.freeze({
  "A": "40001",
  "A+": "40002",
  "A-": "40003",
  "B": "40004",
  "B-": "40005",
  "C": "40006",
  "D": "40007",
  "E": "40008",
  "F": "40009",
  "G": "40010"
});

export const J_TEST_SCORE_T_LABELS = Object.freeze({
  [J_TEST_SCORE.A]: "t_j_test_score_a",
  [J_TEST_SCORE["A+"]]: "t_j_test_score_a+",
  [J_TEST_SCORE["A-"]]: "t_j_test_score_a-",
  [J_TEST_SCORE.B]: "t_j_test_score_b",
  [J_TEST_SCORE["B-"]]: "t_j_test_score_b-",
  [J_TEST_SCORE.C]: "t_j_test_score_c",
  [J_TEST_SCORE.D]: "t_j_test_score_d",
  [J_TEST_SCORE.E]: "t_j_test_score_e",
  [J_TEST_SCORE.F]: "t_j_test_score_f",
  [J_TEST_SCORE.G]: "t_j_test_score_g"
});

export const INDIVIDUAL_USER_PROFILE_COMPLETION_TOTAL_PROGRESS_STEPS_EN_CV = 6;
export const INDIVIDUAL_USER_PROFILE_COMPLETION_TOTAL_PROGRESS_STEPS_JA_CV = 6;
export const INDIVIDUAL_USER_PROFILE_COMPLETION_TOTAL_PROGRESS_STEPS_JA_RIREKISHO = 1;

/**
 * Constants related to State management of SignInSignUpDialog.
 *
 * SIGN_IN        - Active screen is the email and password input screen for sign in.
 * SIGN_UP        - Active screen is the email and password input screen for sign up.
 * TEST           - Active screen for forgot password flow where user enters the email.
 * PROD           - Active screen for forgot password flow where password recovery email has been sent.
 */
export const SIGN_IN_SIGN_UP_DIALOG_ACTIVE_CONTENT_KEY = Object.freeze({
  SIGN_IN: "SIGN_IN",
  SIGN_UP: "SIGN_UP",
  RESET_PASSWORD_EMAIL_INPUT: "RESET_PASSWORD_EMAIL_INPUT",
  RESET_PASSWORD_EMAIL_SENT: "RESET_PASSWORD_EMAIL_SENT"
});

/**
 * Email ID of the Portal to send from.
 */
export const FROM_EMAIL_NO_REPLY = "no-reply@jobs.tokhimo.com";

/**
 * Constants related to the job that has been posted with regards to the company of posting.
 * (JOB_POSTING_TYPE)
 *
 * SELF - The company has posted for itself.
 * CLIENT - The company is posting on behalf of a client.
 */
export const JOB_POSTING_TYPE = Object.freeze({
  SELF: "50001",
  CLIENT: "50002"
});

/**
 * Constants related to visa sponsorship for a job posting.
 * (JOB_POSTING_TYPE)
 *
 * YES - The company is providing visa sponsorship.
 * No - The company is not providing visa sponsorship.
 */
export const JOB_VISA_SPONSORSHIP_AVAILABLE = Object.freeze({
  YES: "8001",
  NO: "8002"
});

export const JOB_VISA_SPONSORSHIP_AVAILABLE_T_LABELS = Object.freeze({
  [JOB_VISA_SPONSORSHIP_AVAILABLE.YES]: "t_general_yes",
  [JOB_VISA_SPONSORSHIP_AVAILABLE.NO]: "t_general_no"
});

/**
 * Constants related to the frequency of salary deposit for a job posting.
 * (JOB_SALARY_DEPOSIT_FREQUENCY)
 *
 * HOURLY     - Pay is per hour of work.
 * DAILY      - Payment is at end of every day (8h/day).
 * WEEKLY     - Payment is made at the end of every week.
 * BI_WEEKLY  - Once every two weeks the payment is made.
 * MONTHLY    - Salary is credited once every month.
 * QUARTERLY   - Payment is made once every 3 months.
 * ANNUALLY   - Cost to company on a per year basis.
 */
export const JOB_SALARY_DEPOSIT_FREQUENCY = Object.freeze({
  HOURLY: "51001",
  DAILY: "51002",
  WEEKLY: "51003",
  BI_WEEKLY: "51004",
  MONTHLY: "51005",
  QUARTERLY: "51006",
  ANNUALLY: "51007"
});

export const JOB_SALARY_DEPOSIT_FREQUENCY_T_LABELS = Object.freeze({
  [JOB_SALARY_DEPOSIT_FREQUENCY.HOURLY]: "t_job_salary_frequency_hourly",
  [JOB_SALARY_DEPOSIT_FREQUENCY.DAILY]: "t_job_salary_frequency_daily",
  [JOB_SALARY_DEPOSIT_FREQUENCY.WEEKLY]: "t_job_salary_frequency_weekly",
  [JOB_SALARY_DEPOSIT_FREQUENCY.BI_WEEKLY]: "t_job_salary_frequency_bi_weekly",
  [JOB_SALARY_DEPOSIT_FREQUENCY.MONTHLY]: "t_job_salary_frequency_monthly",
  [JOB_SALARY_DEPOSIT_FREQUENCY.QUARTERLY]: "t_job_salary_frequency_quarterly",
  [JOB_SALARY_DEPOSIT_FREQUENCY.ANNUALLY]: "t_job_salary_frequency_annually"
});

// Ref:- https://stackoverflow.com/a/63317462/13285590
export const PHONE_NO_REGEX =
  /^((\\+[1-9]{1,4}[ \\-]*)|(\\([0-9]{2,3}\\)[ \\-]*)|([0-9]{2,4})[ \\-]*)*?[0-9]{3,4}?[ \\-]*[0-9]{3,4}?$/;

// Ref:- https://stackoverflow.com/a/61691586/13745388
export const URL_REGEX =
  /^((https?):\/\/)?(www.)?[a-z0-9-]+(\.[a-z]{2,}){1,3}(#?\/?[a-zA-Z0-9#_]+)*\/?(\?[a-zA-Z0-9-_]+=[a-zA-Z0-9-%]+&?)?$/;

// Ref:- https://stackoverflow.com/a/75454523/13285590
export const ALLOW_ONLY_NON_NEGATIVE_INTEGERS_REGEX = /[^0-9]/g;

/**
 * Constants related to the type of remote work for a job posting.
 * (JOB_REMOTE_WORK_TYPE)
 *
 * FULLY_REMOTE - The job is fully remote.
 * PARTIALLY_REMOTE - The job is partially remote.
 * NOT_REMOTE - The job is not remote.
 */
export const JOB_REMOTE_WORK_TYPE = Object.freeze({
  FULLY_REMOTE: "52001",
  PARTIALLY_REMOTE: "52002",
  NOT_REMOTE: "52003"
});

export const JOB_REMOTE_WORK_TYPE_T_LABELS = Object.freeze({
  [JOB_REMOTE_WORK_TYPE.FULLY_REMOTE]: "t_job_remote_work_fully_remote",
  [JOB_REMOTE_WORK_TYPE.PARTIALLY_REMOTE]: "t_job_remote_work_partially_remote",
  [JOB_REMOTE_WORK_TYPE.NOT_REMOTE]: "t_job_remote_work_not_remote"
});

/**
 * Constant for ja and en alpha3 code (mostly used for first language[japanese] and second language[english] in language sections)
 */
export const JA_ALPHA3_CODE = "jpn";
export const EN_ALPHA3_CODE = "eng";

// Constant related to post a job steps
// job information page (step 2)
export const JOB_DESCRIPTION_FIELD_MAX_LENGTH = 5000;
export const MUST_REQUIREMENTS_FIELD_MAX_LENGTH = 5000;

// additional information page (step 6)
export const OTHER_DETAILS_FIELD_MAX_LENGTH = 5000;

/**
 * Constant for firebase collections
 */

export const FIRESTORE_COLLECTIONS = Object.freeze({
  USERS: "users",
  COMPANIES: "companies",
  JOBS: "jobs",
  APPLICATIONS: "applications",
  META_COUNTRIES_CITIES: "meta_countries_cities"
});

export const LOCATION_TYPE = Object.freeze({
  COUNTRY: "60001",
  CITY: "60002"
});

/**
 * Constant for Job Search Salary Filter.
 */

export const JOB_SEARCH_SALARY_FILTER = Object.freeze({
  THREE_MILLION: "3000000",
  FIVE_MILLION: "5000000",
  SEVEN_MILLION: "7000000",
  TEN_MILLION: "10000000",
  FIFTEEN_MILLION: "15000000",
  TWENTY_MILLION: "20000000"
});

export const JOB_SEARCH_SALARY_FILTER_T_LABELS = Object.freeze({
  [JOB_SEARCH_SALARY_FILTER.THREE_MILLION]:
    "t_job_search_salary_filter_3_million",
  [JOB_SEARCH_SALARY_FILTER.FIVE_MILLION]:
    "t_job_search_salary_filter_5_million",
  [JOB_SEARCH_SALARY_FILTER.SEVEN_MILLION]:
    "t_job_search_salary_filter_7_million",
  [JOB_SEARCH_SALARY_FILTER.TEN_MILLION]:
    "t_job_search_salary_filter_10_million",
  [JOB_SEARCH_SALARY_FILTER.FIFTEEN_MILLION]:
    "t_job_search_salary_filter_15_million",
  [JOB_SEARCH_SALARY_FILTER.TWENTY_MILLION]:
    "t_job_search_salary_filter_20_million"
});

/**
 * Constant for locales
 */

export const LOCALE = Object.freeze({
  EN: "en-US",
  JA: "ja-JP"
});

/**
 * Constant for pagination
 */

export const PAGINATION = Object.freeze({
  ITEMS_PER_PAGE: 8
});

/**
 * Constant for job dates related tags
 */

export const JOB_NEW_TAG_LAST_UPDATED_DAY = 32;
export const JOB_ACTIVE_TAG_COMPANY_LAST_LOGIN_DAY = 8;
Editor is loading...