Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 

118 rindas
3.1 KiB

  1. import { fetchAllTasks, fetchTaskTemplates } from "@/app/api/tasks";
  2. import CreateProject from "./CreateProject";
  3. import {
  4. fetchMainProjects,
  5. fetchProjectBuildingTypes,
  6. fetchProjectCategories,
  7. fetchProjectContractTypes,
  8. fetchProjectDetails,
  9. fetchProjectFundingTypes,
  10. fetchProjectLocationTypes,
  11. fetchProjectServiceTypes,
  12. fetchProjectWorkNatures,
  13. } from "@/app/api/projects";
  14. import { fetchStaff, fetchTeamLeads } from "@/app/api/staff";
  15. import {
  16. fetchAllCustomers,
  17. fetchAllSubsidiaries,
  18. fetchCustomerTypes,
  19. } from "@/app/api/customer";
  20. import { fetchGrades } from "@/app/api/grades";
  21. import { fetchUserAbilities, fetchUserStaff } from "@/app/utils/fetchUtil";
  22. type CreateProjectProps = {
  23. isEditMode: false;
  24. isSubProject?: boolean;
  25. draftId?: number;
  26. };
  27. interface EditProjectProps {
  28. isEditMode: true;
  29. projectId?: string;
  30. isSubProject?: boolean;
  31. }
  32. type Props = CreateProjectProps | EditProjectProps;
  33. const CreateProjectWrapper: React.FC<Props> = async (props) => {
  34. const [
  35. tasks,
  36. taskTemplates,
  37. projectCategories,
  38. teamLeads,
  39. allCustomers,
  40. allSubsidiaries,
  41. contractTypes,
  42. fundingTypes,
  43. locationTypes,
  44. serviceTypes,
  45. buildingTypes,
  46. workNatures,
  47. allStaffs,
  48. grades,
  49. customerTypes,
  50. abilities,
  51. ] = await Promise.all([
  52. fetchAllTasks(),
  53. fetchTaskTemplates(),
  54. fetchProjectCategories(),
  55. fetchTeamLeads(),
  56. fetchAllCustomers(),
  57. fetchAllSubsidiaries(),
  58. fetchProjectContractTypes(),
  59. fetchProjectFundingTypes(),
  60. fetchProjectLocationTypes(),
  61. fetchProjectServiceTypes(),
  62. fetchProjectBuildingTypes(),
  63. fetchProjectWorkNatures(),
  64. fetchStaff(),
  65. fetchGrades(),
  66. fetchCustomerTypes(),
  67. fetchUserAbilities(),
  68. ]);
  69. const userStaff = await fetchUserStaff();
  70. const teamId = userStaff?.teamId;
  71. var filteredTeamLeads = teamId ? teamLeads.filter(
  72. (teamLead) => teamLead.teamId === teamId,
  73. ) : teamLeads
  74. if (userStaff.id == 1) {
  75. filteredTeamLeads = teamLeads.filter(
  76. (teamLead) => teamLead.teamId === teamId || teamLead.team == "ST",
  77. )
  78. }
  79. const projectInfo = props.isEditMode
  80. ? await fetchProjectDetails(props.projectId!)
  81. : undefined;
  82. const mainProjects = Boolean(props.isSubProject)
  83. ? await fetchMainProjects()
  84. : undefined;
  85. return (
  86. <CreateProject
  87. isEditMode={props.isEditMode}
  88. draftId={props.isEditMode ? undefined : props.draftId}
  89. isSubProject={Boolean(props.isSubProject)}
  90. defaultInputs={projectInfo}
  91. allTasks={tasks}
  92. projectCategories={projectCategories}
  93. taskTemplates={taskTemplates}
  94. teamLeads={filteredTeamLeads}
  95. allSubsidiaries={allSubsidiaries}
  96. allCustomers={allCustomers}
  97. contractTypes={contractTypes}
  98. fundingTypes={fundingTypes}
  99. locationTypes={locationTypes}
  100. serviceTypes={serviceTypes}
  101. buildingTypes={buildingTypes}
  102. workNatures={workNatures}
  103. allStaffs={allStaffs}
  104. grades={grades}
  105. customerTypes={customerTypes}
  106. mainProjects={mainProjects}
  107. abilities={abilities}
  108. />
  109. );
  110. };
  111. export default CreateProjectWrapper;