diff --git a/.gitignore b/.gitignore index ccfafdc..a59383e 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,6 @@ cypress/screenshots .env .idea package-lock.json -ecosystem.config \ No newline at end of file +ecosystem.config + +public/config.json \ No newline at end of file diff --git a/package.json b/package.json index e44361c..9b8b7b0 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@mui/icons-material": "^5.11.16", "@mui/lab": "^5.0.0-alpha.152", "@mui/material": "^5.12.0", - "@witel/webapp-builder": "^1.0.2", + "@witel/webapp-builder": "^1.0.6", "axios": "^1.4.0", "colord": "^2.9.3", "eslint": "8.36.0", diff --git a/public/config.json.example b/public/config.json.example new file mode 100644 index 0000000..59e8e23 --- /dev/null +++ b/public/config.json.example @@ -0,0 +1,36 @@ +{ + "time_lines": { + "navgan_first_page": [ + { + "date": { + "from": "1402/09/01", + "to": "1402/09/10" + }, + "label": { + "primary": "ثبت نام متقاضی", + "secondary": "ثبت نام متقاضیان واجد شرایط" + } + }, + { + "date": { + "from": "1402/09/15", + "to": "1402/11/10" + }, + "label": { + "primary": "صحت سنجی متقاضیان", + "secondary": "بررسی و کارشناسی درخواست ها" + } + }, + { + "date": { + "from": "1402/11/10", + "to": "1402/12/20" + }, + "label": { + "primary": "ارجاع به بانک", + "secondary": "فرآیند معرفی ضامن و پرداخت" + } + } + ] + } +} \ No newline at end of file diff --git a/public/locales/fa/app.json b/public/locales/fa/app.json index 2eeb753..6978a5d 100644 --- a/public/locales/fa/app.json +++ b/public/locales/fa/app.json @@ -18,6 +18,7 @@ "upload_file_text": "بارگذاری فایل", "online_message": "شما به اینترنت وصل هستید", "offline_message": "اتصال شما به اینترنت قطع شده است", + "routing_to": "در حال انتقال به صفحه", "header": { "open_profile": "پروفایل", "edit_profile": "ویرایش پروفایل", diff --git a/src/components/first/LoanDescription/TimeLineDetails.jsx b/src/components/first/LoanDescription/TimeLineDetails.jsx index 5feb4fe..d57064b 100644 --- a/src/components/first/LoanDescription/TimeLineDetails.jsx +++ b/src/components/first/LoanDescription/TimeLineDetails.jsx @@ -1,19 +1,74 @@ import {useTranslations} from "next-intl"; +import {useEffect, useState} from "react"; +import {useRequest} from "@witel/webapp-builder"; +import TimelineManager from "@/core/components/timelines/timelineManager"; +import moment from "jalali-moment"; import {Timeline} from "@mui/lab"; -import OpenTimeLine from "@/core/components/timelines/OpenTimeLine"; -import InProgressTimeLine from "@/core/components/timelines/InProgressTimeLine"; +import {LinearProgress} from "@mui/material"; const TimeLineDetails = () => { const t = useTranslations(); + const request = useRequest({notification: false, auth: false}) + const [timeLineList, setTimeLineList] = useState([]) + const [loading, setLoading] = useState(true) + + useEffect(() => { + setLoading(true) + request(process.env.NEXT_PUBLIC_CONFIG_APP_URL, 'get').then(res => { + let tempArr = [] + for (const timeLine of res.data.time_lines.navgan_first_page) { + let temp = {} + temp['label'] = timeLine.label + temp['date'] = moment(timeLine.date.from, 'jYYYY/jMM/jDD').locale('fa').format('jD jMMMM') + const fromDate = moment(timeLine.date.from, 'jYYYY/jMM/jDD') + const toDate = moment(timeLine.date.to, 'jYYYY/jMM/jDD') + const today = moment() + if (today.isBetween(fromDate, toDate, null, '[]')) { + temp['status'] = 'in progress' + } else if (today.isAfter(toDate, null)) { + temp['status'] = 'done' + } else if (today.isBefore(fromDate, null)) { + temp['status'] = 'open' + } + tempArr.push(temp) + } + setTimeLineList(tempArr) + setLoading(false) + }).catch(() => { + setLoading(false) + }) + }, []); + return ( - - - - - + <> + {loading ? ( + + ) : ( + + {timeLineList.map((timeLine, index) => ( + + )) + } + + )} + ) + // return ( + // + // + // + // + // + // ) } export default TimeLineDetails \ No newline at end of file diff --git a/src/core/components/timelines/timelineManager.jsx b/src/core/components/timelines/timelineManager.jsx new file mode 100644 index 0000000..292c3d1 --- /dev/null +++ b/src/core/components/timelines/timelineManager.jsx @@ -0,0 +1,16 @@ +import OpenTimeLine from "@/core/components/timelines/OpenTimeLine"; +import InProgressTimeLine from "@/core/components/timelines/InProgressTimeLine"; +import DoneTimeLine from "@/core/components/timelines/DoneTimeLine"; + +const TimelineManager = (props) => { + switch (props.status) { + case 'open': + return + case 'in progress': + return + case 'done': + return + } +} + +export default TimelineManager \ No newline at end of file diff --git a/src/core/data/sidebarMenu.js b/src/core/data/sidebarMenu.js index 1869bae..5f24a93 100644 --- a/src/core/data/sidebarMenu.js +++ b/src/core/data/sidebarMenu.js @@ -6,27 +6,30 @@ const sidebarMenu = [ [ { key: "sidebar.dashboard", + name: "sidebar.dashboard", type: "page", route: "/dashboard", - icon: , + icon: , selected: false, - permission_name: "all" + permission: "all" }, { key: "sidebar.add-request-loan", + name: "sidebar.add-request-loan", type: "page", route: "/dashboard/navgan/add-request-loan", - icon: , + icon: , selected: false, - permission_name: "can_request_a_new_loan" + permission: "can_request_a_new_loan" }, { key: "sidebar.followUp-loan", + name: "sidebar.followUp-loan", type: "page", route: "/dashboard/navgan/followUp-loan", - icon: , + icon: , selected: false, - permission_name: "all" + permission: "all" }, ], ]; diff --git a/src/layouts/dashboard.jsx b/src/layouts/dashboard.jsx index 945416c..9b1a916 100644 --- a/src/layouts/dashboard.jsx +++ b/src/layouts/dashboard.jsx @@ -1,13 +1,21 @@ -import {DashboardLayout as DashboardLayoutPure} from "@witel/webapp-builder"; +import {DashboardLayout as DashboardLayoutPure, useUser} from "@witel/webapp-builder"; import headerProfileItems from "@/core/data/headerProfileItems"; import sidebarMenu from "@/core/data/sidebarMenu"; import {GET_SIDEBAR_NOTIFICATION} from "@/core/data/apiRoutes"; const DashboardLayout = (props) => { + const {user} = useUser() return ( <> - + ) }