prod.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. const { Op } = require('sequelize')
  2. const { controllers: C } = require('@alancnet/material-framework/server')
  3. const { register } = C.auth.permissions
  4. const terminals = [
  5. {
  6. name: 'Las Vegas',
  7. key: 'LAS'
  8. },
  9. {
  10. name: 'Los Angeles',
  11. key: 'LAX'
  12. },
  13. {
  14. name: 'Phoenix',
  15. key: 'PHX'
  16. },
  17. {
  18. name: 'San Francisco',
  19. key: 'SFO'
  20. }
  21. ]
  22. const laborCategories = [
  23. {
  24. name: 'Warehouse',
  25. key: 'WAREHOUSE'
  26. },
  27. {
  28. name: 'Admin',
  29. key: 'ADMIN'
  30. },
  31. {
  32. name: 'Delivery',
  33. key: 'DELIVERY'
  34. },
  35. {
  36. name: 'Ops',
  37. key: 'OPS'
  38. }
  39. ]
  40. const serviceCategories = [
  41. {
  42. name: 'Inbound',
  43. key: 'INBOUND',
  44. laborCategories: [
  45. 'WAREHOUSE',
  46. 'ADMIN',
  47. 'OPS'
  48. ],
  49. serviceColumn: 'inbound',
  50. displayOrder: 1
  51. },
  52. {
  53. name: 'Delivery',
  54. key: 'DELIVERY',
  55. laborCategories: [
  56. 'DELIVERY'
  57. ],
  58. serviceColumn: 'delivered',
  59. displayOrder: 2
  60. }
  61. ]
  62. const roles = [
  63. {
  64. name: 'Management',
  65. key: 'MANAGER',
  66. permissions: [
  67. 'LABOR_CATEGORY_CREATE',
  68. 'LABOR_CATEGORY_DELETE',
  69. 'LABOR_CATEGORY_READ',
  70. 'LABOR_CATEGORY_UNDELETE',
  71. 'LABOR_CATEGORY_UPDATE',
  72. 'LABOR_ENTRY',
  73. 'LABOR_VIEW',
  74. 'TERMINAL_ALL_ACCESS',
  75. 'TERMINAL_CREATE',
  76. 'TERMINAL_DELETE',
  77. 'TERMINAL_READ',
  78. 'TERMINAL_UNDELETE',
  79. 'TERMINAL_UPDATE',
  80. 'METRICS_VIEW',
  81. 'CLIENT_CREATE',
  82. 'CLIENT_DELETE',
  83. 'CLIENT_READ',
  84. 'CLIENT_UNDELETE',
  85. 'CLIENT_UPDATE',
  86. 'ROLE_CREATE',
  87. 'ROLE_DELETE',
  88. 'ROLE_READ',
  89. 'ROLE_UNDELETE',
  90. 'ROLE_UPDATE',
  91. 'SERVICES_ENTRY',
  92. 'SERVICES_VIEW',
  93. 'STAFFING_AGENCY_CREATE',
  94. 'STAFFING_AGENCY_DELETE',
  95. 'STAFFING_AGENCY_READ',
  96. 'STAFFING_AGENCY_UNDELETE',
  97. 'STAFFING_AGENCY_UPDATE',
  98. 'STAFF_MEMBER_CREATE',
  99. 'STAFF_MEMBER_DELETE',
  100. 'STAFF_MEMBER_READ',
  101. 'STAFF_MEMBER_UNDELETE',
  102. 'STAFF_MEMBER_UPDATE',
  103. 'USER_CREATE',
  104. 'USER_DELETE',
  105. 'USER_READ',
  106. 'USER_UNDELETE',
  107. 'USER_UPDATE',
  108. 'INCOME_ADMIN_VIEW',
  109. 'INCOME_DELIVERY_VIEW',
  110. 'INCOME_OPS_VIEW',
  111. 'INCOME_WAREHOUSE_VIEW',
  112. 'VIEW_TERMINAL_LAS',
  113. 'VIEW_TERMINAL_LAX',
  114. 'VIEW_TERMINAL_PHX',
  115. 'VIEW_TERMINAL_SFO'
  116. ].join(',')
  117. },
  118. {
  119. name: 'Terminal Manager',
  120. key: 'TERMINAL_MANAGER',
  121. permissions: [
  122. 'LABOR_CATEGORY_READ',
  123. 'TERMINAL_READ',
  124. 'METRICS_VIEW',
  125. 'CLIENT_CREATE',
  126. 'CLIENT_DELETE',
  127. 'CLIENT_READ',
  128. 'CLIENT_UNDELETE',
  129. 'CLIENT_UPDATE',
  130. 'CLIENT_VIEW',
  131. 'STAFFING_AGENCY_READ',
  132. 'STAFF_MEMBER_CREATE',
  133. 'STAFF_MEMBER_DELETE',
  134. 'STAFF_MEMBER_READ',
  135. 'STAFF_MEMBER_UNDELETE',
  136. 'STAFF_MEMBER_UPDATE',
  137. 'STAFF_MEMBER_VIEW'
  138. ]
  139. .concat(laborCategories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
  140. .join(',')
  141. },
  142. {
  143. name: 'Accounting',
  144. key: 'ACCOUNTING',
  145. permissions: [
  146. 'LABOR_CATEGORY_READ',
  147. 'TERMINAL_READ',
  148. 'CLIENT_READ',
  149. 'STAFFING_AGENCY_CREATE',
  150. 'STAFFING_AGENCY_DELETE',
  151. 'STAFFING_AGENCY_READ',
  152. 'STAFFING_AGENCY_UNDELETE',
  153. 'STAFFING_AGENCY_UPDATE',
  154. 'STAFF_MEMBER_CREATE',
  155. 'STAFF_MEMBER_DELETE',
  156. 'STAFF_MEMBER_READ',
  157. 'STAFF_MEMBER_UNDELETE',
  158. 'STAFF_MEMBER_UPDATE'
  159. ]
  160. .concat(laborCategories.map(x => x.key).filter(key => key !== 'ADMIN').map(key => `INCOME_${key}_VIEW`))
  161. .join(',')
  162. },
  163. {
  164. name: 'Standard User',
  165. key: 'USER',
  166. }
  167. ].concat(terminals.map(loc => ({
  168. name: `${loc.name}`,
  169. key: `${loc.key}`,
  170. permissions: `TERMINAL_${loc.key}_ACCESS`
  171. })))
  172. const initializeTerminals = async db => {
  173. await db.fill(db.Terminal, terminals)
  174. for (let terminal of terminals) {
  175. register(`TERMINAL_${terminal.key}_ACCESS`, `Access ${terminal.name}.`)
  176. }
  177. }
  178. const initializeRoles = async db => {
  179. await db.fill(db.Role, roles)
  180. }
  181. const initializeLaborCategories = async db => {
  182. await db.fill(db.LaborCategory, laborCategories)
  183. for (let category of laborCategories) {
  184. register(`INCOME_${category.key}_VIEW`, `View ${category.name} Staff income.`)
  185. }
  186. }
  187. const initializeServiceCategories = async db => {
  188. await db.fill(db.ServiceCategory, serviceCategories)
  189. }
  190. const seed = async (db) => {
  191. // await initializeTerminals(db)
  192. // //await initializeRoles(db)
  193. // await initializeLaborCategories(db)
  194. // await initializeServiceCategories(db)
  195. }
  196. module.exports = Object.assign(seed, {
  197. seed,
  198. initializeTerminals,
  199. initializeRoles,
  200. initializeLaborCategories,
  201. initializeServiceCategories
  202. })