Bulk List ************************************************** import AppAnimate from "@crema/core/AppAnimate"; import moment from "moment"; import AppCard from "@crema/core/AppCard"; import AppGridContainer from "@crema/core/AppGridContainer"; import { useAuthUser } from "@crema/utility/AuthHooks"; import IntlMessages from "@crema/utility/IntlMessages"; import CloseIcon from "@mui/icons-material/Close"; import { AddLocation, PermContactCalendar, PersonOutlineOutlined, ExitToApp, } from "@mui/icons-material"; import CalendarTodayOutlinedIcon from "@mui/icons-material/CalendarTodayOutlined"; import FmdGoodOutlinedIcon from "@mui/icons-material/FmdGoodOutlined"; import ContentCopyOutlinedIcon from "@mui/icons-material/ContentCopyOutlined"; import BorderColorOutlinedIcon from "@mui/icons-material/BorderColorOutlined"; import DeleteOutlinedIcon from "@mui/icons-material/DeleteOutlined"; import CropPortraitIcon from "@mui/icons-material/CropPortrait"; import AddIcon from "@mui/icons-material/Add"; import { ICretehealthSafetyVisit, ICretehealthSafetyVisitBulk } from "types/models/HealthSafety"; import { LayoutDirection } from "shared/constants/AppEnums"; import LoadingButton from "@mui/lab/LoadingButton"; import { CheckCircleOutline } from "@mui/icons-material"; import { CachedOutlined, DoneOutlined, Info, InfoOutlined, KeyboardArrowDown, KeyboardArrowUp, } from "@mui/icons-material"; import { Alert, Box, Button, Collapse, Dialog, DialogActions, DialogContent, DialogTitle, Grid, Grow, Icon, IconButton, Paper, Slide, Step, StepLabel, Stepper, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography, Zoom, useTheme, } from "@mui/material"; import { TransitionProps } from "@mui/material/transitions"; import { AppCustomWrapper, StyledDivider } from "components/AppGridCustom"; import AttachmentList from "components/Attachment"; import AvatarApp from "components/AvatarApp"; import { NoData } from "components/CustomNoRowsOverlay"; import { CustomPaginationBasic, DataTableApp } from "components/DataTableApp"; import { ColorLibStepIconRoot } from "components/StatsCard"; import { CurrencyFormatFn } from "helper/arrayFn"; import { StatusDynamic } from "pages/tasks/TasksList/Status"; import { forwardRef, useCallback, useEffect, useState } from "react"; import { BiTransfer } from "react-icons/bi"; import { useIntl } from "react-intl"; import { useDispatch } from "react-redux"; import { useNavigate, useParams } from "react-router-dom"; import { GetVisitTypes, getAllVisits, onPushHealthSafetyBulkVisits } from "redux/actions/healthSafety"; import { Fonts } from "shared/constants/AppEnums"; import { RoutesConst } from "shared/constants/RoutesConst"; import { DataPaging } from "types/models/Common"; import { withStyles } from "@mui/styles"; import { Formik } from "formik"; import AddHeathSafetyVisitBulkForm from "./AddVisitFormBulk"; import { useThemeContext } from "@crema/utility/AppContextProvider/ThemeContextProvider"; import { useSelector } from "react-redux"; import { AppState } from "redux/store"; import { MailInfoWrapper, MailItemWrapper } from "../visitLists/visitsLists.styles"; import clsx from "clsx"; import VisitListsHeader from "../visitLists/visitListHeader"; import ReturnToHome from "../commons/returnToHomeBtn"; import { useContext } from "react"; import { ContextProvider } from './contextProvider'; import { ContextSharePoint } from "./contextProvider"; //export const userContext = createContext({}); const VisitListsBulk = () => { const initValue: ICretehealthSafetyVisitBulk = { locationName:undefined, organizationId: "", organizationDes:"", locationDes:"", visitTypeId: "VmlzaXRUeXBlLTI=", remarks: "", planId: 1, visitDate: moment().toDate(), fromTime: null, toTime: null, mainCoordinatorName:'', alternativeCoordinatorName:'', mainCoordinators: [], alternativeCoordinators: [], visitNote:"", }; const dispatch = useDispatch(); const { messages } = useIntl(); const { user } = useAuthUser(); const navigator = useNavigate(); const { palette } = useTheme(); const [open, setOpen] = useState(); const [openD, setOpenD] = useState(true); const [page, setPage] = useState(1); const [data, setData] = useState>(); const { theme } = useThemeContext(); const { loading } = useSelector( ({ common }) => common ); const [addedVisits, setAddedVisits] = useState([]); const { openAddForm, setOpenAddForm } = useContext(ContextSharePoint); const openDialoghelper = ()=>{ console.log("------------openAddForm= "+ openAddForm ); // debugger; setTimeout(() => { console.log("Delayed for 1 second."); setOpenAddForm(true); }, 3000); // setOpenAddForm(true); } const [modalAction, setModalAction] = useState<{ data: any; open: boolean; }>(); const obj = {hasStatus: true, title: (messages["visit.dashboard"] as string)}; const redirectToHome = useCallback(() => { navigator(RoutesConst.healthSafetyVisitListsManage); }, [navigator]); const redirectToSame = useCallback(() => { navigator(RoutesConst.healthSafetyVisitListsBulk); }, [navigator]); const Mew = withStyles({ root: { borderBottom: "none", }, })(TableCell); let { idVisit } = useParams(); const navigate = useNavigate(); const openEditForm = useCallback( (id: string) => { idVisit = id; let path = RoutesConst.editHealthSafetyVisit + "/"; if (idVisit && idVisit.length > 0) path = path + idVisit; navigate(path); }, [navigate] ); const [visitTypes, setVisitTyps] = useState(); const getVisitTypes = useCallback(() => { GetVisitTypes(dispatch).then((res) => { setVisitTyps(res); }); }, [visitTypes]); useEffect(() => { if (!visitTypes) getVisitTypes(); }, [dispatch, setVisitTyps, visitTypes]); return ( <> { setSubmitting(true); setAddedVisits((state) => [...state ?? [], data]); setOpenAddForm(true); setSubmitting(false); } } > {({ isSubmitting, values, setFieldValue, ...rest }) => ( <> {!rest.isValid && rest.errors && ( )} )} } contentStyle={{ minHeight: 850, display: "flex", flexDirection: "column", }} > {addedVisits?.length > 0 ? ( addedVisits?.map((item, i) => ( <> event.stopPropagation()} > theme.palette.warning.main, }, }} component="span" onClick={(event: any) => event.stopPropagation()} > {theme.direction === LayoutDirection.RTL ? ( <> id == item.visitTypeId ).colorCode, }} > {item.organizationDes} ) : ( <> id == item.visitTypeId ).colorCode, }} > {item.organizationDes} )} {visitTypes?.find( ({ id }) => id == item.visitTypeId ).name} {new Date(item.visitDate).toLocaleString( "en-us", { day: "2-digit", month: "long", year: "numeric", } )} {""} {/* } arrow > theme.palette.text.disabled, }} onClick={() => { const approveValues: IProcesshealthSafetyVisit = { remarks: "", id: item.id, actionId: VisitsStatus.Approved, }; onProcerssHealthSafetyVisit( { ...approveValues }, dispatch ); setLastActionMade(); navigate( RoutesConst.healthSafetyVisitListsManage ); setLastActionMade(); }} size="large" > } arrow > theme.palette.text.disabled, }} onClick={() => { setModalAction({ open: true, data: item, actionId: VisitsStatus.Returned, }); }} size="large" > } arrow > theme.palette.text.disabled, }} onClick={() => { const canceledValues: IProcesshealthSafetyVisit = { remarks: "", id: item.id, actionId: VisitsStatus.Canceled, }; onProcerssHealthSafetyVisit( { ...canceledValues }, dispatch ); setLastActionMade(); navigate( RoutesConst.healthSafetyVisitListsManage ); setLastActionMade(); }} size="large" > */} )) ) : ( )} {data?.data?.length > 0 && ( { setPage(val); } } page={data?.pageNumber} count={data?.totalPages} /> )}

{ onPushHealthSafetyBulkVisits( addedVisits, dispatch ); navigate(RoutesConst.healthSafetyVisitListsManage); } } endIcon={} loadingPosition="center" > } loadingPosition="center" >
{/* {"Actions line"} */} setModalAction(undefined)} size="large" > openEditForm(modalAction.data.id) } size="large" > setModalAction(undefined)} size="large" > setModalAction(undefined)} size="large" > {modalAction?.data?.visitTypeDes} {modalAction?.data?.organizationDes} {", "} {modalAction?.data?.locationDes} {modalAction?.data?.locationDes} {new Date(modalAction?.data?.visitDate).toLocaleString( "en-us", { day: "2-digit", month: "long", year: "numeric" } )} {modalAction?.data?.mainCoordinatorName[0]} {modalAction?.data?.alternativeCoordinatorName[0]}
); }; export default VisitListsBulk; /************************************************* Bulk Form import AppTextField from "@crema/core/AppFormComponents/AppTextField"; import AppGridContainer from "@crema/core/AppGridContainer"; import IntlMessages from "@crema/utility/IntlMessages"; import { CheckCircleOutline } from "@mui/icons-material"; import LoadingButton from "@mui/lab/LoadingButton"; import Box from "@mui/material/Box"; import FormControl from "@mui/material/FormControl"; import Grid from "@mui/material/Grid"; import InputLabel from "@mui/material/InputLabel"; import MenuItem from "@mui/material/MenuItem"; import CloseIcon from "@mui/icons-material/Close"; import CalendarTodayOutlinedIcon from "@mui/icons-material/CalendarTodayOutlined"; import { NoData } from "components/CustomNoRowsOverlay"; import Select from "@mui/material/Select"; import { DatePicker } from "@mui/x-date-pickers/DatePicker"; import { StyledDivider } from "components/AppGridCustom"; import { InputCoordinatorSelectSingle, InputEmployeeSelect, InputOrganizationSelect, InputOrganizationSelectSingle, } from "components/InputApp"; import { Form } from "formik"; import { preventOnKeyDown } from "helper/arrayFn"; import moment from "moment"; import React, { ReactNode, useCallback, useEffect, useState } from "react"; import { BsFlagFill } from "react-icons/bs"; import { useIntl } from "react-intl"; import { useDispatch, useSelector } from "react-redux"; import { getEmployeeIncludeDispatch, getCoordinatorIncludeDispatch, getOrganizationWithoutDispatch, onGetPriorityList, GetVisitTypes, GetVisitById, } from "redux/actions"; import { AppState } from "redux/store"; import { Fonts } from "shared/constants/AppEnums"; import { DataPaging } from "types/models/Common"; import { ICretehealthSafetyVisit, ICretehealthSafetyVisitBulk, getLocal } from "types/models/HealthSafety"; import { organizationTypes } from "types/models/Tasks"; import { BiCalendar } from "react-icons/bi"; import { Breakpoint, Dialog, DialogContent, DialogTitle, IconButton, Radio, RadioGroup, SxProps, Theme, Slide, Typography, useTheme, Input, } from "@mui/material"; import { TimePicker } from "@mui/lab"; import { TransitionProps } from "@mui/material/transitions"; import { useNavigate } from "react-router-dom"; import { RoutesConst } from "shared/constants/RoutesConst"; import { string } from "prop-types"; import { useContext } from "react"; import { ContextProvider } from './contextProvider'; import { ContextSharePoint } from "./contextProvider"; interface ISelectedVisit { id: string; name: string; colorCode: string; note: string; dayDuration: number; hasTime: boolean; } interface AddHeathSafetyVisitFormProps { values: ICretehealthSafetyVisitBulk; setFieldValue: (name: string, value: any) => void; isSubmitting: boolean; getFieldMeta: any; errors: any; isValid: boolean; openDialog: boolean; } const AddHeathSafetyVisitBulkForm: React.FC = ({ values, setFieldValue, isSubmitting, // getFieldMeta, errors, isValid, ...rest }) => { const dispatch = useDispatch(); const { messages, locale } = useIntl(); const { loading } = useSelector( ({ common }) => common ); const [modalAction, setModalAction] = useState<{ data: any; open: boolean; }>(); function disableWeekends(date) { return date.getDay() === 0 || date.getDay() === 6; } const handleVisitTypeChange = ( event: React.ChangeEvent ) => { setSelectedVisitTypeValue(event.target.value); setFieldValue("visitTypeId", event.target.value); //setFieldValue("visitTypeId", event.target.value); }; const navigator = useNavigate(); const redirectToVisits = useCallback(() => { navigator(RoutesConst.healthSafetyVisitListsManage); }, [navigator]); const { palette } = useTheme(); const [visitTypes, setVisitTyps] = useState(); const getVisitTypes = useCallback(() => { GetVisitTypes(dispatch).then((res) => { setVisitTyps(res); }); }, [visitTypes]); useEffect(() => { if (!visitTypes) getVisitTypes(); }, [dispatch, setVisitTyps, visitTypes]); const [selectedVisitTypeValue, setSelectedVisitTypeValue] = React.useState(""); const [selectedNote, setSelectedNote] = React.useState(messages["visit.typeFirstNote"] as string); const ChangeTheNote =( note: string)=> { setSelectedNote(note); document.getElementById('NoteText').innerHTML = note; }; const { openAddForm, setOpenAddForm } = useContext(ContextSharePoint); return ( {setOpenAddForm(false)}} fullWidth maxWidth="md" > {/* {"Actions line"} */} {/* */} setModalAction(undefined)} size="large" > {/* */} setModalAction(undefined)} size="large" > {/* */} setModalAction(undefined)} size="large" > {/* */} setOpenAddForm(false)} size="large" >
{} {} {visitTypes?.length > 0 ? ( visitTypes?.map((item, i) => ( <> )) ) : ( )} {selectedVisitTypeValue === "VmlzaXRUeXBlLTI=" && ( )} { setFieldValue("organizationDes", data["label"] ? data["label"] : ""); setFieldValue( "locationName", data["regionName"] ? data["regionName"] : "" ); setFieldValue( "locationDes", data["regionName"] ? data["regionName"] : "" ); setFieldValue("organizationId", data["id"]); if(selectedVisitTypeValue=== "VmlzaXRUeXBlLTI=") { ChangeTheNote(data["visitNote"] ? data["visitNote"] : ""); }; }} label={} value={[values.organizationId] || undefined ||null} /> } value={values.visitDate} onChange={(value) => { setFieldValue("visitDate", value); }} disablePast InputProps={{ onKeyDown: preventOnKeyDown }} renderInput={(params: any) => ( )} /> {visitTypes?.find(({ id }) => id === selectedVisitTypeValue) ?.hasTime === true && ( } value={values.fromTime} onChange={(value) => setFieldValue("fromTime", value)} InputProps={{ onKeyDown: preventOnKeyDown }} renderInput={(params: any) => ( )} /> )} {visitTypes?.find(({ id }) => id === selectedVisitTypeValue) ?.hasTime === true && ( } value={values.toTime} onChange={(value) => setFieldValue("toTime", value)} InputProps={{ onKeyDown: preventOnKeyDown }} renderInput={(params: any) => ( )} /> )} { setFieldValue("mainCoordinators", [data["id"]]); setFieldValue("mainCoordinatorName", [data["label"]]); }} label={} /> { setFieldValue("alternativeCoordinators", [data["id"]]); setFieldValue("alternativeCoordinatorName", [data["label"]]); }} label={} />
setOpenAddForm(false)} endIcon={} loadingPosition="center" > setOpenAddForm(false)} endIcon={} loadingPosition="center" >
); }; export default AddHeathSafetyVisitBulkForm;