{ // category: 'اطلاعات هویتی' username: { type: this.DataTypes.STRING(50), allowNull: true, desc: "نام کاربری", category: "اطلاعات هویتی", regex: "[^a-zA-Z0-9@_./-]+", }, password: { type: this.DataTypes.TEXT, allowNull: true, desc: "کلمه‌ی عبور", }, firstName: { type: this.DataTypes.STRING, allowNull: true, desc: "نام", category: "اطلاعات هویتی", regex: "[^ آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیئ]+", readOnly: true, }, lastName: { type: this.DataTypes.STRING, allowNull: true, desc: "نام خانوادگی", category: "اطلاعات هویتی", regex: "[^ آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیئ]+", readOnly: true, }, displayName: { type: this.DataTypes.STRING(128), allowNull: true, desc: "نام نمایشی", category: "اطلاعات هویتی", regex: "[^ آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیئ]+", }, nationalId: { type: this.DataTypes.STRING(16), allowNull: false, desc: "کد ملی", category: "اطلاعات هویتی", inputType: "number", maxLength: 16, }, birthDate: { type: this.DataTypes.DATE, allowNull: false, desc: "تاریخ تولد", category: "اطلاعات هویتی", max: "now()", }, gender: { type: this.DataTypes.SMALLINT, allowNull: true, desc: "جنسیت", category: "اطلاعات هویتی", options: { 0: "مرد", 1: "زن", 2: "دوجنس و نامشخص", }, }, fatherName: { type: this.DataTypes.STRING, allowNull: true, desc: "نام پدر", category: "اطلاعات هویتی", regex: "[^ آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیئ]+", readOnly: true, }, status: { type: this.DataTypes.SMALLINT, allowNull: true, defaultValue: 1, desc: "وضعیت", options: { "-1": "مسدود شده", 0: "غیر فعال", 1: "فعال", }, }, // category: 'اطلاعات تماس' cellphone: { type: this.DataTypes.CHAR(11), allowNull: true, validate: { is: /^09[0-9]{9}/ }, desc: "تلفن همراه", required: true, category: "اطلاعات تماس", inputType: "number", maxLength: 11, }, phone: { type: this.DataTypes.CHAR(11), allowNull: true, desc: "تلفن ثابت", category: "اطلاعات تماس", inputType: "number", maxLength: 11, }, email: { type: this.DataTypes.STRING, allowNull: true, desc: "ایمیل", category: "اطلاعات تماس", }, address: { type: this.DataTypes.TEXT, allowNull: true, desc: "آدرس", category: "اطلاعات تماس", }, postalCode: { type: this.DataTypes.CHAR(10), allowNull: true, desc: "کد پستی", category: "اطلاعات تماس", inputType: "number", maxLength: 10, }, // category: 'تحصیلات کاربر' education: { type: this.DataTypes.SMALLINT, allowNull: true, validate: { min: 0, max: 10 }, desc: `میزان تحصیلات`, options: { 0: "بی‌سواد", 1: "ابتدایی", 2: "راهنمایی", 3: "دیپلم", 4: "کاردانی", 5: "کارشناسی", 6: "کارشناسی ارشد", 7: "دکترای عمومی", 8: "دکترای حرفه‌ای", 9: "دکترای تخصصی", 10: "فوق تخصص", }, category: "تحصیلات کاربر", }, studiesField: { type: this.DataTypes.STRING, allowNull: true, desc: "رشته‌ی تحصیلی", category: "تحصیلات کاربر", maxLength: 32, }, graduationYear: { type: this.DataTypes.SMALLINT, allowNull: true, maxLength: 4, desc: "سال اخذ مدرک", category: "تحصیلات کاربر", }, referenceId: { type: this.DataTypes.BIGINT, allowNull: true, desc: "معرف", maxLength: 32, category: "اطلاعات هویتی", }, isForeigner: { type: this.DataTypes.BOOLEAN, allowNull: true, defaultValue: false, desc: "آیا کاربر از اتباع خارجی است؟", category: "اطلاعات هویتی", options: { 0: "خیر", 1: "بله", }, }, civilRegValidation: { type: this.DataTypes.SMALLINT, allowNull: true, defaultValue: 0, desc: "وضعیت استعلام ثبت احوال", options: { "-1": "استعلام ناموفق", 0: "استعلام نشده", 1: "استعلام موفق", }, category: "اطلاعات هویتی", }, childCount: { type: this.DataTypes.SMALLINT, allowNull: true, desc: "تعداد فرزندان", category: "اطلاعات هویتی", maxLength: 2, }, maritalStatus: { type: this.DataTypes.SMALLINT, allowNull: true, desc: `وضعیت تاهل`, category: "اطلاعات هویتی", options: { 0: "مجرد", 1: "متاهل", }, }, militaryServiceStatus: { type: this.DataTypes.SMALLINT, allowNull: true, desc: `وضعیت نظام وظیفه`, category: "اطلاعات هویتی", options: { 1: "معافیت پزشکی", 2: "معافیت غیر پزشکی", 3: "انجام شده", 4: "انجام نشده", }, }, reasonOfExemption: { type: this.DataTypes.TEXT, allowNull: true, desc: "علت معافیت", category: "اطلاعات هویتی", }, yearOfExemption: { type: this.DataTypes.SMALLINT, allowNull: true, desc: "سال معافیت", maxLength: 4, category: "اطلاعات هویتی", }, paraghraphOfExemption: { type: this.DataTypes.STRING(4), allowNull: true, desc: "بند معافیت", category: "اطلاعات هویتی", }, noteOfExemption: { type: this.DataTypes.STRING(4), allowNull: true, desc: "ماده معافیت", category: "اطلاعات هویتی", maxLength: 32, }, permitIssueDate: { type: this.DataTypes.DATEONLY, allowNull: true, desc: "تاریخ صدور مجوز", category: "اطلاعات هویتی", }, permitExpirationDate: { type: this.DataTypes.DATEONLY, allowNull: true, desc: "تاریخ پایان اعتبار مجوز", category: "اطلاعات هویتی", }, premitFileId: { type: this.DataTypes.STRING, allowNull: true, desc: "فایل مجوز", category: "ضمائم", relation: "file", inputType: "file", }, experienceYears: { type: this.DataTypes.SMALLINT, allowNull: true, desc: "تعداد سال‌های تجربه‌ی کار", category: "اطلاعات هویتی", maxLength: "2", }, nationalCardFileId: { type: this.DataTypes.STRING, allowNull: true, desc: "فایل کارت ملی", category: "اطلاعات هویتی", category: "ضمائم", relation: "file", inputType: "file", }, birthCertificateFileId: { type: this.DataTypes.STRING, allowNull: true, desc: "فایل شناسنامه", category: "اطلاعات هویتی", category: "ضمائم", relation: "file", inputType: "file", }, militaryServiceCardFileId: { type: this.DataTypes.STRING, allowNull: true, desc: "فایل پایان خدمت", category: "ضمائم", relation: "file", inputType: "file", }, policeClearanceFileId: { type: this.DataTypes.STRING, allowNull: true, desc: "فایل عدم سوء پیشینه", category: "ضمائم", relation: "file", inputType: "file", }, personalImageFileId: { type: this.DataTypes.STRING, allowNull: true, desc: "فایل عکس پرسنلی", category: "ضمائم", relation: "file", inputType: "file", }, healthCardFileId: { type: this.DataTypes.STRING, allowNull: true, desc: "فایل کارت بهداشت", category: "ضمائم", relation: "file", inputType: "file", }, // lastUserRoleId: { type: this.DataTypes.BIGINT, allowNull: true, desc: "آخرین نقش و سمت انتخاب شده", relation: "userRole", readOnly: true, category: "اطلاعات ورود", }, signatureFile: { type: this.DataTypes.TEXT, allowNull: true, category: "ضمائم", inputType: "sign", }, signatureFileId: { type: this.DataTypes.STRING, allowNull: true, desc: "تصویر امضا", relation: "file", category: "ضمائم", }, lastSuccessfulLogin: { type: this.DataTypes.DATE, allowNull: true, desc: "زمان آخرین ورود موفق", readOnly: true, category: "اطلاعات ورود", }, lastFailedLogin: { type: this.DataTypes.DATE, allowNull: true, desc: "زمان آخرین تلاش ورود ناموفق", readOnly: true, category: "اطلاعات ورود", }, consecutiveLoginFailures: { type: this.DataTypes.INTEGER, allowNull: false, defaultValue: 0, desc: "تعداد دفعات ورود ناموفق قبل از ورود موفق", readOnly: true, category: "اطلاعات ورود", }, loginRestrictionEnd: { type: this.DataTypes.DATE, allowNull: true, desc: "زمان پایان محدودیت ورود", readOnly: true, category: "اطلاعات ورود", } }