diff --git a/example.env.local b/example.env.local
index 4712424..38cf548 100644
--- a/example.env.local
+++ b/example.env.local
@@ -1,5 +1,5 @@
NEXT_PUBLIC_API_NAME = "Loan Facilities Dashboard"
-NEXT_PUBLIC_API_VERSION = "2.1.0"
+NEXT_PUBLIC_API_VERSION = "2.2.0"
NEXT_PUBLIC_DEFAULT_LANGUAGE = "fa"
NEXT_PUBLIC_DEFAULT_DIRECTION = "rtl"
diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json
index 7ef24ee..e1a9b28 100644
--- a/public/locales/fa/app.json
+++ b/public/locales/fa/app.json
@@ -43,7 +43,6 @@
"sidebar": {
"dashboard": "داشبورد",
"reports": "گزارشات",
- "passenger-office-chief": "اداره مسافر",
"admin-setting": "تنظیمات ",
"machinery-expert": "کارتابل کارشناسی",
"passenger-boss": "کارتابل کارگروه",
@@ -67,7 +66,6 @@
"reserve-loan": "وام های رزرو"
},
"secondary": {
- "passenger-office": "توزیع درخواست",
"passenger-boss": "کارگروه",
"refahi-province-manager": "رفاهی",
"refahi-loan-management": "رفاهی",
@@ -115,9 +113,7 @@
"change_password": "تغییر رمز عبور",
"province_manager_page": "بررسی وام های تبصره 18",
"province_head_expert": "کارشناس ستادی",
- "passenger_office_page": "اداره مسافر",
"loan_management_page": "مدیریت وام",
- "machinary_office_page": "کارتابل کارشناسی",
"reserve_loans": "وام های رزرو",
"development_assistant_page": "معاون توسعه",
"inspector_expert_page": "بازدید کارشناس",
@@ -182,25 +178,6 @@
"success_static_text": "عملیات شما با موفقیت انجام شد",
"pending": "در حال انجام..."
},
- "PassengerOffice": {
- "name": "نام",
- "shenase_meli": "شناسه ملی",
- "is_legal_person": "نوع شخص",
- "haghighi": "حقیقی",
- "hoghoghi": "حقوقی",
- "id": "کد یکتا",
- "national_id": "کد ملی",
- "phone_number": "موبایل",
- "created_at": "تاریخ درخواست",
- "updated_at": "تاریخ بروزرسانی",
- "navgan_id": "کد ناوگان",
- "vehicle_type": "نوع ماشین",
- "state_name": "وضعیت درخواست",
- "confirm": "ارجاع به کارشناس ماشین آلات",
- "upload_file_unit": "فایل بارگذاری شده باید حداکثر 5Mb باشد",
- "upload_file_format": "فرمت قابل قبول : png,jpg,pdf",
- "excel_report": "گزارش اکسل"
- },
"CommercialChief": {
"name": "نام",
"id": "کد یکتا",
@@ -215,7 +192,14 @@
"NavganProvinceManager": {
"name": "نام",
"id": "کد یکتا",
+ "physical_progress": "درصد پیشرفت فیزیکی",
+ "repayment_period": "دوره باز پرداخت",
+ "committed_employment": "اشتغال ایجاد شده",
+ "existing_employment": "اشتغال موجود",
"city_name": "شهرستان",
+ "facility_bank": "سهم بانک",
+ "facility_gov": "سهم دولت",
+ "facility_person": "سهم متقاضی",
"plate_number": "پلاک",
"statement_count": "تعداد صورت وضعیت",
"shenase_meli": "شناسه ملی",
@@ -228,7 +212,7 @@
"national_id": "کد ملی",
"phone_number": "موبایل",
"proposed_amount": "مبلغ پیشنهادی",
- "approved_amount": "مبلغ تصویب شده",
+ "approved_amount": "مبلغ مصوب",
"created_at": "تاریخ درخواست",
"updated_at": "تاریخ بروزرسانی",
"navgan_id": "کد ناوگان",
@@ -312,6 +296,16 @@
"excel_report": "گزارش اکسل",
"city_name": "شهرستان",
"plate_number": "پلاک",
+ "existing_employment": "اشتغال موجود",
+ "bank_facility": "سهم بانک",
+ "facility_bank": "سهم بانک",
+ "government_facility": "سهم دولت",
+ "facility_gov": "سهم دولت",
+ "user_facility": "سهم متقاضی",
+ "facility_person": "سهم متقاضی",
+ "physical_progress": "درصد پیشرفت فیزیکی",
+ "repayment_period": "دوره باز پرداخت",
+ "committed_employment": "اشتغال ایجاد شده",
"statement_count": "تعداد صورت وضعیت",
"score": "اولویت",
"navgan_capacity": "ظرفیت",
@@ -326,7 +320,7 @@
"tanafos_period": "دوره تنفس",
"province_name": "استان",
"proposed_amount": "مبلغ پیشنهادی",
- "approved_amount": "مبلغ تصویب شده",
+ "approved_amount": "مبلغ مصوب",
"created_at": "تاریخ درخواست",
"updated_at": "تاریخ بروزرسانی",
"navgan_id": "کد ناوگان",
@@ -360,6 +354,13 @@
"city_name": "شهرستان",
"plate_number": "پلاک",
"id": "کد یکتا",
+ "facility_bank": "سهم بانک",
+ "facility_gov": "سهم دولت",
+ "facility_person": "سهم متقاضی",
+ "physical_progress": "درصد پیشرفت فیزیکی",
+ "repayment_period": "دوره باز پرداخت",
+ "committed_employment": "اشتغال ایجاد شده",
+ "existing_employment": "اشتغال موجود",
"statement_count": "تعداد صورت وضعیت",
"shenase_meli": "شناسه ملی",
"is_legal_person": "نوع شخص",
@@ -371,7 +372,7 @@
"national_id": "کد ملی",
"phone_number": "موبایل",
"proposed_amount": "مبلغ پیشنهادی",
- "approved_amount": "مبلغ تصویب شده",
+ "approved_amount": "مبلغ مصوب",
"created_at": "تاریخ درخواست",
"updated_at": "تاریخ بروزرسانی",
"navgan_id": "کد ناوگان",
@@ -394,12 +395,28 @@
"vehicle_type": "نوع ماشین",
"state_name": "وضعیت درخواست"
},
- "MachinaryOffice": {
+ "ReserveLoan": {
"name": "نام",
+ "hoghoghi": "حقوقی",
+ "haghighi": "حقیقی",
"city_name": "شهرستان",
"plate_number": "پلاک",
- "statement_count": "تعداد صورت وضعیت",
"id": "کد یکتا",
+ "existing_employment": "اشتغال موجود",
+ "approved_amount": "مبلغ مصوب",
+ "sakht_period": "دوره ساخت",
+ "tanafos_period": "دوره تنفس",
+ "bank_facility": "سهم بانک",
+ "facility_bank": "سهم بانک",
+ "government_facility": "سهم دولت",
+ "facility_gov": "سهم دولت",
+ "user_facility": "سهم متقاضی",
+ "facility_person": "سهم متقاضی",
+ "physical_progress": "درصد پیشرفت فیزیکی",
+ "repayment_period": "دوره باز پرداخت",
+ "committed_employment": "اشتغال ایجاد شده",
+ "available_jobs": "اشتغال موجود",
+ "statement_count": "تعداد صورت وضعیت",
"score": "اولویت",
"navgan_capacity": "ظرفیت",
"manufacture_date": "سال ساخت",
@@ -427,9 +444,7 @@
"description-reserve-loan-first": "آیا از رزرو وام به کد یکتا",
"description-reserve-loan-second": "اطمینان دارید؟",
"button-reserve-cancel": "بستن",
- "button-reserve-confirm": "رزرو"
- },
- "ReserveLoan": {
+ "button-reserve-confirm": "رزرو",
"title": "بازگردانی",
"description-loan-first": "آیا از بازگردانی وام به کد یکتا",
"description-loan-second": "اطمینان دارید؟",
@@ -441,7 +456,7 @@
"id": "کد یکتا",
"national_serial_number": "سریال پشت کارت ملی",
"birthday": "تاریخ تولد",
- "approved_amount": "مبلغ تصویب شده",
+ "approved_amount": "مبلغ مصوب",
"branch_name": "نام شعبه",
"bank_state": "وضعیت پیگیری بانک",
"state_name": "وضعیت درخواست",
@@ -478,12 +493,12 @@
"context": "آیا از تایید این آیتم اطمینان دارید؟",
"button-cancel": "بستن",
"button-confirm": "ارجاع",
- "bank_facility": "تسهیلات سهم بانک",
- "user_facility": "تسهیلات سهم متقاضی",
- "government_facility": "تسهیلات سهم دولت",
+ "facility_bank": "تسهیلات سهم بانک",
+ "facility_person": "تسهیلات سهم متقاضی",
+ "facility_gov": "تسهیلات سهم دولت",
"committed_employment": "تعداد اشتغال تعهد شده",
"history_facilities": "سابقه استفاده از تسهیلات تکلیفی",
- "available_jobs": "تعداد اشتغال موجود",
+ "existing_employment": "تعداد اشتغال موجود",
"physical_progress": "درصد پیشرفت فیزیکی",
"interest_rate": "نرخ بهره",
"description_error": "وارد کردن توضیحات الزامی است!",
@@ -493,32 +508,32 @@
"choose_file": "انتخاب فایل",
"repayment_period": "دوره باز پرداخت",
"participation_period": "دوره مشارکت",
- "approved_amount": "مبلغ تصویب شده",
+ "approved_amount": "مبلغ مصوب",
"sakht_period": "دوره ساخت",
"tanafos_period": "دوره تنفس",
- "approved_amount_error": "وارد کردن مبلغ تصویب شده الزامیست",
- "bank_facility_error": "وارد کردن تسهیلات سهم بانک الزامیست",
- "government_facility_error": "وارد کردن تسهیلات سهم دولت الزامیست",
+ "approved_amount_error": "وارد کردن مبلغ مصوب الزامیست",
+ "facility_bank_error": "وارد کردن تسهیلات سهم بانک الزامیست",
+ "facility_gov_error": "وارد کردن تسهیلات سهم دولت الزامیست",
"committed_employment_error": "وارد کردن تعداد اشتغال تعهد شده الزامیست",
"history_facilities_error": "وارد کردن سابقه استفاده از تسهیلات تکلیفی الزامیست",
- "available_jobs_error": "وارد کردن تعداد اشتغال موجود الزامیست",
+ "existing_employment_error": "وارد کردن تعداد اشتغال موجود الزامیست",
"sakht_period_error": "وارد کردن دوره ساخت الزامیست",
"tanafos_period_error": "وارد کردن دوره تنفس الزامیست",
- "approved_amount_positive": "مبلغ تصویب شده باید مثبت باشد",
- "bank_facility_positive": "تسهیلات سهم بانک باید مثبت باشد",
+ "approved_amount_positive": "مبلغ مصوب باید مثبت باشد",
+ "facility_bank_positive": "تسهیلات سهم بانک باید مثبت باشد",
"repayment_period_positive": "دوره باز پرداخت باید مثبت باشد",
"participation_period_positive": "دوره مشارکت باید مثبت باشد",
- "government_facility_positive": "تسهیلات سهم دولت باید مثبت باشد",
+ "facility_gov_positive": "تسهیلات سهم دولت باید مثبت باشد",
"committed_employment_positive": "تعداد اشتغال تعهد شده باید مثبت باشد",
"history_facilities_positive": "سابقه استفاده از تسهیلات تکلیفی باید مثبت باشد",
- "available_jobs_positive": "تعدلد اشتغال موجود باید مثبت باشد",
- "approved_amount_number": "مبلغ تصویب شده باید عدد باشد",
- "bank_facility_number": "تسهیلات سهم بانک باید عدد باشد",
+ "existing_employment_positive": "تعدلد اشتغال موجود باید مثبت باشد",
+ "approved_amount_number": "مبلغ مصوب باید عدد باشد",
+ "facility_bank_number": "تسهیلات سهم بانک باید عدد باشد",
"interest_rate_number": "نرخ بهره باید عدد باشد",
- "government_facility_number": "تسهیلات سهم دولت باید عدد باشد",
+ "facility_gov_number": "تسهیلات سهم دولت باید عدد باشد",
"committed_employment_number": "تعداد سابقه استفاده از تسهیلات تکلیفی باید عدد باشد",
"history_facilities_number": "تعداد اشتغال تعهد شده باید عدد باشد",
- "available_jobs_number": "تعداد اشتغال موجود باید عدد باشد",
+ "existing_employment_number": "تعداد اشتغال موجود باید عدد باشد",
"sakht_period_positive": "دوره ساخت باید مثبت باشد",
"interest_rate_positive": "نرخ بهره باید مثبت باشد",
"tanafos_period_positive": "دوره تنفس باید مثبت باشد",
@@ -527,11 +542,15 @@
"participation_period_number": "دوره مشارکت باید عدد باشد",
"tanafos_period_number": "دوره تنفس باید عدد باشد",
"toman": "میلیون تومان",
- "bank_facility_max_amount": "جمع مبلغ سهم دولت و سهم بانک نباید از مبلغ تصویب شده بیشتر باشد .",
- "government_facility_max_amount": "جمع مبلغ سهم دولت و سهم بانک نباید از مبلغ تصویب شده بیشتر باشد .",
+ "facility_bank_max_amount": "جمع مبلغ سهم دولت و سهم بانک نباید از مبلغ تصویب شده بیشتر باشد .",
+ "facility_gov_max_amount": "جمع مبلغ سهم دولت و سهم بانک نباید از مبلغ تصویب شده بیشتر باشد .",
"tanafos_period_month": "ماه",
- "approved_amount_title": "مبلغ تصویب شده کارگروه",
- "sakht_period_day": "روز",
+ "repayment_period_month": "ماه",
+ "approved_amount_title": "مبلغ مصوب کارگروه",
+ "facility_bank_title": "سهم بانک",
+ "facility_gov_title": "سهم دولت",
+ "facility_person_title": "سهم متقاضی",
+ "sakht_period_day": "ماه",
"proposed_amount_error": "وارد کردن مقدار پیشنهادی الزامیست",
"repayment_period_error": "وارد کردن دوره باز پرداخت الزامیست",
"participation_period_error": "وارد کردن دوره مشارکت الزامیست",
@@ -562,18 +581,18 @@
"choose_file": "انتخاب فایل"
},
"EditDialog": {
- "edit_approved_amount": "ویرایش مبلغ تصویب شده",
+ "edit_approved_amount": "ویرایش مبلغ مصوب",
"description_error": "وارد کردن توضیحات الزامی است!",
"optional": " (اختیاری)",
- "approved_amount": "مبلغ تصویب شده",
+ "approved_amount": "مبلغ مصوب",
"button-cancel": "بستن",
"button-edit": "ویرایش",
- "edit_approved_amount_required": "وارد کردن مبلغ تصویب شده الزامیست",
+ "edit_approved_amount_required": "وارد کردن مبلغ مصوب الزامیست",
"unit": " (میلیون ریال)",
"button-revise": "ارسال",
- "approved_amount_positive": "مبلغ تصویب شده باید مثبت باشد",
- "max_amount": "حداکثر مبلغ تصویب شده {value} میلیون ریال می باشد",
- "approved_amount_number": "مبلغ تصویب شده باید عدد باشد",
+ "approved_amount_positive": "مبلغ مصوب باید مثبت باشد",
+ "max_amount": "حداکثر مبلغ مصوب {value} میلیون ریال می باشد",
+ "approved_amount_number": "مبلغ مصوب باید عدد باشد",
"description": "توضیحات خود را وارد نمائید"
},
"UpdateDialog": {
@@ -773,6 +792,16 @@
"statement_count": "تعداد صورت وضعیت",
"name": "نام",
"score": "اولویت",
+ "existing_employment": "اشتغال موجود",
+ "bank_facility": "سهم بانک",
+ "facility_bank": "سهم بانک",
+ "government_facility": "سهم دولت",
+ "facility_gov": "سهم دولت",
+ "user_facility": "سهم متقاضی",
+ "facility_person": "سهم متقاضی",
+ "physical_progress": "درصد پیشرفت فیزیکی",
+ "committed_employment": "اشتغال ایجاد شده",
+ "available_jobs": "اشتغال موجود",
"navgan_capacity": "ظرفیت",
"manufacture_date": "سال ساخت",
"shenase_meli": "شناسه ملی",
@@ -780,12 +809,13 @@
"haghighi": "حقیقی",
"hoghoghi": "حقوقی",
"tanafos_period": "دوره تنفس",
+ "repayment_period": "دوره بازپرداخت",
"sakht_period": "دوره ساخت",
"national_id": "کد ملی",
"postal_code": "کد پستی",
"phone_number": "موبایل",
"proposed_amount": "مبلغ پیشنهادی",
- "approved_amount": "مبلغ تصویب شده",
+ "approved_amount": "مبلغ مصوب",
"created_at": "تاریخ درخواست",
"updated_at": "تاریخ بروزرسانی",
"navgan_id": "کد ناوگان",
diff --git a/src/components/dashboard/loan-history/index.jsx b/src/components/dashboard/loan-history/index.jsx
index 8b886a4..2a75e5f 100644
--- a/src/components/dashboard/loan-history/index.jsx
+++ b/src/components/dashboard/loan-history/index.jsx
@@ -304,25 +304,6 @@ function DashboardLoanHistoryComponent() {
),
},
- {
- accessorFn: (row) => row.proposed_amount,
- id: "proposed_amount",
- header: t("LoanHistory.proposed_amount"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue / 1000000}
- ),
- },
{
accessorFn: (row) => row.approved_amount,
id: "approved_amount",
@@ -342,6 +323,101 @@ function DashboardLoanHistoryComponent() {
{renderedCellValue / 1000000}
),
},
+ {
+ accessorFn: (row) => row.facility_bank,
+ id: "facility_bank",
+ header: t("LoanHistory.facility_bank"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_gov,
+ id: "facility_gov",
+ header: t("LoanHistory.facility_gov"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_person,
+ id: "facility_person",
+ header: t("LoanHistory.facility_person"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.physical_progress,
+ id: "physical_progress",
+ header: t("LoanHistory.physical_progress"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.repayment_period,
+ id: "repayment_period",
+ header: t("LoanHistory.repayment_period"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.sakht_period,
id: "sakht_period",
@@ -370,6 +446,44 @@ function DashboardLoanHistoryComponent() {
{renderedCellValue}
),
},
+ {
+ accessorFn: (row) => row.committed_employment,
+ id: "committed_employment",
+ header: t("LoanHistory.committed_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.existing_employment,
+ id: "existing_employment",
+ header: t("LoanHistory.existing_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.state_name,
id: "state_name",
diff --git a/src/components/dashboard/machinary-office/Buttons/printExcel.jsx b/src/components/dashboard/machinary-office/Buttons/printExcel.jsx
deleted file mode 100644
index f1333e0..0000000
--- a/src/components/dashboard/machinary-office/Buttons/printExcel.jsx
+++ /dev/null
@@ -1,67 +0,0 @@
-import {Button, CircularProgress} from "@mui/material";
-import {useTranslations} from "next-intl";
-import {useMemo, useState} from "react";
-import useRequest from "@/lib/app/hooks/useRequest";
-import {EXPORT_MACHINARY_OFFICE} from "@/core/data/apiRoutes";
-import moment from "jalali-moment";
-import FileSaver from 'file-saver';
-import DescriptionIcon from '@mui/icons-material/Description';
-
-const PrintExcel = ({table}) => {
- const t = useTranslations();
- const [loading, setLoading] = useState(false)
- const requestServer = useRequest({auth: true, pending: false, success: {notification: {show: false}}})
- const {columnFilters, columnFilterFns, sorting} = table.getState()
- const columns = table.getAllColumns()
-
- const filterParams = useMemo(() => {
- const params = new URLSearchParams();
- const filters = columnFilters.map((filter) => {
- let datatype;
- for (const i in columns) {
- if (columns[i].id == filter.id) {
- datatype = columns[i].columnDef.datatype;
- }
- }
- return {
- ...filter, fn: columnFilterFns[filter.id], datatype: datatype,
- };
- });
- params.set("start", '0');
- params.set("filters", JSON.stringify(filters ?? []));
- params.set("sorting", JSON.stringify(sorting ?? []));
- return params;
- }, [columnFilters, columnFilterFns, sorting, columns,]);
-
-
- const clickHandler = () => {
- setLoading(true)
- requestServer(`${EXPORT_MACHINARY_OFFICE}?${filterParams}`, 'get', {
- auth: true,
- requestOptions: {responseType: 'blob'}
- }).then((response) => {
- const filename = `خروجی کارتابل کارشناسی تاریخ_${moment().format('jYYYY_jMM_jDD')}.xlsx`;
- FileSaver.saveAs(response.data, filename);
- }).catch(() => {
- }).finally(() => {
- setLoading(false)
- })
- }
-
-
- return (
- : }
- onClick={clickHandler}
- >
- {t("MachinaryOffice.excel_report")}
-
- )
-}
-
-export default PrintExcel
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/Buttons/printReport.jsx b/src/components/dashboard/machinary-office/Buttons/printReport.jsx
deleted file mode 100644
index 47aab16..0000000
--- a/src/components/dashboard/machinary-office/Buttons/printReport.jsx
+++ /dev/null
@@ -1,48 +0,0 @@
-import PrintIcon from "@mui/icons-material/Print";
-import {Button, CircularProgress} from "@mui/material";
-import {useTranslations} from "next-intl";
-import {useRouter} from "next/router";
-import {useState} from "react";
-import useRequest from "@/lib/app/hooks/useRequest";
-import {GET_MACHINARY_OFFICE} from "@/core/data/apiRoutes";
-import usePrint from "@/lib/app/hooks/usePrint";
-
-const PrintReport = () => {
- const t = useTranslations();
- const router = useRouter()
- const [loading, setLoading] = useState(false)
- const requestServer = useRequest({auth: true, pending: false, success: {notification: {show: false}}})
- const {setPrintPage, setPrintTitle} = usePrint()
- const clickHandler = () => {
- setLoading(true)
- const params = new URLSearchParams();
- params.set("start", '0');
- params.set("filters", '[]');
- params.set("sorting", '[]');
- requestServer(`${GET_MACHINARY_OFFICE}?${params}`, 'get').then((response) => {
- const _data = response.data.data
- setPrintPage(_data.length)
- setPrintTitle(t('MachinaryOffice.print_report'))
- sessionStorage.setItem('report-print', JSON.stringify(_data))
- router.push('/dashboard/machinery-expert/prints/report')
- }).catch(() => {
- setLoading(false)
- })
- }
-
- return (
- : }
- onClick={clickHandler}
- >
- {t("MachinaryOffice.print_report")}
-
- )
-}
-
-export default PrintReport
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/Form/ConfirmForm/ConfirmContent.jsx b/src/components/dashboard/machinary-office/Form/ConfirmForm/ConfirmContent.jsx
deleted file mode 100644
index a1a6b1f..0000000
--- a/src/components/dashboard/machinary-office/Form/ConfirmForm/ConfirmContent.jsx
+++ /dev/null
@@ -1,378 +0,0 @@
-import UploadSystem from "@/core/components/UploadSystem";
-import useNotification from "@/lib/app/hooks/useNotification";
-import useRequest from "@/lib/app/hooks/useRequest";
-import {
- Button,
- DialogActions,
- DialogContent,
- FormHelperText,
- Grid,
- LinearProgress,
- Stack,
- TextField,
- Typography
-} from "@mui/material"
-import {useFormik} from "formik";
-import {useTranslations} from "next-intl";
-import {CONFIRM_MACHINARY_OFFICE, CONFIRM_MACHINARY_OFFICE_DETAILS} from "@/core/data/apiRoutes";
-import {useEffect, useState} from "react";
-import PriceField from "@/core/components/PriceField";
-import * as Yup from "yup";
-import CustomAccordion from "@/core/components/CustomAccordion";
-import ImageContent from "@/core/components/ImageContent";
-import SelectBox from "@/core/components/SelectBox";
-
-const vehicle_amount = {
- "اتوبوس": 7000,
- "مینی بوس": 2000,
-}
-const ConfirmContent = ({mutate, setOpenConfirmDialog, rowId, vehicle_type, handleSizeChangeClick}) => {
- const t = useTranslations();
- const [selectedImage, setSelectedImage] = useState("");
- const [fileType, setfileType] = useState(null);
- const [fileName, setfileName] = useState(null);
- const [showAddIcon, setShowAddIcon] = useState(true);
- const requestServer = useRequest({auth: true, notification: false})
- const {update_notification} = useNotification()
- const [accordionStates, setAccordionStates] = useState([]);
- const [hasImageShown, setHasImageShown] = useState(false);
- const [imageLink, setImageLink] = useState(null);
- const [detailsList, setDetailsData] = useState(null);
- const [loading, setLoading] = useState(true);
- const [isSkeleton, setIsSkeleton] = useState(false);
-
- useEffect(() => {
- requestServer(`${CONFIRM_MACHINARY_OFFICE_DETAILS}/${rowId}`, 'get')
- .then((response) => {
- const booleanData = Array.from({length: response.data.data.attachment_files.length}, () => false);
- setAccordionStates(booleanData);
- setDetailsData(response.data)
- })
- .catch(() => {
- }).finally(() => {
- setLoading(false);
- });
- }, []);
-
- const handleAccordionChange = (index) => {
- const newAccordionStates = accordionStates.map((state, i) => i === index ? !state : false);
- setAccordionStates(newAccordionStates);
-
- if (!newAccordionStates[index]) {
- handleSizeChangeClick('sm');
- setHasImageShown(false);
- setIsSkeleton(false)
- } else {
- handleSizeChangeClick('xl');
- setHasImageShown(true);
- setImageLink(detailsList.data.attachment_files[index])
- setIsSkeleton(true)
- }
- };
-
- const validationSchema = Yup.object().shape({
- proposed_amount: Yup.mixed()
- .test(
- "is-number",
- `${t("ConfirmDialog.proposed_amount_number")}`,
- (value) => !isNaN(value)
- )
- .test("max-amount", `${t("MachinaryOffice.max_amount", {value: parseInt(vehicle_amount[vehicle_type]).toLocaleString('en')})}`,
- (value) => value <= vehicle_amount[vehicle_type])
- .test("positive", `${t("ConfirmDialog.proposed_amount_positive")}`, (value) => value >= 0)
- .required(t("ConfirmDialog.proposed_amount_error")),
- sakht_period: Yup.mixed()
- .test("is-number", `${t("ConfirmDialog.sakht_period_number")}`,
- (value) => !isNaN(value))
- .test("positive", `${t("ConfirmDialog.sakht_period_positive")}`, (value) => value > 0)
- .required(t("ConfirmDialog.sakht_period_error")),
- tanafos_period: Yup.mixed()
- .test("is-number", `${t("ConfirmDialog.tanafos_period_number")}`,
- (value) => !isNaN(value))
- .test("positive", `${t("ConfirmDialog.tanafos_period_positive")}`, (value) => value > 0)
- .required(t("ConfirmDialog.tanafos_period_error")),
- confirm_img: Yup.mixed()
- .required(t("MachinaryOffice.upload_file_required"))
- .test('fileSize', `${t("MachinaryOffice.upload_file_unit")}`, (value) => {
- return value.size <= 5 * 1024 * 1024;
- })
- .test('fileType', `${t("MachinaryOffice.upload_file_format")}`, (value) => {
- const allowedTypes = ['image/jpg', 'image/jpeg', 'image/png', 'application/pdf'];
- return allowedTypes.includes(value.type);
- })
- });
- const formik = useFormik({
- initialValues: {
- description: "",
- proposed_amount: "",
- sakht_period: "",
- tanafos_period: "",
- confirm_img: null
- }, validationSchema,
- onSubmit: (values, {setSubmitting}) => {
- const formData = new FormData();
- formData.append("proposed_amount", values.proposed_amount);
- formData.append("sakht_period", values.sakht_period);
- formData.append("tanafos_period", values.tanafos_period);
- if (values.description != "") formData.append("expert_description", values.description);
- if (values.confirm_img != null) {
- const attachments = [
- {
- title: "فایل ضمیمه کارتابل قیمت گذاری",
- file: values.confirm_img
- }
- ];
- attachments.forEach((attachment, index) => {
- formData.append(`attachment[${index}][title]`, attachment.title);
- formData.append(`attachment[${index}][file]`, attachment.file);
- });
- }
- requestServer(`${CONFIRM_MACHINARY_OFFICE}/${rowId}`, 'post', {
- data: formData,
- notification: true
- }).then((response) => {
- setOpenConfirmDialog(false)
- mutate()
- update_notification()
- }).catch(() => {
- }).finally(() => {
- setSubmitting(false);
- });
- },
- });
-
- const handleDescriptionChange = (event) => {
- formik.setFieldValue("description", event.target.value)
- };
-
- const handleUploadChange = (event) => {
- const uploadedFile = event.target?.files?.[0];
- if (uploadedFile) {
- const fileType = event.target?.files?.[0].type;
- const fileName = event.target?.files?.[0].name;
- setSelectedImage(URL.createObjectURL(uploadedFile));
- setfileType(fileType);
- setfileName(fileName);
- formik.setFieldValue("confirm_img", uploadedFile).then(() => {
- formik.setFieldTouched("confirm_img", true);
- })
- setShowAddIcon(false);
- }
- };
- const handleAmountChange = (event) => {
- if (!isNaN(event.target.value)) {
- formik.setFieldValue("proposed_amount", event.target.value)
- } else {
- formik.setFieldValue("proposed_amount", formik.values.proposed_amount)
- }
- };
-
- const renderCustomAccordions = () => {
- if (detailsList && detailsList.data && detailsList.data.attachment_files) {
- return detailsList.data.attachment_files.map((file, index) => (
- handleAccordionChange(index)}
- accordionIndex={index}
- downloadFile={file.attachment}
- />
- ));
- }
- return null;
- };
-
- return (
- <>
-
-
-
- {loading ? : renderCustomAccordions()}
-
-
-
- {t("ConfirmDialog.description")}{t("ConfirmDialog.optional")}>}
- value={formik.values.description}
- onChange={handleDescriptionChange}
- fullWidth
- variant="outlined"
- sx={{mt: 1}}
- />
-
-
-
- {t("ConfirmDialog.proposed_amount")}{t("ConfirmDialog.unit")}>}
- type="text"
- inputProps={{
- inputMode: "number",
- min: 0,
- pattern: "[0-9]*",
- }}
- variant="outlined"
- value={formik.values.proposed_amount}
- onChange={handleAmountChange}
- onBlur={formik.handleBlur("proposed_amount")}
- error={
- formik.touched.proposed_amount &&
- Boolean(formik.errors.proposed_amount)
- }
- helperText={
- formik.touched.proposed_amount && formik.errors.proposed_amount
- }
- sx={{mt: 1}}
- fullWidth
- />
-
-
- {
- formik.setFieldValue('sakht_period', event.target.value)
- }}
- setFieldTouched={formik.setFieldTouched}
- error={formik.touched.sakht_period && Boolean(formik.errors.sakht_period)}
- helperText={formik.touched.sakht_period && formik.errors.sakht_period}
- onBlur={formik.handleBlur("sakht_period")}
- />
-
-
- {
- formik.setFieldValue('tanafos_period', event.target.value)
- }}
- setFieldTouched={formik.setFieldTouched}
- error={formik.touched.tanafos_period && Boolean(formik.errors.tanafos_period)}
- helperText={formik.touched.tanafos_period && formik.errors.tanafos_period}
- onBlur={formik.handleBlur("tanafos_period")}
- />
-
-
- {t("MachinaryOffice.upload_file")}
-
-
- {formik.touched.confirm_img && formik.errors.confirm_img}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- >
- )
-
-}
-export default ConfirmContent
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/Form/ConfirmForm/index.jsx b/src/components/dashboard/machinary-office/Form/ConfirmForm/index.jsx
deleted file mode 100644
index febb675..0000000
--- a/src/components/dashboard/machinary-office/Form/ConfirmForm/index.jsx
+++ /dev/null
@@ -1,51 +0,0 @@
-import {Dialog, DialogTitle, IconButton, Tooltip} from "@mui/material";
-import {useTranslations} from "next-intl";
-import {useEffect, useState} from "react";
-import ConfirmContent from "./ConfirmContent";
-import CallMadeIcon from '@mui/icons-material/CallMade';
-
-const Confirm = ({rowId, mutate, vehicle_type}) => {
- const t = useTranslations();
- const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
- const [dialogSize, setDialogSize] = useState('sm');
-
- useEffect(() => {
- if (!openConfirmDialog) {
- setDialogSize('sm');
- }
- }, [openConfirmDialog]);
-
- const handleSizeChangeClick = (size) => {
- setDialogSize(size);
- };
-
-
- return (
- <>
-
- {
- setOpenConfirmDialog(true)
- }}
- >
-
-
-
-
- >
- )
-
-}
-export default Confirm;
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/Form/RejectForm/RejectContent.jsx b/src/components/dashboard/machinary-office/Form/RejectForm/RejectContent.jsx
deleted file mode 100644
index afec59e..0000000
--- a/src/components/dashboard/machinary-office/Form/RejectForm/RejectContent.jsx
+++ /dev/null
@@ -1,147 +0,0 @@
-import UploadSystem from "@/core/components/UploadSystem"
-import useNotification from "@/lib/app/hooks/useNotification";
-import useRequest from "@/lib/app/hooks/useRequest";
-import {Button, DialogActions, DialogContent, FormHelperText, Stack, TextField, Typography} from "@mui/material"
-import {useFormik} from "formik";
-import {useTranslations} from "next-intl";
-import {useState} from "react";
-import * as Yup from "yup";
-import {REJECT_MACHINARY_OFFICE} from "@/core/data/apiRoutes";
-
-const RejectContent = ({rowId, mutate, setOpenRejectDialog}) => {
- const [selectedImage, setSelectedImage] = useState("");
- const [fileType, setfileType] = useState(null);
- const [fileName, setfileName] = useState(null);
- const [showAddIcon, setShowAddIcon] = useState(true);
- const t = useTranslations();
- const requestServer = useRequest({auth: true})
- const {update_notification} = useNotification()
-
- const validationSchema = Yup.object().shape({
- description: Yup.string().required(t("RejectDialog.description_error")),
- reject_img: Yup.mixed().notRequired(t("RejectDialog.choose_file"))
- .test('fileSize', `${t("MachinaryOffice.upload_file_unit")}`, (value) => {
- return !value || (value.size && value.size <= 5 * 1024 * 1024);
- })
- .test('fileType', `${t("MachinaryOffice.upload_file_format")}`, (value) => {
- const allowedTypes = ['image/jpg', 'image/jpeg', 'image/png', 'application/pdf']; // Define your allowed file types
- return !value || (value.type && allowedTypes.includes(value.type));
- }),
- });
-
- const formik = useFormik({
- initialValues: {
- description: "",
- reject_img: null
- },
- validationSchema,
- onSubmit: (values, {setSubmitting}) => {
- const formData = new FormData();
- formData.append("expert_description", values.description);
- if (values.reject_img != null) {
- const attachments = [
- {
- title: "فایل ضمیمه کارتابل قیمت گذاری",
- file: values.reject_img
- }
- ];
- attachments.forEach((attachment, index) => {
- formData.append(`attachment[${index}][title]`, attachment.title);
- formData.append(`attachment[${index}][file]`, attachment.file);
- });
- }
- requestServer(`${REJECT_MACHINARY_OFFICE}/${rowId}`, 'post', {
- data: formData,
- }).then((response) => {
- setOpenRejectDialog(false)
- mutate()
- update_notification()
- }).catch(() => {
- }).finally(() => {
- setSubmitting(false);
- });
- },
- });
-
- const handleDescriptionChange = (event) => {
- formik.setFieldValue("description", event.target.value);
- formik.handleChange(event);
- };
- const handleUploadChange = (event) => {
- const uploadedFile = event.target?.files?.[0];
- if (uploadedFile) {
- const fileType = event.target?.files?.[0].type;
- const fileName = event.target?.files?.[0].name;
- setSelectedImage(URL.createObjectURL(uploadedFile));
- setfileType(fileType);
- setfileName(fileName);
- formik.setFieldValue("reject_img", uploadedFile).then(() => {
- formik.setFieldTouched("reject_img", true);
- })
- setShowAddIcon(false);
- }
- };
- return (
- <>
-
-
-
-
-
-
- {t("UploadSystem.upload_file")}{t("UploadSystem.optional")}
- formik.handleBlur("reject_img")}
- error={
- formik.touched.reject_img &&
- Boolean(formik.errors.reject_img)
- }
- />
-
- {formik.touched.reject_img && formik.errors.reject_img}
-
-
-
-
-
-
-
-
- >
- )
-}
-export default RejectContent
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/Form/RejectForm/index.jsx b/src/components/dashboard/machinary-office/Form/RejectForm/index.jsx
deleted file mode 100644
index 06608f5..0000000
--- a/src/components/dashboard/machinary-office/Form/RejectForm/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import {Dialog, DialogTitle, IconButton, Tooltip} from "@mui/material"
-import {useTranslations} from "next-intl";
-import {useState} from "react";
-import RejectContent from "./RejectContent";
-import ThumbDownIcon from "@mui/icons-material/ThumbDown";
-
-const Reject = ({rowId, mutate}) => {
- const t = useTranslations();
- const [openRejectDialog, setOpenRejectDialog] = useState(false);
- return (
- <>
-
- setOpenRejectDialog(true)}>
-
-
-
-
- >
- )
-}
-export default Reject
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/Form/ReserveForm/index.jsx b/src/components/dashboard/machinary-office/Form/ReserveForm/index.jsx
deleted file mode 100644
index e7b08fb..0000000
--- a/src/components/dashboard/machinary-office/Form/ReserveForm/index.jsx
+++ /dev/null
@@ -1,75 +0,0 @@
-import {
- Button,
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- IconButton,
- Tooltip, Typography
-} from "@mui/material";
-import {useTranslations} from "next-intl";
-import {useState} from "react";
-import RepartitionIcon from '@mui/icons-material/Repartition';
-import useRequest from "@/lib/app/hooks/useRequest";
-import useNotification from "@/lib/app/hooks/useNotification";
-import {RESERVE_MACHINARY_LOAN} from "@/core/data/apiRoutes";
-
-const ReserveForm = ({rowId, mutate}) => {
- const t = useTranslations();
- const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
- const requestServer = useRequest({auth: true, notification: true});
- const [isSubmitting, setIsSubmitting] = useState(false);
- const {update_notification} = useNotification()
-
- const handleSubmit = () => {
- setIsSubmitting(true)
- requestServer(`${RESERVE_MACHINARY_LOAN}/${rowId}`, 'post').then((response) => {
- setOpenConfirmDialog(false)
- mutate()
- update_notification()
- }).catch(() => {
- }).finally(() => {
- setIsSubmitting(false)
- });
- }
-
- return (
- <>
-
- {
- setOpenConfirmDialog(true)
- }}
- >
-
-
-
-
- >
- )
-
-}
-export default ReserveForm;
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/Prints/report/Content.jsx b/src/components/dashboard/machinary-office/Prints/report/Content.jsx
deleted file mode 100644
index 8098ecb..0000000
--- a/src/components/dashboard/machinary-office/Prints/report/Content.jsx
+++ /dev/null
@@ -1,96 +0,0 @@
-import PrintablePage from "@/core/components/PrintablePage";
-import {Box, Stack, Typography} from "@mui/material";
-
-const Content = ({data}) => {
- return (
- <>
-
-
- {'گزارش کارشناسی ماشین آلات'}
-
-
- {'با توجه به نامه شماره'}
- 35482
- {'مورخ'}
- 1402/08/20
- {'معاون محترم برنامه ریزی سازمان راهداری و حمل و نقل جاده ای در خصوص تسهیلات بند (الف) تبصره (18) قانون بودجه سال'}
- 1402
- {'موضوع بازسازی ناوگان اتوبوس و مینی بوس و نیز تصویب آن درشورای برنامه ریزی و توسعه استان'}
- تهران
- {'و نامه شماره'}
- 35482
- {'مورخ'}
- 1402/08/20
- {'اداره کل راهداری و حمل و نقل جاده ای'}
- تهران
- {'در خصوص استفاده از ظرفیت انجمن های صنفی رانندگان در تاریخ'}
- 1402/08/20
- {'از ناوگان اتوبوس/مینی بوس به شماره پلاک انتظامی'}
- 25پ4582
- {'و شماره هوشمند ناوگان'}
- 5875698725
- {'به مالکیت آقای'}
- امیرحسین محمودی
- {'با کد ملی'}
- 0311318897
- {'و شماره تماس'}
- 09120630655
- {'ساکن شهرستان'}
- تهران
- {'در جلسه مطرح شد که نتیجه آن به شرح ذیل مورد تایید می باشد.'}
-
-
- {'مبلغ پیشنهادی به عدد .............................................. ریال و به حروف ...................................................................... ریال می باشد.'}
- {'توضیحات : ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................'}
-
- {'نام و نام خانوادگی کارشناس:'}
- {'تاریخ و امضاء'}
-
-
-
- >
- )
-}
-
-export default Content
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/Prints/report/index.jsx b/src/components/dashboard/machinary-office/Prints/report/index.jsx
deleted file mode 100644
index 54dca24..0000000
--- a/src/components/dashboard/machinary-office/Prints/report/index.jsx
+++ /dev/null
@@ -1,60 +0,0 @@
-import {useEffect, useState} from "react";
-import CenterLayout from "@/layouts/CenterLayout";
-import {useTranslations} from "next-intl";
-import {Stack, Typography} from "@mui/material";
-import Content from "@/components/dashboard/machinary-office/Prints/report/Content";
-
-const ReportComponent = () => {
- const t = useTranslations()
- const [data, setData] = useState(null)
- const [loading, setLoading] = useState(true)
- const [isNotData, setIsNotData] = useState(true)
-
- useEffect(() => {
- if (sessionStorage.getItem('report-print') === null) {
- setLoading(false)
- setIsNotData(true)
- sessionStorage.setItem('report-print', 'seen')
- } else if (sessionStorage.getItem('report-print') === 'seen') {
- setLoading(false)
- setData(null)
- setIsNotData(true)
- } else if (data) {
- setLoading(false)
- sessionStorage.setItem('report-print', 'seen')
- setIsNotData(false)
- } else {
- setLoading(true)
- setData(JSON.parse(sessionStorage.getItem('report-print')))
- setIsNotData(true)
- }
- }, [data]);
-
- return (
-
- {loading ? (
-
-
-
- {t('print_loading')}
-
-
-
- ) : !data ? (
-
-
- {t('data_not_found')}
-
-
- ) : !data.length ? (
-
-
- {t('data_not_found')}
-
-
- ) : data.map(item => )}
-
- )
-}
-
-export default ReportComponent
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/TableRowActions.jsx b/src/components/dashboard/machinary-office/TableRowActions.jsx
deleted file mode 100644
index 0e111cb..0000000
--- a/src/components/dashboard/machinary-office/TableRowActions.jsx
+++ /dev/null
@@ -1,26 +0,0 @@
-import {Box} from "@mui/material";
-import Confirm from "./Form/ConfirmForm";
-import Reject from "./Form/RejectForm";
-import ReserveForm from "@/components/dashboard/machinary-office/Form/ReserveForm";
-
-const TableRow = ({row, mutate}) => {
- return (
-
-
-
-
-
- );
-};
-
-export default TableRow;
diff --git a/src/components/dashboard/machinary-office/TableToolbar.jsx b/src/components/dashboard/machinary-office/TableToolbar.jsx
deleted file mode 100644
index c1e6672..0000000
--- a/src/components/dashboard/machinary-office/TableToolbar.jsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import {Stack} from "@mui/material";
-import PrintExcel from "@/components/dashboard/machinary-office/Buttons/printExcel";
-
-const TableToolbar = ({table}) => {
- return (
-
- {/**/}
-
-
- )
-}
-
-export default TableToolbar
\ No newline at end of file
diff --git a/src/components/dashboard/machinary-office/index.jsx b/src/components/dashboard/machinary-office/index.jsx
deleted file mode 100644
index dbf72f0..0000000
--- a/src/components/dashboard/machinary-office/index.jsx
+++ /dev/null
@@ -1,331 +0,0 @@
-import {Box, Stack, Typography} from "@mui/material";
-import {useMemo} from "react";
-import {GET_MACHINARY_OFFICE} from "@/core/data/apiRoutes";
-import {useTranslations} from "next-intl";
-import TableRowActions from "./TableRowActions";
-import moment from "jalali-moment";
-import DataTable from "@/core/components/DataTable";
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import TableToolbar from "@/components/dashboard/machinary-office/TableToolbar";
-
-function DashboardMachinaryOfficeComponent() {
- const t = useTranslations();
- const columns = useMemo(
- () => [
- {
- accessorFn: (row) => row.id,
- id: "id",
- header: t("MachinaryOffice.id"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.score,
- id: "score",
- header: t("MachinaryOffice.score"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.is_legal_person,
- id: "is_legal_person",
- header: t("MachinaryOffice.is_legal_person"),
- enableColumnFilter: false,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: ["equals"],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue === 1 ? `${t("MachinaryOffice.hoghoghi")}` : `${t("MachinaryOffice.haghighi")}`}
- ),
- },
- {
- accessorFn: (row) => row.navgan_id,
- id: "navgan_id",
- header: t("MachinaryOffice.navgan_id"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.name,
- id: "name",
- header: t("MachinaryOffice.name"),
- enableColumnFilter: true,
- datatype: "text",
- filterFn: "contains",
- columnFilterModeOptions: ["contains", "equals", "notEquals"],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.national_id,
- id: "national_id",
- header: t("MachinaryOffice.national_id"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.shenase_meli,
- id: "shenase_meli",
- header: t("MachinaryOffice.shenase_meli"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.province_name,
- id: "province_name",
- header: t("MachinaryOffice.province_name"),
- enableColumnFilter: true,
- datatype: "text",
- filterFn: "contains",
- columnFilterModeOptions: ["contains", "equals", "notEquals"],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.city_name,
- id: "city_name",
- header: t("MachinaryOffice.city_name"),
- enableColumnFilter: true,
- datatype: "text",
- filterFn: "contains",
- columnFilterModeOptions: ["contains", "equals", "notEquals"],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) =>
- moment(row.created_at).locale("fa").format("HH:mm | yyyy/MM/DD"),
- id: "created_at",
- header: t("MachinaryOffice.created_at"),
- enableColumnFilter: true,
- datatype: "date",
- filterFn: "lessThan",
- columnFilterModeOptions: ["lessThan", "greaterThan"],
- Cell: ({renderedCellValue}) => {
- return {renderedCellValue};
- },
- Header: ({column}) => <>{column.columnDef.header}>,
- Filter: ({column}) => {
- return (
-
- );
- },
- },
- {
- accessorFn: (row) => row.phone_number,
- id: "phone_number",
- header: t("MachinaryOffice.phone_number"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.statement_count,
- id: "statement_count",
- header: t("MachinaryOffice.statement_count"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.navgan_capacity,
- id: "navgan_capacity",
- header: t("MachinaryOffice.navgan_capacity"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.manufacture_date,
- id: "manufacture_date",
- header: t("MachinaryOffice.manufacture_date"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.vehicle_type,
- id: "vehicle_type",
- header: t("MachinaryOffice.vehicle_type"),
- enableColumnFilter: true,
- datatype: "text",
- filterFn: "contains",
- columnFilterModeOptions: ["contains", "equals", "notEquals"],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.plate_number,
- id: "plate_number",
- header: t("MachinaryOffice.plate_number"),
- enableColumnFilter: false,
- datatype: "text",
- filterFn: "contains",
- columnFilterModeOptions: ["contains", "equals", "notEquals"],
- Cell: ({renderedCellValue}) => (
-
-
- {renderedCellValue.split('-')[3]}
-
-
- {renderedCellValue.split('-')[2]}
- {renderedCellValue.split('-')[1]}
- {renderedCellValue.split('-')[0]}
-
-
- ),
- },
- {
- accessorFn: (row) => row.state_name,
- id: "state_id",
- header: t("MachinaryOffice.state_name"),
- enableColumnFilter: false,
- datatype: "numeric",
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- ],
- []
- );
- return (
-
-
-
- );
-}
-
-export default DashboardMachinaryOfficeComponent;
diff --git a/src/components/dashboard/navgan-loan-management/index.jsx b/src/components/dashboard/navgan-loan-management/index.jsx
index 03b5242..9777746 100644
--- a/src/components/dashboard/navgan-loan-management/index.jsx
+++ b/src/components/dashboard/navgan-loan-management/index.jsx
@@ -289,25 +289,6 @@ function DashboardNavganLoanManagementComponent() {
),
},
- {
- accessorFn: (row) => row.proposed_amount,
- id: "proposed_amount",
- header: t("NavganLoanManagement.proposed_amount"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue / 1000000}
- ),
- },
{
accessorFn: (row) => row.approved_amount,
id: "approved_amount",
@@ -327,6 +308,101 @@ function DashboardNavganLoanManagementComponent() {
{renderedCellValue / 1000000}
),
},
+ {
+ accessorFn: (row) => row.facility_bank,
+ id: "facility_bank",
+ header: t("NavganLoanManagement.facility_bank"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_gov,
+ id: "facility_gov",
+ header: t("NavganLoanManagement.facility_gov"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_person,
+ id: "facility_person",
+ header: t("NavganLoanManagement.facility_person"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.physical_progress,
+ id: "physical_progress",
+ header: t("NavganLoanManagement.physical_progress"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.repayment_period,
+ id: "repayment_period",
+ header: t("NavganLoanManagement.repayment_period"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.sakht_period,
id: "sakht_period",
@@ -355,6 +431,44 @@ function DashboardNavganLoanManagementComponent() {
{renderedCellValue}
),
},
+ {
+ accessorFn: (row) => row.committed_employment,
+ id: "committed_employment",
+ header: t("NavganLoanManagement.committed_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.existing_employment,
+ id: "existing_employment",
+ header: t("NavganLoanManagement.existing_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.state_name,
id: "state_name",
diff --git a/src/components/dashboard/navgan-province-manager/Form/ConfirmForm/ConfirmContent.jsx b/src/components/dashboard/navgan-province-manager/Form/ConfirmForm/ConfirmContent.jsx
index a7ce958..9e14fcc 100644
--- a/src/components/dashboard/navgan-province-manager/Form/ConfirmForm/ConfirmContent.jsx
+++ b/src/components/dashboard/navgan-province-manager/Form/ConfirmForm/ConfirmContent.jsx
@@ -169,13 +169,23 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, handleSizeChangeCl
{loading ? :
<>
+
+
+
{renderCustomAccordions()}
>
}
diff --git a/src/components/dashboard/navgan-province-manager/index.jsx b/src/components/dashboard/navgan-province-manager/index.jsx
index ea4a568..b39cf90 100644
--- a/src/components/dashboard/navgan-province-manager/index.jsx
+++ b/src/components/dashboard/navgan-province-manager/index.jsx
@@ -232,25 +232,6 @@ function DashboardNavganProvinceManagerComponent() {
),
},
- {
- accessorFn: (row) => row.proposed_amount,
- id: "proposed_amount",
- header: t("NavganProvinceManager.proposed_amount"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue / 1000000}
- ),
- },
{
accessorFn: (row) => row.approved_amount,
id: "approved_amount",
@@ -270,6 +251,101 @@ function DashboardNavganProvinceManagerComponent() {
{renderedCellValue / 1000000}
),
},
+ {
+ accessorFn: (row) => row.facility_bank,
+ id: "facility_bank",
+ header: t("NavganProvinceManager.facility_bank"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_gov,
+ id: "facility_gov",
+ header: t("NavganProvinceManager.facility_gov"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_person,
+ id: "facility_person",
+ header: t("NavganProvinceManager.facility_person"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.physical_progress,
+ id: "physical_progress",
+ header: t("NavganProvinceManager.physical_progress"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.repayment_period,
+ id: "repayment_period",
+ header: t("NavganProvinceManager.repayment_period"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.sakht_period,
id: "sakht_period",
@@ -298,6 +374,44 @@ function DashboardNavganProvinceManagerComponent() {
{renderedCellValue}
),
},
+ {
+ accessorFn: (row) => row.committed_employment,
+ id: "committed_employment",
+ header: t("NavganProvinceManager.committed_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.existing_employment,
+ id: "existing_employment",
+ header: t("NavganProvinceManager.existing_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.state_name,
id: "state_id",
diff --git a/src/components/dashboard/passenger-boss/Form/ConfirmForm/ConfirmContent.jsx b/src/components/dashboard/passenger-boss/Form/ConfirmForm/ConfirmContent.jsx
index b9dbf5f..7f15fed 100644
--- a/src/components/dashboard/passenger-boss/Form/ConfirmForm/ConfirmContent.jsx
+++ b/src/components/dashboard/passenger-boss/Form/ConfirmForm/ConfirmContent.jsx
@@ -17,6 +17,7 @@ import {useState} from "react";
import PriceField from "@/core/components/PriceField";
import * as Yup from "yup";
import SelectBox from "@/core/components/SelectBox";
+import {useConfig} from "@/lib/app/hooks/useConfig";
const vehicle_amount = {
"اتوبوس": 7000,
@@ -25,17 +26,13 @@ const vehicle_amount = {
const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) => {
const t = useTranslations();
- const [selectedImage, setSelectedImage] = useState("");
const [expertImg, setExpertImg] = useState("");
- const [fileType, setFileType] = useState(null);
- const [fileName, setFileName] = useState(null);
- const [showAddIcon, setShowAddIcon] = useState(true);
const [expertFileType, setExpertFileType] = useState(null);
const [expertFileName, setExpertFileName] = useState(null);
const [showExpertAddIcon, setShowExpertAddIcon] = useState(true);
const requestServer = useRequest({auth: true, notification: false})
const {update_notification} = useNotification();
- const [showFacility, setShowFacility] = useState(false)
+ const {config} = useConfig()
const validationSchema = Yup.object().shape({
approved_amount: Yup.mixed().test(
@@ -46,55 +43,24 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
(value) => value <= vehicle_amount[vehicle_type])
.test("positive", `${t("ConfirmDialog.approved_amount_positive")}`, (value) => value >= 0)
.required(t("ConfirmDialog.approved_amount_error")),
- bank_facility: Yup.mixed().test(
- "is-number",
- `${t("ConfirmDialog.bank_facility_number")}`,
- (value) => !isNaN(value)
- ).test("positive", `${t("ConfirmDialog.bank_facility_positive")}`, (value) => value >= 0)
- .test("max_bank", `${t("ConfirmDialog.bank_facility_max_amount")}`, function (value) {
- const government_facility = this.parent.government_facility || 0;
- const max_amount = (this.parent.approved_amount || 0) - government_facility;
- return value <= max_amount;
- })
- .required(t("ConfirmDialog.bank_facility_error")),
- government_facility: Yup.mixed()
- .test(
- "is-number",
- `${t("ConfirmDialog.government_facility_number")}`,
- (value) => !isNaN(value)
- )
- .test("positive", `${t("ConfirmDialog.government_facility_positive")}`, (value) => value >= 0)
- .test("max_government", `${t("ConfirmDialog.government_facility_max_amount")}`, function (value) {
- const bank_facility = this.parent.bank_facility || 0;
- const max_amount = (this.parent.approved_amount || 0) - bank_facility;
- return value <= max_amount;
- })
- .required(t("ConfirmDialog.government_facility_error")),
repayment_period: Yup.mixed().test(
"is-number",
`${t("ConfirmDialog.repayment_period_number")}`,
(value) => !isNaN(value)
).test("positive", `${t("ConfirmDialog.repayment_period_positive")}`, (value) => value >= 0)
.required(t("ConfirmDialog.repayment_period_error")),
- participation_period: Yup.mixed().test(
- "is-number",
- `${t("ConfirmDialog.participation_period_number")}`,
- (value) => !isNaN(value)
- ).test("positive", `${t("ConfirmDialog.participation_period_positive")}`, (value) => value >= 0)
- .required(t("ConfirmDialog.participation_period_error")),
-
committed_employment: Yup.mixed().test(
"is-number",
`${t("ConfirmDialog.committed_employment_number")}`,
(value) => !isNaN(value)
).test("positive", `${t("ConfirmDialog.committed_employment_positive")}`, (value) => value >= 0)
.required(t("ConfirmDialog.committed_employment_error")),
- available_jobs: Yup.mixed().test(
+ existing_employment: Yup.mixed().test(
"is-number",
- `${t("ConfirmDialog.available_jobs_number")}`,
+ `${t("ConfirmDialog.existing_employment_number")}`,
(value) => !isNaN(value)
- ).test("positive", `${t("ConfirmDialog.available_jobs_positive")}`, (value) => value >= 0)
- .required(t("ConfirmDialog.available_jobs_error")),
+ ).test("positive", `${t("ConfirmDialog.existing_employment_positive")}`, (value) => value >= 0)
+ .required(t("ConfirmDialog.existing_employment_error")),
sakht_period: Yup.mixed()
.test("is-number", `${t("ConfirmDialog.sakht_period_number")}`,
(value) => !isNaN(value))
@@ -105,21 +71,6 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
(value) => !isNaN(value))
.test("positive", `${t("ConfirmDialog.tanafos_period_positive")}`, (value) => value > 0)
.required(t("ConfirmDialog.tanafos_period_error")),
- interest_rate: Yup.mixed()
- .test("is-number", `${t("ConfirmDialog.interest_rate_number")}`,
- (value) => !isNaN(value))
- .test("positive", `${t("ConfirmDialog.interest_rate_positive")}`, (value) => value > 0)
- .required(t("ConfirmDialog.interest_rate_error")),
- confirm_img: Yup.mixed().notRequired(t("ConfirmDialog.approved_amount_error"))
- .test('fileSize', `${t("PassengerBoss.upload_file_unit")}`, (value) => {
- if (!value) return true
- return value.size <= 5 * 1024 * 1024;
- })
- .test('fileType', `${t("PassengerBoss.upload_file_format")}`, (value) => {
- if (!value) return true
- const allowedTypes = ['image/jpg', 'image/jpeg', 'image/png', 'application/pdf'];
- return allowedTypes.includes(value.type);
- }),
expert_img: Yup.mixed()
.required(t("PassengerBoss.upload_expert_file_required"))
.test('fileSize', `${t("PassengerBoss.upload_expert_file_unit")}`, (value) => {
@@ -135,50 +86,31 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
initialValues: {
description: "",
approved_amount: "",
- bank_facility: "0",
- government_facility: "0",
- user_facility: "0",
+ facility_bank: "",
+ facility_gov: "",
+ facility_person: "",
physical_progress: "",
repayment_period: "",
- participation_period: "",
- interest_rate: "",
committed_employment: "",
sakht_period: "",
tanafos_period: "",
- history_facilities: "0",
- available_jobs: "",
+ existing_employment: "",
expert_img: null,
- confirm_img: null,
}, validationSchema,
onSubmit: (values, {setSubmitting}) => {
const formData = new FormData();
- formData.append("approved_amount", values.approved_amount);
- formData.append("bank_facility", values.bank_facility);
- formData.append("government_facility", values.government_facility);
- formData.append("user_facility", values.user_facility);
+ formData.append("approved_amount", Number(values.approved_amount) * 1000000);
+ formData.append("facility_bank", Number(values.facility_bank) * 1000000);
+ formData.append("facility_gov", Number(values.facility_gov) * 1000000);
+ formData.append("facility_person", Number(values.facility_person) * 1000000);
formData.append("repayment_period", values.repayment_period);
- formData.append("participation_period", values.participation_period);
- formData.append("interest_rate", values.interest_rate);
formData.append("committed_employment", values.committed_employment);
- formData.append("available_jobs", values.available_jobs);
+ formData.append("existing_employment", values.existing_employment);
formData.append("sakht_period", values.sakht_period);
formData.append("tanafos_period", values.tanafos_period);
- formData.append("history_facilities", values.history_facilities);
if (values.description != "") formData.append("expert_description", values.description);
if (values.physical_progress != "") formData.append("physical_progress", values.physical_progress);
- if (values.confirm_img != null) {
- const attachments = [
- {
- title: "فایل ضمیمه کارتابل کارگروه",
- file: values.confirm_img
- }
- ];
- attachments.forEach((attachment, index) => {
- formData.append(`attachment[${index}][title]`, attachment.title);
- formData.append(`attachment[${index}][file]`, attachment.file);
- });
- }
if (values.expert_img != null) {
const attachments = [
{
@@ -206,20 +138,6 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
},
});
- const handleUploadChange = (event) => {
- const uploadedFile = event.target?.files?.[0];
- if (uploadedFile) {
- const fileType = event.target?.files?.[0].type;
- const fileName = event.target?.files?.[0].name;
- setSelectedImage(URL.createObjectURL(uploadedFile));
- setFileType(fileType);
- setFileName(fileName);
- formik.setFieldValue("confirm_img", uploadedFile).then(() => {
- formik.setFieldTouched("confirm_img", true);
- })
- setShowAddIcon(false);
- }
- };
const handleExpertFileChange = (event) => {
const uploadedFile = event.target?.files?.[0];
if (uploadedFile) {
@@ -237,12 +155,12 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
const handleAmountChange = (event) => {
if (!isNaN(event.target.value)) {
formik.setFieldValue("approved_amount", event.target.value).then(() => {
- formik.setFieldValue("user_facility", Number(event.target.value) - (Number(formik.values.bank_facility) + Number(formik.values.government_facility)))
+ formik.setFieldValue("facility_bank", (config.facility_bank / 100) * event.target.value)
+ formik.setFieldValue("facility_gov", (config.facility_gov / 100) * event.target.value)
+ formik.setFieldValue("facility_person", (config.facility_person / 100) * event.target.value)
})
- event.target.value !== "" ? setShowFacility(true) : setShowFacility(false)
} else {
formik.setFieldValue("approved_amount", formik.values.approved_amount)
- setShowFacility(false)
}
};
@@ -292,9 +210,9 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
- {t("ConfirmDialog.bank_facility")}{t("ConfirmDialog.unit")}>}
+ {t("ConfirmDialog.facility_bank")}{t("ConfirmDialog.unit")}>}
type="text"
inputProps={{
inputMode: "number",
@@ -302,33 +220,16 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
pattern: "[0-9]*",
}}
variant="outlined"
- value={formik.values.bank_facility}
- onChange={(event) => {
- if (!isNaN(event.target.value)) {
- formik.setFieldValue("bank_facility", event.target.value).then(() => {
- formik.setFieldValue("user_facility", Number(formik.values.approved_amount) - (Number(event.target.value) + Number(formik.values.government_facility)))
- })
- } else {
- formik.setFieldValue("bank_facility", formik.values.bank_facility)
- }
- }}
- onBlur={formik.handleBlur("bank_facility")}
- error={
- formik.touched.bank_facility &&
- Boolean(formik.errors.bank_facility)
- }
- helperText={
- formik.touched.bank_facility && formik.errors.bank_facility
- }
+ value={formik.values.facility_bank}
fullWidth
- disabled={!showFacility}
+ disabled
/>
- {t("ConfirmDialog.government_facility")}{t("ConfirmDialog.unit")}>}
+ {t("ConfirmDialog.facility_gov")}{t("ConfirmDialog.unit")}>}
type="text"
inputProps={{
inputMode: "number",
@@ -336,35 +237,18 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
pattern: "[0-9]*",
}}
variant="outlined"
- value={formik.values.government_facility}
- onChange={(event) => {
- if (!isNaN(event.target.value)) {
- formik.setFieldValue("government_facility", event.target.value).then(() => {
- formik.setFieldValue("user_facility", Number(formik.values.approved_amount) - (Number(formik.values.bank_facility) + Number(event.target.value)))
- })
- } else {
- formik.setFieldValue("government_facility", formik.values.government_facility)
- }
- }}
- onBlur={formik.handleBlur("government_facility")}
- error={
- formik.touched.government_facility &&
- Boolean(formik.errors.government_facility)
- }
- helperText={
- formik.touched.government_facility && formik.errors.government_facility
- }
- disabled={!showFacility}
+ value={formik.values.facility_gov}
+ disabled
fullWidth
/>
- {t("ConfirmDialog.user_facility")}{t("ConfirmDialog.unit")}>}
+ {t("ConfirmDialog.facility_person")}{t("ConfirmDialog.unit")}>}
variant="outlined"
- value={formik.values.user_facility}
+ value={formik.values.facility_person}
disabled
fullWidth
/>
@@ -394,93 +278,28 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
/>
- {
- if (isNaN(event.target.value) || event.target.value > 100) formik.setFieldValue("interest_rate", formik.values.interest_rate)
- else
- formik.setFieldValue("interest_rate", event.target.value)
- }}
- onBlur={formik.handleBlur("interest_rate")}
- error={
- formik.touched.interest_rate &&
- Boolean(formik.errors.interest_rate)
- }
- helperText={
- formik.touched.interest_rate && formik.errors.interest_rate
- }
- fullWidth
- />
-
-
-
{t("ConfirmDialog.repayment_period")} {t("ConfirmDialog.month")}>}
- type="text"
- inputProps={{
- inputMode: "number",
- min: 0,
- pattern: "[0-9]*",
- }}
- variant="outlined"
+ selectType="repayment_period"
+ selectors={[
+ {id : 0, value : "12", name : "12 ماه"},
+ {id : 1, value : "24", name : "24 ماه"},
+ {id : 2, value : "36", name : "36 ماه"},
+ {id : 3, value : "48", name : "48 ماه"},
+ {id : 4, value : "60", name : "60 ماه"}
+ ]}
+ schema={{value: "value", name: "name"}}
+ select={formik.values.repayment_period}
value={formik.values.repayment_period}
- onChange={(event) => {
- if (!isNaN(event.target.value)) {
- formik.setFieldValue("repayment_period", event.target.value)
- } else {
- formik.setFieldValue("repayment_period", formik.values.repayment_period)
- }
+ handleChange={(event) => {
+ formik.setFieldValue("repayment_period", event.target.value);
}}
+ setFieldTouched={formik.setFieldTouched}
+ error={formik.touched.repayment_period && Boolean(formik.errors.repayment_period)}
+ helperText={formik.touched.repayment_period && formik.errors.repayment_period}
onBlur={formik.handleBlur("repayment_period")}
- error={
- formik.touched.repayment_period &&
- Boolean(formik.errors.repayment_period)
- }
- helperText={
- formik.touched.repayment_period && formik.errors.repayment_period
- }
- fullWidth
- />
-
-
-
- {t("ConfirmDialog.participation_period")} {t("ConfirmDialog.month")}>}
- type="text"
- inputProps={{
- inputMode: "number",
- min: 0,
- pattern: "[0-9]*",
- }}
- variant="outlined"
- value={formik.values.participation_period}
- onChange={(event) => {
- if (!isNaN(event.target.value)) {
- formik.setFieldValue("participation_period", event.target.value)
- } else {
- formik.setFieldValue("participation_period", formik.values.participation_period)
- }
- }}
- onBlur={formik.handleBlur("participation_period")}
- error={
- formik.touched.participation_period &&
- Boolean(formik.errors.participation_period)
- }
- helperText={
- formik.touched.participation_period && formik.errors.participation_period
- }
- fullWidth
/>
@@ -605,8 +424,8 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, vehicle_type}) =>
pattern: "[0-9]*",
}}
variant="outlined"
- value={formik.values.available_jobs}
+ value={formik.values.existing_employment}
onChange={(event) => {
if (!isNaN(event.target.value)) {
- formik.setFieldValue("available_jobs", event.target.value)
+ formik.setFieldValue("existing_employment", event.target.value)
} else {
- formik.setFieldValue("available_jobs", formik.values.available_jobs)
+ formik.setFieldValue("existing_employment", formik.values.existing_employment)
}
}}
- onBlur={formik.handleBlur("available_jobs")}
+ onBlur={formik.handleBlur("existing_employment")}
error={
- formik.touched.available_jobs &&
- Boolean(formik.errors.available_jobs)
+ formik.touched.existing_employment &&
+ Boolean(formik.errors.existing_employment)
}
helperText={
- formik.touched.available_jobs && formik.errors.available_jobs
+ formik.touched.existing_employment && formik.errors.existing_employment
}
fullWidth
/>
-
- {
- formik.setFieldValue('history_facilities', event.target.value)
- }}
- setFieldTouched={formik.setFieldTouched}
- error={formik.touched.history_facilities && Boolean(formik.errors.history_facilities)}
- helperText={formik.touched.history_facilities && formik.errors.history_facilities}
- onBlur={formik.handleBlur("history_facilities")}
- />
-
{t("PassengerBoss.upload_expert_img")}
{formik.touched.expert_img && formik.errors.expert_img}
-
- {t("PassengerBoss.upload_file")}
-
-
- {formik.touched.confirm_img && formik.errors.confirm_img}
-
-
diff --git a/src/components/dashboard/passenger-office/Buttons/printExcel.jsx b/src/components/dashboard/passenger-office/Buttons/printExcel.jsx
deleted file mode 100644
index c78075a..0000000
--- a/src/components/dashboard/passenger-office/Buttons/printExcel.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import {Button, CircularProgress} from "@mui/material";
-import {useTranslations} from "next-intl";
-import {useMemo, useState} from "react";
-import useRequest from "@/lib/app/hooks/useRequest";
-import {EXPORT_PASSENGER_OFFICE} from "@/core/data/apiRoutes";
-import moment from "jalali-moment";
-import FileSaver from 'file-saver';
-import DescriptionIcon from '@mui/icons-material/Description';
-
-const PrintExcel = ({table}) => {
- const t = useTranslations();
- const [loading, setLoading] = useState(false)
- const requestServer = useRequest({auth: true, pending: false, success: {notification: {show: false}}})
- const {columnFilters, columnFilterFns, sorting} = table.getState()
- const columns = table.getAllColumns()
-
- const filterParams = useMemo(() => {
- const params = new URLSearchParams();
- const filters = columnFilters.map((filter) => {
- let datatype;
- for (const i in columns) {
- if (columns[i].id == filter.id) {
- datatype = columns[i].columnDef.datatype;
- }
- }
- return {
- ...filter, fn: columnFilterFns[filter.id], datatype: datatype,
- };
- });
- params.set("start", '0');
- params.set("filters", JSON.stringify(filters ?? []));
- params.set("sorting", JSON.stringify(sorting ?? []));
- return params;
- }, [columnFilters, columnFilterFns, sorting, columns,]);
-
-
- const clickHandler = () => {
- setLoading(true)
- requestServer(`${EXPORT_PASSENGER_OFFICE}?${filterParams}`, 'get', {
- auth: true,
- notification: false,
- requestOptions: {responseType: 'blob'}
- }).then((response) => {
- const filename = `گزارش اداره مسافر تاریخ_${moment().format('jYYYY_jMM_jDD')}.xlsx`;
- FileSaver.saveAs(response.data, filename);
- }).catch(() => {
- }).finally(() => {
- setLoading(false)
- })
- }
-
-
- return (
- : }
- onClick={clickHandler}
- >
- {t("PassengerOffice.excel_report")}
-
- )
-}
-
-export default PrintExcel
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-office/Form/ConfirmForm/ConfirmContent.jsx b/src/components/dashboard/passenger-office/Form/ConfirmForm/ConfirmContent.jsx
deleted file mode 100644
index 846291b..0000000
--- a/src/components/dashboard/passenger-office/Form/ConfirmForm/ConfirmContent.jsx
+++ /dev/null
@@ -1,135 +0,0 @@
-import UploadSystem from "@/core/components/UploadSystem";
-import useNotification from "@/lib/app/hooks/useNotification";
-import useRequest from "@/lib/app/hooks/useRequest";
-import {Button, DialogActions, DialogContent, FormHelperText, Stack, TextField, Typography} from "@mui/material"
-import {useFormik} from "formik";
-import {useTranslations} from "next-intl";
-import {CONFIRM_PASSENGER_OFFICE} from "@/core/data/apiRoutes";
-import {useState} from "react";
-import * as Yup from "yup";
-
-const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog}) => {
- const t = useTranslations();
- const [selectedImage, setSelectedImage] = useState("");
- const [fileType, setfileType] = useState(null);
- const [fileName, setfileName] = useState(null);
- const [showAddIcon, setShowAddIcon] = useState(true);
- const requestServer = useRequest({auth: true})
- const {update_notification} = useNotification()
-
- const validationSchema = Yup.object().shape({
- confirm_img: Yup.mixed().notRequired(t("ConfirmDialog.approved_amount_error"))
- .test('fileSize', `${t("PassengerOffice.upload_file_unit")}`, (value) => {
- if (!value) return true
- return value.size <= 5 * 1024 * 1024;
- })
- .test('fileType', `${t("PassengerOffice.upload_file_format")}`, (value) => {
- if (!value) return true
- const allowedTypes = ['image/jpg', 'image/jpeg', 'image/png', 'application/pdf']; // Define your allowed file types
- return allowedTypes.includes(value.type);
- })
- })
-
- const formik = useFormik({
- initialValues: {
- description: "",
- confirm_img: null
- }, validationSchema,
- onSubmit: (values, {setSubmitting}) => {
- const formData = new FormData();
- if (values.description != "") formData.append("description", values.description);
- if (values.confirm_img != null) formData.append("attachment", values.confirm_img);
-
- requestServer(`${CONFIRM_PASSENGER_OFFICE}/${rowId}`, 'post', {
- data: formData,
- }).then((response) => {
- setOpenConfirmDialog(false)
- mutate()
- update_notification()
- }).catch(() => {
- }).finally(() => {
- setSubmitting(false);
- });
- },
- });
-
- const handleDescriptionChange = (event) => {
- formik.setFieldValue("description", event.target.value)
- };
-
- const handleUploadChange = (event) => {
- const uploadedFile = event.target?.files?.[0];
- if (uploadedFile) {
- const fileType = event.target?.files?.[0].type;
- const fileName = event.target?.files?.[0].name;
- setSelectedImage(URL.createObjectURL(uploadedFile));
- setfileType(fileType);
- setfileName(fileName);
- formik.setFieldValue("confirm_img", uploadedFile).then(() => {
- formik.setFieldTouched("confirm_img", true);
- })
- setShowAddIcon(false);
- }
- };
-
- return (
- <>
-
-
-
-
- {t("ConfirmDialog.description")}{t("ConfirmDialog.optional")}>}
- value={formik.values.description}
- onChange={handleDescriptionChange}
- fullWidth
- variant="outlined"
- sx={{mt: 1}}
- />
-
-
- {t("UploadSystem.upload_file")}{t("UploadSystem.optional")}
- formik.handleBlur("confirm_img")}
- error={
- formik.touched.confirm_img &&
- Boolean(formik.errors.confirm_img)
- }
- />
-
- {formik.touched.confirm_img && formik.errors.confirm_img}
-
-
-
-
-
-
-
-
- >
- )
-
-}
-export default ConfirmContent
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-office/Form/ConfirmForm/index.jsx b/src/components/dashboard/passenger-office/Form/ConfirmForm/index.jsx
deleted file mode 100644
index fa47fcf..0000000
--- a/src/components/dashboard/passenger-office/Form/ConfirmForm/index.jsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import {Dialog, DialogTitle, IconButton, Tooltip} from "@mui/material";
-import {useTranslations} from "next-intl";
-import {useState} from "react";
-import ConfirmContent from "./ConfirmContent";
-import CallMadeIcon from '@mui/icons-material/CallMade';
-const Confirm = ({rowId, mutate}) => {
- const t = useTranslations();
- const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
- return (
- <>
-
- {
- setOpenConfirmDialog(true)
- }}
- >
-
-
-
-
- >
- )
-
-}
-export default Confirm;
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-office/Form/RejectForm/RejectContent.jsx b/src/components/dashboard/passenger-office/Form/RejectForm/RejectContent.jsx
deleted file mode 100644
index 2a8a82d..0000000
--- a/src/components/dashboard/passenger-office/Form/RejectForm/RejectContent.jsx
+++ /dev/null
@@ -1,123 +0,0 @@
-import UploadSystem from "@/core/components/UploadSystem"
-import useNotification from "@/lib/app/hooks/useNotification";
-import useRequest from "@/lib/app/hooks/useRequest";
-import {Button, DialogActions, DialogContent, Stack, TextField, Typography} from "@mui/material"
-import {useFormik} from "formik";
-import {useTranslations} from "next-intl";
-import {useState} from "react";
-import * as Yup from "yup";
-import {REJECT_PASSENGER_OFFICE} from "@/core/data/apiRoutes";
-
-const RejectContent = ({rowId, mutate, setOpenRejectDialog}) => {
- const [selectedImage, setSelectedImage] = useState("");
- const [fileType, setfileType] = useState(null);
- const [fileName, setfileName] = useState(null);
- const [showAddIcon, setShowAddIcon] = useState(true);
- const t = useTranslations();
- const requestServer = useRequest({auth: true})
- const {update_notification} = useNotification()
-
- const validationSchema = Yup.object().shape({
- description: Yup.string().required(t("RejectDialog.description_error")),
- });
-
- const formik = useFormik({
- initialValues: {
- description: "",
- reject_img: null
- },
- validationSchema,
- onSubmit: (values, {setSubmitting}) => {
- const formData = new FormData();
- formData.append("expert_description", values.description);
- if (values.reject_img != null) formData.append("attachment", values.reject_img);
-
- requestServer(`${REJECT_PASSENGER_OFFICE}/${rowId}`, 'post', {
- data: formData,
- }).then((response) => {
- setOpenRejectDialog(false)
- mutate()
- update_notification()
- }).catch(() => {
- }).finally(() => {
- setSubmitting(false);
- });
- },
- });
-
- const handleDescriptionChange = (event) => {
- formik.setFieldValue("description", event.target.value);
- formik.handleChange(event);
- };
- const handleUploadChange = (event) => {
- const uploadedFile = event.target?.files?.[0];
- if (uploadedFile) {
- const maxFileSize = 2 * 1024 * 1024;
- if (uploadedFile.size > maxFileSize) {
- UploadFileNotification(t);
- event.target.value = "";
- return;
- }
- const fileType = event.target?.files?.[0].type;
- const fileName = event.target?.files?.[0].name;
- setSelectedImage(URL.createObjectURL(uploadedFile));
- setfileType(fileType);
- setfileName(fileName);
- formik.setFieldValue("reject_img", uploadedFile);
- setShowAddIcon(false);
- }
- };
- return (
- <>
-
-
-
-
-
-
- {t("UploadSystem.upload_file")}{t("UploadSystem.optional")}
-
-
-
-
-
-
-
-
- >
- )
-}
-export default RejectContent
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-office/Form/RejectForm/index.jsx b/src/components/dashboard/passenger-office/Form/RejectForm/index.jsx
deleted file mode 100644
index 06608f5..0000000
--- a/src/components/dashboard/passenger-office/Form/RejectForm/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import {Dialog, DialogTitle, IconButton, Tooltip} from "@mui/material"
-import {useTranslations} from "next-intl";
-import {useState} from "react";
-import RejectContent from "./RejectContent";
-import ThumbDownIcon from "@mui/icons-material/ThumbDown";
-
-const Reject = ({rowId, mutate}) => {
- const t = useTranslations();
- const [openRejectDialog, setOpenRejectDialog] = useState(false);
- return (
- <>
-
- setOpenRejectDialog(true)}>
-
-
-
-
- >
- )
-}
-export default Reject
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-office/TableRowActions.jsx b/src/components/dashboard/passenger-office/TableRowActions.jsx
deleted file mode 100644
index 985dd67..0000000
--- a/src/components/dashboard/passenger-office/TableRowActions.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import {Box} from "@mui/material";
-import Confirm from "./Form/ConfirmForm";
-import Reject from "./Form/RejectForm";
-
-const TableRow = ({row, mutate, fetchUrl}) => {
-
- return (
-
-
-
-
- );
-};
-
-export default TableRow;
diff --git a/src/components/dashboard/passenger-office/TableToolbar.jsx b/src/components/dashboard/passenger-office/TableToolbar.jsx
deleted file mode 100644
index 23f3c20..0000000
--- a/src/components/dashboard/passenger-office/TableToolbar.jsx
+++ /dev/null
@@ -1,13 +0,0 @@
-import {Stack} from "@mui/material";
-import PrintExcel from "@/components/dashboard/passenger-office/Buttons/printExcel";
-
-const TableToolbar = ({table}) => {
-
- return (
-
-
-
- )
-}
-
-export default TableToolbar
\ No newline at end of file
diff --git a/src/components/dashboard/passenger-office/index.jsx b/src/components/dashboard/passenger-office/index.jsx
deleted file mode 100644
index 1e4f705..0000000
--- a/src/components/dashboard/passenger-office/index.jsx
+++ /dev/null
@@ -1,186 +0,0 @@
-import {Box, Typography} from "@mui/material";
-import {useMemo} from "react";
-import {GET_PASSENGER_OFFICE} from "@/core/data/apiRoutes";
-import {useTranslations} from "next-intl";
-import TableRowActions from "./TableRowActions";
-import moment from "jalali-moment";
-import DataTable from "@/core/components/DataTable";
-import MuiDatePicker from "@/core/components/MuiDatePicker";
-import TableToolbar from "@/components/dashboard/passenger-office/TableToolbar";
-
-function DashboardPassengerOfficeComponent() {
- const t = useTranslations();
-
- const columns = useMemo(
- () => [
- {
- accessorFn: (row) => row.id,
- id: "id",
- header: t("PassengerOffice.id"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.name,
- id: "name",
- header: t("PassengerOffice.name"),
- enableColumnFilter: true,
- datatype: "text",
- filterFn: "contains",
- columnFilterModeOptions: ["contains", "equals", "notEquals"],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.national_id,
- id: "national_id",
- header: t("PassengerOffice.national_id"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.phone_number,
- id: "phone_number",
- header: t("PassengerOffice.phone_number"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) =>
- moment(row.created_at).locale("fa").format("HH:mm | yyyy/MM/DD"),
- id: "created_at",
- header: t("PassengerOffice.created_at"),
- enableColumnFilter: true,
- datatype: "date",
- filterFn: "lessThan",
- columnFilterModeOptions: ["lessThan", "greaterThan"],
- Cell: ({renderedCellValue}) => {
- return {renderedCellValue};
- },
- Header: ({column}) => <>{column.columnDef.header}>,
- Filter: ({column}) => {
- return (
-
- );
- },
- },
- {
- accessorFn: (row) =>
- moment(row.updated_at).locale("fa").format("HH:mm | YYYY/MM/DD"),
- id: "updated_at",
- header: t("PassengerOffice.updated_at"),
- enableColumnFilter: false,
- datatype: "numeric",
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.navgan_id,
- id: "navgan_id",
- header: t("PassengerOffice.navgan_id"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.vehicle_type,
- id: "vehicle_type",
- header: t("PassengerOffice.vehicle_type"),
- enableColumnFilter: true,
- datatype: "text",
- filterFn: "contains",
- columnFilterModeOptions: ["contains", "equals", "notEquals"],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- {
- accessorFn: (row) => row.state_name,
- id: "state_id",
- header: t("PassengerOffice.state_name"),
- enableColumnFilter: false,
- datatype: "numeric",
- Cell: ({renderedCellValue}) => (
- {renderedCellValue}
- ),
- },
- ],
- []
- );
- return (
-
-
-
- );
-}
-
-export default DashboardPassengerOfficeComponent;
diff --git a/src/components/dashboard/reserve-loan/index.jsx b/src/components/dashboard/reserve-loan/index.jsx
index 06095b5..36e6a32 100644
--- a/src/components/dashboard/reserve-loan/index.jsx
+++ b/src/components/dashboard/reserve-loan/index.jsx
@@ -15,7 +15,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.id,
id: "id",
- header: t("MachinaryOffice.id"),
+ header: t("ReserveLoan.id"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -34,7 +34,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.score,
id: "score",
- header: t("MachinaryOffice.score"),
+ header: t("ReserveLoan.score"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -53,20 +53,20 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.is_legal_person,
id: "is_legal_person",
- header: t("MachinaryOffice.is_legal_person"),
+ header: t("ReserveLoan.is_legal_person"),
enableColumnFilter: false,
datatype: "numeric",
filterFn: "equals",
columnFilterModeOptions: ["equals"],
Cell: ({renderedCellValue}) => (
{renderedCellValue === 1 ? `${t("MachinaryOffice.hoghoghi")}` : `${t("MachinaryOffice.haghighi")}`}
+ variant="body2">{renderedCellValue === 1 ? `${t("ReserveLoan.hoghoghi")}` : `${t("ReserveLoan.haghighi")}`}
),
},
{
accessorFn: (row) => row.navgan_id,
id: "navgan_id",
- header: t("MachinaryOffice.navgan_id"),
+ header: t("ReserveLoan.navgan_id"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -85,7 +85,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.name,
id: "name",
- header: t("MachinaryOffice.name"),
+ header: t("ReserveLoan.name"),
enableColumnFilter: true,
datatype: "text",
filterFn: "contains",
@@ -97,7 +97,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.national_id,
id: "national_id",
- header: t("MachinaryOffice.national_id"),
+ header: t("ReserveLoan.national_id"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -116,7 +116,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.shenase_meli,
id: "shenase_meli",
- header: t("MachinaryOffice.shenase_meli"),
+ header: t("ReserveLoan.shenase_meli"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -135,7 +135,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.province_name,
id: "province_name",
- header: t("MachinaryOffice.province_name"),
+ header: t("ReserveLoan.province_name"),
enableColumnFilter: true,
datatype: "text",
filterFn: "contains",
@@ -147,7 +147,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.city_name,
id: "city_name",
- header: t("MachinaryOffice.city_name"),
+ header: t("ReserveLoan.city_name"),
enableColumnFilter: true,
datatype: "text",
filterFn: "contains",
@@ -160,7 +160,7 @@ function DashboardReserveLoan() {
accessorFn: (row) =>
moment(row.created_at).locale("fa").format("HH:mm | yyyy/MM/DD"),
id: "created_at",
- header: t("MachinaryOffice.created_at"),
+ header: t("ReserveLoan.created_at"),
enableColumnFilter: true,
datatype: "date",
filterFn: "lessThan",
@@ -178,7 +178,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.phone_number,
id: "phone_number",
- header: t("MachinaryOffice.phone_number"),
+ header: t("ReserveLoan.phone_number"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -197,7 +197,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.statement_count,
id: "statement_count",
- header: t("MachinaryOffice.statement_count"),
+ header: t("ReserveLoan.statement_count"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -211,7 +211,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.navgan_capacity,
id: "navgan_capacity",
- header: t("MachinaryOffice.navgan_capacity"),
+ header: t("ReserveLoan.navgan_capacity"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -230,7 +230,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.manufacture_date,
id: "manufacture_date",
- header: t("MachinaryOffice.manufacture_date"),
+ header: t("ReserveLoan.manufacture_date"),
enableColumnFilter: true,
datatype: "numeric",
filterFn: "equals",
@@ -249,7 +249,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.vehicle_type,
id: "vehicle_type",
- header: t("MachinaryOffice.vehicle_type"),
+ header: t("ReserveLoan.vehicle_type"),
enableColumnFilter: true,
datatype: "text",
filterFn: "contains",
@@ -261,7 +261,7 @@ function DashboardReserveLoan() {
{
accessorFn: (row) => row.plate_number,
id: "plate_number",
- header: t("MachinaryOffice.plate_number"),
+ header: t("ReserveLoan.plate_number"),
enableColumnFilter: false,
datatype: "text",
filterFn: "contains",
@@ -288,10 +288,190 @@ function DashboardReserveLoan() {
),
},
+ {
+ accessorFn: (row) => row.approved_amount,
+ id: "approved_amount",
+ header: t("ReserveLoan.approved_amount"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_bank,
+ id: "facility_bank",
+ header: t("ReserveLoan.facility_bank"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_gov,
+ id: "facility_gov",
+ header: t("ReserveLoan.facility_gov"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_person,
+ id: "facility_person",
+ header: t("ReserveLoan.facility_person"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.physical_progress,
+ id: "physical_progress",
+ header: t("ReserveLoan.physical_progress"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.repayment_period,
+ id: "repayment_period",
+ header: t("ReserveLoan.repayment_period"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.sakht_period,
+ id: "sakht_period",
+ header: t("ReserveLoan.sakht_period"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals"
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.tanafos_period,
+ id: "tanafos_period",
+ header: t("ReserveLoan.tanafos_period"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals"
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.committed_employment,
+ id: "committed_employment",
+ header: t("ReserveLoan.committed_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.existing_employment,
+ id: "existing_employment",
+ header: t("ReserveLoan.existing_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.state_name,
id: "state_id",
- header: t("MachinaryOffice.state_name"),
+ header: t("ReserveLoan.state_name"),
enableColumnFilter: false,
datatype: "numeric",
Cell: ({renderedCellValue}) => (
diff --git a/src/components/dashboard/transportation-assistance/Form/ConfirmForm/ConfirmContent.jsx b/src/components/dashboard/transportation-assistance/Form/ConfirmForm/ConfirmContent.jsx
index 427d3a3..c3b04b4 100644
--- a/src/components/dashboard/transportation-assistance/Form/ConfirmForm/ConfirmContent.jsx
+++ b/src/components/dashboard/transportation-assistance/Form/ConfirmForm/ConfirmContent.jsx
@@ -180,13 +180,23 @@ const ConfirmContent = ({rowId, mutate, setOpenConfirmDialog, handleSizeChangeCl
{loading ? :
<>
+
+
+
{renderCustomAccordions()}
>
}
diff --git a/src/components/dashboard/transportation-assistance/index.jsx b/src/components/dashboard/transportation-assistance/index.jsx
index 2890c68..2d00fe8 100644
--- a/src/components/dashboard/transportation-assistance/index.jsx
+++ b/src/components/dashboard/transportation-assistance/index.jsx
@@ -232,25 +232,6 @@ function DashboardTransportationAssistanceComponent() {
),
},
- {
- accessorFn: (row) => row.proposed_amount,
- id: "proposed_amount",
- header: t("TransportationAssistance.proposed_amount"),
- enableColumnFilter: true,
- datatype: "numeric",
- filterFn: "equals",
- columnFilterModeOptions: [
- "equals",
- "notEquals",
- "contains",
- "lessThan",
- "greaterThan",
- "between",
- ],
- Cell: ({renderedCellValue}) => (
- {renderedCellValue / 1000000}
- ),
- },
{
accessorFn: (row) => row.approved_amount,
id: "approved_amount",
@@ -270,6 +251,101 @@ function DashboardTransportationAssistanceComponent() {
{renderedCellValue / 1000000}
),
},
+ {
+ accessorFn: (row) => row.facility_bank,
+ id: "facility_bank",
+ header: t("TransportationAssistance.facility_bank"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_gov,
+ id: "facility_gov",
+ header: t("TransportationAssistance.facility_gov"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.facility_person,
+ id: "facility_person",
+ header: t("TransportationAssistance.facility_person"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue / 1000000}
+ ),
+ },
+ {
+ accessorFn: (row) => row.physical_progress,
+ id: "physical_progress",
+ header: t("TransportationAssistance.physical_progress"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.repayment_period,
+ id: "repayment_period",
+ header: t("TransportationAssistance.repayment_period"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.sakht_period,
id: "sakht_period",
@@ -298,6 +374,44 @@ function DashboardTransportationAssistanceComponent() {
{renderedCellValue}
),
},
+ {
+ accessorFn: (row) => row.committed_employment,
+ id: "committed_employment",
+ header: t("TransportationAssistance.committed_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
+ {
+ accessorFn: (row) => row.existing_employment,
+ id: "existing_employment",
+ header: t("TransportationAssistance.existing_employment"),
+ enableColumnFilter: true,
+ datatype: "numeric",
+ filterFn: "equals",
+ columnFilterModeOptions: [
+ "equals",
+ "notEquals",
+ "contains",
+ "lessThan",
+ "greaterThan",
+ "between",
+ ],
+ Cell: ({renderedCellValue}) => (
+ {renderedCellValue}
+ ),
+ },
{
accessorFn: (row) => row.state_name,
id: "state_id",
diff --git a/src/core/components/NumberShowBox.jsx b/src/core/components/NumberShowBox.jsx
index b8e45b1..264a7f4 100644
--- a/src/core/components/NumberShowBox.jsx
+++ b/src/core/components/NumberShowBox.jsx
@@ -8,7 +8,7 @@ const NumberShowBox = ({showNumber, headerTitle, unitTitle}) => {
sx={{color: "primary.main", fontWeight: 500}}>{headerTitle}
{isNaN(showNumber) || showNumber === null
- ? ""
+ ? "0"
: (showNumber).toLocaleString()}{" "}
{unitTitle}
diff --git a/src/core/data/sidebarMenu.jsx b/src/core/data/sidebarMenu.jsx
index c9b10f1..646a82e 100644
--- a/src/core/data/sidebarMenu.jsx
+++ b/src/core/data/sidebarMenu.jsx
@@ -1,6 +1,4 @@
import SpaceDashboardIcon from "@mui/icons-material/SpaceDashboard";
-import DirectionsCarFilledIcon from "@mui/icons-material/DirectionsCarFilled";
-import AirlineSeatReclineNormalIcon from "@mui/icons-material/AirlineSeatReclineNormal";
import DirectionsRailwayIcon from "@mui/icons-material/DirectionsRailway";
import AssignmentIndIcon from "@mui/icons-material/AssignmentInd";
import DesktopWindowsIcon from "@mui/icons-material/DesktopWindows";
@@ -48,26 +46,6 @@ const sidebarMenu = [
permissions: ["view_navgan_loans", "view_navgan_loans_province"],
},
], [
- {
- key: "sidebar.passenger-office-chief",
- secondary: "secondary.navgan-province-manager",
- name: "passenger_office_chief",
- type: "page",
- route: "/dashboard/passenger-office-chief",
- icon: ,
- selected: false,
- permissions: ["manage_passenger_office_navgan"],
- },
- {
- key: "sidebar.machinery-expert",
- secondary: "secondary.navgan-province-manager",
- name: "machinery_expert",
- type: "page",
- route: "/dashboard/machinery-expert",
- icon: ,
- selected: false,
- permissions: ["manage_machinery_navgan"],
- },
{
key: "sidebar.reserve-loan",
secondary: "secondary.navgan-province-manager",
diff --git a/src/pages/dashboard/machinery-expert/index.jsx b/src/pages/dashboard/machinery-expert/index.jsx
deleted file mode 100644
index df23f2e..0000000
--- a/src/pages/dashboard/machinery-expert/index.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import DashboardMachineryOfficeComponent from "@/components/dashboard/machinary-office";
-import {parse} from "next-useragent";
-
-export default function PassengerOffice() {
- return (
-
- );
-}
-
-export async function getServerSideProps({req, locale}) {
- const {isBot} = parse(req.headers["user-agent"]);
- return {
- props: {
- messages: (await import(`&/locales/${locale}/app.json`)).default,
- title: "Dashboard.machinary_office_page",
- isBot,
- locale,
- layout: {name: 'DashboardLayout', props: {permissions: ["manage_machinery_navgan"]}}
- },
- };
-}
diff --git a/src/pages/dashboard/machinery-expert/prints/report.jsx b/src/pages/dashboard/machinery-expert/prints/report.jsx
deleted file mode 100644
index 526851b..0000000
--- a/src/pages/dashboard/machinery-expert/prints/report.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import {parse} from "next-useragent";
-import ReportComponent from "@/components/dashboard/machinary-office/Prints/report";
-
-export default function Report() {
- return (
-
- )
-}
-
-export async function getServerSideProps({req, locale}) {
- const {isBot} = parse(req.headers["user-agent"]);
- return {
- props: {
- messages: (await import(`&/locales/${locale}/app.json`)).default,
- title: "Dashboard.machinary_office_page",
- isBot,
- locale,
- layout: {name: 'PrintLayout'}
- },
- };
-}
\ No newline at end of file
diff --git a/src/pages/dashboard/passenger-office-chief/index.jsx b/src/pages/dashboard/passenger-office-chief/index.jsx
deleted file mode 100644
index 5ca084e..0000000
--- a/src/pages/dashboard/passenger-office-chief/index.jsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import DashboardPassengerOfficeComponent from "@/components/dashboard/passenger-office";
-import {parse} from "next-useragent";
-
-export default function PassengerOffice() {
- return (
-
- );
-}
-
-export async function getServerSideProps({req, locale}) {
- const {isBot} = parse(req.headers["user-agent"]);
- return {
- props: {
- messages: (await import(`&/locales/${locale}/app.json`)).default,
- title: "Dashboard.passenger_office_page",
- isBot,
- locale,
- layout: {name: 'DashboardLayout', props: {permissions: ["manage_passenger_office_navgan"]}}
- },
- };
-}