You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

85 line
2.1 KiB

  1. import { fetchAllTasks, fetchTaskTemplates } from "@/app/api/tasks";
  2. import CreateProject from "./CreateProject";
  3. import {
  4. fetchProjectBuildingTypes,
  5. fetchProjectCategories,
  6. fetchProjectContractTypes,
  7. fetchProjectDetails,
  8. fetchProjectFundingTypes,
  9. fetchProjectLocationTypes,
  10. fetchProjectServiceTypes,
  11. fetchProjectWorkNatures,
  12. } from "@/app/api/projects";
  13. import { fetchStaff, fetchTeamLeads } from "@/app/api/staff";
  14. import { fetchAllCustomers, fetchAllSubsidiaries } from "@/app/api/customer";
  15. import { fetchGrades } from "@/app/api/grades";
  16. type CreateProjectProps = { isEditMode: false };
  17. interface EditProjectProps {
  18. isEditMode: true;
  19. projectId?: string;
  20. }
  21. type Props = CreateProjectProps | EditProjectProps;
  22. const CreateProjectWrapper: React.FC<Props> = async (props) => {
  23. const [
  24. tasks,
  25. taskTemplates,
  26. projectCategories,
  27. teamLeads,
  28. allCustomers,
  29. allSubsidiaries,
  30. contractTypes,
  31. fundingTypes,
  32. locationTypes,
  33. serviceTypes,
  34. buildingTypes,
  35. workNatures,
  36. allStaffs,
  37. grades,
  38. ] = await Promise.all([
  39. fetchAllTasks(),
  40. fetchTaskTemplates(),
  41. fetchProjectCategories(),
  42. fetchTeamLeads(),
  43. fetchAllCustomers(),
  44. fetchAllSubsidiaries(),
  45. fetchProjectContractTypes(),
  46. fetchProjectFundingTypes(),
  47. fetchProjectLocationTypes(),
  48. fetchProjectServiceTypes(),
  49. fetchProjectBuildingTypes(),
  50. fetchProjectWorkNatures(),
  51. fetchStaff(),
  52. fetchGrades(),
  53. ]);
  54. const projectInfo = props.isEditMode
  55. ? await fetchProjectDetails(props.projectId!!)
  56. : undefined;
  57. return (
  58. <CreateProject
  59. isEditMode={props.isEditMode}
  60. defaultInputs={projectInfo}
  61. allTasks={tasks}
  62. projectCategories={projectCategories}
  63. taskTemplates={taskTemplates}
  64. teamLeads={teamLeads}
  65. allSubsidiaries={allSubsidiaries}
  66. allCustomers={allCustomers}
  67. contractTypes={contractTypes}
  68. fundingTypes={fundingTypes}
  69. locationTypes={locationTypes}
  70. serviceTypes={serviceTypes}
  71. buildingTypes={buildingTypes}
  72. workNatures={workNatures}
  73. allStaffs={allStaffs}
  74. grades={grades}
  75. />
  76. );
  77. };
  78. export default CreateProjectWrapper;