Advertisement
Guest User

Untitled

a guest
Jul 30th, 2015
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.21 KB | None | 0 0
  1. /**
  2. * @author Alex Lazar
  3. * REST-API definition for Kickstart actions ()
  4. * */
  5.  
  6. /*global req, res, require, SQL */
  7.  
  8. var KickstartStore = require('store/KickstartStore').KickstartStore,
  9. ActivityStore = require('store/ActivityStore').ActivityStore,
  10. GoalStore = require('store/GoalStore').GoalStore,
  11. PersonaStore = require('store/PersonaStore').PersonaStore,
  12. PersonaGoalStore = require('store/PersonaGoalStore').PersonaGoalStore,
  13. PersonaProblemStore = require('store/PersonaProblemStore').PersonaProblemStore,
  14. PersonaJourneyStore = require('store/PersonaJourneyStore').PersonaJourneyStore,
  15. PersonaJourneyStageStore = require('store/PersonaJourneyStageStore').PersonaJourneyStageStore,
  16. PersonaJourneyStageTaskStore = require('store/PersonaJourneyStageTaskStore').PersonaJourneyStageTaskStore,
  17. PersonaAssumptionStore = require('store/PersonaAssumptionStore').PersonaAssumptionStore,
  18. PersonaAssumptionQuestionStore = require('store/PersonaAssumptionQuestionStore').PersonaAssumptionQuestionStore,
  19. FeedbackUserStore = require('store/FeedbackUserStore').FeedbackUserStore,
  20. EndUserStore = require('store/EndUserStore').EndUserStore,
  21. NoteStore = require('store/NoteStore').NoteStore,
  22. TaskStore = require('store/TaskStore').TaskStore,
  23. TaskFlowStore = require('store/TaskFlowStore').TaskFlowStore;
  24.  
  25. return {
  26. // GET /v1/kickstarts = list
  27. // GET /v1/kickstarts/:id = get user by id
  28. 'GET' : function (id, item, itemId, subItem, subItemId, sub1Item, sub1ItemId, sub2Item, sub2ItemId) {
  29. var req = this.req;
  30.  
  31. if (!req.userId) {
  32. this.send(403, 'Permission denied: not logged in');
  33. return;
  34. }
  35. if (!req.kickstartId && id) {
  36. this.send(403, 'Permission denied: no kickstart id');
  37. return;
  38. }
  39. if (!req.userInKickstart && id) {
  40. this.send(403, 'Permission denied: not in kickstart');
  41. return;
  42. }
  43.  
  44. SQL.startTransaction();
  45. try {
  46. switch (item) {
  47. case 'categories':
  48. // will handle the stories REST calls of a Kickstart
  49. if (itemId) {
  50. if (subItem && subItem == "goals") {
  51. GoalStore.listGoalsByCategory(this, id, itemId, req.userId);
  52. }
  53. else {
  54. GoalStore.getCategoryById(this, id, itemId, req.userId);
  55. }
  56. }
  57. else {
  58. GoalStore.listCategories(this, id, req.userId);
  59. }
  60. break;
  61. case 'goals':
  62. // will handle the goals REST calls of a Kickstart
  63. if (itemId) {
  64. if (subItem && subItem === "activity") {
  65. ActivityStore.list(this, 'goal', itemId);
  66. }
  67. else {
  68. GoalStore.getById(this, itemId, null, id, req.userId);
  69. }
  70. }
  71. else {
  72. GoalStore.list(this, req.userId, id, null);
  73. }
  74. break;
  75.  
  76. case 'activity':
  77. // kickstart activity listing
  78. ActivityStore.list(this, 'kickstart', id);
  79. break;
  80.  
  81. case 'feedbackUsers':
  82. // will handle the goals REST calls of a Kickstart
  83. if (itemId) {
  84. if (subItem && subItem == "personas") {
  85. if (subItemId) {
  86. PersonaStore.getById(this, subItemId, id, req.userId);
  87. }
  88. else {
  89. PersonaStore.listByFeedbackUser(this, itemId, id, req.userId);
  90. }
  91.  
  92. }
  93. else {
  94. FeedbackUserStore.getById(this, itemId, id, req.userId);
  95. }
  96.  
  97. }
  98. else {
  99. FeedbackUserStore.list(this, id, req.userId);
  100. }
  101. break;
  102.  
  103. // personas
  104. case 'personas':
  105. // kickstart activity listing
  106. if (itemId) {
  107. if (subItem && subItem == "goals") {
  108. if (subItemId) {
  109. PersonaGoalStore.getById(this, subItemId, id, req.userId);
  110. }
  111. else {
  112. PersonaGoalStore.list(this, itemId, id, req.userId);
  113. }
  114.  
  115. }
  116. else if (subItem && subItem === "problems") {
  117. if (subItemId) {
  118. PersonaProblemStore.getById(this, subItemId, id, req.userId);
  119. }
  120. else {
  121. PersonaProblemStore.list(this, itemId, id, req.userId);
  122. }
  123. }
  124. else if (subItem && subItem === "journeys") {
  125. if (subItemId) {
  126. if (sub1Item && sub1Item == "stages") {
  127. if (sub1ItemId) {
  128. if (sub2Item && sub2Item == "tasks") {
  129. if (sub2ItemId) {
  130. PersonaJourneyStageTaskStore.getById(this, sub2ItemId, id, req.userId);
  131. }
  132. else {
  133. PersonaJourneyStageTaskStore.list(this, sub1ItemId, id, req.userId);
  134. }
  135. }
  136. else {
  137. PersonaJourneyStageStore.getById(this, sub1ItemId, id, req.userId);
  138. }
  139. }
  140. else {
  141. PersonaJourneyStageStore.list(this, subItemId, id, req.userId);
  142. }
  143. }
  144. else {
  145. PersonaJourneyStore.getById(this, subItemId, id, req.userId);
  146. }
  147. }
  148. else {
  149. PersonaJourneyStore.list(this, itemId, id, req.userId);
  150. }
  151. }
  152. else if (subItem && subItem == "notes") {
  153. if (subItemId) {
  154. NoteStore.getById(this, subItemId);
  155. }
  156. else {
  157. NoteStore.list(this, item, itemId);
  158. }
  159. }
  160. else if (subItem && subItem === "assumptions") {
  161. if (subItemId) {
  162. if (sub1Item && sub1Item == "questions") {
  163. if (sub1ItemId) {
  164. if (sub2Item && sub2Item == "answers") {
  165. if (sub2ItemId) {
  166. //PersonaAssumptionQuestionAnswersStore.getById(this, sub2ItemId, id, req.userId);
  167. }
  168. else {
  169. //PersonaAssumptionQuestionAnswersStore.list(this, sub1ItemId, id, req.userId);
  170. }
  171. }
  172. else {
  173. PersonaAssumptionQuestionStore.getById(this, sub1ItemId, id, req.userId);
  174. }
  175. }
  176. else {
  177. PersonaAssumptionQuestionStore.list(this, subItemId, id, req.userId);
  178. }
  179. }
  180. else {
  181. PersonaAssumptionStore.getById(this, subItemId, id, req.userId);
  182. }
  183. }
  184. else {
  185. PersonaAssumptionStore.list(this, itemId, id, req.userId);
  186. }
  187. }
  188. else if (subItem && subItem === "activity") {
  189. ActivityStore.list(this, 'persona', itemId);
  190. }
  191. else if (subItem && subItem === "endUsers") {
  192. EndUserStore.listByPersona(this, itemId, id, req.userId);
  193. }
  194. else if (subItem && subItem === "feedbackUsers") {
  195. FeedbackUserStore.listByPersona(this, itemId, id, req.userId);
  196. }
  197. else {
  198. PersonaStore.getById(this, itemId, id, req.userId);
  199. }
  200. }
  201. else {
  202. PersonaStore.list(this, id, req.userId);
  203. }
  204. break;
  205.  
  206. // personas
  207. case 'endUsers':
  208. // kickstart activity listing
  209. if (itemId) {
  210. if (subItem && subItem === "activity") {
  211. ActivityStore.list(this, 'persona', itemId);
  212. }
  213. else if (subItem && subItem === "personas") {
  214. PersonaStore.listByEndUser(this, itemId, id, req.userId);
  215. }
  216. else if (subItem && subItem == "notes") {
  217. if (subItemId) {
  218. NoteStore.getById(this, subItemId);
  219. }
  220. else {
  221. NoteStore.list(this, item, itemId);
  222. }
  223. }
  224. else {
  225. EndUserStore.getById(this, itemId, id, req.userId);
  226. }
  227. }
  228. else {
  229. EndUserStore.list(this, id, req.userId);
  230. }
  231. break;
  232.  
  233. case 'taskFlows':
  234. // kickstart activity listing
  235. if (itemId) {
  236. if (subItem && subItem === "activity") {
  237. ActivityStore.list(this, 'taskFlows', itemId);
  238. }
  239. else if (subItem && subItem === "tasks") {
  240. if (subItemId) {
  241. TaskStore.getById(this, subItemId, id, req.userId);
  242. }
  243. else {
  244. TaskStore.list(this, itemId, id, req.userId);
  245. }
  246. }
  247. else {
  248. TaskFlowStore.getById(this, itemId, id, req.userId);
  249. }
  250. }
  251. else {
  252. TaskFlowStore.list(this, id, req.userId);
  253. }
  254. break;
  255.  
  256. default:
  257. if (id) {
  258. KickstartStore.getById(this, id, req.userId);
  259. }
  260. else {
  261. KickstartStore.list(this, req.userId);
  262. }
  263. break;
  264. }
  265. SQL.commit();
  266. }
  267. catch (e) {
  268. SQL.rollback();
  269. this.exception(e);
  270. }
  271. },
  272.  
  273. // PUT /v1/kickstart/:id = update user
  274. 'PUT' : function (id, item, itemId, subItem, subItemId, sub1Item, sub1ItemId, sub2Item, sub2ItemId) {
  275. var req = this.req;
  276.  
  277. if (!req.kickstartId || !req.userId || !req.userInKickstart) {
  278. this.send(403, 'Permission denied');
  279. }
  280.  
  281. if (!id) {
  282. throw new Error('Invalid arguments');
  283. }
  284.  
  285. SQL.startTransaction();
  286. try {
  287. var data = typeof this.req.post === "string" ? JSON.parse(this.req.post) : this.req.post;
  288.  
  289. switch (item) {
  290. case 'categories':
  291. // will handle the stories REST calls of a Goal Category
  292. GoalStore.updateCategory(this, data, itemId);
  293. break;
  294. case 'goals':
  295. // will handle the goals REST calls of a Goal
  296. if (itemId) {
  297. GoalStore.update(this, itemId, data, req.userId);
  298. }
  299. else {
  300. GoalStore.updateOrder(this, data);
  301. }
  302. break;
  303. case 'personas':
  304. // will handle the stories REST calls of a Persona
  305. if (itemId) {
  306. if (subItem && subItem == "goals") {
  307. if (subItemId) {
  308. PersonaGoalStore.update(this, subItemId, data, req.userId, itemId, id);
  309. }
  310. else {
  311. PersonaGoalStore.updateOrder(this, data);
  312. }
  313. }
  314. else if (subItem && subItem == "notes") {
  315. if (subItemId) {
  316. NoteStore.update(this, subItemId, data, item, req.userId, id);
  317. }
  318. }
  319. else if (subItem && subItem == "problems") {
  320.  
  321. if (subItemId) {
  322. PersonaProblemStore.update(this, subItemId, data, req.userId, itemId, id);
  323. }
  324. else {
  325. PersonaProblemStore.updateOrder(this, data);
  326. }
  327. }
  328. else if (subItem && subItem == "assumptions") {
  329.  
  330. if (subItemId) {
  331. if (sub1Item && sub1Item === "questions") {
  332. if (sub1ItemId) {
  333. if (sub2Item && sub2Item === "answers") {
  334. if (sub2ItemId) {
  335. //PersonaAssumptionQuestionAnswersStore.update(this, sub2ItemId, data, req.userId, sub1ItemId, id);
  336. }
  337. else {
  338. //PersonaAssumptionQuestionAnswersStore.updateOrder(this, data, sub1ItemId);
  339. }
  340. }
  341. else {
  342. PersonaAssumptionQuestionStore.update(this, sub1ItemId, data, req.userId, subItemId, id);
  343. }
  344.  
  345. }
  346. else {
  347. PersonaAssumptionQuestionStore.updateOrder(this, data);
  348. }
  349. }
  350. else {
  351. PersonaAssumptionStore.update(this, subItemId, data, req.userId, itemId, id);
  352. }
  353. }
  354. else {
  355. PersonaAssumptionStore.updateOrder(this, data);
  356. }
  357. }
  358. else if (subItem && subItem == "journeys") {
  359.  
  360. if (subItemId) {
  361. if (sub1Item && sub1Item === "stages") {
  362. if (sub1ItemId) {
  363. if (sub2Item && sub2Item === "tasks") {
  364. if (sub2ItemId) {
  365. PersonaJourneyStageTaskStore.update(this, sub2ItemId, data, req.userId, subItemId, id);
  366. }
  367. else {
  368. PersonaJourneyStageTaskStore.updateOrder(this, data, sub1ItemId);
  369. }
  370. }
  371. else {
  372. PersonaJourneyStageStore.update(this, sub1ItemId, data, req.userId, subItemId, id);
  373. }
  374.  
  375. }
  376. else {
  377. PersonaJourneyStageStore.updateOrder(this, data);
  378. }
  379. }
  380. else {
  381. PersonaJourneyStore.update(this, subItemId, data, req.userId, itemId, id);
  382. }
  383. }
  384. else {
  385. PersonaJourneyStore.updateOrder(this, data);
  386. }
  387. }
  388. else if (subItem && subItem == "endUsers") {
  389. PersonaStore.mapEndUsersToPersona(this, itemId, data, req.userId, id);
  390. }
  391. else if (subItem && subItem == "feedbackUsers") {
  392. PersonaStore.mapFeedbackUsersToPersona(this, itemId, data, req.userId, id);
  393. }
  394.  
  395. else {
  396. PersonaStore.update(this, itemId, data, req.userId, id);
  397. }
  398. }
  399. else {
  400. throw new Error('Invalid arguments');
  401. }
  402. break;
  403.  
  404. case 'feedbackUsers':
  405. // will handle the stories REST calls of an EndUser
  406. if (itemId) {
  407. if (subItem && subItem == "personas") {
  408. FeedbackUserStore.mapPersonasToFeedbackUser(this, itemId, data, req.userId, id);
  409. }
  410. else {
  411. FeedbackUserStore.update(this, itemId, data, id, req.userId);
  412. }
  413. }
  414. else {
  415. throw new Error('Invalid arguments');
  416. }
  417. break;
  418.  
  419. case 'endUsers':
  420. // will handle the stories REST calls of an EndUser
  421. if (itemId) {
  422. if (subItem && subItem == "personas") {
  423. EndUserStore.mapPersonasToEndUser(this, itemId, data, req.userId, id);
  424. }
  425. else if (subItem && subItem == "notes") {
  426. if (subItemId) {
  427. NoteStore.update(this, subItemId, data, item, req.userId, id);
  428. }
  429. }
  430. else {
  431. EndUserStore.update(this, itemId, data, req.userId, id);
  432. }
  433. }
  434. else {
  435. throw new Error('Invalid arguments');
  436. }
  437. break;
  438. case 'taskFlows':
  439. // will handle the stories REST calls of an EndUser
  440. if (itemId) {
  441. if (subItem && subItem == "tasks") {
  442. if (subItemId) {
  443. TaskStore.update(this, subItemId, data, item, req.userId, id);
  444. }
  445. }
  446. else {
  447. TaskFlowStore.update(this, itemId, data, req.userId, id);
  448. }
  449. }
  450. else {
  451. throw new Error('Invalid arguments');
  452. }
  453. break;
  454. default:
  455. KickstartStore.update(this, id, data, req.userId);
  456. }
  457. SQL.commit();
  458. }
  459. catch (e) {
  460. SQL.rollback();
  461. this.exception(e);
  462. }
  463. },
  464. // POST /v1/kickstart = create kickstart
  465. 'POST' : function (id, item, itemId, subItem, subItemId, sub1Item, sub1ItemId, sub2Item, sub2ItemId) {
  466. var req = this.req;
  467.  
  468. if (!req.userId) {
  469. this.send(403, 'Permission denied');
  470. return;
  471. }
  472. if (!req.kickstartId && id) {
  473. this.send(403, 'Permission denied');
  474. }
  475. if (!req.userInKickstart && id) {
  476. this.send(403, 'Permission denied: not in kickstart');
  477. }
  478.  
  479. SQL.startTransaction();
  480. try {
  481. var data = typeof this.req.post === "string" ? JSON.parse(this.req.post) : this.req.post;
  482. switch (item) {
  483. case 'categories':
  484. // will handle the stories REST calls of a Kickstart
  485. GoalStore.addCategory(this, data, id);
  486. break;
  487. case 'goals':
  488. GoalStore.add(this, data, req.userId, id);
  489. break;
  490. case 'personas':
  491. if (itemId && subItem && subItem == "goals") {
  492. PersonaGoalStore.add(this, data, itemId, req.userId, id);
  493. }
  494. else if (itemId && subItem && subItem == "notes") {
  495. NoteStore.add(this, data, item, itemId, req.userId, id);
  496. }
  497. else if (itemId && subItem && subItem == "problems") {
  498. PersonaProblemStore.add(this, data, itemId, req.userId, id);
  499. }
  500. else if (itemId && subItem && subItem == "assumptions") {
  501. if (subItemId) {
  502. if (sub1Item && sub1Item === "questions") {
  503. if (sub1ItemId) {
  504. if (sub1Item && sub1Item === "answers") {
  505. //PersonaAssumptionQuestionAnswersStore.add(this, data, sub1ItemId, subItemId, itemId, req.userId, id);
  506. }
  507. }
  508. else {
  509. PersonaAssumptionQuestionStore.add(this, data, subItemId, itemId, req.userId, id);
  510. }
  511. }
  512. }
  513. else {
  514. PersonaAssumptionStore.add(this, data, itemId, req.userId, id);
  515. }
  516.  
  517. }
  518. else if (itemId && subItem && subItem == "journeys") {
  519. if (subItemId) {
  520. if (sub1Item && sub1Item === "stages") {
  521. if (sub1ItemId) {
  522. if (sub1Item && sub1Item === "stages") {
  523. PersonaJourneyStageTaskStore.add(this, data, sub1ItemId, subItemId, itemId, req.userId, id);
  524. }
  525. }
  526. else {
  527. PersonaJourneyStageStore.add(this, data, subItemId, itemId, req.userId, id);
  528. }
  529. }
  530. }
  531. else {
  532. PersonaJourneyStore.add(this, data, itemId, req.userId, id);
  533. }
  534.  
  535. }
  536. else {
  537. // will handle the stories REST calls of a Kickstart
  538. PersonaStore.add(this, data, req.userId, id);
  539. }
  540. break;
  541.  
  542. case 'endUsers':
  543. if (itemId && subItem && subItem == "notes") {
  544. NoteStore.add(this, data, item, itemId, req.userId, id);
  545. }
  546. else {
  547. EndUserStore.add(this, data, req.userId, id);
  548. }
  549. break;
  550.  
  551. case 'feedbackUsers':
  552. data.kickstartId = this.req.kickstartId;
  553. FeedbackUserStore.add(this, data, req.userId, id);
  554. break;
  555.  
  556. case 'taskFlows':
  557. if (itemId && subItem && subItem == "tasks") {
  558. TaskStore.add(this, data, item, itemId, req.userId, id);
  559. }
  560. else {
  561. TaskFlowStore.add(this, data, req.userId, id);
  562. }
  563. break;
  564.  
  565. default:
  566. KickstartStore.add(this, data, req.userId);
  567. return;
  568. }
  569. SQL.commit();
  570. }
  571. catch (e) {
  572. SQL.rollback();
  573. this.exception(e);
  574. }
  575. },
  576. // DELETE /v1/kickstart/:id
  577. 'DELETE' : function (id, item, itemId, subItem, subItemId, sub1Item, sub1ItemId, sub2Item, sub2ItemId) {
  578. var req = this.req;
  579.  
  580. if (!req.kickstartId || !req.userId || !req.userInKickstart) {
  581. this.send(403, 'Permission denied');
  582. return;
  583. }
  584.  
  585. if (!id) {
  586. throw new Error('Invalid arguments');
  587. }
  588.  
  589. SQL.startTransaction();
  590. try {
  591. var data = typeof this.req.post === "string" ? JSON.parse(this.req.post) : this.req.post;
  592.  
  593. switch (item) {
  594. case 'categories':
  595. // will handle the stories REST calls of a Kickstart
  596. GoalStore.removeCategory(this, itemId, req.userId, id);
  597. break;
  598. case 'goals':
  599. GoalStore.remove(this, itemId, req.userId);
  600. break;
  601. //case 'stories':
  602. // UserStoryStore.remove(this, itemId, req.userId);
  603. break;
  604. case 'personas':
  605. if (itemId && subItem && subItem == "goals") {
  606. PersonaGoalStore.remove(this, subItemId, req.userId, id);
  607. }
  608. else if (itemId && subItem && subItem == "problems") {
  609. PersonaProblemStore.remove(this, subItemId, req.userId, id);
  610. }
  611. else if (itemId && subItem && subItem == "assumptions") {
  612. if (subItemId) {
  613. if (sub1Item && sub1Item === "questions") {
  614. if (sub1ItemId) {
  615. if (sub2Item && sub2Item === "feedback") {
  616. //PersonaAssumptionQuestionAnswersStore.remove(this, sub2ItemId, req.userId, id);
  617. }
  618. else {
  619. PersonaAssumptionQuestionStore.remove(this, sub1ItemId, req.userId, id);
  620. }
  621. }
  622. }
  623. else {
  624. PersonaAssumptionStore.remove(this, subItemId, req.userId, id);
  625. }
  626. }
  627. }
  628. else if (itemId && subItem && subItem == "journeys") {
  629. if (subItemId) {
  630. if (sub1Item && sub1Item === "stages") {
  631. if (sub1ItemId) {
  632. if (sub2Item && sub2Item === "tasks") {
  633. PersonaJourneyStageTaskStore.remove(this, sub2ItemId, req.userId, id);
  634. }
  635. else {
  636. PersonaJourneyStageStore.remove(this, sub1ItemId, req.userId, id);
  637. }
  638. }
  639. }
  640. else {
  641. PersonaJourneyStore.remove(this, subItemId, req.userId, id);
  642. }
  643. }
  644. }
  645. else if (itemId && subItem && subItem == "notes") {
  646. NoteStore.remove(this, subItemId, req.userId, id);
  647. }
  648. else if (itemId && subItem && subItem == "endUsers") {
  649. PersonaStore.removeEndUsersFromPersona(this, itemId, data, req.userId, id);
  650. }
  651. else {
  652. // will handle the stories REST calls of a Kickstart
  653. PersonaStore.remove(this, itemId, req.userId, id);
  654. }
  655. break;
  656.  
  657. case 'endUsers':
  658. if (itemId && subItem && subItem == "personas") {
  659. EndUserStore.removePersonasFromEndUser(this, itemId, data, req.userId, id);
  660. }
  661. else if (itemId && subItem && subItem == "notes") {
  662. NoteStore.remove(this, subItemId, req.userId, id);
  663. }
  664. else {
  665. EndUserStore.remove(this, itemId, req.userId, id);
  666. }
  667. break;
  668.  
  669. case 'feedbackUsers':
  670. if (itemId && subItem && subItem == "personas") {
  671. FeedbackUserStore.removePersonasFromFeedbackUser(this, itemId, data, req.userId, id);
  672. }
  673. else {
  674. FeedbackUserStore.remove(this, itemId, id, req.userId);
  675. }
  676. break;
  677.  
  678. case 'taskFlows':
  679. if (itemId && subItem && subItem == "tasks") {
  680. TaskStore.remove(this, subItemId, req.userId, id);
  681. }
  682. else {
  683. TaskFlowStore.remove(this, itemId, req.userId, id);
  684. }
  685. break;
  686.  
  687. case 'removeUser':
  688. KickstartStore.removeUser(this, itemId, id, req.userId);
  689. break;
  690. default:
  691. KickstartStore.remove(this, id, req.userId);
  692. break;
  693. }
  694. SQL.commit();
  695. }
  696. catch (e) {
  697. SQL.rollback();
  698. this.exception(e);
  699. }
  700. }
  701. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement