mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-03-10 15:11:46 +00:00
106 lines
4.5 KiB
TypeScript
106 lines
4.5 KiB
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { IncomeRange, IncomeSource, JobCategory, JobSector, PoiType } from '../enums';
|
|
import { KycMetadataResponseDto, MetadataOptionDto } from '../dtos/response';
|
|
|
|
@Injectable()
|
|
export class MetadataService {
|
|
getKycOnboardMetadata(): KycMetadataResponseDto {
|
|
return {
|
|
poiTypes: this.enumToOptions(PoiType, {
|
|
[PoiType.IQA]: 'Iqama (Resident ID)',
|
|
[PoiType.NAT]: 'National ID',
|
|
}),
|
|
jobSectors: this.enumToOptions(JobSector, {
|
|
[JobSector.GOVERNMENT_SECTOR]: 'Government Sector',
|
|
[JobSector.HOME_MAKER]: 'Home Maker',
|
|
[JobSector.MILITARY]: 'Military',
|
|
[JobSector.PRIVATE_SECTOR]: 'Private Sector',
|
|
[JobSector.RETIRED]: 'Retired',
|
|
[JobSector.SELF_EMPLOYED]: 'Self Employed',
|
|
[JobSector.STUDENT]: 'Student',
|
|
[JobSector.HOUSEHOLD_LABOR]: 'Household Labor',
|
|
[JobSector.UNEMPLOYED]: 'Unemployed',
|
|
}),
|
|
incomeSources: this.enumToOptions(IncomeSource, {
|
|
[IncomeSource.SALARY]: 'Salary',
|
|
[IncomeSource.ANCESTRAL]: 'Ancestral/Inheritance',
|
|
[IncomeSource.REAL_ESTATE]: 'Real Estate',
|
|
[IncomeSource.INVESTMENT_RETURNS]: 'Investment Returns',
|
|
[IncomeSource.RENTAL_INCOME]: 'Rental Income',
|
|
[IncomeSource.OTHER]: 'Other',
|
|
}),
|
|
jobCategories: this.enumToOptions(JobCategory, {
|
|
[JobCategory.ASSISTANT_MINISTER]: 'Assistant Minister',
|
|
[JobCategory.DEPUTY_MINISTER]: 'Deputy Minister',
|
|
[JobCategory.UNDER_SECRETARY]: 'Under Secretary',
|
|
[JobCategory.GENERAL_MANAGER]: 'General Manager',
|
|
[JobCategory.CHAIRMAN]: 'Chairman',
|
|
[JobCategory.MANAGER]: 'Manager',
|
|
[JobCategory.PROFESSOR]: 'Professor',
|
|
[JobCategory.HEAD_OF_COURT]: 'Head of Court',
|
|
[JobCategory.JUDGE]: 'Judge',
|
|
[JobCategory.LAWYER]: 'Lawyer',
|
|
[JobCategory.SCIENTIST]: 'Scientist',
|
|
[JobCategory.NOTARY]: 'Notary',
|
|
[JobCategory.BUSINESSMAN]: 'Businessman',
|
|
[JobCategory.MERCHANT]: 'Merchant',
|
|
[JobCategory.PHARMACIST]: 'Pharmacist',
|
|
[JobCategory.DOCTOR]: 'Doctor',
|
|
[JobCategory.MEDICAL_TECHNICIAN]: 'Medical Technician',
|
|
[JobCategory.NURSE]: 'Nurse',
|
|
[JobCategory.ENGINEER]: 'Engineer',
|
|
[JobCategory.CHEMIST]: 'Chemist',
|
|
[JobCategory.CONTRACTOR]: 'Contractor',
|
|
[JobCategory.AUDITOR_ACCOUNTANT]: 'Auditor/Accountant',
|
|
[JobCategory.RESEARCHER]: 'Researcher',
|
|
[JobCategory.ACCOUNTANT]: 'Accountant',
|
|
[JobCategory.JOURNALIST]: 'Journalist',
|
|
[JobCategory.DESIGNER]: 'Designer',
|
|
[JobCategory.COMPUTER_SPECIALIST]: 'Computer Specialist',
|
|
[JobCategory.TRANSLATOR]: 'Translator',
|
|
[JobCategory.TEACHER]: 'Teacher',
|
|
[JobCategory.PILOT]: 'Pilot',
|
|
[JobCategory.HOST]: 'Host',
|
|
[JobCategory.OFFICER]: 'Officer',
|
|
[JobCategory.SOLDIER]: 'Soldier',
|
|
[JobCategory.RETIRED]: 'Retired',
|
|
[JobCategory.SALESMAN]: 'Salesman',
|
|
[JobCategory.AUTHOR]: 'Author',
|
|
[JobCategory.CRAFTSMAN]: 'Craftsman',
|
|
[JobCategory.SECURITY]: 'Security',
|
|
[JobCategory.LABORER]: 'Laborer',
|
|
[JobCategory.DRIVER]: 'Driver',
|
|
[JobCategory.FARMER]: 'Farmer',
|
|
[JobCategory.HOUSEWIFE]: 'Housewife',
|
|
[JobCategory.DIPLOMAT]: 'Diplomat',
|
|
[JobCategory.STUDENT]: 'Student',
|
|
[JobCategory.FREELANCER]: 'Freelancer',
|
|
[JobCategory.SHEPHERD]: 'Shepherd',
|
|
[JobCategory.HOUSEMAID_OR_BABYSITTER]: 'Housemaid/Babysitter',
|
|
[JobCategory.CAPTAIN]: 'Captain',
|
|
[JobCategory.AMBASSADOR]: 'Ambassador',
|
|
[JobCategory.MARKETING]: 'Marketing',
|
|
[JobCategory.CONSULTING]: 'Consulting',
|
|
[JobCategory.SUPERVISOR]: 'Supervisor',
|
|
[JobCategory.BANKER]: 'Banker',
|
|
[JobCategory.BODYGUARD_OR_PERSONAL_ASSISTANT]: 'Bodyguard/Personal Assistant',
|
|
}),
|
|
incomeRanges: this.enumToOptions(IncomeRange, {
|
|
[IncomeRange.BELOW_2000]: 'SAR 2,000 and below',
|
|
[IncomeRange.RANGE_2000_5000]: 'SAR 2,000 to 5,000',
|
|
[IncomeRange.RANGE_5000_10000]: 'SAR 5,000 to 10,000',
|
|
[IncomeRange.RANGE_10000_20000]: 'SAR 10,000 to 20,000',
|
|
[IncomeRange.ABOVE_20000]: 'SAR 20,000 and above',
|
|
}),
|
|
};
|
|
}
|
|
|
|
private enumToOptions(enumObj: any, labels: Record<string, string>): MetadataOptionDto[] {
|
|
return Object.keys(enumObj).map((key) => ({
|
|
value: enumObj[key],
|
|
label: labels[enumObj[key]] || enumObj[key],
|
|
}));
|
|
}
|
|
}
|
|
|