From b402d07038e6bfe321a389ca68c1f063e723a9d6 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Mon, 26 Aug 2019 21:27:07 +0200 Subject: Add more ferdi routes --- app/Controllers/Http/ServiceController.js | 156 ++++++++++++++++++++++++++---- 1 file changed, 138 insertions(+), 18 deletions(-) (limited to 'app/Controllers/Http/ServiceController.js') diff --git a/app/Controllers/Http/ServiceController.js b/app/Controllers/Http/ServiceController.js index 0d1bae2..66cf6e0 100644 --- a/app/Controllers/Http/ServiceController.js +++ b/app/Controllers/Http/ServiceController.js @@ -29,6 +29,7 @@ class ServiceController { if (validation.fails()) { return response.status(401).send({ "message": "Invalid POST arguments", + "messages": validation.messages(), "status": 401 }) } @@ -39,7 +40,7 @@ class ServiceController { let serviceId; do { serviceId = uuid(); - } while((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0) + } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0) const service = await Service.create({ userId: auth.user.id, @@ -81,30 +82,149 @@ class ServiceController { } catch (error) { return response.send('Missing or invalid api token') } - + const services = (await auth.user.services().fetch()).rows; // Convert to array with all data Franz wants const servicesArray = services.map(service => ({ - "customRecipe": false, - "hasCustomIcon": false, - "isBadgeEnabled": true, - "isDarkModeEnabled": "", - "isEnabled": true, - "isMuted": false, - "isNotificationEnabled": true, - "order": 1, - "spellcheckerLanguage": "", - "workspaces": [], - "iconUrl": null, - ...JSON.parse(service.settings), - "id": service.serviceId, - "name": service.name, - "recipeId": service.recipeId, - "userId": auth.user.id, + "customRecipe": false, + "hasCustomIcon": false, + "isBadgeEnabled": true, + "isDarkModeEnabled": "", + "isEnabled": true, + "isMuted": false, + "isNotificationEnabled": true, + "order": 1, + "spellcheckerLanguage": "", + "workspaces": [], + "iconUrl": null, + ...JSON.parse(service.settings), + "id": service.serviceId, + "name": service.name, + "recipeId": service.recipeId, + "userId": auth.user.id, })) return response.send(servicesArray) } + + async edit({ + request, + response, + auth, + params + }) { + try { + await auth.getUser() + } catch (error) { + return response.send('Missing or invalid api token') + } + + // Validate user input + const validation = await validateAll(request.all(), { + name: 'required', + }); + if (validation.fails()) { + return response.status(401).send({ + "message": "Invalid POST arguments", + "messages": validation.messages(), + "status": 401 + }) + } + + const data = request.all(); + const { + id + } = params; + + // Get current settings from db + const serviceData = (await Service.query() + .where('serviceId', id) + .where('userId', auth.user.id).fetch()).rows[0]; + + let settings = { + ...JSON.parse(serviceData.settings), + ...data, + }; + + // Update data in database + await (Service.query() + .where('serviceId', id) + .where('userId', auth.user.id)).update({ + name: data.name, + settings: JSON.stringify(settings) + }); + + // Get updated row + const service = (await Service.query() + .where('serviceId', id) + .where('userId', auth.user.id).fetch()).rows[0]; + + return response.send({ + "id": service.serviceId, + "name": data.name, + ...settings, + "userId": auth.user.id + }) + } + + async reorder({ + request, + response, + auth + }) { + const data = request.all(); + + for (const service in data) { + // Get current settings from db + const serviceData = (await Service.query() + .where('serviceId', service) + .where('userId', auth.user.id).fetch()).rows[0]; + + let settings = { + ...JSON.parse(serviceData.settings), + order: data[service] + }; + + // Update data in database + await (Service.query() + .where('serviceId', service) + .where('userId', auth.user.id)) + .update({ + settings: JSON.stringify(settings) + }); + } + + // Get new services + const services = (await auth.user.services().fetch()).rows; + // Convert to array with all data Franz wants + const servicesArray = services.map(service => ({ + "customRecipe": false, + "hasCustomIcon": false, + "isBadgeEnabled": true, + "isDarkModeEnabled": "", + "isEnabled": true, + "isMuted": false, + "isNotificationEnabled": true, + "order": 1, + "spellcheckerLanguage": "", + "workspaces": [], + "iconUrl": null, + ...JSON.parse(service.settings), + "id": service.serviceId, + "name": service.name, + "recipeId": service.recipeId, + "userId": auth.user.id, + })) + + return response.send(servicesArray) + } + + update({ + request, + response + }) { + return response.send([]) + } } module.exports = ServiceController -- cgit v1.2.3-54-g00ecf