From 5c1b14bd387a5421c6f95f7a0b9414d04977a42b Mon Sep 17 00:00:00 2001 From: "pramod.mahajan" Date: Wed, 12 Nov 2025 14:18:43 +0530 Subject: [PATCH] added create service project and separated service project and orgnaization project --- src/components/Project/ProjectCard.jsx | 44 ++-- src/components/Project/ProjectCardView.jsx | 89 ++----- .../ServiceProject/ManageServiceProject.jsx | 225 ++++++++++++++++++ .../ServiceProject/ServiceProjectNav.jsx | 41 ++++ .../ServiceProject/ServiceProjectProfile.jsx | 97 ++++++++ .../ServiceProject/ServiceProjectSchema.jsx | 53 +++++ .../SeviceProjectDisplayList.jsx | 0 src/hooks/useProjects.js | 6 +- src/hooks/useServiceProject.jsx | 41 ++++ .../ServiceProject/ServiceProjectDetail.jsx | 45 ++++ .../ServiceProject/ServiceProjectDisplay.jsx | 41 ++++ src/pages/project/ProjectPage.jsx | 145 ++++------- src/pages/project/ProjectsDisplay.jsx | 153 ++++++++++++ src/pages/project/ProjectsDisplayGround.jsx | 154 ++++++++++++ src/repositories/ProjectRepository.jsx | 2 +- src/repositories/ServiceProject.jsx | 10 + src/router/AppRoutes.jsx | 3 + 17 files changed, 966 insertions(+), 183 deletions(-) create mode 100644 src/components/ServiceProject/ManageServiceProject.jsx create mode 100644 src/components/ServiceProject/ServiceProjectNav.jsx create mode 100644 src/components/ServiceProject/ServiceProjectProfile.jsx create mode 100644 src/components/ServiceProject/ServiceProjectSchema.jsx create mode 100644 src/components/ServiceProject/SeviceProjectDisplayList.jsx create mode 100644 src/hooks/useServiceProject.jsx create mode 100644 src/pages/ServiceProject/ServiceProjectDetail.jsx create mode 100644 src/pages/ServiceProject/ServiceProjectDisplay.jsx create mode 100644 src/pages/project/ProjectsDisplay.jsx create mode 100644 src/pages/project/ProjectsDisplayGround.jsx create mode 100644 src/repositories/ServiceProject.jsx diff --git a/src/components/Project/ProjectCard.jsx b/src/components/Project/ProjectCard.jsx index a6f5c431..3bd818c4 100644 --- a/src/components/Project/ProjectCard.jsx +++ b/src/components/Project/ProjectCard.jsx @@ -18,7 +18,7 @@ import { useDispatch } from "react-redux"; import { setProjectId } from "../../slices/localVariablesSlice"; import { useProjectContext } from "../../pages/project/ProjectPage"; -const ProjectCard = ({ project }) => { +const ProjectCard = ({ project, isCore = true }) => { const dispatch = useDispatch(); const navigate = useNavigate(); const ManageProject = useHasUserPermission(MANAGE_PROJECT); @@ -34,13 +34,30 @@ const ProjectCard = ({ project }) => { const handleClose = () => setShowModal(false); const handleViewProject = () => { - dispatch(setProjectId(project.id)); - navigate(`/projects/details`); + if (isCore) { + dispatch(setProjectId(project.id)); + navigate(`/projects/details`); + } else { + navigate(`/service-projects/${project.id}`); + } }; const handleViewActivities = () => { dispatch(setProjectId(project.id)); navigate(`/activities/records?project=${project.id}`); }; + const handleManage = () => { + if (isCore) { + setMangeProject({ + isOpen: true, + Project: project.id, + }); + } else { + setManageServiceProject({ + isOpen: true, + Project: project.id, + }); + } + }; return ( <>
@@ -96,22 +113,19 @@ const ProjectCard = ({ project }) => {
  • - - setMangeProject({ - isOpen: true, - Project: project.id, - }) - }> + Modify
  • -
  • - - - Activities - -
  • + {isCore && ( +
  • + + + Activities + +
  • + )}
    diff --git a/src/components/Project/ProjectCardView.jsx b/src/components/Project/ProjectCardView.jsx index 1108120c..cb44fd2a 100644 --- a/src/components/Project/ProjectCardView.jsx +++ b/src/components/Project/ProjectCardView.jsx @@ -1,70 +1,29 @@ -import React from 'react' -import { useProjects } from '../../hooks/useProjects' -import Loader from '../common/Loader' -import ProjectCard from './ProjectCard' - -const ProjectCardView = ({currentItems,setCurrentPage,totalPages }) => { - +import React from "react"; +import { useProjects } from "../../hooks/useProjects"; +import Loader from "../common/Loader"; +import ProjectCard from "./ProjectCard"; +import Pagination from "../common/Pagination"; +const ProjectCardView = ({ data, currentPage, totalPages, paginate }) => { return ( +
    + {data?.length === 0 && ( +

    No projects found.

    + )} -
    + {data?.map((project) => ( + + ))} - { currentItems.length === 0 && ( -

    No projects found.

    - )} - - {currentItems.map((project) => ( - - ))} +
    + +
    +
    + ); +}; - - { totalPages > 1 && ( - - )} -
    - - ) -} - -export default ProjectCardView +export default ProjectCardView; diff --git a/src/components/ServiceProject/ManageServiceProject.jsx b/src/components/ServiceProject/ManageServiceProject.jsx new file mode 100644 index 00000000..9e3c98ce --- /dev/null +++ b/src/components/ServiceProject/ManageServiceProject.jsx @@ -0,0 +1,225 @@ +import { zodResolver } from "@hookform/resolvers/zod"; +import React, { useState } from "react"; +import { defaultProjectValues } from "./ServiceProjectSchema"; +import Label from "../common/Label"; +import { FormProvider, useForm } from "react-hook-form"; +import { useGlobalServices } from "../../hooks/masterHook/useMaster"; +import { ITEMS_PER_PAGE, PROJECT_STATUS } from "../../utils/constants"; +import DatePicker from "../common/DatePicker"; + +import SelectMultiple from "../common/SelectMultiple"; +import { projectSchema } from "./ServiceProjectSchema"; +import { + useOrganization, + useOrganizationsList, +} from "../../hooks/useOrganization"; +import { error } from "pdf-lib"; +import { useCreateServiceProject } from "../../hooks/useServiceProject"; + +const ManageServiceProject = ({ servieceProjectId }) => { + console.log(servieceProjectId) + const [searchText, setSearchText] = useState(""); + const methods = useForm({ + resolver: zodResolver(projectSchema), + defaultValues: defaultProjectValues, + }); + const { + register, + handleSubmit, + control, + formState: { errors }, + } = methods; + const { data, isError, isLoading } = useGlobalServices(); + const { data: organization, isLoading: isLoadingOrganization } = + useOrganizationsList(ITEMS_PER_PAGE, 1, true); + + const { mutate: CreateServiceProject, isPending } = useCreateServiceProject(); + const onSubmit = (formData) => { + formData.services = formData.services.filter((s) => s.serviceId); + CreateServiceProject(formData); + }; + return ( + +
    +
    +
    Create Project
    +
    +
    +
    + + + {errors?.name && ( + {errors.name.message} + )} +
    +
    + + + {errors?.shortName && ( + {errors.shortName.message} + )} +
    +
    + + + {errors?.clientId && ( + {errors.clientId.message} + )} +
    +
    + +
    +
    + + + {errors?.statusId && ( + {errors.statusId.message} + )} +
    +
    + + + {errors?.contactName && ( + {errors.contactName.message} + )} +
    +
    + + + {errors?.contactEmail && ( + {errors.contactEmail.message} + )} +
    +
    + + + {errors?.contactPhone && ( + {errors.contactPhone.message} + )} +
    +
    + + +
    +
    + +
    +