Skip to content

Commit 5be41e3

Browse files
authored
COMP-478:Make fields editable for Unapproved project (#543)
* COMP-478:Make fields editable for Unapproved project * COMP-478:Make fields editable for Unapproved project
1 parent 254697a commit 5be41e3

File tree

6 files changed

+47
-15
lines changed

6 files changed

+47
-15
lines changed

compliance-api/src/compliance_api/resources/case_file.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
API, StaffUserSchema(), "StaffList"
5353
)
5454
case_file_update_model = ApiHelper.convert_ma_schema_to_restx_model(
55-
API, CaseFileSchema(), "CaseFileUpdate"
55+
API, CaseFileUpdateSchema(), "CaseFileUpdate"
5656
)
5757
case_file_status_model = ApiHelper.convert_ma_schema_to_restx_model(
5858
API, CaseFileStatusSchema(), "CaseFileStatus"

compliance-api/src/compliance_api/schemas/case_file.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,23 @@ class Meta: # pylint: disable=too-few-public-methods
104104
project_description = fields.Str(
105105
metadata={"description": "The project description"}, allow_none=True
106106
)
107+
project_id = fields.Int(
108+
metadata={
109+
"description": "The unique identifier for the project associated with the case file."
110+
},
111+
allow_none=True,
112+
)
113+
unapproved_project_regulated_party = fields.Str(
114+
metadata={"description": "The regulated_party name of the unapproved project"},
115+
allow_none=True,
116+
)
117+
unapproved_project_type = fields.Str(
118+
metadata={"description": "The type of the unapproved project"}, allow_none=True
119+
)
120+
unapproved_project_sub_type = fields.Str(
121+
metadata={"description": "The sub type of the unapproved project"},
122+
allow_none=True,
123+
)
107124

108125

109126
class CaseFileCreateSchema(CaseFileUpdateSchema): # pylint: disable=too-many-ancestors

compliance-api/src/compliance_api/services/case_file.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,17 @@ def update(cls, case_file_id: int, case_file_data: dict, ho_session=None):
206206
case_file_data.get("officer_ids", []),
207207
ho_session or session,
208208
)
209+
210+
if not case_file_data.get("project_id", None):
211+
existing_unapproved_project = UnapprovedProjectModel.get_by_case_file_id(case_file_id)
212+
if existing_unapproved_project:
213+
unapproved_project_update_data = {
214+
"regulated_party": case_file_data.get("unapproved_project_regulated_party"),
215+
"type": case_file_data.get("unapproved_project_type"),
216+
"sub_type": case_file_data.get("unapproved_project_sub_type"),
217+
}
218+
existing_unapproved_project.update(unapproved_project_update_data, commit=False)
219+
209220
return updated_case_file
210221

211222
@classmethod

compliance-web/src/components/App/CaseFiles/CaseFileDrawer.tsx

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -152,20 +152,18 @@ const CaseFileDrawer: React.FC<CaseFileDrawerProps> = ({
152152
case_file_number: data.caseFileNumber ?? undefined,
153153
project_description: data.projectDescription ?? "",
154154
};
155-
155+
if (!projectId) {
156+
caseFileData = {
157+
...caseFileData,
158+
unapproved_project_authorization: data.authorization ?? "",
159+
unapproved_project_regulated_party: data.regulatedParty ?? "",
160+
unapproved_project_type: data.projectType ?? "",
161+
unapproved_project_sub_type: data.projectSubType ?? "",
162+
};
163+
}
156164
if (caseFile) {
157165
updateCaseFile({ id: caseFile.id, caseFile: caseFileData });
158166
} else {
159-
if (!projectId) {
160-
// map the unapproved fields only during create mode
161-
caseFileData = {
162-
...caseFileData,
163-
unapproved_project_authorization: data.authorization ?? "",
164-
unapproved_project_regulated_party: data.regulatedParty ?? "",
165-
unapproved_project_type: data.projectType ?? "",
166-
unapproved_project_sub_type: data.projectSubType ?? "",
167-
};
168-
}
169167
createCaseFile(caseFileData);
170168
}
171169
},
@@ -193,6 +191,7 @@ const CaseFileDrawer: React.FC<CaseFileDrawerProps> = ({
193191
staffUsersList={staffUserList ?? []}
194192
isEditMode={!!caseFile}
195193
isSuperUser={isSuperUser}
194+
caseFileProjectId={caseFile?.project_id}
196195
/>
197196
</Box>
198197
<DrawerActionBarBottom

compliance-web/src/components/App/CaseFiles/CaseFileForm.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ type CaseFileFormProps = {
1515
staffUsersList: StaffUser[];
1616
isEditMode: boolean;
1717
isSuperUser: boolean;
18+
caseFileProjectId?: number | null;
1819
};
1920

2021
const CaseFileForm: React.FC<CaseFileFormProps> = ({
@@ -23,6 +24,7 @@ const CaseFileForm: React.FC<CaseFileFormProps> = ({
2324
staffUsersList,
2425
isEditMode,
2526
isSuperUser,
27+
caseFileProjectId,
2628
}) => {
2729
return (
2830
<>
@@ -41,6 +43,7 @@ const CaseFileForm: React.FC<CaseFileFormProps> = ({
4143
<ProjectDetailsForm
4244
projectList={projectList}
4345
isEditMode={isEditMode}
46+
caseFileProjectId={caseFileProjectId}
4447
/>
4548
<Stack flex={1}>
4649
<ControlledAutoComplete

compliance-web/src/components/App/ProjectDetailsForm.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ import { formatAuthorization } from "@/utils/appUtils";
1212
type ProjectDetailsFormProps = {
1313
projectList: Project[];
1414
isEditMode?: boolean;
15+
caseFileProjectId?: number | null;
1516
};
1617

1718
const ProjectDetailsForm: FC<ProjectDetailsFormProps> = ({
1819
projectList,
1920
isEditMode,
21+
caseFileProjectId,
2022
}) => {
2123
const { isOpen } = useDrawer();
2224
const { setValue, resetField } = useFormContext();
@@ -86,21 +88,21 @@ const ProjectDetailsForm: FC<ProjectDetailsFormProps> = ({
8688
name="regulatedParty"
8789
label="Regulated Party"
8890
placeholder="Regulated Party"
89-
disabled={!!selectedProjectId || isEditMode}
91+
disabled={!!selectedProjectId || (isEditMode && caseFileProjectId !== null)}
9092
fullWidth
9193
/>
9294
<ControlledTextField
9395
name="projectType"
9496
label="Project Type"
9597
placeholder="Project Type"
96-
disabled={!!selectedProjectId || isEditMode}
98+
disabled={!!selectedProjectId || (isEditMode && caseFileProjectId !== null)}
9799
fullWidth
98100
/>
99101
<ControlledTextField
100102
name="projectSubType"
101103
label="Project Subtype"
102104
placeholder="Project Subtype"
103-
disabled={!!selectedProjectId || isEditMode}
105+
disabled={!!selectedProjectId || (isEditMode && caseFileProjectId !== null)}
104106
fullWidth
105107
/>
106108
</Stack>

0 commit comments

Comments
 (0)