From b4441224ed936bd261d8c7c0bde2e89824472f01 Mon Sep 17 00:00:00 2001 From: kouhkan Date: Mon, 18 Aug 2025 08:51:02 +0330 Subject: [PATCH] refactor: remove model codes --- _site/docs/models/backend.html | 700 ++++----------------------------- _site/search.json | 4 +- docs/models/backend.qmd | 555 -------------------------- 3 files changed, 74 insertions(+), 1185 deletions(-) diff --git a/_site/docs/models/backend.html b/_site/docs/models/backend.html index ddc15c2..ed471ba 100644 --- a/_site/docs/models/backend.html +++ b/_site/docs/models/backend.html @@ -117,7 +117,7 @@ pre > code.sourceCode > span > a:first-child::before { text-decoration: underlin - + +
const REQUEST_STATUSES = {
+    OPEN: 0, // باز
+    IN_PROGRESS: 1, // در حال بررسی
+    CLOSE: 2, // بسته شده
+    END: 3, // پایان عملیات
+};
+
+const REQUEST_PERMISSIONS_STATUSES = {
+    NOT_HAS: 0, // ندارد
+    HAS: 1, // دارد
+    CANCEL: 2, // لغو شده
+    IN_PROGRESS: 3, //  در حال بررسی
+};
+
+// ['صادرات', 'واردات', 'ترانزیت', 'آب رسانی', 'سوخت رسانی', 'تجهیزات', 'تدارکات'],
+const OPERATION_TYPES = {
+    EXPORT: 0,
+    IMPORT: 1,
+    TRANSIT: 2,
+    WATER: 3,
+    FUEL: 4,
+    EQUIPMENT: 5,
+    PROVISION: 6,
+};
+
+// یک تردد، چند تردد، شهری
+const TRAFFIC_TYPES = {
+    ONE_DIRECTION: 0,
+    MULTIPLE_DIRECTION: 1,
+    CITY: 2,
+    ENTRANCE_PERMISSION: 3,
+    EXIT_PERMISSION: 4,
+};
+
+// کانتینری، نفتی، عمومی
+const TERMINAL_OPTIONS = {
+    CONTAINER: 0,
+    OIL: 1,
+    GENERAL: 2,
+    SERVICE: 3,
+};
+
+// تخلیه، بارگیری، تشریفات گمرکی
+const ENTRANCE_TRAFFIC_TYPES = {
+    LOAD: 0,
+    UNLOAD: 1,
+    CUSTOM: 2,
+    SERVICE: 3,
+};

مدل مربوط به شماره پلاک درخواست‌ها که کاربر اطلاعات راننده را وارد می‌کند.

-
const mongoose = require('mongoose');
-const { TRAFFIC_TYPES } = require('./request.model');
-
-// وضعیت فعلی پلاک که در چه مرحله‌ای است
-const PLATE_STATES = {
-    OUT_PORT: 0,
-    IN_PORT: 1,
-    CLOSED: 2,
-};
-
-// پلاک مجوز حرکت دارد یا ندارد
-const PLATE_PERMISSIONS = {
-    NOT_HAS: 0,
-    HAS: 1,
-    PENDING: 2,
-};
-
-// یگان حفاظت مجوز ورود و خروج پلاک را بصورت اتوماتیک توسط دوربین پلاکخوان ثبت کرده یا بصورت دستی
-const GUARD_REGISTRATION_TYPES = {
-    AUTO: 0,
-    MANUAL: 1,
-};
-
-// مدل پلاک
-const platesSchema = new mongoose.Schema(
-    {
-        // شماره پلاک
-        plate: {
-            type: String,
-            trim: true,
-        },
-        //مجوز ورود به بندر که هم یگان حفاظت برای چند ترددی و شهری صادر می کند و هم پایانه کامیونی
-        permission: {
-            type: Number,
-            enum: Object.values(PLATE_PERMISSIONS),
-        },
-
-        // مجوز یگان حفاظت
-        permissionGuard: {
-            type: Number,
-        },
-        permissionGuardDate: {
-            type: Date,
-        },
-        status: {
-            type: Number,
-        },
-
-        // نوع ترددی که توسط ادمین ثبت شده است
-        traffic: {
-            type: Number,
-            enum: Object.values(TRAFFIC_TYPES),
-        },
-
-        // زمان ورود ناوگان حمل به درون بندر
-        entranceTime: [
-            {
-                type: Date,
-            },
-        ],
-        entranceTimeString: [
-            {
-                type: String,
-            },
-        ],
-
-        // زمان خروج ناوگان حمل از بندر
-        exitTime: [
-            {
-                type: Date,
-            },
-        ],
-        exitTimeString: [
-            {
-                type: String,
-            },
-        ],
-
-        // مجوز پایانه راهداری
-        delfardTerminalTime: {
-            type: Date,
-        },
-        delfardTerminalTimeString: {
-            type: String,
-        },
-
-        // زمان مجوز گرفتن از پایانه کامیونی
-        truckTerminalTime: {
-            type: Date,
-        },
-        truckTerminalTimeString: {
-            type: String,
-        },
-
-        // تخلف
-        violationType: {
-            type: String,
-        },
-        violationComment: {
-            type: String,
-        },
-
-        // حساسیت کالایی که حمل میکند
-        dangers: [
-            {
-                type: mongoose.SchemaTypes.ObjectId,
-                ref: 'dangerType',
-            },
-        ],
-        date: {
-            type: Date,
-        },
-        dateString: {
-            type: String,
-        },
-
-        // اگر درخواست از نوع کانتینری باشد شماره‌های کانتینر هم باید وارد شود
-        containerNumbers: [
-            {
-                type: String,
-            },
-        ],
-
-        closeDate: {
-            type: Date,
-        },
-
-        // اسم راننده
-        driverName: {
-            type: String,
-        },
-
-        // شماره پاسپورت برای خارجی‌ها و کد ملی برای داخلی‌ها
-        driverPersonalCode: {
-            type: String,
-        },
-
-        // شماره موبایل راننده
-        driverMobile: {
-            type: String,
-        },
-
-        // ملیت راننده
-        driverNationality: {
-            type: String,
-        },
-
-        // نوع ناوگان حمل
-        truckType: {
-            type: mongoose.SchemaTypes.ObjectId,
-            ref: 'trucks',
-        },
-
-        // کدی که اگر نوع ناوگان از نوع چادری یا یخچالی باشد
-        TYnumber: {
-            type: String,
-        },
-
-        // درخواست کنسل شده است یا نه
-        isCancel: {
-            type: Boolean,
-        },
-        bijakType: {
-            type: String,
-        },
-        bijakNumber: {
-            type: Number,
-        },
-        bijakTruckScaleNumber: {
-            type: String,
-        },
-        bijakUser: {
-            type: String,
-        },
-        bijakGCOMS: {
-            type: Array,
-        },
-
-        // درخواست برای بستن 
-        requestForClose: {
-            type: Boolean,
-        },
-        requestForCloseFullName: {
-            type: String,
-        },
-
-        // نوع پلاک که ایرانی خارجی و منطقه آزاد باشد
-        plateOption: {
-            type: String,
-        },
-        plateState: {
-            type: Number,
-            enum: Object.values(PLATE_STATES),
-            default: PLATE_STATES.OUT_PORT,
-        },
-
-        // نوع ورود پلاک به بندر
-        entranceGuardRegistrationType: {
-            type: Number,
-            enum: Object.values(GUARD_REGISTRATION_TYPES),
-        },
-
-        // نوع خروج پلاک از بندر
-        exitGuardRegistrationType: {
-            type: Number,
-            enum: Object.values(GUARD_REGISTRATION_TYPES),
-        },
-        // transportation
-
-        // شرکت حمل اگر درخواست شهری ثبت شود
-        transportationCompany: {
-            type: mongoose.SchemaTypes.ObjectId,
-            ref: 'terminals',
-            required: false,
-        },
-    },
-    { timestamps: true }
-);
-
-const Plate = mongoose.model('plates', platesSchema);
-
-module.exports = { Plate, PLATE_STATES, PLATE_PERMISSIONS };
+

+// وضعیت فعلی پلاک که در چه مرحله‌ای است
+const PLATE_STATES = {
+    OUT_PORT: 0,
+    IN_PORT: 1,
+    CLOSED: 2,
+};
+
+// پلاک مجوز حرکت دارد یا ندارد
+const PLATE_PERMISSIONS = {
+    NOT_HAS: 0,
+    HAS: 1,
+    PENDING: 2,
+};
+
+// یگان حفاظت مجوز ورود و خروج پلاک را بصورت اتوماتیک توسط دوربین پلاکخوان ثبت کرده یا بصورت دستی
+const GUARD_REGISTRATION_TYPES = {
+    AUTO: 0,
+    MANUAL: 1,
+};
diff --git a/_site/search.json b/_site/search.json index d4712be..4459e92 100644 --- a/_site/search.json +++ b/_site/search.json @@ -67,11 +67,11 @@ "href": "docs/models/backend.html", "title": "مدل‌ها", "section": "", - "text": "فیلدهای موجود در دیتابیس\nمدل درخواست کاربر که شامل رویه‌های واردات، صادرات، ترانزیت، تدارکات، تجهیزات، سوخت‌رسانی، آب‌رسانی، عودت تجهیزات (ورود و خروج) می‌شود.\nconst mongoose = require('mongoose');\n\nconst REQUEST_STATUSES = {\n OPEN: 0, // باز\n IN_PROGRESS: 1, // در حال بررسی\n CLOSE: 2, // بسته شده\n END: 3, // پایان عملیات\n};\n\nconst REQUEST_PERMISSIONS_STATUSES = {\n NOT_HAS: 0, // ندارد\n HAS: 1, // دارد\n CANCEL: 2, // لغو شده\n IN_PROGRESS: 3, // در حال بررسی\n};\n\n// ['صادرات', 'واردات', 'ترانزیت', 'آب رسانی', 'سوخت رسانی', 'تجهیزات', 'تدارکات'],\nconst OPERATION_TYPES = {\n EXPORT: 0,\n IMPORT: 1,\n TRANSIT: 2,\n WATER: 3,\n FUEL: 4,\n EQUIPMENT: 5,\n PROVISION: 6,\n};\n\n// یک تردد، چند تردد، شهری\nconst TRAFFIC_TYPES = {\n ONE_DIRECTION: 0,\n MULTIPLE_DIRECTION: 1,\n CITY: 2,\n ENTRANCE_PERMISSION: 3,\n EXIT_PERMISSION: 4,\n};\n\n// کانتینری، نفتی، عمومی\nconst TERMINAL_OPTIONS = {\n CONTAINER: 0,\n OIL: 1,\n GENERAL: 2,\n SERVICE: 3,\n};\n\n// تخلیه، بارگیری، تشریفات گمرکی\nconst ENTRANCE_TRAFFIC_TYPES = {\n LOAD: 0,\n UNLOAD: 1,\n CUSTOM: 2,\n SERVICE: 3,\n};\n\nconst requestSchema = new mongoose.Schema(\n {\n کسی که درخواست ثبت میکنه - واردات صادرات و ...\n requestBy: {\n type: mongoose.Types.ObjectId,\n ref: 'User',\n },\n\n به نمایندگی از ... درخواست‌ها ثبت میشه. نماینده در واقع\n requestFor: [\n {\n type: mongoose.Types.ObjectId,\n ref: 'User',\n },\n ],\n\n // نوع عملیات درخواست مثل واردات صادرات و ...\n operationType: {\n type: Number,\n required: [true, 'نوع عملیات الزامی می باشد.'],\n enum: Object.values(OPERATION_TYPES),\n },\n\n // فیلدی حمل یکسره و عملیاتی در آن ذخیره میشود\n options: {\n type: String,\n },\n\n // فیلدی که جهت در آن ذخیره میشود. جهت تخلیه، بارگیری و تشریفات گمرکی و ...\n entranceTrafficType: {\n type: Number,\n enum: Object.values(ENTRANCE_TRAFFIC_TYPES),\n },\n\n // حساسیت کالا در این فیلد ذخیره میشود\n danger: [\n {\n type: mongoose.Types.ObjectId,\n ref: 'dangerType',\n required: false,\n },\n ],\n\n // تاییده نهایی نوع تردد که توسط ادمین وارد میشود\n traffic: {\n // تردد تایید شده توسط مجوز دهنده\n type: Number,\n enum: Object.values(TRAFFIC_TYPES),\n },\n\n // اظهار نوع تردد که توسط کاربر ثبت میشود و نهایی نیست\n trafficType: {\n // اظهار تردد\n type: Number,\n enum: Object.values(TRAFFIC_TYPES),\n },\n\n // پایانه‌ای که کالا برای آن ثبت می‌شود\n terminalOption: {\n type: Number,\n enum: Object.values(TERMINAL_OPTIONS),\n },\n\n // آدرس فایل حواله سوخت و ...\n filename: {\n type: String,\n },\n\n // نام محصول یا کالایی که کاربر وارد میکند\n name: {\n // نام بار\n type: String,\n trim: true,\n },\n\n // شماره سفر\n voyageNumber: {\n type: String,\n },\n\n // کد قبض انبار اگر کالا عمومی و یا کانتینری باشد\n receiptNumber: [\n {\n type: String,\n trim: true,\n },\n ],\n\n // تناژ کالا\n tonaj: {\n type: String,\n },\n\n // عددی که برای تناژ استفاده میشود\n tonajNumber: {\n type: String,\n },\n\n // واحد تناژ کالا\n tonajType: {\n type: String,\n },\n\n // تعداد محصول یا بار\n packageNumber: {\n type: String,\n },\n\n // شماره پلاک‌های ثبت شده برای درخواست کاربر\n plates: [\n {\n type: mongoose.Types.ObjectId,\n ref: 'plates',\n required: false,\n },\n ],\n\n // بدون استفاده\n truckNumber: {\n type: String,\n },\n\n // اسم شناور\n vesselName: String,\n\n // اسم کشتی رانی صاحب شناور\n shipping: {\n type: String,\n },\n\n // منطقه عملیاتی\n storeRoom: {\n type: mongoose.Types.ObjectId,\n ref: 'storeRoom',\n required: false,\n },\n // نوع منطقه عملیاتی - که استفاده نمیشود\n storeRoomType: {\n type: String,\n },\n\n // دستگاه نظارت درخواست\n supervisionDepartment: {\n type: mongoose.Types.ObjectId,\n ref: 'supervisionDepartment',\n required: false,\n },\n\n // کاربری که برای درخواست مشاور است\n consultingUser: {\n type: String,\n },\n consultingUsername: {\n type: String,\n },\n consultingStatus: {\n type: String,\n },\n supervisionStatus: {\n type: String,\n },\n propertyBossStatus: {\n type: String,\n },\n HSEStatus: {\n type: String,\n },\n portBossStatus: {\n type: String,\n },\n customsStatus: {\n type: String,\n },\n selectedStores: {\n type: Array,\n },\n\n // مقصد کالا\n destination: {\n type: mongoose.SchemaTypes.ObjectId,\n trim: true,\n ref: 'city',\n },\n\n // مجوز یگان حفاظت \n permissionGuard: {\n // مجوز یگان حفاظت\n type: Number,\n enum: Object.values(REQUEST_PERMISSIONS_STATUSES),\n default: REQUEST_PERMISSIONS_STATUSES.IN_PROGRESS,\n },\n\n // مجوز پایانه اسکله برای حرکت کردن ناوگان حمل از پایانه کامیونی\n permissionPier: {\n // مجوز اسکله\n type: Number,\n enum: Object.values(REQUEST_PERMISSIONS_STATUSES),\n default: REQUEST_PERMISSIONS_STATUSES.IN_PROGRESS,\n },\n\n // اظهارات کوتاژ کاربر\n userCottages: [\n //اظهار کوتاژ\n {\n type: String,\n trim: true,\n },\n ],\n date: {\n type: Date,\n },\n dateString: {\n type: String,\n },\n\n // کامنت اسکله - بروز میشود\n pierComment: {\n type: String,\n },\n\n // پایانه حمل\n terminalTruckName: {\n type: mongoose.Types.ObjectId,\n ref: 'terminals',\n required: false,\n },\n\n // شماره حواله سوخت\n gasolineRequestNumber: {\n type: String,\n },\n\n // شماره سفارش\n orderNumber: {\n type: String,\n },\n\n // دروازه‌ای که درخواست برای \n gateName: {\n type: mongoose.Types.ObjectId,\n ref: 'gate',\n required: [true, 'نام دروازه الزامی می باشد.'],\n },\n\n // کد رهگیری تولید شده\n requestNumber: {\n type: String,\n },\n supervisionUser: {\n type: String,\n },\n supervisionUsername: {\n type: String,\n },\n propertyBossUser: {\n type: String,\n },\n propertyBossUsername: {\n type: String,\n },\n HSEUser: {\n type: String,\n },\n HSEUsername: {\n type: String,\n },\n portBossUser: {\n type: String,\n },\n portBossUsername: {\n type: String,\n },\n terminalUser: {\n type: String,\n },\n terminalUsername: {\n type: String,\n },\n permissionPierDate: {\n type: Date,\n },\n permissionPierDateString: {\n type: String,\n },\n\n // وضعیت درخواست کاربر\n status: {\n type: Number,\n enum: Object.values(REQUEST_STATUSES),\n default: REQUEST_STATUSES.IN_PROGRESS,\n },\n\n // اظهارات کوتاژ کاربر تایید شده است یا نه\n cottageVerified: {\n type: Boolean,\n default: false,\n },\n verfiedAt: {\n type: Date,\n required: false,\n },\n cottages: [\n // کوتاژهای تایید شده توسط سرویس استعلام گمرک\n {\n type: mongoose.Types.ObjectId,\n ref: 'cottage',\n required: false,\n },\n ],\n\n // فیلدی برای کانتینر خالی\n emptyContainer: {\n type: Boolean,\n },\n\n // اگر کالا خطرناک باشد \n unNumber: {\n type: String,\n },\n\n // اگر کالا خطرناک باشد\n casNumber: {\n type: String,\n },\n process: {\n // شروع فرآیند\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'process',\n },\n commodityList: [\n // لیست اقلام\n {\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'equipements',\n required: false,\n },\n ],\n },\n { timestamps: true }\n);\n\nconst Request = mongoose.model('request', requestSchema);\n\nmodule.exports = {\n Request,\n REQUEST_STATUSES,\n REQUEST_PERMISSIONS_STATUSES,\n TERMINAL_OPTIONS,\n TRAFFIC_TYPES,\n OPERATION_TYPES,\n};\n\nمدل مربوط به شماره پلاک درخواست‌ها که کاربر اطلاعات راننده را وارد می‌کند.\nconst mongoose = require('mongoose');\nconst { TRAFFIC_TYPES } = require('./request.model');\n\n// وضعیت فعلی پلاک که در چه مرحله‌ای است\nconst PLATE_STATES = {\n OUT_PORT: 0,\n IN_PORT: 1,\n CLOSED: 2,\n};\n\n// پلاک مجوز حرکت دارد یا ندارد\nconst PLATE_PERMISSIONS = {\n NOT_HAS: 0,\n HAS: 1,\n PENDING: 2,\n};\n\n// یگان حفاظت مجوز ورود و خروج پلاک را بصورت اتوماتیک توسط دوربین پلاکخوان ثبت کرده یا بصورت دستی\nconst GUARD_REGISTRATION_TYPES = {\n AUTO: 0,\n MANUAL: 1,\n};\n\n// مدل پلاک\nconst platesSchema = new mongoose.Schema(\n {\n // شماره پلاک\n plate: {\n type: String,\n trim: true,\n },\n //مجوز ورود به بندر که هم یگان حفاظت برای چند ترددی و شهری صادر می کند و هم پایانه کامیونی\n permission: {\n type: Number,\n enum: Object.values(PLATE_PERMISSIONS),\n },\n\n // مجوز یگان حفاظت\n permissionGuard: {\n type: Number,\n },\n permissionGuardDate: {\n type: Date,\n },\n status: {\n type: Number,\n },\n\n // نوع ترددی که توسط ادمین ثبت شده است\n traffic: {\n type: Number,\n enum: Object.values(TRAFFIC_TYPES),\n },\n\n // زمان ورود ناوگان حمل به درون بندر\n entranceTime: [\n {\n type: Date,\n },\n ],\n entranceTimeString: [\n {\n type: String,\n },\n ],\n\n // زمان خروج ناوگان حمل از بندر\n exitTime: [\n {\n type: Date,\n },\n ],\n exitTimeString: [\n {\n type: String,\n },\n ],\n\n // مجوز پایانه راهداری\n delfardTerminalTime: {\n type: Date,\n },\n delfardTerminalTimeString: {\n type: String,\n },\n\n // زمان مجوز گرفتن از پایانه کامیونی\n truckTerminalTime: {\n type: Date,\n },\n truckTerminalTimeString: {\n type: String,\n },\n\n // تخلف\n violationType: {\n type: String,\n },\n violationComment: {\n type: String,\n },\n\n // حساسیت کالایی که حمل میکند\n dangers: [\n {\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'dangerType',\n },\n ],\n date: {\n type: Date,\n },\n dateString: {\n type: String,\n },\n\n // اگر درخواست از نوع کانتینری باشد شماره‌های کانتینر هم باید وارد شود\n containerNumbers: [\n {\n type: String,\n },\n ],\n\n closeDate: {\n type: Date,\n },\n\n // اسم راننده\n driverName: {\n type: String,\n },\n\n // شماره پاسپورت برای خارجی‌ها و کد ملی برای داخلی‌ها\n driverPersonalCode: {\n type: String,\n },\n\n // شماره موبایل راننده\n driverMobile: {\n type: String,\n },\n\n // ملیت راننده\n driverNationality: {\n type: String,\n },\n\n // نوع ناوگان حمل\n truckType: {\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'trucks',\n },\n\n // کدی که اگر نوع ناوگان از نوع چادری یا یخچالی باشد\n TYnumber: {\n type: String,\n },\n\n // درخواست کنسل شده است یا نه\n isCancel: {\n type: Boolean,\n },\n bijakType: {\n type: String,\n },\n bijakNumber: {\n type: Number,\n },\n bijakTruckScaleNumber: {\n type: String,\n },\n bijakUser: {\n type: String,\n },\n bijakGCOMS: {\n type: Array,\n },\n\n // درخواست برای بستن \n requestForClose: {\n type: Boolean,\n },\n requestForCloseFullName: {\n type: String,\n },\n\n // نوع پلاک که ایرانی خارجی و منطقه آزاد باشد\n plateOption: {\n type: String,\n },\n plateState: {\n type: Number,\n enum: Object.values(PLATE_STATES),\n default: PLATE_STATES.OUT_PORT,\n },\n\n // نوع ورود پلاک به بندر\n entranceGuardRegistrationType: {\n type: Number,\n enum: Object.values(GUARD_REGISTRATION_TYPES),\n },\n\n // نوع خروج پلاک از بندر\n exitGuardRegistrationType: {\n type: Number,\n enum: Object.values(GUARD_REGISTRATION_TYPES),\n },\n // transportation\n\n // شرکت حمل اگر درخواست شهری ثبت شود\n transportationCompany: {\n type: mongoose.SchemaTypes.ObjectId,\n ref: 'terminals',\n required: false,\n },\n },\n { timestamps: true }\n);\n\nconst Plate = mongoose.model('plates', platesSchema);\n\nmodule.exports = { Plate, PLATE_STATES, PLATE_PERMISSIONS };", + "text": "فیلدهای موجود در دیتابیس\nمدل درخواست کاربر که شامل رویه‌های واردات، صادرات، ترانزیت، تدارکات، تجهیزات، سوخت‌رسانی، آب‌رسانی، عودت تجهیزات (ورود و خروج) می‌شود.\nconst REQUEST_STATUSES = {\n OPEN: 0, // باز\n IN_PROGRESS: 1, // در حال بررسی\n CLOSE: 2, // بسته شده\n END: 3, // پایان عملیات\n};\n\nconst REQUEST_PERMISSIONS_STATUSES = {\n NOT_HAS: 0, // ندارد\n HAS: 1, // دارد\n CANCEL: 2, // لغو شده\n IN_PROGRESS: 3, // در حال بررسی\n};\n\n// ['صادرات', 'واردات', 'ترانزیت', 'آب رسانی', 'سوخت رسانی', 'تجهیزات', 'تدارکات'],\nconst OPERATION_TYPES = {\n EXPORT: 0,\n IMPORT: 1,\n TRANSIT: 2,\n WATER: 3,\n FUEL: 4,\n EQUIPMENT: 5,\n PROVISION: 6,\n};\n\n// یک تردد، چند تردد، شهری\nconst TRAFFIC_TYPES = {\n ONE_DIRECTION: 0,\n MULTIPLE_DIRECTION: 1,\n CITY: 2,\n ENTRANCE_PERMISSION: 3,\n EXIT_PERMISSION: 4,\n};\n\n// کانتینری، نفتی، عمومی\nconst TERMINAL_OPTIONS = {\n CONTAINER: 0,\n OIL: 1,\n GENERAL: 2,\n SERVICE: 3,\n};\n\n// تخلیه، بارگیری، تشریفات گمرکی\nconst ENTRANCE_TRAFFIC_TYPES = {\n LOAD: 0,\n UNLOAD: 1,\n CUSTOM: 2,\n SERVICE: 3,\n};\n\nمدل مربوط به شماره پلاک درخواست‌ها که کاربر اطلاعات راننده را وارد می‌کند.\n\n// وضعیت فعلی پلاک که در چه مرحله‌ای است\nconst PLATE_STATES = {\n OUT_PORT: 0,\n IN_PORT: 1,\n CLOSED: 2,\n};\n\n// پلاک مجوز حرکت دارد یا ندارد\nconst PLATE_PERMISSIONS = {\n NOT_HAS: 0,\n HAS: 1,\n PENDING: 2,\n};\n\n// یگان حفاظت مجوز ورود و خروج پلاک را بصورت اتوماتیک توسط دوربین پلاکخوان ثبت کرده یا بصورت دستی\nconst GUARD_REGISTRATION_TYPES = {\n AUTO: 0,\n MANUAL: 1,\n};", "crumbs": [ "مستندات", "مدل‌ها", - "Backend" + "mongoose" ] }, { diff --git a/docs/models/backend.qmd b/docs/models/backend.qmd index e6ff058..de049ad 100644 --- a/docs/models/backend.qmd +++ b/docs/models/backend.qmd @@ -11,8 +11,6 @@ lang: fa مدل *درخواست* کاربر که شامل رویه‌های واردات، صادرات، ترانزیت، تدارکات، تجهیزات، سوخت‌رسانی، آب‌رسانی، عودت تجهیزات (ورود و خروج) می‌شود. ```js -const mongoose = require('mongoose'); - const REQUEST_STATUSES = { OPEN: 0, // باز IN_PROGRESS: 1, // در حال بررسی @@ -63,358 +61,6 @@ const ENTRANCE_TRAFFIC_TYPES = { SERVICE: 3, }; -const requestSchema = new mongoose.Schema( - { - کسی که درخواست ثبت میکنه - واردات صادرات و ... - requestBy: { - type: mongoose.Types.ObjectId, - ref: 'User', - }, - - به نمایندگی از ... درخواست‌ها ثبت میشه. نماینده در واقع - requestFor: [ - { - type: mongoose.Types.ObjectId, - ref: 'User', - }, - ], - - // نوع عملیات درخواست مثل واردات صادرات و ... - operationType: { - type: Number, - required: [true, 'نوع عملیات الزامی می باشد.'], - enum: Object.values(OPERATION_TYPES), - }, - - // فیلدی حمل یکسره و عملیاتی در آن ذخیره میشود - options: { - type: String, - }, - - // فیلدی که جهت در آن ذخیره میشود. جهت تخلیه، بارگیری و تشریفات گمرکی و ... - entranceTrafficType: { - type: Number, - enum: Object.values(ENTRANCE_TRAFFIC_TYPES), - }, - - // حساسیت کالا در این فیلد ذخیره میشود - danger: [ - { - type: mongoose.Types.ObjectId, - ref: 'dangerType', - required: false, - }, - ], - - // تاییده نهایی نوع تردد که توسط ادمین وارد میشود - traffic: { - // تردد تایید شده توسط مجوز دهنده - type: Number, - enum: Object.values(TRAFFIC_TYPES), - }, - - // اظهار نوع تردد که توسط کاربر ثبت میشود و نهایی نیست - trafficType: { - // اظهار تردد - type: Number, - enum: Object.values(TRAFFIC_TYPES), - }, - - // پایانه‌ای که کالا برای آن ثبت می‌شود - terminalOption: { - type: Number, - enum: Object.values(TERMINAL_OPTIONS), - }, - - // آدرس فایل حواله سوخت و ... - filename: { - type: String, - }, - - // نام محصول یا کالایی که کاربر وارد میکند - name: { - // نام بار - type: String, - trim: true, - }, - - // شماره سفر - voyageNumber: { - type: String, - }, - - // کد قبض انبار اگر کالا عمومی و یا کانتینری باشد - receiptNumber: [ - { - type: String, - trim: true, - }, - ], - - // تناژ کالا - tonaj: { - type: String, - }, - - // عددی که برای تناژ استفاده میشود - tonajNumber: { - type: String, - }, - - // واحد تناژ کالا - tonajType: { - type: String, - }, - - // تعداد محصول یا بار - packageNumber: { - type: String, - }, - - // شماره پلاک‌های ثبت شده برای درخواست کاربر - plates: [ - { - type: mongoose.Types.ObjectId, - ref: 'plates', - required: false, - }, - ], - - // بدون استفاده - truckNumber: { - type: String, - }, - - // اسم شناور - vesselName: String, - - // اسم کشتی رانی صاحب شناور - shipping: { - type: String, - }, - - // منطقه عملیاتی - storeRoom: { - type: mongoose.Types.ObjectId, - ref: 'storeRoom', - required: false, - }, - // نوع منطقه عملیاتی - که استفاده نمیشود - storeRoomType: { - type: String, - }, - - // دستگاه نظارت درخواست - supervisionDepartment: { - type: mongoose.Types.ObjectId, - ref: 'supervisionDepartment', - required: false, - }, - - // کاربری که برای درخواست مشاور است - consultingUser: { - type: String, - }, - consultingUsername: { - type: String, - }, - consultingStatus: { - type: String, - }, - supervisionStatus: { - type: String, - }, - propertyBossStatus: { - type: String, - }, - HSEStatus: { - type: String, - }, - portBossStatus: { - type: String, - }, - customsStatus: { - type: String, - }, - selectedStores: { - type: Array, - }, - - // مقصد کالا - destination: { - type: mongoose.SchemaTypes.ObjectId, - trim: true, - ref: 'city', - }, - - // مجوز یگان حفاظت - permissionGuard: { - // مجوز یگان حفاظت - type: Number, - enum: Object.values(REQUEST_PERMISSIONS_STATUSES), - default: REQUEST_PERMISSIONS_STATUSES.IN_PROGRESS, - }, - - // مجوز پایانه اسکله برای حرکت کردن ناوگان حمل از پایانه کامیونی - permissionPier: { - // مجوز اسکله - type: Number, - enum: Object.values(REQUEST_PERMISSIONS_STATUSES), - default: REQUEST_PERMISSIONS_STATUSES.IN_PROGRESS, - }, - - // اظهارات کوتاژ کاربر - userCottages: [ - //اظهار کوتاژ - { - type: String, - trim: true, - }, - ], - date: { - type: Date, - }, - dateString: { - type: String, - }, - - // کامنت اسکله - بروز میشود - pierComment: { - type: String, - }, - - // پایانه حمل - terminalTruckName: { - type: mongoose.Types.ObjectId, - ref: 'terminals', - required: false, - }, - - // شماره حواله سوخت - gasolineRequestNumber: { - type: String, - }, - - // شماره سفارش - orderNumber: { - type: String, - }, - - // دروازه‌ای که درخواست برای - gateName: { - type: mongoose.Types.ObjectId, - ref: 'gate', - required: [true, 'نام دروازه الزامی می باشد.'], - }, - - // کد رهگیری تولید شده - requestNumber: { - type: String, - }, - supervisionUser: { - type: String, - }, - supervisionUsername: { - type: String, - }, - propertyBossUser: { - type: String, - }, - propertyBossUsername: { - type: String, - }, - HSEUser: { - type: String, - }, - HSEUsername: { - type: String, - }, - portBossUser: { - type: String, - }, - portBossUsername: { - type: String, - }, - terminalUser: { - type: String, - }, - terminalUsername: { - type: String, - }, - permissionPierDate: { - type: Date, - }, - permissionPierDateString: { - type: String, - }, - - // وضعیت درخواست کاربر - status: { - type: Number, - enum: Object.values(REQUEST_STATUSES), - default: REQUEST_STATUSES.IN_PROGRESS, - }, - - // اظهارات کوتاژ کاربر تایید شده است یا نه - cottageVerified: { - type: Boolean, - default: false, - }, - verfiedAt: { - type: Date, - required: false, - }, - cottages: [ - // کوتاژهای تایید شده توسط سرویس استعلام گمرک - { - type: mongoose.Types.ObjectId, - ref: 'cottage', - required: false, - }, - ], - - // فیلدی برای کانتینر خالی - emptyContainer: { - type: Boolean, - }, - - // اگر کالا خطرناک باشد - unNumber: { - type: String, - }, - - // اگر کالا خطرناک باشد - casNumber: { - type: String, - }, - process: { - // شروع فرآیند - type: mongoose.SchemaTypes.ObjectId, - ref: 'process', - }, - commodityList: [ - // لیست اقلام - { - type: mongoose.SchemaTypes.ObjectId, - ref: 'equipements', - required: false, - }, - ], - }, - { timestamps: true } -); - -const Request = mongoose.model('request', requestSchema); - -module.exports = { - Request, - REQUEST_STATUSES, - REQUEST_PERMISSIONS_STATUSES, - TERMINAL_OPTIONS, - TRAFFIC_TYPES, - OPERATION_TYPES, -}; - ``` @@ -422,8 +68,6 @@ module.exports = { مدل مربوط به شماره پلاک درخواست‌ها که کاربر اطلاعات راننده را وارد می‌کند. ```js -const mongoose = require('mongoose'); -const { TRAFFIC_TYPES } = require('./request.model'); // وضعیت فعلی پلاک که در چه مرحله‌ای است const PLATE_STATES = { @@ -445,203 +89,4 @@ const GUARD_REGISTRATION_TYPES = { MANUAL: 1, }; -// مدل پلاک -const platesSchema = new mongoose.Schema( - { - // شماره پلاک - plate: { - type: String, - trim: true, - }, - //مجوز ورود به بندر که هم یگان حفاظت برای چند ترددی و شهری صادر می کند و هم پایانه کامیونی - permission: { - type: Number, - enum: Object.values(PLATE_PERMISSIONS), - }, - - // مجوز یگان حفاظت - permissionGuard: { - type: Number, - }, - permissionGuardDate: { - type: Date, - }, - status: { - type: Number, - }, - - // نوع ترددی که توسط ادمین ثبت شده است - traffic: { - type: Number, - enum: Object.values(TRAFFIC_TYPES), - }, - - // زمان ورود ناوگان حمل به درون بندر - entranceTime: [ - { - type: Date, - }, - ], - entranceTimeString: [ - { - type: String, - }, - ], - - // زمان خروج ناوگان حمل از بندر - exitTime: [ - { - type: Date, - }, - ], - exitTimeString: [ - { - type: String, - }, - ], - - // مجوز پایانه راهداری - delfardTerminalTime: { - type: Date, - }, - delfardTerminalTimeString: { - type: String, - }, - - // زمان مجوز گرفتن از پایانه کامیونی - truckTerminalTime: { - type: Date, - }, - truckTerminalTimeString: { - type: String, - }, - - // تخلف - violationType: { - type: String, - }, - violationComment: { - type: String, - }, - - // حساسیت کالایی که حمل میکند - dangers: [ - { - type: mongoose.SchemaTypes.ObjectId, - ref: 'dangerType', - }, - ], - date: { - type: Date, - }, - dateString: { - type: String, - }, - - // اگر درخواست از نوع کانتینری باشد شماره‌های کانتینر هم باید وارد شود - containerNumbers: [ - { - type: String, - }, - ], - - closeDate: { - type: Date, - }, - - // اسم راننده - driverName: { - type: String, - }, - - // شماره پاسپورت برای خارجی‌ها و کد ملی برای داخلی‌ها - driverPersonalCode: { - type: String, - }, - - // شماره موبایل راننده - driverMobile: { - type: String, - }, - - // ملیت راننده - driverNationality: { - type: String, - }, - - // نوع ناوگان حمل - truckType: { - type: mongoose.SchemaTypes.ObjectId, - ref: 'trucks', - }, - - // کدی که اگر نوع ناوگان از نوع چادری یا یخچالی باشد - TYnumber: { - type: String, - }, - - // درخواست کنسل شده است یا نه - isCancel: { - type: Boolean, - }, - bijakType: { - type: String, - }, - bijakNumber: { - type: Number, - }, - bijakTruckScaleNumber: { - type: String, - }, - bijakUser: { - type: String, - }, - bijakGCOMS: { - type: Array, - }, - - // درخواست برای بستن - requestForClose: { - type: Boolean, - }, - requestForCloseFullName: { - type: String, - }, - - // نوع پلاک که ایرانی خارجی و منطقه آزاد باشد - plateOption: { - type: String, - }, - plateState: { - type: Number, - enum: Object.values(PLATE_STATES), - default: PLATE_STATES.OUT_PORT, - }, - - // نوع ورود پلاک به بندر - entranceGuardRegistrationType: { - type: Number, - enum: Object.values(GUARD_REGISTRATION_TYPES), - }, - - // نوع خروج پلاک از بندر - exitGuardRegistrationType: { - type: Number, - enum: Object.values(GUARD_REGISTRATION_TYPES), - }, - // transportation - - // شرکت حمل اگر درخواست شهری ثبت شود - transportationCompany: { - type: mongoose.SchemaTypes.ObjectId, - ref: 'terminals', - required: false, - }, - }, - { timestamps: true } -); - -const Plate = mongoose.model('plates', platesSchema); - -module.exports = { Plate, PLATE_STATES, PLATE_PERMISSIONS }; ``` \ No newline at end of file