@things-factory/operato-hub 5.0.13 → 6.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/dist-server/controllers/bizplace-initializer/dataset/codes.js +9 -0
  2. package/dist-server/controllers/bizplace-initializer/dataset/codes.js.map +1 -1
  3. package/dist-server/controllers/bizplace-initializer/dataset/settings.js +5 -0
  4. package/dist-server/controllers/bizplace-initializer/dataset/settings.js.map +1 -1
  5. package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain-roles.js +3 -3
  6. package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain-roles.js.map +1 -1
  7. package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain.js +2 -2
  8. package/dist-server/controllers/bizplace-initializer/generate-bizplace-domain.js.map +1 -1
  9. package/dist-server/controllers/bizplace-initializer/menus.js +2 -2
  10. package/dist-server/controllers/bizplace-initializer/menus.js.map +1 -1
  11. package/dist-server/controllers/company-initializer/business-register.js +6 -7
  12. package/dist-server/controllers/company-initializer/business-register.js.map +1 -1
  13. package/dist-server/controllers/company-initializer/generate-company-roles.js +4 -4
  14. package/dist-server/controllers/company-initializer/generate-company-roles.js.map +1 -1
  15. package/dist-server/controllers/invitation.js +9 -9
  16. package/dist-server/controllers/invitation.js.map +1 -1
  17. package/dist-server/controllers/utils/save-invitation-token.js +2 -2
  18. package/dist-server/controllers/utils/save-invitation-token.js.map +1 -1
  19. package/dist-server/graphql/resolvers/generators/generate-bizplace.js.map +1 -1
  20. package/dist-server/graphql/resolvers/generators/generate-company.js +4 -3
  21. package/dist-server/graphql/resolvers/generators/generate-company.js.map +1 -1
  22. package/dist-server/graphql/resolvers/generators/update-domain-extType.js +1 -1
  23. package/dist-server/graphql/resolvers/generators/update-domain-extType.js.map +1 -1
  24. package/dist-server/graphql/resolvers/invitations/partner-invitation.js +6 -6
  25. package/dist-server/graphql/resolvers/invitations/partner-invitation.js.map +1 -1
  26. package/dist-server/graphql/resolvers/oauth2/company-roles-by-scope.js +5 -2
  27. package/dist-server/graphql/resolvers/oauth2/company-roles-by-scope.js.map +1 -1
  28. package/dist-server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.js +149 -0
  29. package/dist-server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.js.map +1 -0
  30. package/dist-server/graphql/resolvers/synchronization/create-dat-shipments.js +58 -0
  31. package/dist-server/graphql/resolvers/synchronization/create-dat-shipments.js.map +1 -0
  32. package/dist-server/graphql/resolvers/synchronization/fetch-sync-products.js +3 -3
  33. package/dist-server/graphql/resolvers/synchronization/fetch-sync-products.js.map +1 -1
  34. package/dist-server/graphql/resolvers/synchronization/index.js +6 -2
  35. package/dist-server/graphql/resolvers/synchronization/index.js.map +1 -1
  36. package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js +68 -0
  37. package/dist-server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.js.map +1 -0
  38. package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js +35 -0
  39. package/dist-server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.js.map +1 -0
  40. package/dist-server/graphql/resolvers/synchronization/sync-products-from-account.js +1 -1
  41. package/dist-server/graphql/resolvers/synchronization/sync-products-from-account.js.map +1 -1
  42. package/dist-server/graphql/resolvers/synchronization/sync-products-to-account.js +1 -1
  43. package/dist-server/graphql/resolvers/synchronization/sync-products-to-account.js.map +1 -1
  44. package/dist-server/graphql/resolvers/synchronization/sync-products-to-sellercraft.js +4 -2
  45. package/dist-server/graphql/resolvers/synchronization/sync-products-to-sellercraft.js.map +1 -1
  46. package/dist-server/graphql/types/synchronization/index.js +4 -0
  47. package/dist-server/graphql/types/synchronization/index.js.map +1 -1
  48. package/dist-server/index.js +5 -5
  49. package/dist-server/index.js.map +1 -1
  50. package/dist-server/middlewares/business-middleware.js +2 -3
  51. package/dist-server/middlewares/business-middleware.js.map +1 -1
  52. package/dist-server/middlewares/store-middleware.js +2 -2
  53. package/dist-server/middlewares/store-middleware.js.map +1 -1
  54. package/dist-server/middlewares/warehouse-middleware.js +3 -2
  55. package/dist-server/middlewares/warehouse-middleware.js.map +1 -1
  56. package/dist-server/migrations/1597668478399-SeedBusinessDomain.js +2 -3
  57. package/dist-server/migrations/1597668478399-SeedBusinessDomain.js.map +1 -1
  58. package/dist-server/migrations/1597668478401-SeedBusinessRoles.js +2 -2
  59. package/dist-server/migrations/1597668478401-SeedBusinessRoles.js.map +1 -1
  60. package/dist-server/migrations/1608009991065-SeedUser.js +5 -6
  61. package/dist-server/migrations/1608009991065-SeedUser.js.map +1 -1
  62. package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js +2 -1
  63. package/dist-server/routers/api/restful-apis/unstable/add-draft-release-order.js.map +1 -1
  64. package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js +5 -4
  65. package/dist-server/routers/api/restful-apis/unstable/add-inbound-order.js.map +1 -1
  66. package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js +5 -2
  67. package/dist-server/routers/api/restful-apis/unstable/add-marketplace-order.js.map +1 -1
  68. package/dist-server/routers/api/restful-apis/unstable/add-products.js +32 -16
  69. package/dist-server/routers/api/restful-apis/unstable/add-products.js.map +1 -1
  70. package/dist-server/routers/api/restful-apis/unstable/add-release-order.js +149 -40
  71. package/dist-server/routers/api/restful-apis/unstable/add-release-order.js.map +1 -1
  72. package/dist-server/routers/api/restful-apis/unstable/cancel-release-order.js +4 -4
  73. package/dist-server/routers/api/restful-apis/unstable/cancel-release-order.js.map +1 -1
  74. package/dist-server/routers/api/restful-apis/unstable/get-delivery-orders.js +27 -11
  75. package/dist-server/routers/api/restful-apis/unstable/get-delivery-orders.js.map +1 -1
  76. package/dist-server/routers/api/restful-apis/unstable/get-goods-received-notes.js +9 -2
  77. package/dist-server/routers/api/restful-apis/unstable/get-goods-received-notes.js.map +1 -1
  78. package/dist-server/routers/api/restful-apis/unstable/get-onhand-inventories.js +2 -2
  79. package/dist-server/routers/api/restful-apis/unstable/get-onhand-inventories.js.map +1 -1
  80. package/dist-server/routers/api/restful-apis/unstable/get-partners.js +5 -4
  81. package/dist-server/routers/api/restful-apis/unstable/get-partners.js.map +1 -1
  82. package/dist-server/routers/api/restful-apis/unstable/get-products.js +1 -0
  83. package/dist-server/routers/api/restful-apis/unstable/get-products.js.map +1 -1
  84. package/dist-server/routers/api/restful-apis/unstable/get-warehouses.js +2 -2
  85. package/dist-server/routers/api/restful-apis/unstable/get-warehouses.js.map +1 -1
  86. package/dist-server/routers/api/restful-apis/unstable/update-release-order-details.js +2 -2
  87. package/dist-server/routers/api/restful-apis/unstable/update-release-order-details.js.map +1 -1
  88. package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js +6 -5
  89. package/dist-server/routers/api/restful-apis/v1/add-inbound-order.js.map +1 -1
  90. package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js +8 -5
  91. package/dist-server/routers/api/restful-apis/v1/add-marketplace-order.js.map +1 -1
  92. package/dist-server/routers/api/restful-apis/v1/add-products.js +32 -16
  93. package/dist-server/routers/api/restful-apis/v1/add-products.js.map +1 -1
  94. package/dist-server/routers/api/restful-apis/v1/add-release-order.js +8 -6
  95. package/dist-server/routers/api/restful-apis/v1/add-release-order.js.map +1 -1
  96. package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js +4 -4
  97. package/dist-server/routers/api/restful-apis/v1/cancel-release-order.js.map +1 -1
  98. package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js +27 -11
  99. package/dist-server/routers/api/restful-apis/v1/get-delivery-orders.js.map +1 -1
  100. package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js +9 -2
  101. package/dist-server/routers/api/restful-apis/v1/get-goods-received-notes.js.map +1 -1
  102. package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js +2 -2
  103. package/dist-server/routers/api/restful-apis/v1/get-onhand-inventories.js.map +1 -1
  104. package/dist-server/routers/api/restful-apis/v1/get-partners.js +5 -4
  105. package/dist-server/routers/api/restful-apis/v1/get-partners.js.map +1 -1
  106. package/dist-server/routers/api/restful-apis/v1/get-products.js +1 -0
  107. package/dist-server/routers/api/restful-apis/v1/get-products.js.map +1 -1
  108. package/dist-server/routers/api/restful-apis/v1/get-warehouses.js +2 -2
  109. package/dist-server/routers/api/restful-apis/v1/get-warehouses.js.map +1 -1
  110. package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js +2 -2
  111. package/dist-server/routers/api/restful-apis/v1/update-release-order-details.js.map +1 -1
  112. package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js +6 -5
  113. package/dist-server/routers/api/restful-apis/v2/add-inbound-order.js.map +1 -1
  114. package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js +8 -5
  115. package/dist-server/routers/api/restful-apis/v2/add-marketplace-order.js.map +1 -1
  116. package/dist-server/routers/api/restful-apis/v2/add-products.js +32 -16
  117. package/dist-server/routers/api/restful-apis/v2/add-products.js.map +1 -1
  118. package/dist-server/routers/api/restful-apis/v2/add-release-order.js +8 -6
  119. package/dist-server/routers/api/restful-apis/v2/add-release-order.js.map +1 -1
  120. package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js +4 -4
  121. package/dist-server/routers/api/restful-apis/v2/cancel-release-order.js.map +1 -1
  122. package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js +27 -11
  123. package/dist-server/routers/api/restful-apis/v2/get-delivery-orders.js.map +1 -1
  124. package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js +9 -2
  125. package/dist-server/routers/api/restful-apis/v2/get-goods-received-notes.js.map +1 -1
  126. package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js +2 -2
  127. package/dist-server/routers/api/restful-apis/v2/get-onhand-inventories.js.map +1 -1
  128. package/dist-server/routers/api/restful-apis/v2/get-partners.js +5 -4
  129. package/dist-server/routers/api/restful-apis/v2/get-partners.js.map +1 -1
  130. package/dist-server/routers/api/restful-apis/v2/get-products.js +1 -0
  131. package/dist-server/routers/api/restful-apis/v2/get-products.js.map +1 -1
  132. package/dist-server/routers/api/restful-apis/v2/get-warehouses.js +2 -2
  133. package/dist-server/routers/api/restful-apis/v2/get-warehouses.js.map +1 -1
  134. package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js +2 -2
  135. package/dist-server/routers/api/restful-apis/v2/update-release-order-details.js.map +1 -1
  136. package/dist-server/routers/auth-invitation-router.js +2 -2
  137. package/dist-server/routers/auth-invitation-router.js.map +1 -1
  138. package/dist-server/routers/business/bizplace-register-router.js +3 -3
  139. package/dist-server/routers/business/bizplace-register-router.js.map +1 -1
  140. package/dist-server/tsconfig.tsbuildinfo +1 -1
  141. package/dist-server/utils/get-warehouses.js +15 -11
  142. package/dist-server/utils/get-warehouses.js.map +1 -1
  143. package/openapi/unstable/product.yaml +9 -3
  144. package/openapi/v1/product.yaml +9 -3
  145. package/openapi/v2/product.yaml +9 -3
  146. package/package.json +47 -47
  147. package/server/controllers/bizplace-initializer/dataset/codes.ts +9 -0
  148. package/server/controllers/bizplace-initializer/dataset/settings.ts +5 -0
  149. package/server/controllers/bizplace-initializer/generate-bizplace-domain-roles.ts +4 -2
  150. package/server/controllers/bizplace-initializer/generate-bizplace-domain.ts +4 -3
  151. package/server/controllers/bizplace-initializer/menus.ts +4 -2
  152. package/server/controllers/company-initializer/business-register.ts +5 -3
  153. package/server/controllers/company-initializer/generate-company-roles.ts +4 -3
  154. package/server/controllers/invitation.ts +11 -7
  155. package/server/controllers/utils/save-invitation-token.ts +1 -1
  156. package/server/graphql/resolvers/generators/generate-bizplace.ts +1 -1
  157. package/server/graphql/resolvers/generators/generate-company.ts +5 -4
  158. package/server/graphql/resolvers/generators/update-domain-extType.ts +7 -5
  159. package/server/graphql/resolvers/invitations/partner-invitation.ts +5 -5
  160. package/server/graphql/resolvers/oauth2/company-roles-by-scope.ts +8 -6
  161. package/server/graphql/resolvers/synchronization/auto-update-all-marketplace-product-variation-quantity.ts +180 -0
  162. package/server/graphql/resolvers/synchronization/create-dat-shipments.ts +64 -0
  163. package/server/graphql/resolvers/synchronization/fetch-sync-products.ts +3 -2
  164. package/server/graphql/resolvers/synchronization/index.ts +10 -2
  165. package/server/graphql/resolvers/synchronization/sellercraft-pack-marketplace-order.ts +91 -0
  166. package/server/graphql/resolvers/synchronization/sync-all-products-to-sellercraft.ts +39 -0
  167. package/server/graphql/resolvers/synchronization/sync-products-from-account.ts +4 -4
  168. package/server/graphql/resolvers/synchronization/sync-products-to-account.ts +4 -4
  169. package/server/graphql/resolvers/synchronization/sync-products-to-sellercraft.ts +19 -12
  170. package/server/graphql/types/synchronization/index.ts +4 -0
  171. package/server/index.ts +7 -7
  172. package/server/middlewares/business-middleware.ts +1 -2
  173. package/server/middlewares/store-middleware.ts +1 -1
  174. package/server/middlewares/warehouse-middleware.ts +3 -2
  175. package/server/migrations/1597668478399-SeedBusinessDomain.ts +3 -2
  176. package/server/migrations/1597668478401-SeedBusinessRoles.ts +2 -2
  177. package/server/migrations/1608009991065-SeedUser.ts +5 -3
  178. package/server/routers/api/restful-apis/unstable/add-draft-release-order.ts +2 -1
  179. package/server/routers/api/restful-apis/unstable/add-inbound-order.ts +3 -2
  180. package/server/routers/api/restful-apis/unstable/add-marketplace-order.ts +13 -2
  181. package/server/routers/api/restful-apis/unstable/add-products.ts +40 -16
  182. package/server/routers/api/restful-apis/unstable/add-release-order.ts +98 -48
  183. package/server/routers/api/restful-apis/unstable/cancel-release-order.ts +2 -2
  184. package/server/routers/api/restful-apis/unstable/get-delivery-orders.ts +27 -11
  185. package/server/routers/api/restful-apis/unstable/get-goods-received-notes.ts +9 -2
  186. package/server/routers/api/restful-apis/unstable/get-onhand-inventories.ts +1 -1
  187. package/server/routers/api/restful-apis/unstable/get-partners.ts +4 -2
  188. package/server/routers/api/restful-apis/unstable/get-products.ts +1 -0
  189. package/server/routers/api/restful-apis/unstable/get-warehouses.ts +3 -2
  190. package/server/routers/api/restful-apis/unstable/update-release-order-details.ts +1 -1
  191. package/server/routers/api/restful-apis/v1/add-inbound-order.ts +4 -3
  192. package/server/routers/api/restful-apis/v1/add-marketplace-order.ts +17 -5
  193. package/server/routers/api/restful-apis/v1/add-products.ts +40 -16
  194. package/server/routers/api/restful-apis/v1/add-release-order.ts +10 -6
  195. package/server/routers/api/restful-apis/v1/cancel-release-order.ts +2 -2
  196. package/server/routers/api/restful-apis/v1/get-delivery-orders.ts +27 -11
  197. package/server/routers/api/restful-apis/v1/get-goods-received-notes.ts +9 -2
  198. package/server/routers/api/restful-apis/v1/get-onhand-inventories.ts +1 -1
  199. package/server/routers/api/restful-apis/v1/get-partners.ts +4 -2
  200. package/server/routers/api/restful-apis/v1/get-products.ts +1 -0
  201. package/server/routers/api/restful-apis/v1/get-warehouses.ts +3 -2
  202. package/server/routers/api/restful-apis/v1/update-release-order-details.ts +1 -1
  203. package/server/routers/api/restful-apis/v2/add-inbound-order.ts +4 -3
  204. package/server/routers/api/restful-apis/v2/add-marketplace-order.ts +17 -5
  205. package/server/routers/api/restful-apis/v2/add-products.ts +40 -16
  206. package/server/routers/api/restful-apis/v2/add-release-order.ts +10 -6
  207. package/server/routers/api/restful-apis/v2/cancel-release-order.ts +2 -2
  208. package/server/routers/api/restful-apis/v2/get-delivery-orders.ts +27 -11
  209. package/server/routers/api/restful-apis/v2/get-goods-received-notes.ts +9 -2
  210. package/server/routers/api/restful-apis/v2/get-onhand-inventories.ts +1 -1
  211. package/server/routers/api/restful-apis/v2/get-partners.ts +4 -2
  212. package/server/routers/api/restful-apis/v2/get-products.ts +1 -0
  213. package/server/routers/api/restful-apis/v2/get-warehouses.ts +3 -2
  214. package/server/routers/api/restful-apis/v2/update-release-order-details.ts +1 -1
  215. package/server/routers/auth-invitation-router.ts +2 -2
  216. package/server/routers/business/bizplace-register-router.ts +3 -1
  217. package/server/utils/get-warehouses.ts +46 -36
@@ -2,16 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCompanyWarehouses = exports.getMyWarehouses = exports.getPartnerWarehouses = exports.getBizplaceAccessibleWarehouses = void 0;
4
4
  const biz_base_1 = require("@things-factory/biz-base");
5
- const typeorm_1 = require("typeorm");
5
+ const shell_1 = require("@things-factory/shell");
6
6
  /**
7
7
  * @description: Get bizplace accessible warehouses
8
8
  * @param bizplace
9
9
  */
10
10
  async function getBizplaceAccessibleWarehouses(bizplace) {
11
11
  try {
12
- bizplace = await (0, typeorm_1.getRepository)(biz_base_1.Bizplace).findOne(bizplace.id, { relations: ['company', 'domain'] });
12
+ bizplace = await (0, shell_1.getRepository)(biz_base_1.Bizplace).findOne({
13
+ where: { id: bizplace.id },
14
+ relations: ['company', 'domain']
15
+ });
13
16
  if (bizplace) {
14
- return [...await getPartnerWarehouses(bizplace), ...await getMyWarehouses(bizplace)];
17
+ return [...(await getPartnerWarehouses(bizplace)), ...(await getMyWarehouses(bizplace))];
15
18
  }
16
19
  else {
17
20
  throw new Error('bizplace not found');
@@ -28,7 +31,7 @@ exports.getBizplaceAccessibleWarehouses = getBizplaceAccessibleWarehouses;
28
31
  */
29
32
  async function getPartnerWarehouses(bizplace) {
30
33
  var _a;
31
- const qb = (0, typeorm_1.getRepository)(biz_base_1.Bizplace).createQueryBuilder('biz');
34
+ const qb = (0, shell_1.getRepository)(biz_base_1.Bizplace).createQueryBuilder('biz');
32
35
  qb.innerJoin('biz.company', 'company')
33
36
  .innerJoin('Partner', 'partner', 'partner.partner_bizplace_id = biz.id')
34
37
  .innerJoinAndSelect('partner.domainBizplace', 'domainBizplace')
@@ -40,15 +43,17 @@ async function getPartnerWarehouses(bizplace) {
40
43
  else {
41
44
  qb.andWhere('biz.id = :bizplaceId', { bizplaceId: bizplace.id });
42
45
  }
43
- return (await Promise.all((await qb.getRawMany()).map(async (itm) => {
46
+ return await Promise.all((await qb.getRawMany()).map(async (itm) => {
44
47
  return {
45
48
  id: itm.domainBizplace_id,
46
49
  name: itm.domainBizplace_name,
47
50
  description: itm === null || itm === void 0 ? void 0 : itm.domainBizplace_description,
48
- company: await (0, typeorm_1.getRepository)(biz_base_1.Company).findOne(itm.domainBizplace_company_id),
51
+ company: await (0, shell_1.getRepository)(biz_base_1.Company).findOneBy({
52
+ id: itm.domainBizplace_company_id
53
+ }),
49
54
  owner: 'partner'
50
55
  };
51
- })));
56
+ }));
52
57
  }
53
58
  exports.getPartnerWarehouses = getPartnerWarehouses;
54
59
  /**
@@ -58,10 +63,9 @@ exports.getPartnerWarehouses = getPartnerWarehouses;
58
63
  async function getMyWarehouses(bizplace) {
59
64
  var _a, _b, _c;
60
65
  if (((_a = bizplace === null || bizplace === void 0 ? void 0 : bizplace.domain) === null || _a === void 0 ? void 0 : _a.extType) == 'company' || ((_b = bizplace === null || bizplace === void 0 ? void 0 : bizplace.domain) === null || _b === void 0 ? void 0 : _b.extType) == 'warehouse') {
61
- const qb = (0, typeorm_1.getRepository)(biz_base_1.Bizplace).createQueryBuilder('biz');
66
+ const qb = (0, shell_1.getRepository)(biz_base_1.Bizplace).createQueryBuilder('biz');
62
67
  qb.innerJoin('biz.company', 'company');
63
- qb.innerJoin('biz.domain', 'domain')
64
- .where(`domain.extType = 'warehouse'`);
68
+ qb.innerJoin('biz.domain', 'domain').where(`domain.extType = 'warehouse'`);
65
69
  if (((_c = bizplace === null || bizplace === void 0 ? void 0 : bizplace.domain) === null || _c === void 0 ? void 0 : _c.extType) == 'company') {
66
70
  qb.andWhere('biz.company_id = :companyId', { companyId: bizplace.company.id });
67
71
  }
@@ -90,7 +94,7 @@ exports.getMyWarehouses = getMyWarehouses;
90
94
  async function getCompanyWarehouses(bizplace) {
91
95
  var _a;
92
96
  if ((_a = bizplace === null || bizplace === void 0 ? void 0 : bizplace.company) === null || _a === void 0 ? void 0 : _a.id) {
93
- const qb = (0, typeorm_1.getRepository)(biz_base_1.Bizplace).createQueryBuilder('biz');
97
+ const qb = (0, shell_1.getRepository)(biz_base_1.Bizplace).createQueryBuilder('biz');
94
98
  qb.innerJoin('biz.company', 'company');
95
99
  qb.innerJoin('biz.domain', 'domain')
96
100
  .where(`domain.extType = 'warehouse'`)
@@ -1 +1 @@
1
- {"version":3,"file":"get-warehouses.js","sourceRoot":"","sources":["../../server/utils/get-warehouses.ts"],"names":[],"mappings":"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","sourcesContent":["import { Bizplace, Company } from '@things-factory/biz-base'\nimport { getRepository, SelectQueryBuilder } from 'typeorm'\n\n/**\n * @description: Get bizplace accessible warehouses\n * @param bizplace\n */\nexport async function getBizplaceAccessibleWarehouses(bizplace: Bizplace): Promise<Bizplace[]> {\n try {\n bizplace = await getRepository(Bizplace).findOne(bizplace.id, { relations: ['company', 'domain'] })\n if (bizplace) {\n return [...await getPartnerWarehouses(bizplace), ...await getMyWarehouses(bizplace)]\n }else{\n throw new Error('bizplace not found')\n } \n } catch (error) {\n throw error\n }\n}\n\n/**\n * @description: Get bizplace accessible partner warehouses\n * @param bizplace\n */\nexport async function getPartnerWarehouses(bizplace: Bizplace): Promise<Bizplace[]> {\n const qb: SelectQueryBuilder<Bizplace> = getRepository(Bizplace).createQueryBuilder('biz')\n qb.innerJoin('biz.company', 'company')\n .innerJoin('Partner', 'partner', 'partner.partner_bizplace_id = biz.id')\n .innerJoinAndSelect('partner.domainBizplace', 'domainBizplace')\n .innerJoin('domainBizplace.domain', 'domainBizplaceDomain')\n .where(`domainBizplaceDomain.extType = 'warehouse'`)\n\n if(bizplace?.domain?.extType == 'company'){\n qb.andWhere('biz.company_id = :companyId', { companyId: bizplace.company.id })\n }else{\n qb.andWhere('biz.id = :bizplaceId', { bizplaceId: bizplace.id })\n } \n\n return (await Promise.all((await qb.getRawMany()).map(async itm=>{\n return {\n id: itm.domainBizplace_id,\n name: itm.domainBizplace_name,\n description: itm?.domainBizplace_description,\n company: await getRepository(Company).findOne(itm.domainBizplace_company_id),\n owner: 'partner'\n }\n })))\n}\n\n/**\n * @description: Get bizplace accessible own warehouses. Company bizplaces can access warehouse under own company, warehouse bizplace can accecss themself.\n * @param bizplace\n */\nexport async function getMyWarehouses(bizplace: Bizplace): Promise<Bizplace[]> {\n if(bizplace?.domain?.extType == 'company' || bizplace?.domain?.extType == 'warehouse' ) { \n const qb: SelectQueryBuilder<Bizplace> = getRepository(Bizplace).createQueryBuilder('biz')\n qb.innerJoin('biz.company', 'company')\n qb.innerJoin('biz.domain', 'domain')\n .where(`domain.extType = 'warehouse'`)\n \n if(bizplace?.domain?.extType == 'company'){\n qb.andWhere('biz.company_id = :companyId', { companyId: bizplace.company.id })\n }else{\n qb.andWhere('biz.id = :bizplaceId', { bizplaceId: bizplace.id })\n } \n \n return (await qb.getMany()).map(itm=>{\n return {\n id: itm.id,\n name: itm.name,\n description: itm?.description,\n company: itm?.company,\n owner: 'self'\n }\n })\n } else {\n return []\n }\n}\n\n/**\n * @description: Get company warehouses\n * @param bizplace\n */\nexport async function getCompanyWarehouses(bizplace: Bizplace): Promise<Bizplace[]> {\n if(bizplace?.company?.id) { \n const qb: SelectQueryBuilder<Bizplace> = getRepository(Bizplace).createQueryBuilder('biz')\n qb.innerJoin('biz.company', 'company')\n qb.innerJoin('biz.domain', 'domain')\n .where(`domain.extType = 'warehouse'`)\n .andWhere('biz.company_id = :companyId', { companyId: bizplace.company.id })\n \n return (await qb.getMany()).map(itm=>{\n return {\n id: itm.id,\n name: itm.name,\n description: itm?.description,\n company: itm?.company,\n owner: 'company'\n }\n })\n } else {\n return []\n }\n}"]}
1
+ {"version":3,"file":"get-warehouses.js","sourceRoot":"","sources":["../../server/utils/get-warehouses.ts"],"names":[],"mappings":"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","sourcesContent":["import { SelectQueryBuilder } from 'typeorm'\n\nimport { Bizplace, Company } from '@things-factory/biz-base'\nimport { getRepository } from '@things-factory/shell'\n\n/**\n * @description: Get bizplace accessible warehouses\n * @param bizplace\n */\nexport async function getBizplaceAccessibleWarehouses(bizplace: Bizplace): Promise<Bizplace[]> {\n try {\n bizplace = await getRepository(Bizplace).findOne({\n where: { id: bizplace.id },\n relations: ['company', 'domain']\n })\n if (bizplace) {\n return [...(await getPartnerWarehouses(bizplace)), ...(await getMyWarehouses(bizplace))]\n } else {\n throw new Error('bizplace not found')\n }\n } catch (error) {\n throw error\n }\n}\n\n/**\n * @description: Get bizplace accessible partner warehouses\n * @param bizplace\n */\nexport async function getPartnerWarehouses(bizplace: Bizplace): Promise<Bizplace[]> {\n const qb: SelectQueryBuilder<Bizplace> = getRepository(Bizplace).createQueryBuilder('biz')\n qb.innerJoin('biz.company', 'company')\n .innerJoin('Partner', 'partner', 'partner.partner_bizplace_id = biz.id')\n .innerJoinAndSelect('partner.domainBizplace', 'domainBizplace')\n .innerJoin('domainBizplace.domain', 'domainBizplaceDomain')\n .where(`domainBizplaceDomain.extType = 'warehouse'`)\n\n if (bizplace?.domain?.extType == 'company') {\n qb.andWhere('biz.company_id = :companyId', { companyId: bizplace.company.id })\n } else {\n qb.andWhere('biz.id = :bizplaceId', { bizplaceId: bizplace.id })\n }\n\n return await Promise.all(\n (\n await qb.getRawMany()\n ).map(async itm => {\n return {\n id: itm.domainBizplace_id,\n name: itm.domainBizplace_name,\n description: itm?.domainBizplace_description,\n company: await getRepository(Company).findOneBy({\n id: itm.domainBizplace_company_id\n }),\n owner: 'partner'\n }\n })\n )\n}\n\n/**\n * @description: Get bizplace accessible own warehouses. Company bizplaces can access warehouse under own company, warehouse bizplace can accecss themself.\n * @param bizplace\n */\nexport async function getMyWarehouses(bizplace: Bizplace): Promise<Bizplace[]> {\n if (bizplace?.domain?.extType == 'company' || bizplace?.domain?.extType == 'warehouse') {\n const qb: SelectQueryBuilder<Bizplace> = getRepository(Bizplace).createQueryBuilder('biz')\n qb.innerJoin('biz.company', 'company')\n qb.innerJoin('biz.domain', 'domain').where(`domain.extType = 'warehouse'`)\n\n if (bizplace?.domain?.extType == 'company') {\n qb.andWhere('biz.company_id = :companyId', { companyId: bizplace.company.id })\n } else {\n qb.andWhere('biz.id = :bizplaceId', { bizplaceId: bizplace.id })\n }\n\n return (await qb.getMany()).map(itm => {\n return {\n id: itm.id,\n name: itm.name,\n description: itm?.description,\n company: itm?.company,\n owner: 'self'\n }\n })\n } else {\n return []\n }\n}\n\n/**\n * @description: Get company warehouses\n * @param bizplace\n */\nexport async function getCompanyWarehouses(bizplace: Bizplace): Promise<Bizplace[]> {\n if (bizplace?.company?.id) {\n const qb: SelectQueryBuilder<Bizplace> = getRepository(Bizplace).createQueryBuilder('biz')\n qb.innerJoin('biz.company', 'company')\n qb.innerJoin('biz.domain', 'domain')\n .where(`domain.extType = 'warehouse'`)\n .andWhere('biz.company_id = :companyId', { companyId: bizplace.company.id })\n\n return (await qb.getMany()).map(itm => {\n return {\n id: itm.id,\n name: itm.name,\n description: itm?.description,\n company: itm?.company,\n owner: 'company'\n }\n })\n } else {\n return []\n }\n}\n"]}
@@ -6,6 +6,9 @@ definitions:
6
6
  - 'name'
7
7
  - 'type'
8
8
  properties:
9
+ id:
10
+ type: 'uuid'
11
+ example: '4550ba8e-5702-4337-bfa6-5e2718468724'
9
12
  sku:
10
13
  type: 'string'
11
14
  example: 'LB-18'
@@ -30,6 +33,9 @@ definitions:
30
33
  example: 'COLGATE MINT'
31
34
  isRequiredCheckExpiry:
32
35
  type: 'boolean'
36
+ pickingStrategy:
37
+ type: 'string'
38
+ example: 'FIFO'
33
39
  expirationPeriod:
34
40
  type: 'integer'
35
41
  description: 'value should be in days (eg:300 and half day)'
@@ -213,9 +219,9 @@ paths:
213
219
  content:
214
220
  application/json:
215
221
  schema:
216
- type: 'array'
217
- items:
218
- $ref: '#/definitions/Product'
222
+ type: 'array'
223
+ items:
224
+ $ref: '#/definitions/Product'
219
225
  '400':
220
226
  description: 'Bad request is sent'
221
227
  '401':
@@ -6,6 +6,9 @@ definitions:
6
6
  - 'name'
7
7
  - 'type'
8
8
  properties:
9
+ id:
10
+ type: 'uuid'
11
+ example: '4550ba8e-5702-4337-bfa6-5e2718468724'
9
12
  sku:
10
13
  type: 'string'
11
14
  example: 'LB-18'
@@ -30,6 +33,9 @@ definitions:
30
33
  example: 'COLGATE MINT'
31
34
  isRequiredCheckExpiry:
32
35
  type: 'boolean'
36
+ pickingStrategy:
37
+ type: 'string'
38
+ example: 'FIFO'
33
39
  expirationPeriod:
34
40
  type: 'integer'
35
41
  description: 'value should be in days (eg:300 and half day)'
@@ -213,9 +219,9 @@ paths:
213
219
  content:
214
220
  application/json:
215
221
  schema:
216
- type: 'array'
217
- items:
218
- $ref: '#/definitions/Product'
222
+ type: 'array'
223
+ items:
224
+ $ref: '#/definitions/Product'
219
225
  '400':
220
226
  description: 'Bad request is sent'
221
227
  '401':
@@ -6,6 +6,9 @@ definitions:
6
6
  - 'name'
7
7
  - 'type'
8
8
  properties:
9
+ id:
10
+ type: 'uuid'
11
+ example: '4550ba8e-5702-4337-bfa6-5e2718468724'
9
12
  sku:
10
13
  type: 'string'
11
14
  example: 'LB-18'
@@ -30,6 +33,9 @@ definitions:
30
33
  example: 'COLGATE MINT'
31
34
  isRequiredCheckExpiry:
32
35
  type: 'boolean'
36
+ pickingStrategy:
37
+ type: 'string'
38
+ example: 'FIFO'
33
39
  expirationPeriod:
34
40
  type: 'integer'
35
41
  description: 'value should be in days (eg:300 and half day)'
@@ -213,9 +219,9 @@ paths:
213
219
  content:
214
220
  application/json:
215
221
  schema:
216
- type: 'array'
217
- items:
218
- $ref: '#/definitions/Product'
222
+ type: 'array'
223
+ items:
224
+ $ref: '#/definitions/Product'
219
225
  '400':
220
226
  description: 'Bad request is sent'
221
227
  '401':
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@things-factory/operato-hub",
3
- "version": "5.0.13",
3
+ "version": "6.0.0-alpha.1",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
7
7
  "license": "MIT",
8
- "author": "heartyoh",
8
+ "author": "heartyoh <heartyoh@hatiolab.com>",
9
9
  "description": "Operato Business Hub - business, application register and integration",
10
10
  "publishConfig": {
11
11
  "access": "public",
@@ -63,55 +63,55 @@
63
63
  "@operato/scene-tab": "^1.0.0",
64
64
  "@operato/scene-table": "^1.0.0",
65
65
  "@operato/scene-wheel-sorter": "^1.0.0",
66
- "@things-factory/api": "^5.0.11",
67
- "@things-factory/apptool-ui": "^5.0.11",
68
- "@things-factory/attachment-base": "^5.0.11",
69
- "@things-factory/auth-base": "^5.0.11",
70
- "@things-factory/auth-ui": "^5.0.11",
71
- "@things-factory/biz-base": "^5.0.11",
72
- "@things-factory/biz-ui": "^5.0.11",
73
- "@things-factory/board-service": "^5.0.11",
74
- "@things-factory/board-ui": "^5.0.11",
75
- "@things-factory/code-ui": "^5.0.11",
76
- "@things-factory/component-ui": "^5.0.11",
77
- "@things-factory/context-ui": "^5.0.11",
78
- "@things-factory/document-template-ui": "^5.0.11",
79
- "@things-factory/env": "^5.0.0",
80
- "@things-factory/export-ui": "^5.0.11",
81
- "@things-factory/export-ui-csv": "^5.0.11",
82
- "@things-factory/export-ui-excel": "^5.0.11",
83
- "@things-factory/grist-ui": "^5.0.11",
84
- "@things-factory/help": "^5.0.11",
85
- "@things-factory/i18n-base": "^5.0.11",
86
- "@things-factory/import-ui": "^5.0.11",
87
- "@things-factory/import-ui-excel": "^5.0.11",
88
- "@things-factory/integration-accounting": "^5.0.11",
89
- "@things-factory/integration-fulfillment": "^5.0.11",
90
- "@things-factory/integration-lmd": "^5.0.11",
91
- "@things-factory/integration-marketplace": "^5.0.11",
92
- "@things-factory/integration-pos": "^5.0.11",
93
- "@things-factory/integration-sellercraft": "^5.0.11",
94
- "@things-factory/integration-sftp": "^5.0.11",
95
- "@things-factory/lite-menu": "^5.0.11",
96
- "@things-factory/more-ui": "^5.0.11",
97
- "@things-factory/notification": "^5.0.11",
98
- "@things-factory/pdf": "^5.0.11",
99
- "@things-factory/product-ui": "^5.0.11",
100
- "@things-factory/resource-ui": "^5.0.11",
101
- "@things-factory/sales-base": "^5.0.13",
102
- "@things-factory/scene-google-map": "^5.0.0",
103
- "@things-factory/scene-visualizer": "^5.0.0",
104
- "@things-factory/setting-ui": "^5.0.11",
105
- "@things-factory/shell": "^5.0.11",
106
- "@things-factory/system-ui": "^5.0.11",
107
- "@things-factory/warehouse-base": "^5.0.12",
108
- "@things-factory/worksheet-base": "^5.0.13",
66
+ "@things-factory/api": "^6.0.0-alpha.0",
67
+ "@things-factory/apptool-ui": "^6.0.0-alpha.0",
68
+ "@things-factory/attachment-base": "^6.0.0-alpha.0",
69
+ "@things-factory/auth-base": "^6.0.0-alpha.0",
70
+ "@things-factory/auth-ui": "^6.0.0-alpha.1",
71
+ "@things-factory/biz-base": "^6.0.0-alpha.0",
72
+ "@things-factory/biz-ui": "^6.0.0-alpha.0",
73
+ "@things-factory/board-service": "^6.0.0-alpha.0",
74
+ "@things-factory/board-ui": "^6.0.0-alpha.0",
75
+ "@things-factory/code-ui": "^6.0.0-alpha.0",
76
+ "@things-factory/component-ui": "^6.0.0-alpha.0",
77
+ "@things-factory/context-ui": "^6.0.0-alpha.0",
78
+ "@things-factory/document-template-ui": "^6.0.0-alpha.0",
79
+ "@things-factory/env": "^6.0.0-alpha.0",
80
+ "@things-factory/export-ui": "^6.0.0-alpha.0",
81
+ "@things-factory/export-ui-csv": "^6.0.0-alpha.0",
82
+ "@things-factory/export-ui-excel": "^6.0.0-alpha.0",
83
+ "@things-factory/grist-ui": "^6.0.0-alpha.0",
84
+ "@things-factory/help": "^6.0.0-alpha.0",
85
+ "@things-factory/i18n-base": "^6.0.0-alpha.0",
86
+ "@things-factory/import-ui": "^6.0.0-alpha.0",
87
+ "@things-factory/import-ui-excel": "^6.0.0-alpha.0",
88
+ "@things-factory/integration-accounting": "^6.0.0-alpha.1",
89
+ "@things-factory/integration-fulfillment": "^6.0.0-alpha.1",
90
+ "@things-factory/integration-lmd": "^6.0.0-alpha.1",
91
+ "@things-factory/integration-marketplace": "^6.0.0-alpha.1",
92
+ "@things-factory/integration-pos": "^6.0.0-alpha.1",
93
+ "@things-factory/integration-sellercraft": "^6.0.0-alpha.1",
94
+ "@things-factory/integration-sftp": "^6.0.0-alpha.1",
95
+ "@things-factory/lite-menu": "^6.0.0-alpha.0",
96
+ "@things-factory/more-ui": "^6.0.0-alpha.0",
97
+ "@things-factory/notification": "^6.0.0-alpha.0",
98
+ "@things-factory/pdf": "^6.0.0-alpha.0",
99
+ "@things-factory/product-ui": "^6.0.0-alpha.0",
100
+ "@things-factory/resource-ui": "^6.0.0-alpha.1",
101
+ "@things-factory/sales-base": "^6.0.0-alpha.1",
102
+ "@things-factory/scene-google-map": "^6.0.0-alpha.0",
103
+ "@things-factory/scene-visualizer": "^6.0.0-alpha.0",
104
+ "@things-factory/setting-ui": "^6.0.0-alpha.0",
105
+ "@things-factory/shell": "^6.0.0-alpha.0",
106
+ "@things-factory/system-ui": "^6.0.0-alpha.0",
107
+ "@things-factory/warehouse-base": "^6.0.0-alpha.1",
108
+ "@things-factory/worksheet-base": "^6.0.0-alpha.1",
109
109
  "koa2-swagger-ui": "^5.0.2",
110
110
  "swagger-jsdoc": "^5.0.0",
111
111
  "yamljs": "^0.3.0"
112
112
  },
113
113
  "devDependencies": {
114
- "@things-factory/builder": "^5.0.8"
114
+ "@things-factory/builder": "^6.0.0-alpha.0"
115
115
  },
116
- "gitHead": "72dfd33e398eab9872600e91d1b13fef0595c174"
116
+ "gitHead": "b978f296de5c8be4a3f3450929821e5554855438"
117
117
  }
@@ -202,6 +202,15 @@ export const CODES = {
202
202
  { name: 'ACTIVE', description: 'ACTIVE' }
203
203
  ]
204
204
  },
205
+ {
206
+ name: 'MANIFEST_STATUS',
207
+ description: 'manifest status',
208
+ details: [
209
+ { name: 'OPEN', description: 'OPEN' },
210
+ { name: 'IN_QUEUE', description: 'IN_QUEUE' },
211
+ { name: 'CLOSED', description: 'CLOSED' }
212
+ ]
213
+ },
205
214
  {
206
215
  name: 'TOTE_STATUS',
207
216
  description: 'tote status',
@@ -79,6 +79,11 @@ export const SETTINGS = {
79
79
  name: 'minimum-seal-number',
80
80
  description: 'set the minimum of seal numbers need to be scanned',
81
81
  category: 'id-rule'
82
+ },
83
+ {
84
+ name: 'gan-order-processing',
85
+ description: 'shorten inbound order processing. 0 - default, 1 - Confirm gan to assign warehouse, 2 - Receive gan to assign warehouse',
86
+ category: 'id-rule'
82
87
  }
83
88
  ],
84
89
  retail: [],
@@ -1,6 +1,8 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { Privilege, Role } from '@things-factory/auth-base'
2
- import { Domain } from '@things-factory/shell'
3
- import { EntityManager, getRepository } from 'typeorm'
4
+ import { Domain, getRepository } from '@things-factory/shell'
5
+
4
6
  import { ROLES_PRIVILEGES } from './dataset'
5
7
 
6
8
  export async function generateBizplaceDomainRoles(domain: Domain, tx?: EntityManager): Promise<Role[]> {
@@ -1,11 +1,12 @@
1
+ import { EntityManager, Repository } from 'typeorm'
2
+
1
3
  import { User } from '@things-factory/auth-base'
2
4
  import { Bizplace } from '@things-factory/biz-base'
3
5
  import { Domain } from '@things-factory/shell'
4
6
  import { slugger } from '@things-factory/utils'
5
- import { EntityManager, Repository } from 'typeorm'
6
7
 
7
8
  export async function generateBizplaceDomain(bizplaceId: String, user: User, tx?: EntityManager) {
8
- const bizplace: Bizplace = await tx.getRepository(Bizplace).findOne(bizplaceId)
9
+ const bizplace: Bizplace = await tx.getRepository(Bizplace).findOneBy({ id: bizplaceId })
9
10
 
10
11
  if (!bizplace) {
11
12
  throw new Error('bizplace not found')
@@ -13,7 +14,7 @@ export async function generateBizplaceDomain(bizplaceId: String, user: User, tx?
13
14
 
14
15
  const domainName: string = bizplace.name
15
16
  const subdomain: string = slugger(domainName)
16
- let domain: Domain = await tx.getRepository(Domain).findOne({ subdomain })
17
+ let domain: Domain = await tx.getRepository(Domain).findOneBy({ subdomain })
17
18
 
18
19
  if (domain) {
19
20
  throw new Error('domain is duplicated')
@@ -1,7 +1,9 @@
1
+ import { EntityManager, In } from 'typeorm'
2
+
1
3
  import { Role } from '@things-factory/auth-base'
2
4
  import { Menu } from '@things-factory/menu-base'
3
5
  import { Domain } from '@things-factory/shell'
4
- import { EntityManager, In } from 'typeorm'
6
+
5
7
  import { MENUS } from './dataset'
6
8
 
7
9
  export async function initMenus(tx: EntityManager, domain: Domain) {
@@ -28,7 +30,7 @@ export async function initMenus(tx: EntityManager, domain: Domain) {
28
30
 
29
31
  if (childMenu.roles) {
30
32
  const roleNames: string[] = childMenu.roles
31
- newChildMenu.roles = await roleRepo.find({ where: { domain, name: In(roleNames) } })
33
+ newChildMenu.roles = await roleRepo.find({ where: { domain: { id: domain.id }, name: In(roleNames) } })
32
34
  }
33
35
 
34
36
  return newChildMenu
@@ -1,8 +1,10 @@
1
- import { Domain } from '@things-factory/shell'
2
- import { Bizplace, Company } from '@things-factory/biz-base'
1
+ import { EntityManager, Repository } from 'typeorm'
2
+
3
3
  import { Role, User } from '@things-factory/auth-base'
4
+ import { Bizplace, Company } from '@things-factory/biz-base'
5
+ import { Domain, getRepository } from '@things-factory/shell'
4
6
  import { slugger } from '@things-factory/utils'
5
- import { getRepository, Repository, EntityManager } from 'typeorm'
7
+
6
8
  import { generateBusinessRoles } from '../../controllers/company-initializer'
7
9
 
8
10
  export async function businessRegister(domain: Domain, companyInput: Company, user: User, tx?: EntityManager) {
@@ -1,6 +1,7 @@
1
+ import { EntityManager } from 'typeorm'
2
+
1
3
  import { Privilege, Role } from '@things-factory/auth-base'
2
- import { Domain } from '@things-factory/shell'
3
- import { EntityManager, getRepository } from 'typeorm'
4
+ import { Domain, getRepository } from '@things-factory/shell'
4
5
 
5
6
  const COMPANY_ROLES_PRIVILEGES = [
6
7
  {
@@ -109,7 +110,7 @@ export async function generateBusinessRoles(domain: Domain, tx?: EntityManager):
109
110
  role.domain = domain
110
111
  role.name = rp.name
111
112
  if (rp.privileges?.length) {
112
- role.privileges = await privilegeRepo.find(rp.privileges)
113
+ role.privileges = await privilegeRepo.findBy(rp.privileges) /* CONFIRMME regarding TYPEORM */
113
114
  }
114
115
 
115
116
  return await roleRepo.save(role)
@@ -1,8 +1,10 @@
1
+ import { URL } from 'url'
2
+
1
3
  import { Invitation, User } from '@things-factory/auth-base'
2
4
  import { Bizplace } from '@things-factory/biz-base'
3
5
  import { sendEmail } from '@things-factory/email-base'
4
- import { getRepository } from 'typeorm'
5
- import { URL } from 'url'
6
+ import { getRepository } from '@things-factory/shell'
7
+
6
8
  import { getInvitationEmailForm } from '../templates/invitation-email'
7
9
  import { makeInvitationToken } from './utils/make-invitation-token'
8
10
  import { saveInvitationToken } from './utils/save-invitation-token'
@@ -19,7 +21,9 @@ export async function invite(attrs, withEmailInvitation?: Boolean) {
19
21
  // - 초대장 전송
20
22
 
21
23
  const repository = getRepository(User)
22
- var user: User = await repository.findOne({ where: { email }, relations: ['bizplaces'] })
24
+ var user = (await repository.findOne({ where: { email }, relations: ['bizplaces'] })) as User & {
25
+ bizplaces: Bizplace[]
26
+ }
23
27
 
24
28
  if (user) {
25
29
  if (type == 'company') {
@@ -27,7 +31,7 @@ export async function invite(attrs, withEmailInvitation?: Boolean) {
27
31
  throw new Error('user already a member of the company.')
28
32
  }
29
33
  } else if (type == 'bizplace') {
30
- var bizplace: Bizplace = await getRepository(Bizplace).findOne(reference)
34
+ var bizplace: Bizplace = await getRepository(Bizplace).findOneBy({ id: reference })
31
35
 
32
36
  if (!bizplace) {
33
37
  throw new Error('invalid bizplace.')
@@ -41,7 +45,7 @@ export async function invite(attrs, withEmailInvitation?: Boolean) {
41
45
  }
42
46
 
43
47
  // invitation 레코드에 동일한 invitation이 있는 지 확인
44
- var invitation = await getRepository(Invitation).findOne({
48
+ var invitation = await getRepository(Invitation).findOneBy({
45
49
  email,
46
50
  reference,
47
51
  type
@@ -76,7 +80,7 @@ export async function invite(attrs, withEmailInvitation?: Boolean) {
76
80
  }
77
81
 
78
82
  export async function acceptInvitation(token) {
79
- var invitation = await getRepository(Invitation).findOne({
83
+ var invitation = await getRepository(Invitation).findOneBy({
80
84
  token
81
85
  })
82
86
 
@@ -112,7 +116,7 @@ export async function sendInvitationEmail({ invitation, context }) {
112
116
  }
113
117
 
114
118
  export async function resendInvitationEmail({ email, reference, type }, context) {
115
- var invitation = await getRepository(Invitation).findOne({
119
+ var invitation = await getRepository(Invitation).findOneBy({
116
120
  email,
117
121
  reference,
118
122
  type
@@ -1,5 +1,5 @@
1
- import { getRepository } from 'typeorm'
2
1
  import { Invitation } from '@things-factory/auth-base'
2
+ import { getRepository } from '@things-factory/shell'
3
3
 
4
4
  export async function saveInvitationToken(id, token) {
5
5
  return await getRepository(Invitation).save({
@@ -5,7 +5,7 @@ import { Bizplace } from '@things-factory/biz-base'
5
5
  import { generateBizplaceDomain } from '../../../controllers/bizplace-initializer/generate-bizplace-domain'
6
6
 
7
7
  export const generateBizplace = {
8
- async generateBizplace(_: any, { bizplaceInput }, context: any) {
8
+ async generateBizplace(_: any, { bizplaceInput }, context: ResolverContext) {
9
9
  const { tx, business: company, user } = context.state
10
10
  const { name, description, address, postalCode, latlng } = bizplaceInput
11
11
 
@@ -7,7 +7,7 @@ import { initGroups } from '../../../controllers/bizplace-initializer'
7
7
  import { generateBusinessRoles } from '../../../controllers/company-initializer/generate-company-roles'
8
8
 
9
9
  export const generateCompany = {
10
- async generateCompany(_: any, { companyInput }, context: any) {
10
+ async generateCompany(_: any, { companyInput }, context: ResolverContext) {
11
11
  const { tx, user } = context.state
12
12
  const { name, description, address, postalCode, latlng } = companyInput
13
13
 
@@ -50,9 +50,10 @@ export const generateCompany = {
50
50
  domain
51
51
  })
52
52
 
53
- const userHavingRoles: User = await tx
54
- .getRepository(User)
55
- .findOne({ email: user.email }, { relations: ['domains', 'roles'] })
53
+ const userHavingRoles: User = await tx.getRepository(User).findOne({
54
+ where: { email: user.email },
55
+ relations: ['domains', 'roles']
56
+ })
56
57
 
57
58
  user.domains = [...user.domains, domain]
58
59
  user.roles = [...userHavingRoles.roles, domainRoles.find(r => r.name === 'BUSINESS-OWNER')]
@@ -1,12 +1,14 @@
1
- import { Domain } from '@things-factory/shell'
2
- import { User, Role, Privilege } from '@things-factory/auth-base'
3
1
  import { EntityManager, Repository } from 'typeorm'
2
+
3
+ import { Privilege, Role, User } from '@things-factory/auth-base'
4
+ import { Domain } from '@things-factory/shell'
5
+
4
6
  import { initCodes, initGroups, initMenus, initSettings } from '../../../controllers/bizplace-initializer'
5
7
  import { generateBizplaceDomainRoles } from '../../../controllers/bizplace-initializer/generate-bizplace-domain-roles'
6
8
 
7
9
  export const updateDomainExtType = {
8
- async updateDomainType(_: any, { domainTypeInput }, context: any) {
9
- const { tx, user }: { tx: EntityManager; user: User } = context.state
10
+ async updateDomainType(_: any, { domainTypeInput }, context: ResolverContext) {
11
+ const { tx, user } = context.state
10
12
  const { id, extType }: { id: string; extType: string } = domainTypeInput
11
13
 
12
14
  let domain: Domain = await tx.getRepository(Domain).findOne({ where: { id } })
@@ -36,7 +38,7 @@ async function createRelations(tx: EntityManager, domain: Domain, email: string)
36
38
  const roleRepo: Repository<Role> = tx.getRepository(Role)
37
39
  const role: Role = await roleRepo.findOne({ where: { domain } })
38
40
  const privilegeRepo: Repository<Privilege> = tx.getRepository(Privilege)
39
- const privileges: Privilege = await privilegeRepo.find()
41
+ const privileges: Privilege[] = await privilegeRepo.find()
40
42
 
41
43
  const domains: Domain[] = user.domains
42
44
  domains.push(domain)
@@ -1,11 +1,11 @@
1
- import { User } from '@things-factory/auth-base'
1
+ import { Raw } from 'typeorm'
2
+
2
3
  import { Bizplace, Partner } from '@things-factory/biz-base'
3
- import { Domain } from '@things-factory/shell'
4
- import { getRepository, Raw } from 'typeorm'
4
+ import { Domain, getRepository } from '@things-factory/shell'
5
5
 
6
6
  export const partnerInvitationResolver = {
7
- async partnerInvitation(_: any, { bizplaceName }: { bizplaceName: string }, context: any): Promise<void> {
8
- const { domain, user }: { domain: Domain; user: User } = context.state
7
+ async partnerInvitation(_: any, { bizplaceName }: { bizplaceName: string }, context: ResolverContext): Promise<void> {
8
+ const { domain, user } = context.state
9
9
 
10
10
  // Check whether bizplace exists or not
11
11
  const partnerBizplace: Bizplace = await getRepository(Bizplace).findOne({
@@ -1,6 +1,5 @@
1
1
  import { getUserDomains, Role, User } from '@things-factory/auth-base'
2
- import { getRepository } from 'typeorm'
3
- import { Domain } from '@things-factory/shell'
2
+ import { Domain, getRepository } from '@things-factory/shell'
4
3
 
5
4
  type CompanyRole = {
6
5
  domain: Domain
@@ -8,12 +7,15 @@ type CompanyRole = {
8
7
  }
9
8
 
10
9
  export const companyRolesByScopeResolver = {
11
- async companyRolesByScope(_: void, { scope }: { scope: string[] }, context: any): Promise<CompanyRole[]> {
12
- let { user }: { user: User } = context.state
10
+ async companyRolesByScope(_: void, { scope }: { scope: string[] }, context: ResolverContext): Promise<CompanyRole[]> {
11
+ let { user } = context.state
13
12
  const userDomains: Domain[] = await getUserDomains(user)
14
- const availableDomains: Domain = userDomains.filter((domain: Domain) => scope.indexOf(domain.extType) >= 0)
13
+ const availableDomains: Domain[] = userDomains.filter((domain: Domain) => scope.indexOf(domain.extType) >= 0)
15
14
  const availableDomainIDs: string[] = availableDomains.map((domain: Domain) => domain.id)
16
- user = await getRepository(User).findOne(user.id, { relations: ['roles', 'roles.domain'] })
15
+ user = await getRepository(User).findOne({
16
+ where: { id: user.id },
17
+ relations: ['roles', 'roles.domain']
18
+ })
17
19
 
18
20
  const availableRoles: Role[] = user.roles.filter((role: Role) => availableDomainIDs.indexOf(role.domain.id) >= 0)
19
21