File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -269,6 +269,17 @@ export default class ProjectsController {
269269 }
270270 }
271271
272+ static async deleteMaterial ( req : Request , res : Response , next : NextFunction ) {
273+ try {
274+ const { materialId } = req . params ;
275+ const user : User = await getCurrentUser ( res ) ;
276+ const updatedMaterial = await ProjectsService . deleteMaterial ( user , materialId ) ;
277+ res . status ( 200 ) . json ( updatedMaterial ) ;
278+ } catch ( error : unknown ) {
279+ next ( error ) ;
280+ }
281+ }
282+
272283 static async editMaterial ( req : Request , res : Response , next : NextFunction ) {
273284 try {
274285 const user = await getCurrentUser ( res ) ;
Original file line number Diff line number Diff line change @@ -112,5 +112,6 @@ projectRouter.post(
112112projectRouter . delete ( '/bom/material-type/:materialTypeId/delete' , ProjectsController . deleteMaterialType ) ;
113113
114114projectRouter . delete ( '/bom/assembly/:assemblyId/delete' , ProjectsController . deleteAssemblyType ) ;
115+ projectRouter . post ( '/bom/material/:materialId/delete' , ProjectsController . deleteMaterial ) ;
115116
116117export default projectRouter ;
Original file line number Diff line number Diff line change @@ -1038,6 +1038,32 @@ export default class ProjectsService {
10381038 return deletedMaterialType ;
10391039 }
10401040
1041+ /**
1042+ * Delete material in the database
1043+ * @param materialId the id number of the given material
1044+ * @param currentUser the current user currently accessing the material
1045+ * @returns the deleted material
1046+ * @throws if the user does not have permission, or materidal already deleted
1047+ */
1048+ static async deleteMaterial ( currentUser : User , materialId : string ) : Promise < string > {
1049+ if ( ! isLeadership ( currentUser . role ) ) {
1050+ throw new AccessDeniedException ( 'Only Leadership can delete materials' ) ;
1051+ }
1052+
1053+ const material = await prisma . material . findUnique ( { where : { materialId } } ) ;
1054+
1055+ if ( ! material ) throw new NotFoundException ( 'Material' , materialId ) ;
1056+
1057+ if ( material . dateDeleted ) throw new DeletedException ( 'Material' , materialId ) ;
1058+
1059+ const deletedMaterial = await prisma . material . update ( {
1060+ where : { materialId } ,
1061+ data : { dateDeleted : new Date ( ) , userDeletedId : currentUser . userId }
1062+ } ) ;
1063+
1064+ return deletedMaterial . materialId ;
1065+ }
1066+
10411067 /**
10421068 * Update a material
10431069 * @param submitter the submitter of the request
You can’t perform that action at this time.
0 commit comments