Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @author Alex Lazar
- * REST-API definition for Kickstart actions ()
- * */
- /*global req, res, require, SQL */
- var KickstartStore = require('store/KickstartStore').KickstartStore,
- ActivityStore = require('store/ActivityStore').ActivityStore,
- GoalStore = require('store/GoalStore').GoalStore,
- PersonaStore = require('store/PersonaStore').PersonaStore,
- PersonaGoalStore = require('store/PersonaGoalStore').PersonaGoalStore,
- PersonaProblemStore = require('store/PersonaProblemStore').PersonaProblemStore,
- PersonaJourneyStore = require('store/PersonaJourneyStore').PersonaJourneyStore,
- PersonaJourneyStageStore = require('store/PersonaJourneyStageStore').PersonaJourneyStageStore,
- PersonaJourneyStageTaskStore = require('store/PersonaJourneyStageTaskStore').PersonaJourneyStageTaskStore,
- PersonaAssumptionStore = require('store/PersonaAssumptionStore').PersonaAssumptionStore,
- PersonaAssumptionQuestionStore = require('store/PersonaAssumptionQuestionStore').PersonaAssumptionQuestionStore,
- FeedbackUserStore = require('store/FeedbackUserStore').FeedbackUserStore,
- EndUserStore = require('store/EndUserStore').EndUserStore,
- NoteStore = require('store/NoteStore').NoteStore,
- TaskStore = require('store/TaskStore').TaskStore,
- TaskFlowStore = require('store/TaskFlowStore').TaskFlowStore;
- return {
- // GET /v1/kickstarts = list
- // GET /v1/kickstarts/:id = get user by id
- 'GET' : function (id, item, itemId, subItem, subItemId, sub1Item, sub1ItemId, sub2Item, sub2ItemId) {
- var req = this.req;
- if (!req.userId) {
- this.send(403, 'Permission denied: not logged in');
- return;
- }
- if (!req.kickstartId && id) {
- this.send(403, 'Permission denied: no kickstart id');
- return;
- }
- if (!req.userInKickstart && id) {
- this.send(403, 'Permission denied: not in kickstart');
- return;
- }
- SQL.startTransaction();
- try {
- switch (item) {
- case 'categories':
- // will handle the stories REST calls of a Kickstart
- if (itemId) {
- if (subItem && subItem == "goals") {
- GoalStore.listGoalsByCategory(this, id, itemId, req.userId);
- }
- else {
- GoalStore.getCategoryById(this, id, itemId, req.userId);
- }
- }
- else {
- GoalStore.listCategories(this, id, req.userId);
- }
- break;
- case 'goals':
- // will handle the goals REST calls of a Kickstart
- if (itemId) {
- if (subItem && subItem === "activity") {
- ActivityStore.list(this, 'goal', itemId);
- }
- else {
- GoalStore.getById(this, itemId, null, id, req.userId);
- }
- }
- else {
- GoalStore.list(this, req.userId, id, null);
- }
- break;
- case 'activity':
- // kickstart activity listing
- ActivityStore.list(this, 'kickstart', id);
- break;
- case 'feedbackUsers':
- // will handle the goals REST calls of a Kickstart
- if (itemId) {
- if (subItem && subItem == "personas") {
- if (subItemId) {
- PersonaStore.getById(this, subItemId, id, req.userId);
- }
- else {
- PersonaStore.listByFeedbackUser(this, itemId, id, req.userId);
- }
- }
- else {
- FeedbackUserStore.getById(this, itemId, id, req.userId);
- }
- }
- else {
- FeedbackUserStore.list(this, id, req.userId);
- }
- break;
- // personas
- case 'personas':
- // kickstart activity listing
- if (itemId) {
- if (subItem && subItem == "goals") {
- if (subItemId) {
- PersonaGoalStore.getById(this, subItemId, id, req.userId);
- }
- else {
- PersonaGoalStore.list(this, itemId, id, req.userId);
- }
- }
- else if (subItem && subItem === "problems") {
- if (subItemId) {
- PersonaProblemStore.getById(this, subItemId, id, req.userId);
- }
- else {
- PersonaProblemStore.list(this, itemId, id, req.userId);
- }
- }
- else if (subItem && subItem === "journeys") {
- if (subItemId) {
- if (sub1Item && sub1Item == "stages") {
- if (sub1ItemId) {
- if (sub2Item && sub2Item == "tasks") {
- if (sub2ItemId) {
- PersonaJourneyStageTaskStore.getById(this, sub2ItemId, id, req.userId);
- }
- else {
- PersonaJourneyStageTaskStore.list(this, sub1ItemId, id, req.userId);
- }
- }
- else {
- PersonaJourneyStageStore.getById(this, sub1ItemId, id, req.userId);
- }
- }
- else {
- PersonaJourneyStageStore.list(this, subItemId, id, req.userId);
- }
- }
- else {
- PersonaJourneyStore.getById(this, subItemId, id, req.userId);
- }
- }
- else {
- PersonaJourneyStore.list(this, itemId, id, req.userId);
- }
- }
- else if (subItem && subItem == "notes") {
- if (subItemId) {
- NoteStore.getById(this, subItemId);
- }
- else {
- NoteStore.list(this, item, itemId);
- }
- }
- else if (subItem && subItem === "assumptions") {
- if (subItemId) {
- if (sub1Item && sub1Item == "questions") {
- if (sub1ItemId) {
- if (sub2Item && sub2Item == "answers") {
- if (sub2ItemId) {
- //PersonaAssumptionQuestionAnswersStore.getById(this, sub2ItemId, id, req.userId);
- }
- else {
- //PersonaAssumptionQuestionAnswersStore.list(this, sub1ItemId, id, req.userId);
- }
- }
- else {
- PersonaAssumptionQuestionStore.getById(this, sub1ItemId, id, req.userId);
- }
- }
- else {
- PersonaAssumptionQuestionStore.list(this, subItemId, id, req.userId);
- }
- }
- else {
- PersonaAssumptionStore.getById(this, subItemId, id, req.userId);
- }
- }
- else {
- PersonaAssumptionStore.list(this, itemId, id, req.userId);
- }
- }
- else if (subItem && subItem === "activity") {
- ActivityStore.list(this, 'persona', itemId);
- }
- else if (subItem && subItem === "endUsers") {
- EndUserStore.listByPersona(this, itemId, id, req.userId);
- }
- else if (subItem && subItem === "feedbackUsers") {
- FeedbackUserStore.listByPersona(this, itemId, id, req.userId);
- }
- else {
- PersonaStore.getById(this, itemId, id, req.userId);
- }
- }
- else {
- PersonaStore.list(this, id, req.userId);
- }
- break;
- // personas
- case 'endUsers':
- // kickstart activity listing
- if (itemId) {
- if (subItem && subItem === "activity") {
- ActivityStore.list(this, 'persona', itemId);
- }
- else if (subItem && subItem === "personas") {
- PersonaStore.listByEndUser(this, itemId, id, req.userId);
- }
- else if (subItem && subItem == "notes") {
- if (subItemId) {
- NoteStore.getById(this, subItemId);
- }
- else {
- NoteStore.list(this, item, itemId);
- }
- }
- else {
- EndUserStore.getById(this, itemId, id, req.userId);
- }
- }
- else {
- EndUserStore.list(this, id, req.userId);
- }
- break;
- case 'taskFlows':
- // kickstart activity listing
- if (itemId) {
- if (subItem && subItem === "activity") {
- ActivityStore.list(this, 'taskFlows', itemId);
- }
- else if (subItem && subItem === "tasks") {
- if (subItemId) {
- TaskStore.getById(this, subItemId, id, req.userId);
- }
- else {
- TaskStore.list(this, itemId, id, req.userId);
- }
- }
- else {
- TaskFlowStore.getById(this, itemId, id, req.userId);
- }
- }
- else {
- TaskFlowStore.list(this, id, req.userId);
- }
- break;
- default:
- if (id) {
- KickstartStore.getById(this, id, req.userId);
- }
- else {
- KickstartStore.list(this, req.userId);
- }
- break;
- }
- SQL.commit();
- }
- catch (e) {
- SQL.rollback();
- this.exception(e);
- }
- },
- // PUT /v1/kickstart/:id = update user
- 'PUT' : function (id, item, itemId, subItem, subItemId, sub1Item, sub1ItemId, sub2Item, sub2ItemId) {
- var req = this.req;
- if (!req.kickstartId || !req.userId || !req.userInKickstart) {
- this.send(403, 'Permission denied');
- }
- if (!id) {
- throw new Error('Invalid arguments');
- }
- SQL.startTransaction();
- try {
- var data = typeof this.req.post === "string" ? JSON.parse(this.req.post) : this.req.post;
- switch (item) {
- case 'categories':
- // will handle the stories REST calls of a Goal Category
- GoalStore.updateCategory(this, data, itemId);
- break;
- case 'goals':
- // will handle the goals REST calls of a Goal
- if (itemId) {
- GoalStore.update(this, itemId, data, req.userId);
- }
- else {
- GoalStore.updateOrder(this, data);
- }
- break;
- case 'personas':
- // will handle the stories REST calls of a Persona
- if (itemId) {
- if (subItem && subItem == "goals") {
- if (subItemId) {
- PersonaGoalStore.update(this, subItemId, data, req.userId, itemId, id);
- }
- else {
- PersonaGoalStore.updateOrder(this, data);
- }
- }
- else if (subItem && subItem == "notes") {
- if (subItemId) {
- NoteStore.update(this, subItemId, data, item, req.userId, id);
- }
- }
- else if (subItem && subItem == "problems") {
- if (subItemId) {
- PersonaProblemStore.update(this, subItemId, data, req.userId, itemId, id);
- }
- else {
- PersonaProblemStore.updateOrder(this, data);
- }
- }
- else if (subItem && subItem == "assumptions") {
- if (subItemId) {
- if (sub1Item && sub1Item === "questions") {
- if (sub1ItemId) {
- if (sub2Item && sub2Item === "answers") {
- if (sub2ItemId) {
- //PersonaAssumptionQuestionAnswersStore.update(this, sub2ItemId, data, req.userId, sub1ItemId, id);
- }
- else {
- //PersonaAssumptionQuestionAnswersStore.updateOrder(this, data, sub1ItemId);
- }
- }
- else {
- PersonaAssumptionQuestionStore.update(this, sub1ItemId, data, req.userId, subItemId, id);
- }
- }
- else {
- PersonaAssumptionQuestionStore.updateOrder(this, data);
- }
- }
- else {
- PersonaAssumptionStore.update(this, subItemId, data, req.userId, itemId, id);
- }
- }
- else {
- PersonaAssumptionStore.updateOrder(this, data);
- }
- }
- else if (subItem && subItem == "journeys") {
- if (subItemId) {
- if (sub1Item && sub1Item === "stages") {
- if (sub1ItemId) {
- if (sub2Item && sub2Item === "tasks") {
- if (sub2ItemId) {
- PersonaJourneyStageTaskStore.update(this, sub2ItemId, data, req.userId, subItemId, id);
- }
- else {
- PersonaJourneyStageTaskStore.updateOrder(this, data, sub1ItemId);
- }
- }
- else {
- PersonaJourneyStageStore.update(this, sub1ItemId, data, req.userId, subItemId, id);
- }
- }
- else {
- PersonaJourneyStageStore.updateOrder(this, data);
- }
- }
- else {
- PersonaJourneyStore.update(this, subItemId, data, req.userId, itemId, id);
- }
- }
- else {
- PersonaJourneyStore.updateOrder(this, data);
- }
- }
- else if (subItem && subItem == "endUsers") {
- PersonaStore.mapEndUsersToPersona(this, itemId, data, req.userId, id);
- }
- else if (subItem && subItem == "feedbackUsers") {
- PersonaStore.mapFeedbackUsersToPersona(this, itemId, data, req.userId, id);
- }
- else {
- PersonaStore.update(this, itemId, data, req.userId, id);
- }
- }
- else {
- throw new Error('Invalid arguments');
- }
- break;
- case 'feedbackUsers':
- // will handle the stories REST calls of an EndUser
- if (itemId) {
- if (subItem && subItem == "personas") {
- FeedbackUserStore.mapPersonasToFeedbackUser(this, itemId, data, req.userId, id);
- }
- else {
- FeedbackUserStore.update(this, itemId, data, id, req.userId);
- }
- }
- else {
- throw new Error('Invalid arguments');
- }
- break;
- case 'endUsers':
- // will handle the stories REST calls of an EndUser
- if (itemId) {
- if (subItem && subItem == "personas") {
- EndUserStore.mapPersonasToEndUser(this, itemId, data, req.userId, id);
- }
- else if (subItem && subItem == "notes") {
- if (subItemId) {
- NoteStore.update(this, subItemId, data, item, req.userId, id);
- }
- }
- else {
- EndUserStore.update(this, itemId, data, req.userId, id);
- }
- }
- else {
- throw new Error('Invalid arguments');
- }
- break;
- case 'taskFlows':
- // will handle the stories REST calls of an EndUser
- if (itemId) {
- if (subItem && subItem == "tasks") {
- if (subItemId) {
- TaskStore.update(this, subItemId, data, item, req.userId, id);
- }
- }
- else {
- TaskFlowStore.update(this, itemId, data, req.userId, id);
- }
- }
- else {
- throw new Error('Invalid arguments');
- }
- break;
- default:
- KickstartStore.update(this, id, data, req.userId);
- }
- SQL.commit();
- }
- catch (e) {
- SQL.rollback();
- this.exception(e);
- }
- },
- // POST /v1/kickstart = create kickstart
- 'POST' : function (id, item, itemId, subItem, subItemId, sub1Item, sub1ItemId, sub2Item, sub2ItemId) {
- var req = this.req;
- if (!req.userId) {
- this.send(403, 'Permission denied');
- return;
- }
- if (!req.kickstartId && id) {
- this.send(403, 'Permission denied');
- }
- if (!req.userInKickstart && id) {
- this.send(403, 'Permission denied: not in kickstart');
- }
- SQL.startTransaction();
- try {
- var data = typeof this.req.post === "string" ? JSON.parse(this.req.post) : this.req.post;
- switch (item) {
- case 'categories':
- // will handle the stories REST calls of a Kickstart
- GoalStore.addCategory(this, data, id);
- break;
- case 'goals':
- GoalStore.add(this, data, req.userId, id);
- break;
- case 'personas':
- if (itemId && subItem && subItem == "goals") {
- PersonaGoalStore.add(this, data, itemId, req.userId, id);
- }
- else if (itemId && subItem && subItem == "notes") {
- NoteStore.add(this, data, item, itemId, req.userId, id);
- }
- else if (itemId && subItem && subItem == "problems") {
- PersonaProblemStore.add(this, data, itemId, req.userId, id);
- }
- else if (itemId && subItem && subItem == "assumptions") {
- if (subItemId) {
- if (sub1Item && sub1Item === "questions") {
- if (sub1ItemId) {
- if (sub1Item && sub1Item === "answers") {
- //PersonaAssumptionQuestionAnswersStore.add(this, data, sub1ItemId, subItemId, itemId, req.userId, id);
- }
- }
- else {
- PersonaAssumptionQuestionStore.add(this, data, subItemId, itemId, req.userId, id);
- }
- }
- }
- else {
- PersonaAssumptionStore.add(this, data, itemId, req.userId, id);
- }
- }
- else if (itemId && subItem && subItem == "journeys") {
- if (subItemId) {
- if (sub1Item && sub1Item === "stages") {
- if (sub1ItemId) {
- if (sub1Item && sub1Item === "stages") {
- PersonaJourneyStageTaskStore.add(this, data, sub1ItemId, subItemId, itemId, req.userId, id);
- }
- }
- else {
- PersonaJourneyStageStore.add(this, data, subItemId, itemId, req.userId, id);
- }
- }
- }
- else {
- PersonaJourneyStore.add(this, data, itemId, req.userId, id);
- }
- }
- else {
- // will handle the stories REST calls of a Kickstart
- PersonaStore.add(this, data, req.userId, id);
- }
- break;
- case 'endUsers':
- if (itemId && subItem && subItem == "notes") {
- NoteStore.add(this, data, item, itemId, req.userId, id);
- }
- else {
- EndUserStore.add(this, data, req.userId, id);
- }
- break;
- case 'feedbackUsers':
- data.kickstartId = this.req.kickstartId;
- FeedbackUserStore.add(this, data, req.userId, id);
- break;
- case 'taskFlows':
- if (itemId && subItem && subItem == "tasks") {
- TaskStore.add(this, data, item, itemId, req.userId, id);
- }
- else {
- TaskFlowStore.add(this, data, req.userId, id);
- }
- break;
- default:
- KickstartStore.add(this, data, req.userId);
- return;
- }
- SQL.commit();
- }
- catch (e) {
- SQL.rollback();
- this.exception(e);
- }
- },
- // DELETE /v1/kickstart/:id
- 'DELETE' : function (id, item, itemId, subItem, subItemId, sub1Item, sub1ItemId, sub2Item, sub2ItemId) {
- var req = this.req;
- if (!req.kickstartId || !req.userId || !req.userInKickstart) {
- this.send(403, 'Permission denied');
- return;
- }
- if (!id) {
- throw new Error('Invalid arguments');
- }
- SQL.startTransaction();
- try {
- var data = typeof this.req.post === "string" ? JSON.parse(this.req.post) : this.req.post;
- switch (item) {
- case 'categories':
- // will handle the stories REST calls of a Kickstart
- GoalStore.removeCategory(this, itemId, req.userId, id);
- break;
- case 'goals':
- GoalStore.remove(this, itemId, req.userId);
- break;
- //case 'stories':
- // UserStoryStore.remove(this, itemId, req.userId);
- break;
- case 'personas':
- if (itemId && subItem && subItem == "goals") {
- PersonaGoalStore.remove(this, subItemId, req.userId, id);
- }
- else if (itemId && subItem && subItem == "problems") {
- PersonaProblemStore.remove(this, subItemId, req.userId, id);
- }
- else if (itemId && subItem && subItem == "assumptions") {
- if (subItemId) {
- if (sub1Item && sub1Item === "questions") {
- if (sub1ItemId) {
- if (sub2Item && sub2Item === "feedback") {
- //PersonaAssumptionQuestionAnswersStore.remove(this, sub2ItemId, req.userId, id);
- }
- else {
- PersonaAssumptionQuestionStore.remove(this, sub1ItemId, req.userId, id);
- }
- }
- }
- else {
- PersonaAssumptionStore.remove(this, subItemId, req.userId, id);
- }
- }
- }
- else if (itemId && subItem && subItem == "journeys") {
- if (subItemId) {
- if (sub1Item && sub1Item === "stages") {
- if (sub1ItemId) {
- if (sub2Item && sub2Item === "tasks") {
- PersonaJourneyStageTaskStore.remove(this, sub2ItemId, req.userId, id);
- }
- else {
- PersonaJourneyStageStore.remove(this, sub1ItemId, req.userId, id);
- }
- }
- }
- else {
- PersonaJourneyStore.remove(this, subItemId, req.userId, id);
- }
- }
- }
- else if (itemId && subItem && subItem == "notes") {
- NoteStore.remove(this, subItemId, req.userId, id);
- }
- else if (itemId && subItem && subItem == "endUsers") {
- PersonaStore.removeEndUsersFromPersona(this, itemId, data, req.userId, id);
- }
- else {
- // will handle the stories REST calls of a Kickstart
- PersonaStore.remove(this, itemId, req.userId, id);
- }
- break;
- case 'endUsers':
- if (itemId && subItem && subItem == "personas") {
- EndUserStore.removePersonasFromEndUser(this, itemId, data, req.userId, id);
- }
- else if (itemId && subItem && subItem == "notes") {
- NoteStore.remove(this, subItemId, req.userId, id);
- }
- else {
- EndUserStore.remove(this, itemId, req.userId, id);
- }
- break;
- case 'feedbackUsers':
- if (itemId && subItem && subItem == "personas") {
- FeedbackUserStore.removePersonasFromFeedbackUser(this, itemId, data, req.userId, id);
- }
- else {
- FeedbackUserStore.remove(this, itemId, id, req.userId);
- }
- break;
- case 'taskFlows':
- if (itemId && subItem && subItem == "tasks") {
- TaskStore.remove(this, subItemId, req.userId, id);
- }
- else {
- TaskFlowStore.remove(this, itemId, req.userId, id);
- }
- break;
- case 'removeUser':
- KickstartStore.removeUser(this, itemId, id, req.userId);
- break;
- default:
- KickstartStore.remove(this, id, req.userId);
- break;
- }
- SQL.commit();
- }
- catch (e) {
- SQL.rollback();
- this.exception(e);
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement