Skip to content

Commit 54a6707

Browse files
authored
Merge pull request #2101 from bluewave-labs/hp-sep-10-fix-save-annex-file-upload-bug
Fix file upload bug
2 parents dfa8bdb + 326aa2e commit 54a6707

File tree

8 files changed

+71
-57
lines changed

8 files changed

+71
-57
lines changed

Clients/src/presentation/components/Drawer/ISO27001ClauseDrawerDialog/index.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ interface VWISO27001ClauseDrawerDialogProps {
5050
projectFrameworkId: number;
5151
onSaveSuccess?: (success: boolean, message?: string) => void;
5252
index: number;
53+
project_id: number;
5354
}
5455

5556
const VWISO27001ClauseDrawerDialog = ({
@@ -60,6 +61,7 @@ const VWISO27001ClauseDrawerDialog = ({
6061
projectFrameworkId,
6162
onSaveSuccess,
6263
index,
64+
project_id,
6365
}: VWISO27001ClauseDrawerDialogProps) => {
6466
const [date, setDate] = useState<Dayjs | null>(null);
6567
const [fetchedSubClause, setFetchedSubClause] = useState<any>(null);
@@ -231,6 +233,7 @@ const VWISO27001ClauseDrawerDialog = ({
231233
formDataToSend.append("delete", JSON.stringify(deletedFilesIds));
232234
formDataToSend.append("risksMitigated", JSON.stringify(selectedRisks));
233235
formDataToSend.append("risksDelete", JSON.stringify(deletedRisks));
236+
formDataToSend.append("project_id", project_id.toString());
234237

235238
uploadFiles.forEach((file) => {
236239
if (file.data instanceof Blob) {

Clients/src/presentation/pages/Framework/ISO27001/Annex/index.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,15 @@ import StatusDropdown from "../../../../components/StatusDropdown";
2222
import { updateISO27001AnnexStatus } from "../../../../components/StatusDropdown/statusUpdateApi";
2323
import { useAuth } from "../../../../../application/hooks/useAuth";
2424
import allowedRoles from "../../../../../application/constants/permissions";
25+
import { Project } from "../../../../../domain/types/Project";
2526

2627
const ISO27001Annex = ({
28+
project,
2729
projectFrameworkId,
2830
statusFilter,
2931
applicabilityFilter
3032
}: {
33+
project: Project;
3134
projectFrameworkId: string | number;
3235
statusFilter?: string;
3336
applicabilityFilter?: string;
@@ -274,7 +277,7 @@ const ISO27001Annex = ({
274277
control={selectedControl}
275278
annex={selectedAnnex}
276279
projectFrameworkId={Number(projectFrameworkId)}
277-
project_id={0}
280+
project_id={Number(project.id)}
278281
onSaveSuccess={(success, message) =>
279282
handleSaveSuccess(success, message, selectedControl?.id)
280283
}

Clients/src/presentation/pages/Framework/ISO27001/Clause/index.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,14 @@ import StatusDropdown from "../../../../components/StatusDropdown";
2323
import { updateISO27001ClauseStatus } from "../../../../components/StatusDropdown/statusUpdateApi";
2424
import { useAuth } from "../../../../../application/hooks/useAuth";
2525
import allowedRoles from "../../../../../application/constants/permissions";
26+
import { Project } from "../../../../../domain/types/Project";
2627

2728
const ISO27001Clause = ({
29+
project,
2830
projectFrameworkId,
2931
statusFilter,
3032
}: {
33+
project: Project;
3134
projectFrameworkId: number | string;
3235
statusFilter?: string;
3336
}) => {
@@ -320,6 +323,7 @@ const ISO27001Clause = ({
320323
<VWISO27001ClauseDrawerDialog
321324
open={drawerOpen}
322325
onClose={handleDrawerClose}
326+
project_id={Number(project.id)}
323327
subClause={selectedSubClause}
324328
clause={selectedClause}
325329
projectFrameworkId={Number(projectFrameworkId)}

Clients/src/presentation/pages/Framework/ISO42001/Annex/index.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,15 @@ import StatusDropdown from "../../../../components/StatusDropdown";
1919
import { updateISO42001AnnexStatus } from "../../../../components/StatusDropdown/statusUpdateApi";
2020
import { useAuth } from "../../../../../application/hooks/useAuth";
2121
import allowedRoles from "../../../../../application/constants/permissions";
22+
import { Project } from "../../../../../domain/types/Project";
2223

2324
const ISO42001Annex = ({
25+
project,
2426
projectFrameworkId,
2527
statusFilter,
2628
applicabilityFilter,
2729
}: {
30+
project: Project;
2831
projectFrameworkId: string | number;
2932
statusFilter?: string;
3033
applicabilityFilter?: string;
@@ -241,7 +244,7 @@ const ISO42001Annex = ({
241244
annex={selectedAnnex}
242245
control={selectedControl}
243246
projectFrameworkId={Number(projectFrameworkId)}
244-
project_id={0}
247+
project_id={Number(project.id)}
245248
onSaveSuccess={(success, message) =>
246249
handleSaveSuccess(success, message, selectedControl?.id)
247250
}

Clients/src/presentation/pages/Framework/ISO42001/Clause/index.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,14 @@ import StatusDropdown from "../../../../components/StatusDropdown";
2323
import { updateISO42001ClauseStatus } from "../../../../components/StatusDropdown/statusUpdateApi";
2424
import { useAuth } from "../../../../../application/hooks/useAuth";
2525
import allowedRoles from "../../../../../application/constants/permissions";
26+
import { Project } from "../../../../../domain/types/Project";
2627

2728
const ISO42001Clause = ({
29+
project,
2830
projectFrameworkId,
2931
statusFilter,
3032
}: {
33+
project: Project;
3134
projectFrameworkId: number | string;
3235
statusFilter?: string;
3336
}) => {
@@ -323,7 +326,7 @@ const ISO42001Clause = ({
323326
subClause={selectedSubClause}
324327
clause={selectedClause}
325328
projectFrameworkId={Number(projectFrameworkId)}
326-
project_id={0}
329+
project_id={Number(project.id)}
327330
onSaveSuccess={(success, message) =>
328331
handleSaveSuccess(success, message, selectedSubClause?.id)
329332
}

Clients/src/presentation/pages/Framework/index.tsx

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -400,18 +400,16 @@ const Framework = () => {
400400

401401
<TabPanel value="clause" sx={tabPanelStyle}>
402402
<ISO27001Clause
403-
projectFrameworkId={
404-
getProjectFrameworkId(framework.id) || framework.id
405-
}
403+
project={organizationalProject}
404+
projectFrameworkId={getProjectFrameworkId(framework.id) || framework.id}
406405
statusFilter={statusFilter}
407406
/>
408407
</TabPanel>
409408

410409
<TabPanel value="annex" sx={tabPanelStyle}>
411410
<ISO27001Annex
412-
projectFrameworkId={
413-
getProjectFrameworkId(framework.id) || framework.id
414-
}
411+
project={organizationalProject}
412+
projectFrameworkId={getProjectFrameworkId(framework.id) || framework.id}
415413
statusFilter={statusFilter}
416414
applicabilityFilter={applicabilityFilter}
417415
/>
@@ -461,18 +459,16 @@ const Framework = () => {
461459

462460
<TabPanel value="clauses" sx={tabPanelStyle}>
463461
<ISO42001Clause
464-
projectFrameworkId={
465-
getProjectFrameworkId(framework.id) || framework.id
466-
}
462+
project={organizationalProject}
463+
projectFrameworkId={getProjectFrameworkId(framework.id) || framework.id}
467464
statusFilter={statusFilter}
468465
/>
469466
</TabPanel>
470467

471468
<TabPanel value="annexes" sx={tabPanelStyle}>
472469
<ISO42001Annex
473-
projectFrameworkId={
474-
getProjectFrameworkId(framework.id) || framework.id
475-
}
470+
project={organizationalProject}
471+
projectFrameworkId={getProjectFrameworkId(framework.id) || framework.id}
476472
statusFilter={statusFilter}
477473
applicabilityFilter={applicabilityFilter}
478474
/>

Servers/controllers/iso27001.ctrl.ts

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -543,32 +543,33 @@ export async function saveClauses(
543543
delete: string;
544544
risksDelete: string;
545545
risksMitigated: string;
546+
project_id: string;
546547
};
547548

548549
const filesToDelete = JSON.parse(subClause.delete || "[]") as number[];
549550
await deleteFiles(filesToDelete, req.tenantId!, transaction);
550551

551-
// Get project_id from subclause
552-
const projectIdResult = (await sequelize.query(
553-
`SELECT pf.project_id as id FROM "${req.tenantId!}".subclauses_iso27001 sc JOIN "${req.tenantId!}".projects_frameworks pf ON pf.id = sc.projects_frameworks_id WHERE sc.id = :id;`,
554-
{
555-
replacements: { id: subClauseId },
556-
transaction,
557-
}
558-
)) as [{ id: number }[], number];
559-
560-
if (projectIdResult[0].length === 0) {
561-
throw new Error("Project ID not found for subclause");
562-
}
552+
// // Get project_id from subclause
553+
// const projectIdResult = (await sequelize.query(
554+
// `SELECT pf.project_id as id FROM "${req.tenantId!}".subclauses_iso27001 sc JOIN "${req.tenantId!}".projects_frameworks pf ON pf.id = sc.projects_frameworks_id WHERE sc.id = :id;`,
555+
// {
556+
// replacements: { id: subClauseId },
557+
// transaction,
558+
// }
559+
// )) as [{ id: number }[], number];
560+
561+
// if (projectIdResult[0].length === 0) {
562+
// throw new Error("Project ID not found for subclause");
563+
// }
563564

564-
const projectId = projectIdResult[0][0].id;
565+
// const projectId = projectIdResult[0][0].id;
565566

566567
let uploadedFiles: FileType[] = [];
567568
if (req.files && Array.isArray(req.files) && req.files.length > 0) {
568569
uploadedFiles = await uploadFiles(
569570
req.files as UploadedFile[],
570571
parseInt(subClause.user_id),
571-
projectId,
572+
parseInt(subClause.project_id),
572573
"Main clauses group",
573574
req.tenantId!,
574575
transaction
@@ -646,27 +647,27 @@ export async function saveAnnexes(
646647
const filesToDelete = JSON.parse(annexControl.delete || "[]") as number[];
647648
await deleteFiles(filesToDelete, req.tenantId!, transaction);
648649

649-
// Get project_id from annex control
650-
const projectIdResult = (await sequelize.query(
651-
`SELECT pf.project_id as id FROM "${req.tenantId!}".annexcontrols_iso27001 ac JOIN "${req.tenantId!}".projects_frameworks pf ON pf.id = ac.projects_frameworks_id WHERE ac.id = :id;`,
652-
{
653-
replacements: { id: annexControlId },
654-
transaction,
655-
}
656-
)) as [{ id: number }[], number];
657-
658-
if (projectIdResult[0].length === 0) {
659-
throw new Error("Project ID not found for annex control");
660-
}
650+
// // Get project_id from annex control
651+
// const projectIdResult = (await sequelize.query(
652+
// `SELECT pf.project_id as id FROM "${req.tenantId!}".annexcontrols_iso27001 ac JOIN "${req.tenantId!}".projects_frameworks pf ON pf.id = ac.projects_frameworks_id WHERE ac.id = :id;`,
653+
// {
654+
// replacements: { id: annexControlId },
655+
// transaction,
656+
// }
657+
// )) as [{ id: number }[], number];
658+
659+
// if (projectIdResult[0].length === 0) {
660+
// throw new Error("Project ID not found for annex control");
661+
// }
661662

662-
const projectId = projectIdResult[0][0].id;
663+
// const projectId = projectIdResult[0][0].id;
663664

664665
let uploadedFiles: FileType[] = [];
665666
if (req.files && Array.isArray(req.files) && req.files.length > 0) {
666667
uploadedFiles = await uploadFiles(
667668
req.files as UploadedFile[],
668669
parseInt(annexControl.user_id),
669-
projectId,
670+
parseInt(annexControl.project_id),
670671
"Annex controls group",
671672
req.tenantId!,
672673
transaction

Servers/controllers/iso42001.ctrl.ts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -543,30 +543,31 @@ export async function saveClauses(
543543
delete: string;
544544
risksDelete: string;
545545
risksMitigated: string;
546+
project_id: string;
546547
};
547548

548549
const filesToDelete = JSON.parse(subClause.delete || "[]") as number[];
549550
await deleteFiles(filesToDelete, req.tenantId!, transaction);
550551

551-
// Get project_id from subclause
552-
const projectIdResult = (await sequelize.query(
553-
`SELECT pf.project_id as id FROM "${req.tenantId!}".subclauses_iso sc JOIN "${req.tenantId!}".projects_frameworks pf ON pf.id = sc.projects_frameworks_id WHERE sc.id = :id;`,
554-
{
555-
replacements: { id: subClauseId },
556-
transaction,
557-
}
558-
)) as [{ id: number }[], number];
559-
560-
if (projectIdResult[0].length === 0) {
561-
throw new Error("Project ID not found for subclause");
562-
}
552+
// // Get project_id from subclause
553+
// const projectIdResult = (await sequelize.query(
554+
// `SELECT pf.project_id as id FROM "${req.tenantId!}".subclauses_iso sc JOIN "${req.tenantId!}".projects_frameworks pf ON pf.id = sc.projects_frameworks_id WHERE sc.id = :id;`,
555+
// {
556+
// replacements: { id: subClauseId },
557+
// transaction,
558+
// }
559+
// )) as [{ id: number }[], number];
560+
561+
// if (projectIdResult[0].length === 0) {
562+
// throw new Error("Project ID not found for subclause");
563+
// }
563564

564-
const projectId = projectIdResult[0][0].id;
565+
// const projectId = projectIdResult[0][0].id;
565566

566567
let uploadedFiles = await uploadFiles(
567568
req.files! as UploadedFile[],
568569
parseInt(subClause.user_id),
569-
projectId,
570+
parseInt(subClause.project_id),
570571
"Management system clauses group",
571572
req.tenantId!,
572573
transaction

0 commit comments

Comments
 (0)