Skip to content

Commit a250348

Browse files
committed
chore: backport form/validation changes to electrification
1 parent 6fe7999 commit a250348

18 files changed

Lines changed: 424 additions & 483 deletions

app/src/controllers/electrificationProject.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import type {
4040
ElectrificationProjectStatistics,
4141
StatisticsFilters
4242
} from '../types/index.ts';
43+
import { Prisma } from '@prisma/client';
4344

4445
/**
4546
* Generates and sends a templated email with the given data
@@ -307,14 +308,22 @@ export const upsertElectrificationProjectDraftController = async (req: Request<n
307308
};
308309

309310
export const updateElectrificationProjectController = async (
310-
req: Request<never, never, { project: ElectrificationProject; contacts: Contact[] }>,
311+
req: Request<
312+
{ electrificationProjectId: string },
313+
never,
314+
Omit<Prisma.electrification_projectUpdateInput, 'electrificationProjectId'>
315+
>,
311316
res: Response
312317
) => {
313318
const response = await transactionWrapper<ElectrificationProject>(async (tx: PrismaTransactionClient) => {
314-
return await updateElectrificationProject(tx, {
315-
...req.body.project,
316-
...generateUpdateStamps(req.currentContext)
317-
});
319+
return await updateElectrificationProject(
320+
tx,
321+
{
322+
...req.body,
323+
...generateUpdateStamps(req.currentContext)
324+
},
325+
req.params.electrificationProjectId
326+
);
318327
});
319328

320329
res.status(200).json(response);

app/src/routes/v1/electrificationProject.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ router.get(
112112
);
113113

114114
/** Updates a electrification project*/
115-
router.put(
115+
router.patch(
116116
'/:electrificationProjectId',
117117
hasAuthorization(Resource.ELECTRIFICATION_PROJECT, Action.UPDATE),
118118
hasAccess('electrificationProjectId'),

app/src/services/electrificationProject.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Prisma } from '@prisma/client';
12
import type { PrismaTransactionClient } from '../db/dataConnection.ts';
23
import type { IStamps } from '../interfaces/IStamps.ts';
34
import type {
@@ -203,16 +204,18 @@ export const searchElectrificationProjects = async (
203204
* Updates a specific electrification project
204205
* @param tx Prisma transaction client
205206
* @param data Electrification project to update
207+
* @param electrificationProjectId ID of the project to update
206208
* @returns A Promise that resolves to the updated electrification project
207209
*/
208210
export const updateElectrificationProject = async (
209211
tx: PrismaTransactionClient,
210-
data: ElectrificationProjectBase
212+
data: Omit<Prisma.electrification_projectUpdateInput, 'electrificationProjectId'>,
213+
electrificationProjectId: string
211214
): Promise<ElectrificationProject> => {
212215
const result = await tx.electrification_project.update({
213216
data: data,
214217
where: {
215-
electrificationProjectId: data.electrificationProjectId
218+
electrificationProjectId
216219
},
217220
include: {
218221
activity: {

app/src/services/housingProject.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { Prisma } from '@prisma/client';
22

3-
import { jsonToPrismaInputJson } from '../db/utils/utils.ts';
4-
53
import type { PrismaTransactionClient } from '../db/dataConnection.ts';
64
import type { IStamps } from '../interfaces/IStamps.ts';
75
import type {

app/src/validators/electrificationProject.ts

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -79,43 +79,38 @@ const schema = {
7979
},
8080
updateElectrificationProject: {
8181
body: Joi.object({
82-
contact: contactSchema,
83-
project: {
84-
activityId: activityId.allow(null),
85-
projectName: Joi.string().required().max(255).trim(),
86-
companyNameRegistered: Joi.string().max(255).trim().allow(null),
87-
companyIdRegistered: Joi.string().max(255).trim().allow(null),
88-
projectType: Joi.string()
89-
.required()
90-
.valid(...electrificationProjectTypeCodes),
91-
bcHydroNumber: Joi.string().max(255).trim().allow(null),
92-
projectDescription: Joi.when('projectType', {
93-
is: ProjectType.OTHER,
94-
then: Joi.string().required().max(4000),
95-
otherwise: Joi.string().max(4000).allow(null)
96-
}),
97-
electrificationProjectId: uuidv4.required(),
98-
projectCategory: Joi.string()
99-
.valid(...electrificationProjectCategoryCodes)
100-
.allow(null),
101-
assignedUserId: uuidv4.allow(null),
102-
hasEpa: Joi.string()
103-
.valid(...YES_NO_LIST)
104-
.allow(null),
105-
megawatts: Joi.number().positive().allow(null),
106-
bcEnvironmentAssessNeeded: Joi.string()
107-
.valid(...YES_NO_LIST)
108-
.allow(null),
109-
locationDescription: Joi.string().max(4000).allow(null),
110-
astNotes: Joi.string().max(4000).allow(null),
111-
queuePriority: Joi.number().integer().required().min(0).max(3),
112-
submissionType: Joi.string()
113-
.required()
114-
.valid(...SUBMISSION_TYPE_LIST),
115-
applicationStatus: Joi.string().valid(...APPLICATION_STATUS_LIST),
116-
...atsValidator.atsEnquirySubmissionFields,
117-
aaiUpdated: Joi.boolean().required()
118-
}
82+
projectName: Joi.string().required().max(255).trim(),
83+
companyNameRegistered: Joi.string().max(255).trim().allow(null),
84+
companyIdRegistered: Joi.string().max(255).trim().allow(null),
85+
projectType: Joi.string()
86+
.required()
87+
.valid(...electrificationProjectTypeCodes),
88+
bcHydroNumber: Joi.string().max(255).trim().allow(null),
89+
projectDescription: Joi.when('projectType', {
90+
is: ProjectType.OTHER,
91+
then: Joi.string().required().max(4000),
92+
otherwise: Joi.string().max(4000).allow(null)
93+
}),
94+
projectCategory: Joi.string()
95+
.valid(...electrificationProjectCategoryCodes)
96+
.allow(null),
97+
assignedUserId: uuidv4.allow(null),
98+
hasEpa: Joi.string()
99+
.valid(...YES_NO_LIST)
100+
.allow(null),
101+
megawatts: Joi.number().positive().allow(null),
102+
bcEnvironmentAssessNeeded: Joi.string()
103+
.valid(...YES_NO_LIST)
104+
.allow(null),
105+
locationDescription: Joi.string().max(4000).allow(null),
106+
astNotes: Joi.string().max(4000).allow(null),
107+
queuePriority: Joi.number().integer().required().min(0).max(3),
108+
submissionType: Joi.string()
109+
.required()
110+
.valid(...SUBMISSION_TYPE_LIST),
111+
applicationStatus: Joi.string().valid(...APPLICATION_STATUS_LIST),
112+
...atsValidator.atsEnquirySubmissionFields,
113+
aaiUpdated: Joi.boolean().required()
119114
}),
120115
params: Joi.object({
121116
electrificationProjectId: uuidv4.required()

0 commit comments

Comments
 (0)