| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-05 18:44:50 +02:00
										 |  |  | const { defaultsDeep } = require('lodash/fp'); | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  | const { getService } = require('../utils'); | 
					
						
							| 
									
										
										
										
											2022-05-13 16:10:18 +02:00
										 |  |  | const { FOLDER_MODEL_UID } = require('../constants'); | 
					
						
							| 
									
										
										
										
											2022-04-29 09:51:55 +02:00
										 |  |  | const { validateCreateFolder, validateUpdateFolder } = require('./validation/admin/folder'); | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | module.exports = { | 
					
						
							| 
									
										
										
										
											2022-05-05 18:44:50 +02:00
										 |  |  |   async findOne(ctx) { | 
					
						
							|  |  |  |     const { | 
					
						
							|  |  |  |       params: { id }, | 
					
						
							|  |  |  |     } = ctx.request; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ | 
					
						
							|  |  |  |       ability: ctx.state.userAbility, | 
					
						
							|  |  |  |       model: FOLDER_MODEL_UID, | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 14:47:23 +02:00
										 |  |  |     const { results } = await strapi.entityService.findWithRelationCountsPage(FOLDER_MODEL_UID, { | 
					
						
							| 
									
										
										
										
											2022-06-14 09:32:45 +01:00
										 |  |  |       ...defaultsDeep( | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           filters: { id }, | 
					
						
							|  |  |  |           populate: { | 
					
						
							|  |  |  |             children: { | 
					
						
							|  |  |  |               count: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |             files: { | 
					
						
							|  |  |  |               count: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           }, | 
					
						
							| 
									
										
										
										
											2022-05-05 18:44:50 +02:00
										 |  |  |         }, | 
					
						
							| 
									
										
										
										
											2022-06-14 09:32:45 +01:00
										 |  |  |         ctx.query | 
					
						
							|  |  |  |       ), | 
					
						
							| 
									
										
										
										
											2022-05-05 18:44:50 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (results.length === 0) { | 
					
						
							|  |  |  |       return ctx.notFound('folder not found'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ctx.body = { | 
					
						
							|  |  |  |       data: await permissionsManager.sanitizeOutput(results[0]), | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  |   async find(ctx) { | 
					
						
							|  |  |  |     const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ | 
					
						
							|  |  |  |       ability: ctx.state.userAbility, | 
					
						
							| 
									
										
										
										
											2022-05-13 16:10:18 +02:00
										 |  |  |       model: FOLDER_MODEL_UID, | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-19 14:47:23 +02:00
										 |  |  |     const results = await strapi.entityService.findWithRelationCounts(FOLDER_MODEL_UID, { | 
					
						
							| 
									
										
										
										
											2022-05-05 18:44:50 +02:00
										 |  |  |       ...defaultsDeep( | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           populate: { | 
					
						
							|  |  |  |             children: { | 
					
						
							|  |  |  |               count: true, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |             files: { | 
					
						
							|  |  |  |               count: true, | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2022-05-13 16:10:18 +02:00
										 |  |  |           }, | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  |         }, | 
					
						
							| 
									
										
										
										
											2022-05-05 18:44:50 +02:00
										 |  |  |         ctx.query | 
					
						
							|  |  |  |       ), | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     ctx.body = { | 
					
						
							| 
									
										
										
										
											2022-05-19 14:47:23 +02:00
										 |  |  |       data: await permissionsManager.sanitizeOutput(results), | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   async create(ctx) { | 
					
						
							|  |  |  |     const { user } = ctx.state; | 
					
						
							| 
									
										
										
										
											2022-05-03 20:33:09 +02:00
										 |  |  |     const { body } = ctx.request; | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     await validateCreateFolder(body); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-03 20:33:09 +02:00
										 |  |  |     const folderService = getService('folder'); | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-03 20:33:09 +02:00
										 |  |  |     const folder = await folderService.create(body, { user }); | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ | 
					
						
							|  |  |  |       ability: ctx.state.userAbility, | 
					
						
							| 
									
										
										
										
											2022-05-13 16:10:18 +02:00
										 |  |  |       model: FOLDER_MODEL_UID, | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ctx.body = { | 
					
						
							|  |  |  |       data: await permissionsManager.sanitizeOutput(folder), | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2022-04-07 18:00:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-29 09:51:55 +02:00
										 |  |  |   async update(ctx) { | 
					
						
							|  |  |  |     const { user } = ctx.state; | 
					
						
							|  |  |  |     const { | 
					
						
							|  |  |  |       body, | 
					
						
							|  |  |  |       params: { id }, | 
					
						
							|  |  |  |     } = ctx.request; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     const permissionsManager = strapi.admin.services.permission.createPermissionsManager({ | 
					
						
							|  |  |  |       ability: ctx.state.userAbility, | 
					
						
							| 
									
										
										
										
											2022-05-13 16:10:18 +02:00
										 |  |  |       model: FOLDER_MODEL_UID, | 
					
						
							| 
									
										
										
										
											2022-04-29 09:51:55 +02:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-02 16:31:27 +02:00
										 |  |  |     await validateUpdateFolder(id)(body); | 
					
						
							| 
									
										
										
										
											2022-04-29 09:51:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-03 20:33:09 +02:00
										 |  |  |     const folderService = getService('folder'); | 
					
						
							| 
									
										
										
										
											2022-04-29 09:51:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-03 20:33:09 +02:00
										 |  |  |     const updatedFolder = await folderService.update(id, body, { user }); | 
					
						
							| 
									
										
										
										
											2022-04-29 09:51:55 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-05 18:44:50 +02:00
										 |  |  |     if (!updatedFolder) { | 
					
						
							|  |  |  |       return ctx.notFound('folder not found'); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-29 09:51:55 +02:00
										 |  |  |     ctx.body = { | 
					
						
							|  |  |  |       data: await permissionsManager.sanitizeOutput(updatedFolder), | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  |   async getStructure(ctx) { | 
					
						
							|  |  |  |     const { getStructure } = getService('folder'); | 
					
						
							| 
									
										
										
										
											2022-04-07 18:00:21 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  |     const structure = await getStructure(); | 
					
						
							| 
									
										
										
										
											2022-04-07 18:00:21 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     ctx.body = { | 
					
						
							| 
									
										
										
										
											2022-04-13 12:52:44 +02:00
										 |  |  |       data: structure, | 
					
						
							| 
									
										
										
										
											2022-04-07 18:00:21 +02:00
										 |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							| 
									
										
										
										
											2022-03-22 18:19:46 +01:00
										 |  |  | }; |