[
  {
    "objectID": "docs.html",
    "href": "docs.html",
    "title": "docs",
    "section": "",
    "text": "Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see https://quarto.org."
  },
  {
    "objectID": "docs.html#quarto",
    "href": "docs.html#quarto",
    "title": "docs",
    "section": "",
    "text": "Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see https://quarto.org."
  },
  {
    "objectID": "index.html",
    "href": "index.html",
    "title": "سامانه تردد",
    "section": "",
    "text": "مقدمه\nسامانه تردد",
    "crumbs": [
      "خانه",
      "صفحه اصلی"
    ]
  },
  {
    "objectID": "index.html#بخش-اول",
    "href": "index.html#بخش-اول",
    "title": "سامانه تردد",
    "section": "",
    "text": "مورد اول\nمورد دوم\nمورد سوم"
  },
  {
    "objectID": "index.html#بخش-دوم",
    "href": "index.html#بخش-دوم",
    "title": "سامانه تردد",
    "section": "",
    "text": "این بخش یک فرمول ریاضی را نشان می‌دهد:\n\\[\nE = mc^2\n\\]"
  },
  {
    "objectID": "docs/models.html",
    "href": "docs/models.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 };",
    "crumbs": [
      "مستندات",
      "مدل‌ها"
    ]
  }
]