204 lines
7.2 KiB
JavaScript
204 lines
7.2 KiB
JavaScript
export const getEnumObject = (enumArray, key = 'value', value = 'label') =>
|
|
enumArray.reduce((acc, option) => {
|
|
acc[option[key]] = option[value]
|
|
return acc
|
|
}, {})
|
|
|
|
export const ROLES = Object.freeze([
|
|
{ value: 'admin', label: 'مدیر', changeable: false },
|
|
{ value: 'student', label: 'دانشجو', changeable: true },
|
|
{ value: 'teacher', label: 'استاد', changeable: true },
|
|
{ value: 'counselor', label: 'مشاور', changeable: true },
|
|
{ value: 'missionary', label: 'مبلغ', changeable: true },
|
|
])
|
|
|
|
export const LOGIN_STEPS = Object.freeze({
|
|
LOGIN: 1,
|
|
LOGIN_WITH_VERIFY_CODE: 2,
|
|
VERIFY_CODE: 3,
|
|
})
|
|
|
|
export const SIGNUP_STEPS = Object.freeze({
|
|
SIGNUP: 1,
|
|
VERIFY_CODE: 2,
|
|
})
|
|
|
|
export const STUDENT_REGISTRATION = Object.freeze({
|
|
PERSONAL_INFORMATION: 1,
|
|
EDUCATIONAL_INFORMATION: 2,
|
|
PROFESSIONAL_INFORMATION: 3,
|
|
SKILL_ASSESSMENT_PART_1: 4,
|
|
SKILL_ASSESSMENT_PART_2: 5,
|
|
SKILL_ASSESSMENT_PART_3: 6,
|
|
SKILL_ASSESSMENT_PART_4: 7,
|
|
SKILL_ASSESSMENT_PART_5: 8,
|
|
SKILL_ASSESSMENT_PART_6: 9,
|
|
SKILL_ASSESSMENT_PART_7: 10,
|
|
})
|
|
|
|
export const STUDENT_REGISTRATION_ORDER = Object.freeze(Object.values(STUDENT_REGISTRATION))
|
|
|
|
export const USER_STATUS = Object.freeze({
|
|
approved: 'تأیید شده',
|
|
pending: 'در انتظار',
|
|
rejected: 'رد شده',
|
|
blocked: 'مسدود',
|
|
})
|
|
|
|
export const MARITAL_STATUS = Object.freeze({
|
|
single: 'مجرد',
|
|
married: 'متاهل',
|
|
divorced: 'مطلقه',
|
|
widowed: 'بیوه',
|
|
})
|
|
|
|
export const GENDER = Object.freeze({
|
|
male: 'اقا',
|
|
female: 'خانم',
|
|
})
|
|
|
|
export const ROLE_LABELS = Object.freeze(Object.fromEntries(ROLES.map((r) => [r.value, r.label])))
|
|
|
|
export const CHANGEABLE_ROLES = Object.freeze(ROLES.filter((r) => r.changeable).map((r) => r.value))
|
|
|
|
export const EDUCATION_STATUS = Object.freeze({
|
|
seminary_student: 'طلبه',
|
|
seminary_and_university_student: 'طلبه و دانشجو',
|
|
graduate: 'فارغ التحصیلی',
|
|
})
|
|
|
|
export const SEMINARY_LEVEL = Object.freeze({
|
|
level_2: 'سطح دو',
|
|
level_3: 'سطح سه',
|
|
level_4: 'سطح چهار',
|
|
not_applicable: 'طلبه نیستم',
|
|
})
|
|
|
|
export const UNIVERSITY_LEVEL = Object.freeze({
|
|
bachelor: ' مقطع کارشناسی (لیسانس)',
|
|
master: ' مقطع کارشناسی ارشد (فوق لیسانس)',
|
|
phd: ' مقطع دکتری',
|
|
not_applicable: 'دانشجو نیستم',
|
|
})
|
|
|
|
export const PROPAGATION_PLATFORM = Object.freeze({
|
|
home_gathering_occasional: 'روضههای خانگی مناسبتی',
|
|
home_gathering_regular: 'جلسات خانگی ثابت',
|
|
online: 'فضای مجازی',
|
|
university: 'دانشگاه',
|
|
school: 'مدرسه',
|
|
other: 'سایر فضاهای تبلیغی',
|
|
none: 'فعالیتی نداشتهام',
|
|
})
|
|
|
|
export const LOW_SATISFACTION_RESPONSE = Object.freeze({
|
|
change_the_method: 'روش را عوض میکنید در حالی که ایمان به صحت آن دارید',
|
|
insist_on_your_method:
|
|
'اصرار بر روش و مسیر خود دارید و معتقد هستید مخاطب باید خود را به آن سطح برساند',
|
|
other: 'کاری به غیر از گزینههای ذکر شده انجام میدهید',
|
|
})
|
|
|
|
export const SESSION_CANCELLATION_RESPONSE = Object.freeze({
|
|
teach_how_to_reduce_costs: 'آموزش روشهای کاهش هزینه به صاحب بیت',
|
|
provide_solutions_to_cover_meeting_costs: 'ارائه راهکارهای تامین هزینههای جلسه',
|
|
setup_or_find_an_alternative_meeting: 'راهاندازی یا پیدا کردن یک جلسه جایگزین با همان جمع',
|
|
convince_the_homeowner_to_continue: 'توجیه و اقناع صاحب بیت برای ادامه دادن',
|
|
other: 'کاری به غیر از گزینههای ذکر شده انجام میدهید',
|
|
})
|
|
|
|
export const AUDIENCE_CONFLICT_RESPONSE = Object.freeze({
|
|
divide_the_crowd:
|
|
'جمع را تفکیک میکنید و برای هر کدام متناسب با آن چیزی که میخواهند ارائه میدهید',
|
|
convince_one_of_the_groups: 'سعی میکنید یکی از گروهها را متقاعد کنید',
|
|
considering_one_of_the_groups: 'بیتوجه به یکی از گروهها به ارائه خود میپردازید',
|
|
other: 'کاری غیر از گزینههای ذکر شده را انجام میدهید',
|
|
})
|
|
|
|
export const COMPETING_PROPAGATOR_RESPONSE = Object.freeze({
|
|
strengthen_yourself: 'خود را در زمینه ابزارها و روشها تقویت میکنید تا جلسه شما پررونق شود',
|
|
close_your_meeting_and_strengthen_the_preacher:
|
|
'جلسه خود را تعطیل کرده و سعی در تقویت بنیه معرفتی مبلغه جلسه مذکور خواهید داشت',
|
|
convince_the_other_preacher_to_strengthen_or_close:
|
|
'سعی میکنید مبلغه دیگر را توجیه و اقناع کنید تا یا بنیه خود را تقویت کند یا جلسه را تعطیل کند',
|
|
bring_a_skilled_person_with_me:
|
|
'یک نفر دارای مهارت را به عنوان کمک و معین برای تقویت جلسه و روش و ابزارها، با خود همراه میکردم',
|
|
other: 'کاری غیر از گزینههای ذکر شده انجام میدادم',
|
|
})
|
|
|
|
export const VERIFICATION_MEDIA_TYPE = Object.freeze({
|
|
FAITH_PRODUCTION: 'faith_production',
|
|
LEADER_MESSAGE: 'leader_message',
|
|
})
|
|
|
|
export const COURSE_CONTENT_TYPE = Object.freeze({
|
|
video: 'ویدئو',
|
|
voice: 'صوت',
|
|
text: 'متن',
|
|
})
|
|
|
|
export const COURSE_CONTENT_TYPE_ACCEPT = Object.freeze({
|
|
video: 'video/*',
|
|
voice: 'audio/*',
|
|
text: '.pdf,.doc,.docx,.txt',
|
|
})
|
|
|
|
export const SESSION_TYPE = Object.freeze({
|
|
in_person: 'حضوری',
|
|
online: 'آنلاین',
|
|
offline: 'آفلاین',
|
|
video: 'ویدئو',
|
|
audio: 'صوتی',
|
|
text: 'متن',
|
|
slide: 'اسلاید',
|
|
pdf: 'PDF',
|
|
})
|
|
|
|
export const SESSION_PLATFORM = Object.freeze({
|
|
zoom: 'Zoom',
|
|
google_meet: 'Google Meet',
|
|
teams: 'Microsoft Teams',
|
|
custom: 'سایر',
|
|
})
|
|
|
|
export const ASSIGNMENT_PRIORITY = Object.freeze({
|
|
mandatory: 'اجباری',
|
|
optional: 'اختیاری',
|
|
})
|
|
|
|
// Single ticket-lifecycle vocabulary. Used by every ticket-like resource —
|
|
// admin /messages, admin /services, admin /consultations, counselor, student
|
|
// /my-tickets, /user/services, /user/consultants. Backend exposes exactly
|
|
// these three values across all of them.
|
|
export const TICKET_STATUS = Object.freeze({
|
|
open: 'باز',
|
|
answered: 'پاسخ داده شده',
|
|
closed: 'بسته شده',
|
|
})
|
|
|
|
// Priority levels for student-created tickets. Sent to the backend on POST
|
|
// /student/tickets (currently carried via the `category` field).
|
|
export const TICKET_PRIORITY = Object.freeze({
|
|
low: 'کم اهمیت',
|
|
normal: 'عادی',
|
|
high: 'مهم',
|
|
urgent: 'فوری',
|
|
})
|
|
|
|
export const STUDENT_COURSE_STATUS = Object.freeze({
|
|
active: 'در حال گذراندن',
|
|
completed: 'تکمیل شده',
|
|
})
|
|
|
|
export const PRIORITY_STATUS = Object.freeze({
|
|
high: 'بالا',
|
|
medium: 'متوسط',
|
|
low: 'پایین',
|
|
})
|
|
|
|
export const SERVICE_TYPE = Object.freeze({
|
|
loan: 'وام',
|
|
consultation: 'مشاوره',
|
|
educational: 'آموزشی',
|
|
other: 'سایر',
|
|
})
|