@things-factory/biz-base 9.0.0-beta.8 → 9.0.2

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 (26) hide show
  1. package/dist-server/service/biz-option/biz-option-mutation.js +11 -2
  2. package/dist-server/service/biz-option/biz-option-mutation.js.map +1 -1
  3. package/dist-server/service/biz-option/biz-option-query.js +4 -1
  4. package/dist-server/service/biz-option/biz-option-query.js.map +1 -1
  5. package/dist-server/service/biz-option-detail/biz-option-detail-mutation.js +11 -2
  6. package/dist-server/service/biz-option-detail/biz-option-detail-mutation.js.map +1 -1
  7. package/dist-server/service/biz-option-detail/biz-option-detail-query.js +4 -1
  8. package/dist-server/service/biz-option-detail/biz-option-detail-query.js.map +1 -1
  9. package/dist-server/service/bizplace/bizplace-mutation.js +34 -8
  10. package/dist-server/service/bizplace/bizplace-mutation.js.map +1 -1
  11. package/dist-server/service/bizplace/bizplace-query.js +26 -9
  12. package/dist-server/service/bizplace/bizplace-query.js.map +1 -1
  13. package/dist-server/service/company/company-mutation.js +13 -4
  14. package/dist-server/service/company/company-mutation.js.map +1 -1
  15. package/dist-server/service/company/company-query.js +4 -1
  16. package/dist-server/service/company/company-query.js.map +1 -1
  17. package/dist-server/service/contact-point/contact-point-mutation.js +24 -13
  18. package/dist-server/service/contact-point/contact-point-mutation.js.map +1 -1
  19. package/dist-server/service/worker/worker-mutation.js +14 -4
  20. package/dist-server/service/worker/worker-mutation.js.map +1 -1
  21. package/dist-server/service/worker/worker-query.js +4 -1
  22. package/dist-server/service/worker/worker-query.js.map +1 -1
  23. package/dist-server/tsconfig.tsbuildinfo +1 -1
  24. package/dist-server/utils/get-permitted-bizplaces.js +4 -6
  25. package/dist-server/utils/get-permitted-bizplaces.js.map +1 -1
  26. package/package.json +3 -3
@@ -77,12 +77,11 @@ async function getOutletBizplace(outletId, tx) {
77
77
  return bizplace;
78
78
  }
79
79
  async function getCompanyBizplace(domain, user, customerBizplaceId, tx) {
80
- var _a, _b;
81
80
  const bizplaceRepo = tx ? tx.getRepository(bizplace_1.Bizplace) : (0, shell_1.getRepository)(bizplace_1.Bizplace);
82
81
  let companyDomain;
83
82
  if (user) {
84
83
  let myBizplace = await getMyBizplace(domain, user, tx);
85
- if (!((_a = myBizplace.company) === null || _a === void 0 ? void 0 : _a.id)) {
84
+ if (!myBizplace.company?.id) {
86
85
  myBizplace = await bizplaceRepo.findOne({
87
86
  where: { id: myBizplace.id },
88
87
  relations: ['company', 'company.domain']
@@ -95,7 +94,7 @@ async function getCompanyBizplace(domain, user, customerBizplaceId, tx) {
95
94
  where: { id: customerBizplaceId },
96
95
  relations: ['company', 'company.domain']
97
96
  });
98
- companyDomain = (_b = customerBizplace.company) === null || _b === void 0 ? void 0 : _b.domain;
97
+ companyDomain = customerBizplace.company?.domain;
99
98
  }
100
99
  return await bizplaceRepo.findOne({ where: { domain: { id: companyDomain.id } }, relations: ['domain'] });
101
100
  }
@@ -254,10 +253,9 @@ async function getSubdomainBizplace(subdomain, tx) {
254
253
  return await (0, shell_1.getRepository)(bizplace_1.Bizplace).findOne({ where: { domain: { id: domain.id } } });
255
254
  }
256
255
  async function getUserBizplaces(user, tx) {
257
- var _a;
258
256
  const userRepo = tx ? tx.getRepository(auth_base_1.User) : (0, shell_1.getRepository)(auth_base_1.User);
259
257
  let userBizplaces = [];
260
- if (!((_a = user.domains) === null || _a === void 0 ? void 0 : _a.length)) {
258
+ if (!user.domains?.length) {
261
259
  user = await userRepo.findOne({
262
260
  where: { id: user.id },
263
261
  relations: ['domains']
@@ -280,7 +278,7 @@ async function getDomainUsers(bizplace, tx) {
280
278
  .subQuery()
281
279
  .select('bizplace.domain_id')
282
280
  .from(bizplace_1.Bizplace, 'bizplace')
283
- .where('bizplace.id = :customerBizplaceId', { customerBizplaceId: bizplace === null || bizplace === void 0 ? void 0 : bizplace.id })
281
+ .where('bizplace.id = :customerBizplaceId', { customerBizplaceId: bizplace?.id })
284
282
  .getQuery();
285
283
  return 'ud.domains_id = ' + subquery;
286
284
  })
@@ -1 +1 @@
1
- {"version":3,"file":"get-permitted-bizplaces.js","sourceRoot":"","sources":["../../server/utils/get-permitted-bizplaces.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, In, SelectQueryBuilder } from 'typeorm'\n\nimport { checkUserBelongsDomain, Partner, User } from '@things-factory/auth-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { Bizplace } from '../service/bizplace/bizplace'\n\n/**\n * @description 도메인과 사용자의 관계를 판단하여\n * 접속한 도메인을 통해 접근 할 수 있는 대상 bizplaces를 찾아 return\n *\n * @param domain\n * @param user\n */\nexport async function getPermittedBizplaces(domain: Domain, user: User, tx?: EntityManager): Promise<Bizplace[]> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n // 1. Check whether `user` belongs to `domain` or not\n let permittedBizplaces: Bizplace[] = []\n if (await checkUserBelongsDomain(domain, user)) {\n // If `user` belongs to `domain`\n // return set of company bizplace, bizplace of passed domain, bizplaces of customers\n\n if (domain.extType !== 'company') permittedBizplaces.push(await getCompanyBizplace(domain, user, null, tx))\n permittedBizplaces.push(await bizplaceRepo.findOne({ where: { domain: { id: domain.id } } }))\n permittedBizplaces = permittedBizplaces.concat(await getCustomerBizplaces(domain, tx))\n } else {\n // If `user` doesn't belong to `domain`\n // return set of company bizplace, bizplaces which `user` can access\n permittedBizplaces = await getUserBizplaces(user)\n }\n\n return permittedBizplaces\n}\n\nexport async function getPermittedBizplaceIds(domain: Domain, user: User): Promise<string[] | any[]> {\n const bizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n return bizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n}\n\nexport async function getMyBizplace(domain: Domain, user: User, tx?: EntityManager): Promise<Bizplace> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n // Case 1. 도메인에 소속된 사용자\n // 1. 현재 도메인을 릴레이션으로 가지고 있는 비즈플레이스를 리턴\n\n if (await checkUserBelongsDomain(domain, user)) {\n return await bizplaceRepo.findOne({ where: { domain: { id: domain.id } } })\n } else {\n const customerBizplaces: Bizplace[] = await getCustomerBizplaces(domain, tx)\n const userBizplaces: Bizplace[] = await getUserBizplaces(user, tx)\n\n const customerBizplaceIdSet: Set<string> = new Set(customerBizplaces.map((pb: Bizplace) => pb.id))\n const userBizplaceIdSet: Set<string> = new Set(userBizplaces.map((ub: Bizplace) => ub.id))\n\n const myBizplaceIds: string[] = Array.from(customerBizplaceIdSet).filter((pbId: string) =>\n userBizplaceIdSet.has(pbId)\n )\n if (myBizplaceIds.length > 1) console.warn(`User has multiple bizplaces ${myBizplaceIds}`)\n\n // TODO: 복수의 비즈플레이스를 가지고 있는 사용자는 조회 결과의 첫번째 비즈플레이스만 리턴 받도록 되어 있음\n // 이런 케이스에 처리 방식을 결정하고 수정해야함\n return await bizplaceRepo.findOne({\n where: { id: In(myBizplaceIds) }\n })\n }\n}\n\nexport async function getOutletBizplace(outletId: string, tx?: EntityManager) {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n const bizplace: Bizplace = await bizplaceRepo.findOne({\n where: { id: outletId }\n })\n return bizplace\n}\n\nexport async function getCompanyBizplace(\n domain: Domain,\n user: User,\n customerBizplaceId?: string,\n tx?: EntityManager\n): Promise<Bizplace> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n let companyDomain: Domain\n\n if (user) {\n let myBizplace: Bizplace = await getMyBizplace(domain, user, tx)\n if (!myBizplace.company?.id) {\n myBizplace = await bizplaceRepo.findOne({\n where: { id: myBizplace.id },\n relations: ['company', 'company.domain']\n })\n companyDomain = myBizplace.company.domain\n }\n }\n\n if (customerBizplaceId) {\n const customerBizplace: Bizplace = await bizplaceRepo.findOne({\n where: { id: customerBizplaceId },\n relations: ['company', 'company.domain']\n })\n\n companyDomain = customerBizplace.company?.domain\n }\n return await bizplaceRepo.findOne({ where: { domain: { id: companyDomain.id } }, relations: ['domain'] })\n}\n\nexport async function getCompaniesBizplaces(\n domains: Domain[],\n warehouseDomain: Domain,\n tx?: EntityManager\n): Promise<Bizplace[]> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n const partnersBizplaces = await bizplaceRepo\n .createQueryBuilder('b')\n .select('b.id', 'id')\n .addSelect('b.name', 'name')\n .addSelect('b.description', 'description')\n .innerJoin('companies', 'c', 'c.domain_id = b.domain_id')\n .innerJoin('bizplaces', 'b2', 'b2.company_id = c.id')\n .innerJoin('domains', 'd', 'd.id = b2.domain_id')\n .innerJoin('partners', 'p', 'p.partner_domain_id = d.id')\n .where('p.domain_id = :domainId', { domainId: warehouseDomain.id })\n .andWhere('b2.domain_id IN (:...domainIds)', { domainIds: domains.map(domain => domain.id) })\n .groupBy('b.id')\n .addGroupBy('b.name')\n .addGroupBy('b.description')\n .getRawMany()\n\n return partnersBizplaces\n}\n\nexport async function getPartnerBizplaceIds(domain: Domain, user: User, tx?: EntityManager): Promise<string[] | any[]> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n const partnerRepo = tx ? tx.getRepository(Partner) : getRepository(Partner)\n\n let partnerBizplaces: Bizplace[] = []\n\n const domainBizplace: Bizplace = await bizplaceRepo.findOne({ where: { domain: { id: domain.id } } })\n if (!domainBizplace) {\n } else {\n const partners: Partner[] = await partnerRepo.find({\n where: { domain: { id: domainBizplace.id } } /* CONFIRMME regarding TYPEORM - compare original logic */,\n relations: ['partnerBizplace', 'partnerBizplace.company', 'partnerBizplace.company.domain']\n })\n\n for (let partner of partners) {\n partnerBizplaces.push((partner as any).partnerBizplace)\n }\n }\n return partnerBizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n}\n\nexport async function getPartnersBizplaces(domain: Domain, user: User, tx?: EntityManager): Promise<Bizplace[]> {\n const userRepo = tx ? tx.getRepository(User) : getRepository(User)\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n const partnerRepo = tx ? tx.getRepository(Partner) : getRepository(Partner)\n\n let partnersBizplaces: Bizplace[] = []\n\n const qb: SelectQueryBuilder<User> = userRepo\n .createQueryBuilder('user')\n .select('user.id', 'userId')\n .addSelect('role.id', 'roleId')\n .addSelect('role.name', 'roleName')\n .addSelect('domain.id', 'domainId')\n .addSelect('domain.name', 'domainName')\n .innerJoin('users_roles', 'ur', 'user.id = ur.users_id')\n .innerJoin('roles', 'role', 'ur.roles_id = role.id')\n .innerJoin('domains', 'domain', 'role.domain_id = domain.id')\n .where('user.id = :userId', { userId: user.id })\n .andWhere('domain.id = :domainId', { domainId: domain.id })\n\n let userRoles = await qb.getRawMany()\n\n // detect if user is Customer\n let foundCustomerRole = userRoles.find(role => role.roleName === 'Customer')\n\n // get all partners\n let partnersDomains: Partner[] = await partnerRepo.find({\n where: { domain: { id: domain.id } },\n relations: ['partnerDomain']\n })\n\n if (foundCustomerRole) {\n let userDomains = user.domains\n for (let partDomain of partnersDomains) {\n for (let userDomain of userDomains) {\n if (userDomain.id === partDomain.partnerDomain.id) {\n let partnerBizplace: Bizplace = await bizplaceRepo.findOne({\n where: { domain: { id: partDomain.partnerDomain.id } },\n relations: ['company', 'company.domain']\n })\n\n partnersBizplaces.push(partnerBizplace)\n }\n }\n }\n } else {\n for (let partDomain of partnersDomains) {\n let partnerBizplace: Bizplace = await bizplaceRepo.findOne({\n where: { domain: { id: partDomain.partnerDomain.id } },\n relations: ['company', 'company.domain']\n })\n\n partnersBizplaces.push(partnerBizplace)\n }\n }\n\n return partnersBizplaces\n}\n\nexport async function getPartnersCompanyBizplaces(\n domain: Domain,\n user: User,\n strictAccess: Boolean = false,\n tx?: EntityManager\n): Promise<Bizplace[]> {\n const userRepo = tx ? tx.getRepository(User) : getRepository(User)\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n let partnersBizplaces: Bizplace[] = []\n\n let userRoles: any = await userRepo\n .createQueryBuilder('user')\n .select('user.id', 'userId')\n .addSelect('role.id', 'roleId')\n .addSelect('role.name', 'roleName')\n .addSelect('domain.id', 'domainId')\n .addSelect('domain.name', 'domainName')\n .innerJoin('users_roles', 'ur', 'user.id = ur.users_id')\n .innerJoin('roles', 'role', 'ur.roles_id = role.id')\n .innerJoin('domains', 'domain', 'role.domain_id = domain.id')\n .where('user.id = :userId', { userId: user.id })\n .andWhere('domain.id = :domainId', { domainId: domain.id })\n .getRawMany()\n\n if (userRoles.find(role => role.roleName !== 'Customer')) {\n let qbPartnersBizplaces = bizplaceRepo\n .createQueryBuilder('b')\n .select('b.id', 'id')\n .addSelect('b.name', 'name')\n .addSelect('b.description', 'description')\n .innerJoin('companies', 'c', 'c.domain_id = b.domain_id')\n .innerJoin('bizplaces', 'b2', 'b2.company_id = c.id')\n .innerJoin('domains', 'd', 'd.id = b2.domain_id')\n .innerJoin('partners', 'p', 'p.partner_domain_id = d.id')\n .where('p.domain_id = :domainId', { domainId: domain.id })\n .groupBy('b.id')\n .addGroupBy('b.name')\n .addGroupBy('b.description')\n\n if (strictAccess) {\n const userRepo = tx ? tx.getRepository(User) : getRepository(User)\n qbPartnersBizplaces.andWhere(\n `exists (\n ${userRepo\n .createQueryBuilder('u2')\n .innerJoin('users_roles', 'ur', 'ur.users_id = u2.id')\n .innerJoin('roles', 'r', 'r.id = ur.roles_id')\n .where('r.domain_id = c.domain_id')\n .andWhere(`r.name IN ('BUSINESS-OWNER','BUSINESS-MANAGER')`)\n .andWhere(`u2.id = '${user.id}'`)\n .getQuery()})`\n )\n }\n\n partnersBizplaces = await qbPartnersBizplaces.getRawMany()\n }\n\n return partnersBizplaces\n}\n\nexport async function getCustomerBizplaces(domain: Domain, tx?: EntityManager): Promise<Bizplace[]> {\n const partnerRepo = tx ? tx.getRepository(Partner) : getRepository(Partner)\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n const customers: Partner[] = await partnerRepo.find({\n where: { domain: { id: domain.id } },\n relations: ['partnerDomain']\n })\n const customerDomains: Domain[] = customers.map((customer: Partner) => customer.partnerDomain)\n return await bizplaceRepo.find({\n where: { domain: In(customerDomains.map((d: Domain) => d.id)) },\n relations: ['company', 'company.domain', 'domain']\n })\n}\n\nexport async function getSubdomainBizplace(subdomain: string, tx?: EntityManager): Promise<Bizplace> {\n const domainRepo = tx ? tx.getRepository(Domain) : getRepository(Domain)\n\n const domain: Domain = await domainRepo.findOne({\n where: { subdomain }\n })\n\n return await getRepository(Bizplace).findOne({ where: { domain: { id: domain.id } } })\n}\n\nexport async function getUserBizplaces(user: User, tx?: EntityManager): Promise<Bizplace[]> {\n const userRepo = tx ? tx.getRepository(User) : getRepository(User)\n let userBizplaces: Bizplace[] = []\n\n if (!user.domains?.length) {\n user = await userRepo.findOne({\n where: { id: user.id },\n relations: ['domains']\n })\n }\n\n const userDomains: Domain[] = user.domains\n if (userDomains.every((userDomain: Domain) => userDomain.extType !== 'company')) {\n userBizplaces.push(await getCompanyBizplace(userDomains[0], user, null, tx))\n }\n\n return userBizplaces.concat(\n await getRepository(Bizplace).find({ where: { domain: In(userDomains.map((d: Domain) => d.id)) } })\n )\n}\n\nexport async function getDomainUsers(bizplace: Bizplace, tx?: EntityManager): Promise<any[]> {\n const userDomainRepo = tx ? tx.getRepository('users_domains') : getRepository('users_domains')\n\n const users: any[] = await userDomainRepo\n .createQueryBuilder('ud')\n .select('ud.users_id', 'id')\n .distinct(true)\n .where(qb => {\n const subquery = qb\n .subQuery()\n .select('bizplace.domain_id')\n .from(Bizplace, 'bizplace')\n .where('bizplace.id = :customerBizplaceId', { customerBizplaceId: bizplace?.id })\n .getQuery()\n return 'ud.domains_id = ' + subquery\n })\n .getRawMany()\n\n return users\n}\n"]}
1
+ {"version":3,"file":"get-permitted-bizplaces.js","sourceRoot":"","sources":["../../server/utils/get-permitted-bizplaces.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, In, SelectQueryBuilder } from 'typeorm'\n\nimport { checkUserBelongsDomain, Partner, User } from '@things-factory/auth-base'\nimport { Domain, getRepository } from '@things-factory/shell'\n\nimport { Bizplace } from '../service/bizplace/bizplace'\n\n/**\n * @description 도메인과 사용자의 관계를 판단하여\n * 접속한 도메인을 통해 접근 할 수 있는 대상 bizplaces를 찾아 return\n *\n * @param domain\n * @param user\n */\nexport async function getPermittedBizplaces(domain: Domain, user: User, tx?: EntityManager): Promise<Bizplace[]> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n // 1. Check whether `user` belongs to `domain` or not\n let permittedBizplaces: Bizplace[] = []\n if (await checkUserBelongsDomain(domain, user)) {\n // If `user` belongs to `domain`\n // return set of company bizplace, bizplace of passed domain, bizplaces of customers\n\n if (domain.extType !== 'company') permittedBizplaces.push(await getCompanyBizplace(domain, user, null, tx))\n permittedBizplaces.push(await bizplaceRepo.findOne({ where: { domain: { id: domain.id } } }))\n permittedBizplaces = permittedBizplaces.concat(await getCustomerBizplaces(domain, tx))\n } else {\n // If `user` doesn't belong to `domain`\n // return set of company bizplace, bizplaces which `user` can access\n permittedBizplaces = await getUserBizplaces(user)\n }\n\n return permittedBizplaces\n}\n\nexport async function getPermittedBizplaceIds(domain: Domain, user: User): Promise<string[] | any[]> {\n const bizplaces: Bizplace[] = await getPermittedBizplaces(domain, user)\n return bizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n}\n\nexport async function getMyBizplace(domain: Domain, user: User, tx?: EntityManager): Promise<Bizplace> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n // Case 1. 도메인에 소속된 사용자\n // 1. 현재 도메인을 릴레이션으로 가지고 있는 비즈플레이스를 리턴\n\n if (await checkUserBelongsDomain(domain, user)) {\n return await bizplaceRepo.findOne({ where: { domain: { id: domain.id } } })\n } else {\n const customerBizplaces: Bizplace[] = await getCustomerBizplaces(domain, tx)\n const userBizplaces: Bizplace[] = await getUserBizplaces(user, tx)\n\n const customerBizplaceIdSet: Set<string> = new Set(customerBizplaces.map((pb: Bizplace) => pb.id))\n const userBizplaceIdSet: Set<string> = new Set(userBizplaces.map((ub: Bizplace) => ub.id))\n\n const myBizplaceIds: string[] = Array.from(customerBizplaceIdSet).filter((pbId: string) =>\n userBizplaceIdSet.has(pbId)\n )\n if (myBizplaceIds.length > 1) console.warn(`User has multiple bizplaces ${myBizplaceIds}`)\n\n // TODO: 복수의 비즈플레이스를 가지고 있는 사용자는 조회 결과의 첫번째 비즈플레이스만 리턴 받도록 되어 있음\n // 이런 케이스에 처리 방식을 결정하고 수정해야함\n return await bizplaceRepo.findOne({\n where: { id: In(myBizplaceIds) }\n })\n }\n}\n\nexport async function getOutletBizplace(outletId: string, tx?: EntityManager) {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n const bizplace: Bizplace = await bizplaceRepo.findOne({\n where: { id: outletId }\n })\n return bizplace\n}\n\nexport async function getCompanyBizplace(\n domain: Domain,\n user: User,\n customerBizplaceId?: string,\n tx?: EntityManager\n): Promise<Bizplace> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n let companyDomain: Domain\n\n if (user) {\n let myBizplace: Bizplace = await getMyBizplace(domain, user, tx)\n if (!myBizplace.company?.id) {\n myBizplace = await bizplaceRepo.findOne({\n where: { id: myBizplace.id },\n relations: ['company', 'company.domain']\n })\n companyDomain = myBizplace.company.domain\n }\n }\n\n if (customerBizplaceId) {\n const customerBizplace: Bizplace = await bizplaceRepo.findOne({\n where: { id: customerBizplaceId },\n relations: ['company', 'company.domain']\n })\n\n companyDomain = customerBizplace.company?.domain\n }\n return await bizplaceRepo.findOne({ where: { domain: { id: companyDomain.id } }, relations: ['domain'] })\n}\n\nexport async function getCompaniesBizplaces(\n domains: Domain[],\n warehouseDomain: Domain,\n tx?: EntityManager\n): Promise<Bizplace[]> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n const partnersBizplaces = await bizplaceRepo\n .createQueryBuilder('b')\n .select('b.id', 'id')\n .addSelect('b.name', 'name')\n .addSelect('b.description', 'description')\n .innerJoin('companies', 'c', 'c.domain_id = b.domain_id')\n .innerJoin('bizplaces', 'b2', 'b2.company_id = c.id')\n .innerJoin('domains', 'd', 'd.id = b2.domain_id')\n .innerJoin('partners', 'p', 'p.partner_domain_id = d.id')\n .where('p.domain_id = :domainId', { domainId: warehouseDomain.id })\n .andWhere('b2.domain_id IN (:...domainIds)', { domainIds: domains.map(domain => domain.id) })\n .groupBy('b.id')\n .addGroupBy('b.name')\n .addGroupBy('b.description')\n .getRawMany()\n\n return partnersBizplaces\n}\n\nexport async function getPartnerBizplaceIds(domain: Domain, user: User, tx?: EntityManager): Promise<string[] | any[]> {\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n const partnerRepo = tx ? tx.getRepository(Partner) : getRepository(Partner)\n\n let partnerBizplaces: Bizplace[] = []\n\n const domainBizplace: Bizplace = await bizplaceRepo.findOne({ where: { domain: { id: domain.id } } })\n if (!domainBizplace) {\n } else {\n const partners: Partner[] = await partnerRepo.find({\n where: { domain: { id: domainBizplace.id } } /* CONFIRMME regarding TYPEORM - compare original logic */,\n relations: ['partnerBizplace', 'partnerBizplace.company', 'partnerBizplace.company.domain']\n })\n\n for (let partner of partners) {\n partnerBizplaces.push((partner as any).partnerBizplace)\n }\n }\n return partnerBizplaces.map((bizplace: Bizplace) => bizplace.id || null)\n}\n\nexport async function getPartnersBizplaces(domain: Domain, user: User, tx?: EntityManager): Promise<Bizplace[]> {\n const userRepo = tx ? tx.getRepository(User) : getRepository(User)\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n const partnerRepo = tx ? tx.getRepository(Partner) : getRepository(Partner)\n\n let partnersBizplaces: Bizplace[] = []\n\n const qb: SelectQueryBuilder<User> = userRepo\n .createQueryBuilder('user')\n .select('user.id', 'userId')\n .addSelect('role.id', 'roleId')\n .addSelect('role.name', 'roleName')\n .addSelect('domain.id', 'domainId')\n .addSelect('domain.name', 'domainName')\n .innerJoin('users_roles', 'ur', 'user.id = ur.users_id')\n .innerJoin('roles', 'role', 'ur.roles_id = role.id')\n .innerJoin('domains', 'domain', 'role.domain_id = domain.id')\n .where('user.id = :userId', { userId: user.id })\n .andWhere('domain.id = :domainId', { domainId: domain.id })\n\n let userRoles = await qb.getRawMany()\n\n // detect if user is Customer\n let foundCustomerRole = userRoles.find(role => role.roleName === 'Customer')\n\n // get all partners\n let partnersDomains: Partner[] = await partnerRepo.find({\n where: { domain: { id: domain.id } },\n relations: ['partnerDomain']\n })\n\n if (foundCustomerRole) {\n let userDomains = user.domains\n for (let partDomain of partnersDomains) {\n for (let userDomain of userDomains) {\n if (userDomain.id === partDomain.partnerDomain.id) {\n let partnerBizplace: Bizplace = await bizplaceRepo.findOne({\n where: { domain: { id: partDomain.partnerDomain.id } },\n relations: ['company', 'company.domain']\n })\n\n partnersBizplaces.push(partnerBizplace)\n }\n }\n }\n } else {\n for (let partDomain of partnersDomains) {\n let partnerBizplace: Bizplace = await bizplaceRepo.findOne({\n where: { domain: { id: partDomain.partnerDomain.id } },\n relations: ['company', 'company.domain']\n })\n\n partnersBizplaces.push(partnerBizplace)\n }\n }\n\n return partnersBizplaces\n}\n\nexport async function getPartnersCompanyBizplaces(\n domain: Domain,\n user: User,\n strictAccess: Boolean = false,\n tx?: EntityManager\n): Promise<Bizplace[]> {\n const userRepo = tx ? tx.getRepository(User) : getRepository(User)\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n let partnersBizplaces: Bizplace[] = []\n\n let userRoles: any = await userRepo\n .createQueryBuilder('user')\n .select('user.id', 'userId')\n .addSelect('role.id', 'roleId')\n .addSelect('role.name', 'roleName')\n .addSelect('domain.id', 'domainId')\n .addSelect('domain.name', 'domainName')\n .innerJoin('users_roles', 'ur', 'user.id = ur.users_id')\n .innerJoin('roles', 'role', 'ur.roles_id = role.id')\n .innerJoin('domains', 'domain', 'role.domain_id = domain.id')\n .where('user.id = :userId', { userId: user.id })\n .andWhere('domain.id = :domainId', { domainId: domain.id })\n .getRawMany()\n\n if (userRoles.find(role => role.roleName !== 'Customer')) {\n let qbPartnersBizplaces = bizplaceRepo\n .createQueryBuilder('b')\n .select('b.id', 'id')\n .addSelect('b.name', 'name')\n .addSelect('b.description', 'description')\n .innerJoin('companies', 'c', 'c.domain_id = b.domain_id')\n .innerJoin('bizplaces', 'b2', 'b2.company_id = c.id')\n .innerJoin('domains', 'd', 'd.id = b2.domain_id')\n .innerJoin('partners', 'p', 'p.partner_domain_id = d.id')\n .where('p.domain_id = :domainId', { domainId: domain.id })\n .groupBy('b.id')\n .addGroupBy('b.name')\n .addGroupBy('b.description')\n\n if (strictAccess) {\n const userRepo = tx ? tx.getRepository(User) : getRepository(User)\n qbPartnersBizplaces.andWhere(\n `exists (\n ${userRepo\n .createQueryBuilder('u2')\n .innerJoin('users_roles', 'ur', 'ur.users_id = u2.id')\n .innerJoin('roles', 'r', 'r.id = ur.roles_id')\n .where('r.domain_id = c.domain_id')\n .andWhere(`r.name IN ('BUSINESS-OWNER','BUSINESS-MANAGER')`)\n .andWhere(`u2.id = '${user.id}'`)\n .getQuery()})`\n )\n }\n\n partnersBizplaces = await qbPartnersBizplaces.getRawMany()\n }\n\n return partnersBizplaces\n}\n\nexport async function getCustomerBizplaces(domain: Domain, tx?: EntityManager): Promise<Bizplace[]> {\n const partnerRepo = tx ? tx.getRepository(Partner) : getRepository(Partner)\n const bizplaceRepo = tx ? tx.getRepository(Bizplace) : getRepository(Bizplace)\n\n const customers: Partner[] = await partnerRepo.find({\n where: { domain: { id: domain.id } },\n relations: ['partnerDomain']\n })\n const customerDomains: Domain[] = customers.map((customer: Partner) => customer.partnerDomain)\n return await bizplaceRepo.find({\n where: { domain: In(customerDomains.map((d: Domain) => d.id)) },\n relations: ['company', 'company.domain', 'domain']\n })\n}\n\nexport async function getSubdomainBizplace(subdomain: string, tx?: EntityManager): Promise<Bizplace> {\n const domainRepo = tx ? tx.getRepository(Domain) : getRepository(Domain)\n\n const domain: Domain = await domainRepo.findOne({\n where: { subdomain }\n })\n\n return await getRepository(Bizplace).findOne({ where: { domain: { id: domain.id } } })\n}\n\nexport async function getUserBizplaces(user: User, tx?: EntityManager): Promise<Bizplace[]> {\n const userRepo = tx ? tx.getRepository(User) : getRepository(User)\n let userBizplaces: Bizplace[] = []\n\n if (!user.domains?.length) {\n user = await userRepo.findOne({\n where: { id: user.id },\n relations: ['domains']\n })\n }\n\n const userDomains: Domain[] = user.domains\n if (userDomains.every((userDomain: Domain) => userDomain.extType !== 'company')) {\n userBizplaces.push(await getCompanyBizplace(userDomains[0], user, null, tx))\n }\n\n return userBizplaces.concat(\n await getRepository(Bizplace).find({ where: { domain: In(userDomains.map((d: Domain) => d.id)) } })\n )\n}\n\nexport async function getDomainUsers(bizplace: Bizplace, tx?: EntityManager): Promise<any[]> {\n const userDomainRepo = tx ? tx.getRepository('users_domains') : getRepository('users_domains')\n\n const users: any[] = await userDomainRepo\n .createQueryBuilder('ud')\n .select('ud.users_id', 'id')\n .distinct(true)\n .where(qb => {\n const subquery = qb\n .subQuery()\n .select('bizplace.domain_id')\n .from(Bizplace, 'bizplace')\n .where('bizplace.id = :customerBizplaceId', { customerBizplaceId: bizplace?.id })\n .getQuery()\n return 'ud.domains_id = ' + subquery\n })\n .getRawMany()\n\n return users\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/biz-base",
3
- "version": "9.0.0-beta.8",
3
+ "version": "9.0.2",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,7 +24,7 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create ./server/migrations/migration"
25
25
  },
26
26
  "dependencies": {
27
- "@things-factory/auth-base": "^9.0.0-beta.8"
27
+ "@things-factory/auth-base": "^9.0.2"
28
28
  },
29
- "gitHead": "2dd583833981e0615a1e64386971a0f80dd7b3a4"
29
+ "gitHead": "5cf452159e611eea93c23010706ecfc6543405ba"
30
30
  }