From 29687a882977bfab30dc7615a61b6abadc97d9b8 Mon Sep 17 00:00:00 2001 From: Ashwani Yadav Date: Tue, 11 Feb 2020 02:28:22 +0530 Subject: [PATCH 1/2] Added API for create, delete and update for custom-user-status --- app/api/server/v1/custom-user-status.js | 70 ++++++++++++++++++++ app/models/server/models/CustomUserStatus.js | 5 ++ 2 files changed, 75 insertions(+) diff --git a/app/api/server/v1/custom-user-status.js b/app/api/server/v1/custom-user-status.js index 14764be6248f..53e4286a2b24 100644 --- a/app/api/server/v1/custom-user-status.js +++ b/app/api/server/v1/custom-user-status.js @@ -1,3 +1,7 @@ +import { Meteor } from 'meteor/meteor'; +import { Match, check } from 'meteor/check'; + +import { CustomUserStatus } from '../../../models'; import { API } from '../api'; import { findCustomUserStatus } from '../lib/custom-user-status'; @@ -16,3 +20,69 @@ API.v1.addRoute('custom-user-status.list', { authRequired: true }, { }))); }, }); + +API.v1.addRoute('custom-user-status.create', { authRequired: true }, { + post() { + check(this.bodyParams, { + name: String, + statusType: Match.Maybe(String), + }); + + const userStatusData = { + name: this.bodyParams.name, + statusType: this.bodyParams.statusType, + }; + + Meteor.runAsUser(this.userId, () => { + Meteor.call('insertOrUpdateUserStatus', userStatusData); + }); + + return API.v1.success({ + customUserStatus: CustomUserStatus.findOneByName(userStatusData.name), + }); + }, +}); + +API.v1.addRoute('custom-user-status.delete', { authRequired: true }, { + post() { + const { customUserStatusId } = this.bodyParams; + if (!customUserStatusId) { + return API.v1.failure('The "customUserStatusId" params is required!'); + } + + Meteor.runAsUser(this.userId, () => Meteor.call('deleteCustomUserStatus', customUserStatusId)); + + return API.v1.success(); + }, +}); + +API.v1.addRoute('custom-user-status.update', { authRequired: true }, { + post() { + check(this.bodyParams, { + _id: String, + name: Match.Maybe(String), + statusType: Match.Maybe(String), + }); + + const userStatusData = { + _id: this.bodyParams._id, + name: this.bodyParams.name, + statusType: this.bodyParams.statusType, + }; + + const customUserStatus = CustomUserStatus.findOneById(userStatusData._id); + + // Ensure the message exists + if (!customUserStatus) { + return API.v1.failure(`No custom user status found with the id of "${ userStatusData._id }".`); + } + + Meteor.runAsUser(this.userId, () => { + Meteor.call('insertOrUpdateUserStatus', userStatusData); + }); + + return API.v1.success({ + customUserStatus: CustomUserStatus.findOneById(userStatusData._id), + }); + }, +}); diff --git a/app/models/server/models/CustomUserStatus.js b/app/models/server/models/CustomUserStatus.js index 9e0818dc6354..eb3a586da6ba 100644 --- a/app/models/server/models/CustomUserStatus.js +++ b/app/models/server/models/CustomUserStatus.js @@ -12,6 +12,11 @@ class CustomUserStatus extends Base { return this.findOne(_id, options); } + // find one by name + findOneByName(name, options) { + return this.findOne({ name }, options); + } + // find findByName(name, options) { const query = { From c8c004d4a60243fd16c5d1ccfcc7c2eb3f51b81a Mon Sep 17 00:00:00 2001 From: Ashwani Yadav Date: Tue, 11 Feb 2020 03:29:08 +0530 Subject: [PATCH 2/2] made name required in update --- app/api/server/v1/custom-user-status.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/server/v1/custom-user-status.js b/app/api/server/v1/custom-user-status.js index 53e4286a2b24..162ab1e0fc51 100644 --- a/app/api/server/v1/custom-user-status.js +++ b/app/api/server/v1/custom-user-status.js @@ -60,7 +60,7 @@ API.v1.addRoute('custom-user-status.update', { authRequired: true }, { post() { check(this.bodyParams, { _id: String, - name: Match.Maybe(String), + name: String, statusType: Match.Maybe(String), });