Merge branch 'feature/sidebar_notification' into 'develop'
Feature/sidebar notification See merge request witel3/loan-facilities-expert!74
This commit is contained in:
@@ -18,6 +18,8 @@ import {useFormik} from "formik";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import {CONFIRM_COMMERCIAL_CHIEF} from "@/core/data/apiRoutes";
|
import {CONFIRM_COMMERCIAL_CHIEF} from "@/core/data/apiRoutes";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -27,6 +29,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -42,6 +45,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import UploadSystem from "@/core/components/UploadSystem";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -28,6 +30,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -48,6 +51,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ import {useFormik} from "formik";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import {CONFIRM_DEVELOPMENT_ASSISTANT} from "@/core/data/apiRoutes";
|
import {CONFIRM_DEVELOPMENT_ASSISTANT} from "@/core/data/apiRoutes";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -27,6 +29,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -42,6 +45,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import UploadSystem from "@/core/components/UploadSystem";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -28,6 +30,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -48,6 +51,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ import {useFormik} from "formik";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import {CONFIRM_INSPECTOR_EXPERT} from "@/core/data/apiRoutes";
|
import {CONFIRM_INSPECTOR_EXPERT} from "@/core/data/apiRoutes";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -27,6 +29,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -42,6 +45,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import useDirection from "@/lib/app/hooks/useDirection";
|
import useDirection from "@/lib/app/hooks/useDirection";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -30,6 +32,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const {directionApp} = useDirection();
|
const {directionApp} = useDirection();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -50,6 +53,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -16,11 +16,14 @@ import * as Yup from "yup";
|
|||||||
import {useState} from "react";
|
import {useState} from "react";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
import EditIcon from "@mui/icons-material/Edit";
|
import EditIcon from "@mui/icons-material/Edit";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Revise = ({rowId, fetchUrl, mutate}) => {
|
const Revise = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("ReviseDialog.description_error")),
|
description: Yup.string().required(t("ReviseDialog.description_error")),
|
||||||
@@ -39,6 +42,7 @@ const Revise = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import {CONFIRM_MACHINARY_OFFICE} from "@/core/data/apiRoutes";
|
import {CONFIRM_MACHINARY_OFFICE} from "@/core/data/apiRoutes";
|
||||||
import * as Yup from "yup";
|
import * as Yup from "yup";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -30,6 +32,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
proposed_amount: Yup.number().positive(t("ConfirmDialog.proposed_amount_positive")).required(t("ConfirmDialog.proposed_amount_error")),
|
proposed_amount: Yup.number().positive(t("ConfirmDialog.proposed_amount_positive")).required(t("ConfirmDialog.proposed_amount_error")),
|
||||||
@@ -51,6 +54,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import useDirection from "@/lib/app/hooks/useDirection";
|
import useDirection from "@/lib/app/hooks/useDirection";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -30,6 +32,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const {directionApp} = useDirection();
|
const {directionApp} = useDirection();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -50,6 +53,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import {useFormik} from "formik";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import {CONFIRM_NAVGAN_PROVINCE_MANAGER} from "@/core/data/apiRoutes";
|
import {CONFIRM_NAVGAN_PROVINCE_MANAGER} from "@/core/data/apiRoutes";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -29,6 +31,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -44,6 +47,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import useDirection from "@/lib/app/hooks/useDirection";
|
import useDirection from "@/lib/app/hooks/useDirection";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -30,6 +32,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const {directionApp} = useDirection();
|
const {directionApp} = useDirection();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -50,6 +53,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import * as Yup from "yup";
|
import * as Yup from "yup";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
import {CONFIRM_PASSENGER_BOSS} from "@/core/data/apiRoutes";
|
import {CONFIRM_PASSENGER_BOSS} from "@/core/data/apiRoutes";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -30,6 +32,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
approved_amount: Yup.number().positive(t("ConfirmDialog.approved_amount_positive")).required(t("ConfirmDialog.approved_amount_error"))
|
approved_amount: Yup.number().positive(t("ConfirmDialog.approved_amount_positive")).required(t("ConfirmDialog.approved_amount_error"))
|
||||||
@@ -51,6 +54,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import useDirection from "@/lib/app/hooks/useDirection";
|
import useDirection from "@/lib/app/hooks/useDirection";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -30,6 +32,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const {directionApp} = useDirection();
|
const {directionApp} = useDirection();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -50,6 +53,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import {useFormik} from "formik";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
import {CONFIRM_PASSENGER_OFFICE} from "@/core/data/apiRoutes";
|
import {CONFIRM_PASSENGER_OFFICE} from "@/core/data/apiRoutes";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -29,6 +30,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -44,6 +46,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import useDirection from "@/lib/app/hooks/useDirection";
|
import useDirection from "@/lib/app/hooks/useDirection";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -30,6 +32,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const {directionApp} = useDirection();
|
const {directionApp} = useDirection();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -50,6 +53,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ import {useFormik} from "formik";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import {CONFIRM_PROVINCE_HEAD_EXPERT} from "@/core/data/apiRoutes";
|
import {CONFIRM_PROVINCE_HEAD_EXPERT} from "@/core/data/apiRoutes";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -27,6 +29,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -42,6 +45,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import useDirection from "@/lib/app/hooks/useDirection";
|
import useDirection from "@/lib/app/hooks/useDirection";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -30,6 +32,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const {directionApp} = useDirection();
|
const {directionApp} = useDirection();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -50,6 +53,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -16,11 +16,14 @@ import {useFormik} from "formik";
|
|||||||
import {REVISE_PROVINCE_HEAD_EXPERT} from "@/core/data/apiRoutes";
|
import {REVISE_PROVINCE_HEAD_EXPERT} from "@/core/data/apiRoutes";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
import * as Yup from "yup";
|
import * as Yup from "yup";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Revise = ({rowId, fetchUrl, mutate}) => {
|
const Revise = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -39,6 +42,7 @@ const Revise = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import {useFormik} from "formik";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
import {CONFIRM_REFAHI_PROVINCE_MANAGER} from "@/core/data/apiRoutes";
|
import {CONFIRM_REFAHI_PROVINCE_MANAGER} from "@/core/data/apiRoutes";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -29,6 +31,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -44,6 +47,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import useDirection from "@/lib/app/hooks/useDirection";
|
import useDirection from "@/lib/app/hooks/useDirection";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -30,6 +32,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const {directionApp} = useDirection();
|
const {directionApp} = useDirection();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -50,6 +53,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import {useFormik} from "formik";
|
|||||||
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
import UploadFileNotification from "@/core/components/notifications/UploadFileNotification";
|
||||||
import {CONFIRM_TRANSPORTATION_ASSISTANCE} from "@/core/data/apiRoutes";
|
import {CONFIRM_TRANSPORTATION_ASSISTANCE} from "@/core/data/apiRoutes";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
const Confirm = ({rowId, fetchUrl, mutate}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
@@ -29,6 +31,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const [showAddIcon, setShowAddIcon] = useState(true);
|
const [showAddIcon, setShowAddIcon] = useState(true);
|
||||||
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
const [openConfirmDialog, setOpenConfirmDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const formik = useFormik({
|
const formik = useFormik({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@@ -44,6 +47,7 @@ const Confirm = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import UploadFileNotification from "@/core/components/notifications/UploadFileNo
|
|||||||
import useDirection from "@/lib/app/hooks/useDirection";
|
import useDirection from "@/lib/app/hooks/useDirection";
|
||||||
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
import ThumbDownIcon from "@mui/icons-material/ThumbDown";
|
||||||
import useRequest from "@/lib/app/hooks/useRequest";
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
|
|
||||||
const Reject = ({rowId, fetchUrl, mutate}) => {
|
const Reject = ({rowId, fetchUrl, mutate}) => {
|
||||||
const [selectedImage, setSelectedImage] = useState("");
|
const [selectedImage, setSelectedImage] = useState("");
|
||||||
@@ -30,6 +32,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
const {directionApp} = useDirection();
|
const {directionApp} = useDirection();
|
||||||
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
const [openRejectDialog, setOpenRejectDialog] = useState(false);
|
||||||
const requestServer = useRequest({auth: true})
|
const requestServer = useRequest({auth: true})
|
||||||
|
const {update_notification} = useNotification()
|
||||||
|
|
||||||
const validationSchema = Yup.object().shape({
|
const validationSchema = Yup.object().shape({
|
||||||
description: Yup.string().required(t("RejectDialog.description_error")),
|
description: Yup.string().required(t("RejectDialog.description_error")),
|
||||||
@@ -50,6 +53,7 @@ const Reject = ({rowId, fetchUrl, mutate}) => {
|
|||||||
data: formData,
|
data: formData,
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
mutate(fetchUrl)
|
mutate(fetchUrl)
|
||||||
|
update_notification()
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
|
|||||||
@@ -128,3 +128,8 @@ export const REVISE_PROVINCE_HEAD_EXPERT =
|
|||||||
BASE_URL + "/dashboard/province_head_expert/revise";
|
BASE_URL + "/dashboard/province_head_expert/revise";
|
||||||
//province head expert
|
//province head expert
|
||||||
|
|
||||||
|
//sidebar notification
|
||||||
|
export const GET_SIDEBAR_NOTIFICATION =
|
||||||
|
BASE_URL + "/dashboard/notification"
|
||||||
|
//sidebar notification
|
||||||
|
|
||||||
|
|||||||
@@ -18,92 +18,102 @@ const sidebarMenu = [
|
|||||||
route: "/dashboard",
|
route: "/dashboard",
|
||||||
icon: <SpaceDashboardIcon/>,
|
icon: <SpaceDashboardIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "all",
|
permission: "all",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.passenger-office-chief",
|
key: "sidebar.passenger-office-chief",
|
||||||
secondary: "secondary.passenger-office",
|
secondary: "secondary.passenger-office",
|
||||||
|
name: "passenger_office_chief",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/passenger-office-chief",
|
route: "/dashboard/passenger-office-chief",
|
||||||
icon: <AirlineSeatReclineNormalIcon/>,
|
icon: <AirlineSeatReclineNormalIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "passenger_office_chief",
|
permission: "manage_passenger_office_navgan",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.machinery-expert",
|
key: "sidebar.machinery-expert",
|
||||||
|
name: "machinery_expert",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/machinery-expert",
|
route: "/dashboard/machinery-expert",
|
||||||
icon: <DirectionsCarFilledIcon/>,
|
icon: <DirectionsCarFilledIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "machinery_expert",
|
permission: "manage_machinery_navgan",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.passenger-boss",
|
key: "sidebar.passenger-boss",
|
||||||
secondary: "secondary.passenger-boss",
|
secondary: "secondary.passenger-boss",
|
||||||
|
name: "province_manager_navgan",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/passenger-boss",
|
route: "/dashboard/passenger-boss",
|
||||||
icon: <AssignmentIndIcon/>,
|
icon: <AssignmentIndIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "passenger_office_chief",
|
permission: "manage_province_working_group_navgan",
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
key: "sidebar.transportation-assistant",
|
key: "sidebar.transportation-assistant",
|
||||||
|
name: "transportation_assistant",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/transportation-assistant",
|
route: "/dashboard/transportation-assistant",
|
||||||
icon: <DirectionsRailwayIcon/>,
|
icon: <DirectionsRailwayIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "transportation_assistant",
|
permission: "manage_transportation_navgan",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.navgan-province-manager",
|
key: "sidebar.navgan-province-manager",
|
||||||
secondary: "secondary.navgan-province-manager",
|
secondary: "secondary.navgan-province-manager",
|
||||||
|
name: "province_manager_navgan",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/navgan-province-manager",
|
route: "/dashboard/navgan-province-manager",
|
||||||
icon: <DesktopWindowsIcon/>,
|
icon: <DesktopWindowsIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "province_manager",
|
permission: "manage_province_affairs_navgan",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.province-head-expert",
|
key: "sidebar.province-head-expert",
|
||||||
|
name: "province_head_expert",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/province-head-expert",
|
route: "/dashboard/province-head-expert",
|
||||||
icon: <GavelIcon/>,
|
icon: <GavelIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "province_head_expert",
|
permission: "manage_province_headquarter_refahi",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.inspector-expert",
|
key: "sidebar.inspector-expert",
|
||||||
|
name: "inspector_expert",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/inspector-expert",
|
route: "/dashboard/inspector-expert",
|
||||||
icon: <GradingIcon/>,
|
icon: <GradingIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "inspector_expert",
|
permission: "manage_inspector_refahi",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.commercial-chief",
|
key: "sidebar.commercial-chief",
|
||||||
|
name: "commercial_chief",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/commercial-chief",
|
route: "/dashboard/commercial-chief",
|
||||||
icon: <BusinessCenterIcon/>,
|
icon: <BusinessCenterIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "commercial_chief",
|
permission: "manage_commercial_refahi",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.development-assistant",
|
key: "sidebar.development-assistant",
|
||||||
|
name: "development_assistant",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/development-assistant",
|
route: "/dashboard/development-assistant",
|
||||||
icon: <Diversity3Icon/>,
|
icon: <Diversity3Icon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "development_assistant",
|
permission: "manage_development_refahi",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "sidebar.refahi-province-manager",
|
key: "sidebar.refahi-province-manager",
|
||||||
secondary: "secondary.refahi-province-manager",
|
secondary: "secondary.refahi-province-manager",
|
||||||
|
name: "province_manager_refahi",
|
||||||
type: "page",
|
type: "page",
|
||||||
route: "/dashboard/refahi-province-manager",
|
route: "/dashboard/refahi-province-manager",
|
||||||
icon: <SupervisedUserCircleIcon/>,
|
icon: <SupervisedUserCircleIcon/>,
|
||||||
selected: false,
|
selected: false,
|
||||||
role: "province_manager",
|
permission: "manage_province_affairs_refahi",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ export default function SidebarList({handleDrawerToggle}) {
|
|||||||
}, [router.pathname]);
|
}, [router.pathname]);
|
||||||
|
|
||||||
const filteredItemMenu = itemMenu[0].filter(
|
const filteredItemMenu = itemMenu[0].filter(
|
||||||
(item) => user.role.includes(item.role) || item.role === "all"
|
(item) => user.permissions.includes(item.permission) || item.permission === "all"
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -5,16 +5,19 @@ import {Badge, IconButton, ListItem, ListItemButton, ListItemIcon, ListItemText,
|
|||||||
import {useTranslations} from "next-intl";
|
import {useTranslations} from "next-intl";
|
||||||
import {Fragment} from "react";
|
import {Fragment} from "react";
|
||||||
import SidebarListSubItem from "./SidebarListSubItem";
|
import SidebarListSubItem from "./SidebarListSubItem";
|
||||||
|
import useNotification from "@/lib/app/hooks/useNotification";
|
||||||
|
|
||||||
const SidebarListItem = ({item, dispatch, handleDrawerToggle}) => {
|
const SidebarListItem = ({item, dispatch, handleDrawerToggle}) => {
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
const {notification_count} = useNotification()
|
||||||
|
console.log(notification_count)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Fragment key={item.key}>
|
<Fragment key={item.key}>
|
||||||
<ListItem disablePadding secondaryAction={
|
<ListItem disablePadding secondaryAction={
|
||||||
<IconButton>
|
<IconButton>
|
||||||
<Badge
|
<Badge
|
||||||
badgeContent="56"
|
badgeContent={notification_count ? notification_count[item.name] : 0}
|
||||||
color="error"
|
color="error"
|
||||||
variant="standard"
|
variant="standard"
|
||||||
anchorOrigin={{
|
anchorOrigin={{
|
||||||
|
|||||||
26
src/lib/app/hooks/useNotification.jsx
Normal file
26
src/lib/app/hooks/useNotification.jsx
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import useSWR from 'swr'
|
||||||
|
import {GET_SIDEBAR_NOTIFICATION} from "@/core/data/apiRoutes";
|
||||||
|
import useRequest from "@/lib/app/hooks/useRequest";
|
||||||
|
|
||||||
|
const useNotification = () => {
|
||||||
|
const requestServer = useRequest({auth: true})
|
||||||
|
|
||||||
|
//swr config
|
||||||
|
const fetcher = (...args) => {
|
||||||
|
return requestServer(args, 'get', {
|
||||||
|
pending: false,
|
||||||
|
success: {notification: {show: false}}
|
||||||
|
}).then((response) => {
|
||||||
|
return response.data.data;
|
||||||
|
}).catch(() => {
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
const {data, mutate} = useSWR(GET_SIDEBAR_NOTIFICATION, fetcher)
|
||||||
|
const notification_count = data
|
||||||
|
//swr config
|
||||||
|
|
||||||
|
// render data
|
||||||
|
return {notification_count, update_notification: mutate}
|
||||||
|
}
|
||||||
|
export default useNotification
|
||||||
@@ -9,7 +9,7 @@ const RolePermissionMiddleware = ({children, requiredPermissions}) => {
|
|||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
const hasPermission = requiredPermissions.some((permission) =>
|
const hasPermission = requiredPermissions.some((permission) =>
|
||||||
user?.role?.includes(permission)
|
user?.permissions?.includes(permission)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!hasPermission) {
|
if (!hasPermission) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import WithAuthMiddleware from "@/middlewares/WithAuth";
|
|||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
import DashboardCommercialChiefComponent from "@/components/dashboard/commercial-chief";
|
import DashboardCommercialChiefComponent from "@/components/dashboard/commercial-chief";
|
||||||
|
|
||||||
const requiredPermissions = ["commercial_chief"];
|
const requiredPermissions = ["manage_commercial_refahi"];
|
||||||
export default function CommercialChief() {
|
export default function CommercialChief() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import WithAuthMiddleware from "@/middlewares/WithAuth";
|
|||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
import DashboardDevelopmentAssistantComponent from "@/components/dashboard/development-assistant";
|
import DashboardDevelopmentAssistantComponent from "@/components/dashboard/development-assistant";
|
||||||
|
|
||||||
const requiredPermissions = ["development_assistant"];
|
const requiredPermissions = ["manage_development_refahi"];
|
||||||
export default function DevelopmentAssistant() {
|
export default function DevelopmentAssistant() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import WithAuthMiddleware from "@/middlewares/WithAuth";
|
|||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
import DashboardInspectorExpertComponent from "@/components/dashboard/inspector-expert";
|
import DashboardInspectorExpertComponent from "@/components/dashboard/inspector-expert";
|
||||||
|
|
||||||
const requiredPermissions = ["inspector_expert"];
|
const requiredPermissions = ["manage_inspector_refahi"];
|
||||||
export default function InspectorExpert() {
|
export default function InspectorExpert() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import RolePermissionMiddleware from "@/middlewares/RolePermission";
|
|||||||
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
|
|
||||||
const requiredPermissions = ["machinery_expert"];
|
const requiredPermissions = ["manage_machinery_navgan"];
|
||||||
export default function PassengerOffice() {
|
export default function PassengerOffice() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import RolePermissionMiddleware from "@/middlewares/RolePermission";
|
|||||||
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
|
|
||||||
const requiredPermissions = ["province_manager"];
|
const requiredPermissions = ["manage_province_affairs_navgan"];
|
||||||
export default function PassengerOffice() {
|
export default function PassengerOffice() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import RolePermissionMiddleware from "@/middlewares/RolePermission";
|
|||||||
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
|
|
||||||
const requiredPermissions = ["passenger_office_chief"];
|
const requiredPermissions = ["manage_working_group_navgan"];
|
||||||
export default function PassengerBoss() {
|
export default function PassengerBoss() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import RolePermissionMiddleware from "@/middlewares/RolePermission";
|
|||||||
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
|
|
||||||
const requiredPermissions = ["passenger_office_chief"];
|
const requiredPermissions = ["manage_passenger_office_navgan"];
|
||||||
export default function PassengerOffice() {
|
export default function PassengerOffice() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import WithAuthMiddleware from "@/middlewares/WithAuth";
|
|||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
import DashboardProvinceHeadExpertComponent from "@/components/dashboard/province-head-expert";
|
import DashboardProvinceHeadExpertComponent from "@/components/dashboard/province-head-expert";
|
||||||
|
|
||||||
const requiredPermissions = ["province_head_expert"];
|
const requiredPermissions = ["manage_province_headquarter_refahi"];
|
||||||
export default function ProvinceHeadExpertOffice() {
|
export default function ProvinceHeadExpertOffice() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import WithAuthMiddleware from "@/middlewares/WithAuth";
|
|||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
import DashboardRefahiProvinceManagerComponent from "@/components/dashboard/refahi-province-manager";
|
import DashboardRefahiProvinceManagerComponent from "@/components/dashboard/refahi-province-manager";
|
||||||
|
|
||||||
const requiredPermissions = ["province_manager"];
|
const requiredPermissions = ["manage_province_affairs_refahi"];
|
||||||
export default function RefahiProvinceManager() {
|
export default function RefahiProvinceManager() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import RolePermissionMiddleware from "@/middlewares/RolePermission";
|
|||||||
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
import WithAuthMiddleware from "@/middlewares/WithAuth";
|
||||||
import {parse} from "next-useragent";
|
import {parse} from "next-useragent";
|
||||||
|
|
||||||
const requiredPermissions = ["transportation_assistant"];
|
const requiredPermissions = ["manage_transportation_navgan"];
|
||||||
export default function TransportationAssistance() {
|
export default function TransportationAssistance() {
|
||||||
return (
|
return (
|
||||||
<WithAuthMiddleware>
|
<WithAuthMiddleware>
|
||||||
|
|||||||
Reference in New Issue
Block a user