storemw-core-api 1.0.159 → 1.0.161

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.
@@ -1,23 +1,23 @@
1
1
  export type DefaultOmitFields = "createdatetime" | "createuserid" | "updatedatetime" | "updateuserid" | "isdelete" | "istrash" | "accountid";
2
2
  export declare const getDefaultCreateFields: (createUserId: number, accountId: number) => {
3
- createuserid: string | number;
3
+ createuserid: any;
4
4
  createdatetime: string;
5
- updateuserid: string | number;
5
+ updateuserid: any;
6
6
  updatedatetime: string;
7
7
  accountid: number;
8
8
  };
9
9
  export declare const getDefaultUpdateFields: (updateUserId: number) => {
10
- updateuserid: string | number;
10
+ updateuserid: any;
11
11
  updatedatetime: string;
12
12
  };
13
13
  export declare const getDefaultTrashFields: (updateUserId: number) => {
14
14
  istrash: boolean;
15
- updateuserid: string | number;
15
+ updateuserid: any;
16
16
  updatedatetime: string;
17
17
  };
18
18
  export declare const getDefaultRemoveFields: (updateUserId: number) => {
19
19
  isdelete: boolean;
20
- updateuserid: string | number;
20
+ updateuserid: any;
21
21
  updatedatetime: string;
22
22
  };
23
23
  export declare const getDefaultGetWhere: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.errorRecordNotFoundAfterRemoved = exports.errorRecordNotFoundAfterTrashed = exports.errorRecordNotFoundAfterUpdated = exports.errorRecordNotFoundAlreadyDeleted = exports.getDefaultRemoveWhere = exports.getDefaultTrashWhere = exports.getDefaultUpdateWhere = exports.getDefaultGetWhere = exports.getDefaultRemoveFields = exports.getDefaultTrashFields = exports.getDefaultUpdateFields = exports.getDefaultCreateFields = void 0;
4
4
  const utils_1 = require("../../utils");
5
5
  const forceToZeroIfEmpty = (val) => {
6
- return val === "" ? 0 : "";
6
+ return val === "" ? 0 : val;
7
7
  };
8
8
  // insert into create - data fields
9
9
  const getDefaultCreateFields = (createUserId, accountId) => {
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/lib/model_factory/default.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAK/C,MAAM,kBAAkB,GAAG,CAAC,GAAQ,EAAE,EAAE;IACpC,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B,CAAC,CAAA;AAED,mCAAmC;AAC5B,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,SAAiB,EAAE,EAAE;IAE9E,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,GAAE,CAAA;IAElD,OAAO;QACH,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;QAClC,SAAS,EAAE,SAAS;KACvB,CAAA;AACL,CAAC,CAAA;AAXY,QAAA,sBAAsB,0BAWlC;AAED,mCAAmC;AAC5B,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAE3D,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,GAAE,CAAA;IAElD,OAAO;QACH,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;KACrC,CAAA;AACL,CAAC,CAAA;AARY,QAAA,sBAAsB,0BAQlC;AAED,kCAAkC;AAC3B,MAAM,qBAAqB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAE1D,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,GAAE,CAAA;IAElD,OAAO;QACH,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;KACrC,CAAA;AACL,CAAC,CAAA;AATY,QAAA,qBAAqB,yBASjC;AAED,mCAAmC;AAC5B,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAE3D,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,GAAE,CAAA;IAElD,OAAO;QACH,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;KACrC,CAAA;AACL,CAAC,CAAA;AATY,QAAA,sBAAsB,0BASlC;AAED,yCAAyC;AAC5B,QAAA,kBAAkB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAErD,4CAA4C;AAC/B,QAAA,qBAAqB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAExE,2CAA2C;AAC9B,QAAA,oBAAoB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAEvE,4CAA4C;AAC/B,QAAA,qBAAqB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAE3D,QAAA,iCAAiC,GAAG,qCAAqC,CAAA;AACzE,QAAA,+BAA+B,GAAG,+BAA+B,CAAA;AACjE,QAAA,+BAA+B,GAAG,8BAA8B,CAAA;AAChE,QAAA,+BAA+B,GAAG,+BAA+B,CAAA","sourcesContent":["import { getCurrentDateTimeISO } from \"@/utils\"\n\nexport type DefaultOmitFields = \"createdatetime\" | \"createuserid\" |\n \"updatedatetime\" | \"updateuserid\" | \"isdelete\" | \"istrash\" | \"accountid\"\n\nconst forceToZeroIfEmpty = (val: any) => {\n return val === \"\" ? 0 : \"\";\n}\n\n// insert into create - data fields\nexport const getDefaultCreateFields = (createUserId: number, accountId: number) => {\n\n const currentDatetimeISO = getCurrentDateTimeISO()\n\n return {\n createuserid: forceToZeroIfEmpty(createUserId),\n createdatetime: currentDatetimeISO,\n updateuserid: forceToZeroIfEmpty(createUserId),\n updatedatetime: currentDatetimeISO,\n accountid: accountId\n }\n}\n\n// insert into update - data fields\nexport const getDefaultUpdateFields = (updateUserId: number) => {\n\n const currentDatetimeISO = getCurrentDateTimeISO()\n\n return {\n updateuserid: forceToZeroIfEmpty(updateUserId),\n updatedatetime: currentDatetimeISO,\n }\n}\n\n// insert into trash - data fields\nexport const getDefaultTrashFields = (updateUserId: number) => {\n\n const currentDatetimeISO = getCurrentDateTimeISO()\n\n return {\n istrash: true,\n updateuserid: forceToZeroIfEmpty(updateUserId),\n updatedatetime: currentDatetimeISO,\n }\n}\n\n// insert into remove - data fields\nexport const getDefaultRemoveFields = (updateUserId: number) => {\n\n const currentDatetimeISO = getCurrentDateTimeISO()\n\n return {\n isdelete: true,\n updateuserid: forceToZeroIfEmpty(updateUserId),\n updatedatetime: currentDatetimeISO,\n }\n}\n\n// insert into the get - where conditions\nexport const getDefaultGetWhere = { isdelete: false }\n\n// insert into the update - where conditions\nexport const getDefaultUpdateWhere = { isdelete: false, istrash: false }\n\n// insert into the trash - where conditions\nexport const getDefaultTrashWhere = { isdelete: false, istrash: false }\n\n// insert into the remove - where conditions\nexport const getDefaultRemoveWhere = { isdelete: false, istrash: false }\n\nexport const errorRecordNotFoundAlreadyDeleted = `Record not found or already deleted`\nexport const errorRecordNotFoundAfterUpdated = `Record not found after update`\nexport const errorRecordNotFoundAfterTrashed = `Record not found after trash`\nexport const errorRecordNotFoundAfterRemoved = `Record not found after remove`"]}
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/lib/model_factory/default.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAK/C,MAAM,kBAAkB,GAAG,CAAC,GAAQ,EAAE,EAAE;IACpC,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,CAAC,CAAA;AAED,mCAAmC;AAC5B,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,SAAiB,EAAE,EAAE;IAE9E,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,GAAE,CAAA;IAElD,OAAO;QACH,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;QAClC,SAAS,EAAE,SAAS;KACvB,CAAA;AACL,CAAC,CAAA;AAXY,QAAA,sBAAsB,0BAWlC;AAED,mCAAmC;AAC5B,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAE3D,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,GAAE,CAAA;IAElD,OAAO;QACH,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;KACrC,CAAA;AACL,CAAC,CAAA;AARY,QAAA,sBAAsB,0BAQlC;AAED,kCAAkC;AAC3B,MAAM,qBAAqB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAE1D,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,GAAE,CAAA;IAElD,OAAO;QACH,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;KACrC,CAAA;AACL,CAAC,CAAA;AATY,QAAA,qBAAqB,yBASjC;AAED,mCAAmC;AAC5B,MAAM,sBAAsB,GAAG,CAAC,YAAoB,EAAE,EAAE;IAE3D,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,GAAE,CAAA;IAElD,OAAO;QACH,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;QAC9C,cAAc,EAAE,kBAAkB;KACrC,CAAA;AACL,CAAC,CAAA;AATY,QAAA,sBAAsB,0BASlC;AAED,yCAAyC;AAC5B,QAAA,kBAAkB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;AAErD,4CAA4C;AAC/B,QAAA,qBAAqB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAExE,2CAA2C;AAC9B,QAAA,oBAAoB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAEvE,4CAA4C;AAC/B,QAAA,qBAAqB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAE3D,QAAA,iCAAiC,GAAG,qCAAqC,CAAA;AACzE,QAAA,+BAA+B,GAAG,+BAA+B,CAAA;AACjE,QAAA,+BAA+B,GAAG,8BAA8B,CAAA;AAChE,QAAA,+BAA+B,GAAG,+BAA+B,CAAA","sourcesContent":["import { getCurrentDateTimeISO } from \"@/utils\"\n\nexport type DefaultOmitFields = \"createdatetime\" | \"createuserid\" |\n \"updatedatetime\" | \"updateuserid\" | \"isdelete\" | \"istrash\" | \"accountid\"\n\nconst forceToZeroIfEmpty = (val: any) => {\n return val === \"\" ? 0 : val;\n}\n\n// insert into create - data fields\nexport const getDefaultCreateFields = (createUserId: number, accountId: number) => {\n\n const currentDatetimeISO = getCurrentDateTimeISO()\n\n return {\n createuserid: forceToZeroIfEmpty(createUserId),\n createdatetime: currentDatetimeISO,\n updateuserid: forceToZeroIfEmpty(createUserId),\n updatedatetime: currentDatetimeISO,\n accountid: accountId\n }\n}\n\n// insert into update - data fields\nexport const getDefaultUpdateFields = (updateUserId: number) => {\n\n const currentDatetimeISO = getCurrentDateTimeISO()\n\n return {\n updateuserid: forceToZeroIfEmpty(updateUserId),\n updatedatetime: currentDatetimeISO,\n }\n}\n\n// insert into trash - data fields\nexport const getDefaultTrashFields = (updateUserId: number) => {\n\n const currentDatetimeISO = getCurrentDateTimeISO()\n\n return {\n istrash: true,\n updateuserid: forceToZeroIfEmpty(updateUserId),\n updatedatetime: currentDatetimeISO,\n }\n}\n\n// insert into remove - data fields\nexport const getDefaultRemoveFields = (updateUserId: number) => {\n\n const currentDatetimeISO = getCurrentDateTimeISO()\n\n return {\n isdelete: true,\n updateuserid: forceToZeroIfEmpty(updateUserId),\n updatedatetime: currentDatetimeISO,\n }\n}\n\n// insert into the get - where conditions\nexport const getDefaultGetWhere = { isdelete: false }\n\n// insert into the update - where conditions\nexport const getDefaultUpdateWhere = { isdelete: false, istrash: false }\n\n// insert into the trash - where conditions\nexport const getDefaultTrashWhere = { isdelete: false, istrash: false }\n\n// insert into the remove - where conditions\nexport const getDefaultRemoveWhere = { isdelete: false, istrash: false }\n\nexport const errorRecordNotFoundAlreadyDeleted = `Record not found or already deleted`\nexport const errorRecordNotFoundAfterUpdated = `Record not found after update`\nexport const errorRecordNotFoundAfterTrashed = `Record not found after trash`\nexport const errorRecordNotFoundAfterRemoved = `Record not found after remove`"]}
@@ -33,12 +33,13 @@ export type AuthServiceProps = DefaultServiceProps & {
33
33
  export type AuthGetTokenProps = {
34
34
  authType: AuthType;
35
35
  accountCode?: string;
36
+ skipPassword?: boolean;
36
37
  data: {
37
38
  username: string;
38
39
  password: string;
39
40
  };
40
41
  };
41
42
  export declare const AuthService: (props: AuthServiceProps) => {
42
- getAuthToken: ({ authType, data, accountCode }: AuthGetTokenProps) => Promise<any>;
43
+ getAuthToken: ({ authType, data, accountCode, skipPassword }: AuthGetTokenProps) => Promise<any>;
43
44
  verifyAuthToken: (token: string, secret: string) => AuthJwtToken;
44
45
  };
@@ -61,7 +61,7 @@ const AuthService = (props) => {
61
61
  // }
62
62
  return Number(selectAccountId ?? 0);
63
63
  };
64
- const getAuthToken = async ({ authType, data, accountCode = "" }) => {
64
+ const getAuthToken = async ({ authType, data, accountCode = "", skipPassword = false }) => {
65
65
  let _rest = rest;
66
66
  let _accountId = 0;
67
67
  if (authType !== "operator") {
@@ -69,41 +69,6 @@ const AuthService = (props) => {
69
69
  }
70
70
  // _rest.accountId = accountId
71
71
  _rest.accountId = _accountId;
72
- // check the option pass in using account id or account code
73
- // if (authType !== "operator") {
74
- // _rest.accountId = accountId
75
- // // check if the accountId & accountCode is not empty
76
- // if (!accountId && !accountCode) throwError(`accountId or accountCode is required`)
77
- // let selectAccountId = `${accountId}`
78
- // // check account id is choose
79
- // if (selectAccountId === "0") {
80
- // const globalAccountService = AccountService({ ...rest, isOperator: true })
81
- // // use account code to find the account id
82
- // if (accountCode) {
83
- // let { data: responseAcc } = await globalAccountService.listAccounts({
84
- // limit: 1,
85
- // offset: 0,
86
- // sortfield: `${ModelAccountFields.account_id}`,
87
- // sortorder: `ASC`,
88
- // filters: [{
89
- // field: `${ModelAccountFields.account_code}`,
90
- // operator: `=`,
91
- // value: `${accountCode}`,
92
- // }],
93
- // datatypes: []
94
- // })
95
- // selectAccountId = responseAcc.length > 0 ? responseAcc[0].account_id : ""
96
- // let selectAccountStatus = responseAcc.length > 0 ? responseAcc[0].account_status : ""
97
- // if (selectAccountStatus !== true) throwError(`Inactive account: ${accountCode}`)
98
- // }
99
- // if (!selectAccountId) {
100
- // throwError(`Invalid account code: ${accountCode}`)
101
- // }
102
- // }
103
- // _rest.accountId = Number(selectAccountId)
104
- // } else {
105
- // _rest.accountId = accountId
106
- // }
107
72
  const userService = (0, services_1.UserService)({ userType: authType, ...rest });
108
73
  const accountService = (0, services_1.AccountService)({ ...rest, isOperator: true });
109
74
  const locationService = (0, services_1.LocationService)({ ...rest, locationType: "location" });
@@ -141,23 +106,23 @@ const AuthService = (props) => {
141
106
  throw new Error(`User is inactive: ${data.username}`);
142
107
  }
143
108
  let user = foundUser;
144
- // foundUser.length > 0 ? foundUser[0] : {}
145
109
  let decryptedPass;
146
- try {
147
- decryptedPass = await (0, utils_2.verifyPassword)(data.password, user.password);
148
- }
149
- catch (error) {
150
- throw error;
151
- }
152
- if (decryptedPass === false) {
153
- throw Error(`Invalid credential: ${data["username"]}`);
110
+ // only if the skip password is false (from the route/controller)
111
+ if (skipPassword === false) {
112
+ try {
113
+ decryptedPass = await (0, utils_2.verifyPassword)(data.password, user.password);
114
+ }
115
+ catch (error) {
116
+ throw error;
117
+ }
118
+ if (decryptedPass === false) {
119
+ throw Error(`Invalid credential: ${data["username"]}`);
120
+ }
154
121
  }
155
122
  // dont show out to result
156
123
  delete user.password;
157
124
  let account = {};
158
- // if (_rest.accountId && authType !== "operator") {
159
125
  account = await accountService.getAccount({ id: Number(_rest.accountId), datatypes: [] });
160
- // }
161
126
  const authToken = (0, utils_2.generateAuthToken)(user, account, secretKey);
162
127
  // get the locations for user
163
128
  const locationIds = user?.location_id ? user.location_id.split(", ") : [];
@@ -1 +1 @@
1
- {"version":3,"file":"AuthService.js","sourceRoot":"","sources":["../../../src/services/auth/AuthService.ts"],"names":[],"mappings":"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","sourcesContent":["// import { QueryList, QueryGet } from \"@/schema/common\";\nimport { buildFeatureCallbackProps, DefaultServiceProps, throwError } from \"@/utils\";\nimport {\n UserService,\n // UserGetProps,\n UserType,\n UserListProps,\n // userTypes,\n AccountService,\n LocationService,\n LocationListProps\n} from \"@/services\";\n\nimport jwt, { JwtPayload } from \"jsonwebtoken\";\n\nimport { generateAuthToken, verifyPassword, verifyAuthToken, hashPassword } from \"@/utils\"\nimport { ModelAccountFields, ModelUserFields, UserModel } from \"@/models\";\n\nimport { AuthTokenHook, FeatureAuthTokenSuccessAuthenticateProps } from \"@/features\"\n\nexport const authTypes = {\n operator: \"operator\",\n administrator: \"administrator\",\n worker: \"worker\",\n customer: \"customer\",\n member: \"member\",\n} as const\n\nexport type AuthType = typeof authTypes[keyof typeof authTypes]\n\nexport type AuthTokenResult = {\n token: string\n account: any\n user: any\n user_locations: any[]\n is_owner: boolean\n}\n\nexport type AuthJwtToken = JwtPayload & {\n user?: { id: number, user_id: number, user_type: AuthType };\n account?: { id: number, account_id: number };\n};\n\nexport type AuthServiceProps = DefaultServiceProps & {\n secretKey: string,\n authType: AuthType\n};\n\nexport type AuthGetTokenProps = {\n authType: AuthType,\n // accountId?: number,\n accountCode?: string,\n data:\n // get token\n {\n username: string,\n password: string\n }\n};\n\nexport const AuthService = (props: AuthServiceProps) => {\n\n const {\n secretKey,\n authType = \"administrator\",\n ...rest\n } = props\n\n // let hookSetup: FeatureAuthTokenSuccessAuthenticateProps | null = null\n\n const getUserInjectionFieldName = (authType: AuthType) => {\n\n if (authType === \"administrator\") return [\"administrator_injection_fields\"]\n if (authType === \"customer\") return [\"customer_injection_fields\"]\n if (authType === \"worker\") return [\"worker_injection_fields\"]\n\n return []\n }\n\n const validateAuthAccount = async (accountCode: string) => {\n\n if (accountCode === \"\") {\n return 0\n }\n\n // check if the accountId & accountCode is not empty\n // if (!accountId && !accountCode) throwError(`accountId or accountCode is required`)\n\n let selectAccountId = 0\n\n // check account id is choose \n // if (selectAccountId === 0) {\n\n const globalAccountService = AccountService({ ...rest, isOperator: true })\n\n // use account code to find the account id\n if (accountCode) {\n\n let { data: responseAcc } = await globalAccountService.listAccounts({\n limit: 1,\n offset: 0,\n sortfield: `${ModelAccountFields.account_id}`,\n sortorder: `ASC`,\n filters: [{\n field: `${ModelAccountFields.account_code}`,\n operator: `=`,\n value: `${accountCode}`,\n }],\n datatypes: []\n })\n\n selectAccountId = responseAcc.length > 0 ? responseAcc[0].account_id : \"\"\n let selectAccountStatus = responseAcc.length > 0 ? responseAcc[0].account_status : \"\"\n\n if (selectAccountStatus !== true) throwError(`Inactive account: ${accountCode}`)\n\n }\n\n if (!selectAccountId) {\n throwError(`Invalid account code: ${accountCode}`)\n }\n\n // }\n\n return Number(selectAccountId ?? 0)\n\n }\n\n const getAuthToken = async ({ authType, data, accountCode = \"\" }: AuthGetTokenProps) => {\n\n let _rest = rest\n let _accountId = 0\n\n if (authType !== \"operator\") {\n _accountId = await validateAuthAccount(accountCode)\n }\n\n // _rest.accountId = accountId\n _rest.accountId = _accountId\n\n // check the option pass in using account id or account code\n // if (authType !== \"operator\") {\n // _rest.accountId = accountId\n\n // // check if the accountId & accountCode is not empty\n // if (!accountId && !accountCode) throwError(`accountId or accountCode is required`)\n\n // let selectAccountId = `${accountId}`\n\n // // check account id is choose \n // if (selectAccountId === \"0\") {\n\n // const globalAccountService = AccountService({ ...rest, isOperator: true })\n\n // // use account code to find the account id\n // if (accountCode) {\n\n // let { data: responseAcc } = await globalAccountService.listAccounts({\n // limit: 1,\n // offset: 0,\n // sortfield: `${ModelAccountFields.account_id}`,\n // sortorder: `ASC`,\n // filters: [{\n // field: `${ModelAccountFields.account_code}`,\n // operator: `=`,\n // value: `${accountCode}`,\n // }],\n // datatypes: []\n // })\n\n // selectAccountId = responseAcc.length > 0 ? responseAcc[0].account_id : \"\"\n // let selectAccountStatus = responseAcc.length > 0 ? responseAcc[0].account_status : \"\"\n\n // if (selectAccountStatus !== true) throwError(`Inactive account: ${accountCode}`)\n\n // }\n\n // if (!selectAccountId) {\n // throwError(`Invalid account code: ${accountCode}`)\n // }\n\n // }\n\n // _rest.accountId = Number(selectAccountId)\n\n // } else {\n // _rest.accountId = accountId\n // }\n\n const userService = UserService({ userType: authType as UserType, ...rest })\n const accountService = AccountService({ ...rest, isOperator: true })\n const locationService = LocationService({ ...rest, locationType: \"location\" })\n\n let foundUser: any = {}\n\n // only for operator & administrator\n if (authType === \"operator\" || authType === \"administrator\") {\n\n // const operatorService = UserService({ ...rest })\n\n const _user = await userService.getUserByUsername({\n username: `${data[\"username\"]}`,\n includePassword: true,\n datatypes: getUserInjectionFieldName(authType) as any\n })\n\n foundUser = _user\n\n } else { // other user type\n\n let payload: UserListProps = {\n includePassword: true,\n limit: 1,\n offset: 0,\n sortfield: \"user_id\",\n sortorder: \"DESC\",\n filters: [\n { field: \"username\", operator: \"=\", value: `${data[\"username\"]}` },\n { field: \"user_type\", operator: \"=\", value: `${authType}` }\n ],\n datatypes: getUserInjectionFieldName(authType)\n }\n\n const { data: foundOtherUser } = await userService.listUsers(payload)\n\n foundUser = foundOtherUser.length > 0 ? foundOtherUser[0] : {}\n\n }\n\n if (!foundUser?.user_id) {\n throw Error(`Invalid username: ${data.username}`)\n }\n\n if (foundUser?.status !== true) {\n throw new Error(`User is inactive: ${data.username}`);\n }\n\n let user = foundUser\n // foundUser.length > 0 ? foundUser[0] : {}\n\n let decryptedPass: boolean\n\n try {\n decryptedPass = await verifyPassword(data.password, user.password)\n } catch (error) {\n throw error\n }\n\n if (decryptedPass === false) {\n throw Error(`Invalid credential: ${data[\"username\"]}`)\n }\n\n // dont show out to result\n delete user.password\n\n let account: any = {}\n\n // if (_rest.accountId && authType !== \"operator\") {\n account = await accountService.getAccount({ id: Number(_rest.accountId), datatypes: [] })\n // }\n\n const authToken = generateAuthToken(user, account, secretKey)\n\n // get the locations for user\n const locationIds = user?.location_id ? user.location_id.split(\", \") : []\n\n let locations: any[] = []\n\n if (locationIds.length > 0) {\n const listPayload: LocationListProps = {\n limit: 100,\n offset: 0,\n sortfield: \"location_id\",\n sortorder: \"ASC\",\n filters: [{\n field: \"location_id\",\n operator: \"where_in\",\n value: locationIds.map((i: any) => Number(i))\n }],\n datatypes: []\n }\n\n const { data } = await locationService.listLocations(listPayload)\n locations = data\n }\n\n const result: AuthTokenResult = {\n token: authToken,\n account,\n user,\n user_locations: locations,\n // parent_user_id: 0,\n // roles: [\n // {\n // id: 23,\n // role_name: \"123\"\n // }\n // ],\n // permissions: [],\n is_owner: Boolean(user?.is_owner),\n // owner_id: 0\n }\n\n let newResult: any\n\n // Call the consumer hook, if registered\n if (AuthTokenHook?.onSuccessAuthenticate) {\n\n const userType: UserType = user?.user_type ?? \"administrator\"\n\n newResult = await AuthTokenHook.onSuccessAuthenticate(buildFeatureCallbackProps({\n defaultServiceProps: {\n accountId: Number(account?.account_id),\n actionUserId: Number(user?.user_id),\n actionUserType: user?.user_type ?? \"\",\n authToken: authToken,\n isOperator: Boolean(userType === \"operator\"),\n accessKey: \"\",\n accessKeyId: \"\"\n },\n callbackParams: result\n }))\n }\n\n return newResult ? newResult : result\n };\n\n return {\n getAuthToken,\n verifyAuthToken,\n }\n\n}\n\n"]}
1
+ {"version":3,"file":"AuthService.js","sourceRoot":"","sources":["../../../src/services/auth/AuthService.ts"],"names":[],"mappings":"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","sourcesContent":["// import { QueryList, QueryGet } from \"@/schema/common\";\nimport { buildFeatureCallbackProps, DefaultServiceProps, throwError } from \"@/utils\";\nimport {\n UserService,\n // UserGetProps,\n UserType,\n UserListProps,\n // userTypes,\n AccountService,\n LocationService,\n LocationListProps\n} from \"@/services\";\n\nimport jwt, { JwtPayload } from \"jsonwebtoken\";\n\nimport { generateAuthToken, verifyPassword, verifyAuthToken, hashPassword } from \"@/utils\"\nimport { ModelAccountFields, ModelUserFields, UserModel } from \"@/models\";\n\nimport { AuthTokenHook, FeatureAuthTokenSuccessAuthenticateProps } from \"@/features\"\n\nexport const authTypes = {\n operator: \"operator\",\n administrator: \"administrator\",\n worker: \"worker\",\n customer: \"customer\",\n member: \"member\",\n} as const\n\nexport type AuthType = typeof authTypes[keyof typeof authTypes]\n\nexport type AuthTokenResult = {\n token: string\n account: any\n user: any\n user_locations: any[]\n is_owner: boolean\n}\n\nexport type AuthJwtToken = JwtPayload & {\n user?: { id: number, user_id: number, user_type: AuthType };\n account?: { id: number, account_id: number };\n};\n\nexport type AuthServiceProps = DefaultServiceProps & {\n secretKey: string,\n authType: AuthType\n};\n\nexport type AuthGetTokenProps = {\n authType: AuthType,\n // accountId?: number,\n accountCode?: string,\n skipPassword?: boolean\n data:\n // get token\n {\n username: string,\n password: string\n }\n};\n\nexport const AuthService = (props: AuthServiceProps) => {\n\n const {\n secretKey,\n authType = \"administrator\",\n ...rest\n } = props\n\n // let hookSetup: FeatureAuthTokenSuccessAuthenticateProps | null = null\n\n const getUserInjectionFieldName = (authType: AuthType) => {\n\n if (authType === \"administrator\") return [\"administrator_injection_fields\"]\n if (authType === \"customer\") return [\"customer_injection_fields\"]\n if (authType === \"worker\") return [\"worker_injection_fields\"]\n\n return []\n }\n\n const validateAuthAccount = async (accountCode: string) => {\n\n if (accountCode === \"\") {\n return 0\n }\n\n // check if the accountId & accountCode is not empty\n // if (!accountId && !accountCode) throwError(`accountId or accountCode is required`)\n\n let selectAccountId = 0\n\n // check account id is choose \n // if (selectAccountId === 0) {\n\n const globalAccountService = AccountService({ ...rest, isOperator: true })\n\n // use account code to find the account id\n if (accountCode) {\n\n let { data: responseAcc } = await globalAccountService.listAccounts({\n limit: 1,\n offset: 0,\n sortfield: `${ModelAccountFields.account_id}`,\n sortorder: `ASC`,\n filters: [{\n field: `${ModelAccountFields.account_code}`,\n operator: `=`,\n value: `${accountCode}`,\n }],\n datatypes: []\n })\n\n selectAccountId = responseAcc.length > 0 ? responseAcc[0].account_id : \"\"\n let selectAccountStatus = responseAcc.length > 0 ? responseAcc[0].account_status : \"\"\n\n if (selectAccountStatus !== true) throwError(`Inactive account: ${accountCode}`)\n\n }\n\n if (!selectAccountId) {\n throwError(`Invalid account code: ${accountCode}`)\n }\n\n // }\n\n return Number(selectAccountId ?? 0)\n\n }\n\n const getAuthToken = async ({ authType, data, accountCode = \"\", skipPassword = false }: AuthGetTokenProps) => {\n\n let _rest = rest\n let _accountId = 0\n\n if (authType !== \"operator\") {\n _accountId = await validateAuthAccount(accountCode)\n }\n\n // _rest.accountId = accountId\n _rest.accountId = _accountId\n\n const userService = UserService({ userType: authType as UserType, ...rest })\n const accountService = AccountService({ ...rest, isOperator: true })\n const locationService = LocationService({ ...rest, locationType: \"location\" })\n\n let foundUser: any = {}\n\n // only for operator & administrator\n if (authType === \"operator\" || authType === \"administrator\") {\n\n // const operatorService = UserService({ ...rest })\n\n const _user = await userService.getUserByUsername({\n username: `${data[\"username\"]}`,\n includePassword: true,\n datatypes: getUserInjectionFieldName(authType) as any\n })\n\n foundUser = _user\n\n } else { // other user type\n\n let payload: UserListProps = {\n includePassword: true,\n limit: 1,\n offset: 0,\n sortfield: \"user_id\",\n sortorder: \"DESC\",\n filters: [\n { field: \"username\", operator: \"=\", value: `${data[\"username\"]}` },\n { field: \"user_type\", operator: \"=\", value: `${authType}` }\n ],\n datatypes: getUserInjectionFieldName(authType)\n }\n\n const { data: foundOtherUser } = await userService.listUsers(payload)\n\n foundUser = foundOtherUser.length > 0 ? foundOtherUser[0] : {}\n\n }\n\n if (!foundUser?.user_id) {\n throw Error(`Invalid username: ${data.username}`)\n }\n\n if (foundUser?.status !== true) {\n throw new Error(`User is inactive: ${data.username}`);\n }\n\n let user = foundUser\n let decryptedPass: boolean\n\n // only if the skip password is false (from the route/controller)\n if (skipPassword === false) {\n try {\n decryptedPass = await verifyPassword(data.password, user.password)\n } catch (error) {\n throw error\n }\n\n if (decryptedPass === false) {\n throw Error(`Invalid credential: ${data[\"username\"]}`)\n }\n }\n\n // dont show out to result\n delete user.password\n\n let account: any = {}\n account = await accountService.getAccount({ id: Number(_rest.accountId), datatypes: [] })\n\n const authToken = generateAuthToken(user, account, secretKey)\n\n // get the locations for user\n const locationIds = user?.location_id ? user.location_id.split(\", \") : []\n\n let locations: any[] = []\n\n if (locationIds.length > 0) {\n const listPayload: LocationListProps = {\n limit: 100,\n offset: 0,\n sortfield: \"location_id\",\n sortorder: \"ASC\",\n filters: [{\n field: \"location_id\",\n operator: \"where_in\",\n value: locationIds.map((i: any) => Number(i))\n }],\n datatypes: []\n }\n\n const { data } = await locationService.listLocations(listPayload)\n locations = data\n }\n\n const result: AuthTokenResult = {\n token: authToken,\n account,\n user,\n user_locations: locations,\n // parent_user_id: 0,\n // roles: [\n // {\n // id: 23,\n // role_name: \"123\"\n // }\n // ],\n // permissions: [],\n is_owner: Boolean(user?.is_owner),\n // owner_id: 0\n }\n\n let newResult: any\n\n // Call the consumer hook, if registered\n if (AuthTokenHook?.onSuccessAuthenticate) {\n\n const userType: UserType = user?.user_type ?? \"administrator\"\n\n newResult = await AuthTokenHook.onSuccessAuthenticate(buildFeatureCallbackProps({\n defaultServiceProps: {\n accountId: Number(account?.account_id),\n actionUserId: Number(user?.user_id),\n actionUserType: user?.user_type ?? \"\",\n authToken: authToken,\n isOperator: Boolean(userType === \"operator\"),\n accessKey: \"\",\n accessKeyId: \"\"\n },\n callbackParams: result\n }))\n }\n\n return newResult ? newResult : result\n };\n\n return {\n getAuthToken,\n verifyAuthToken,\n }\n\n}\n\n"]}
@@ -136,9 +136,10 @@ const AdministratorService = (props) => {
136
136
  includePassword,
137
137
  limit: 1,
138
138
  offset: 0,
139
- filters: [{
140
- field: `username`, operator: "=", value: `${username}`
141
- }],
139
+ filters: [
140
+ { field: `username`, operator: "=", value: `${username}` },
141
+ { field: `user_type`, operator: "=", value: `administrator` },
142
+ ],
142
143
  sortfield: `${models_1.ModelUserFields.user_id}`,
143
144
  sortorder: "ASC",
144
145
  datatypes,
@@ -1 +1 @@
1
- {"version":3,"file":"AdministratorService.js","sourceRoot":"","sources":["../../../src/services/user/AdministratorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n AdministratorModel,\n ModelAdministratorFields,\n ModelGroupFields,\n ModelUserPropFields,\n ModelLocationFields\n} from \"@/models\";\n\nimport { InjectionFieldService, userParentSqlSelect } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nimport { ServiceFactory } from \"@/lib\";\n\nexport type UserType = \"administrator\"\n\nexport const administratorDataTypes = {\n location: \"location\",\n locationCount: \"location_count\",\n administratorInjectionFields: \"administrator_injection_fields\",\n parentUser: \"parent_user\"\n}\n\nexport type AdministratorDataType = keyof typeof administratorDataTypes;\n\nexport type AdministratorServiceProps = DefaultServiceProps & {};\n\nexport type AdministratorGetProps = {\n id: number,\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorGetByUsernameProps = {\n username: string,\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorListProps = QueryList & {\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorRemoveProps = {\n userIds: BigInt[]\n};\n\nexport type AdministratorCreateProps = {\n data:\n // administrator\n {\n administrator: {\n userId: number,\n isOwner: boolean\n }\n }\n}\n\nexport type AdministratorUpdateProps = {\n userId: number,\n data:\n // administrator\n {\n administrator: {\n // userId: number,\n }\n }\n}\n\nconst getCreatePayload = (data: AdministratorCreateProps[\"data\"]) => {\n\n if (\"administrator\" in data) {\n\n return {\n [`${ModelAdministratorFields.user_id}`]: data.administrator.userId,\n [`${ModelAdministratorFields.is_owner}`]: Boolean(data.administrator.isOwner),\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: AdministratorUpdateProps[\"data\"]) => {\n\n if (\"administrator\" in data) {\n\n return {\n // [`${ModelAdministratorFields.user_id}`]: data.administrator.userId,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`adm.${ModelAdministratorFields.administrator_id}`]: \"administrator_id\",\n [`adm.${ModelAdministratorFields.user_id}`]: \"user_id\",\n [`adm.${ModelAdministratorFields.is_owner}`]: \"is_owner\",\n}\n\nlet userSqlSelect = {\n [`usr.${ModelUserFields.login_username}`]: \"username\",\n [`usr.${ModelUserFields.user_type}`]: \"user_type\",\n [`usr.${ModelUserFields.firstname}`]: \"firstname\",\n [`usr.${ModelUserFields.lastname}`]: \"lastname\",\n [`CONCAT(usr.${ModelUserFields.contact_country_code}, usr.${ModelUserFields.contact_phone_number})`]: \"contact\",\n [`usr.${ModelUserFields.contact_country_code}`]: \"contact_country_code\",\n [`usr.${ModelUserFields.contact_phone_number}`]: \"contact_phone_number\",\n [`usr.${ModelUserFields.email}`]: \"email\",\n [`usr.${ModelUserFields.address}`]: \"address\",\n [`usr.${ModelUserFields.status}`]: \"status\",\n}\n\nlet defaultSqlSelect = {\n [`adm.${ModelAdministratorFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`adm.${ModelAdministratorFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`adm.${ModelAdministratorFields.isdelete}`]: \"isdelete\",\n [`adm.${ModelAdministratorFields.istrash}`]: \"istrash\",\n [`adm.${ModelAdministratorFields.accountid}`]: \"accountid\",\n}\n\n// let userStatusIsOwnerSqlSelect = {\n// [`COALESCE(usrsta_isowner.${ModelUserStatusFields.status}::int, 0)`]: \"is_owner\"\n// }\n\nlet userPropLocationSqlSelect = {\n // [`COALESCE(usrprop_location.${ModelUserPropFields.props_id}::int, 0)`]: \"location_id\",\n [`COALESCE(\n STRING_AGG(DISTINCT usrprop_location.${ModelUserPropFields.props_id}::text, ', '),\n ''\n )`]: \"location_id\",\n // [`COALESCE(location.${ModelLocationFields.location_name}::text, '')`]: \"location_name\",\n [`COALESCE(\n STRING_AGG(DISTINCT location.${ModelLocationFields.location_name}::text, ', '),\n ''\n )`]: \"location_name\",\n}\n\nlet groupOwnerSqlSelect = {\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_id}::text, ', '),\n ''\n )`]: \"access_group_id\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_label}::text, ', '),\n ''\n )`]: \"access_group_label\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_description}::text, ', '),\n ''\n )`]: \"access_group_description\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_type}::text, ', '),\n ''\n )`]: \"access_group_type\"\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelGroupFields.group_label}', grp.group_label,\n // '${ModelGroupFields.group_id}', grp.group_id,\n // '${ModelGroupFields.group_type}', grp.group_type\n // )\n // ) FILTER (WHERE grp.group_id IS NOT NULL AND grp.isdelete = false AND grp.istrash = false), \n // '[]'\n // )`]: \"grp\"\n}\n\nexport const AdministratorService = (props: AdministratorServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const administratorModel = AdministratorModel({ ...rest })\n\n const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n const createAdministrator = async ({ data }: AdministratorCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create administrator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await administratorModel.create({ data: _data })\n\n return response\n }\n\n const updateAdministrator = async ({ userId, data }: AdministratorUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update administrator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await administratorModel.update({ where: { [`${ModelAdministratorFields.user_id}`]: userId }, data: _data })\n\n return response\n }\n\n const getAdministrator = async ({ id, datatypes = [], includePassword = false, skipFilterAccountId = false }: AdministratorGetProps) => {\n\n let { data } = await listAdministrators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{ field: \"user_id\", operator: \"=\", value: id }],\n sortfield: \"user_id\",\n sortorder: \"ASC\",\n datatypes,\n skipFilterAccountId\n })\n\n return data[0] ?? null;\n\n };\n\n const getAdministratorByUsername = async ({ username = \"\", includePassword = false, datatypes = [], skipFilterAccountId = false }: AdministratorGetByUsernameProps) => {\n\n let { data } = await listAdministrators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{\n field: `username`, operator: \"=\", value: `${username}`\n }],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n datatypes,\n skipFilterAccountId\n })\n\n return data[0] ?? null;\n\n };\n\n const listAdministrators = async ({\n includePassword = false,\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = [],\n skipFilterAccountId = false\n }: AdministratorListProps) => {\n\n let data = []\n\n if (includePassword === true) {\n userSqlSelect = {\n ...userSqlSelect,\n [`usr.${ModelUserFields.login_password}`]: \"password\",\n }\n } else {\n delete userSqlSelect[`usr.${ModelUserFields.login_password}`];\n }\n\n let sqlSelect = [\n `COUNT(*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, userSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n // buildSqlSelect(``, userStatusIsOwnerSqlSelect),\n buildSqlSelect(``, userPropLocationSqlSelect),\n buildSqlSelect(``, groupOwnerSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"adm\", \"users\", \"usr\", [\"adm.user_id = usr.user_id\", \"usr.isdelete = false\", \"usr.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"users\", \"creator\", [\"adm.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"users\", \"updater\", [\"adm.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"adm\", \"user_status\", \"usrsta_isowner\", [\"adm.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"user_props\", \"usrprop_location\", [\"adm.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"group_owners\", \"grpown\", [\"adm.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(userSqlSelect),\n // ...Object.keys(userStatusIsOwnerSqlSelect),\n // ...Object.keys(userPropLocationSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...userSqlSelect,\n // ...userStatusIsOwnerSqlSelect,\n ...userPropLocationSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(administratorDataTypes.administratorInjectionFields)) {\n\n let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"administrator\")\n\n const administratorInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n filterColumns = { ...filterColumns, ...administratorInjectionFieldSqlSelect }\n\n sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, administratorInjectionFieldSqlSelect)] : [])]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"adm\", \"user_injection_fields\", \"uif\", [\"adm.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'administrator'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(administratorInjectionFieldSqlSelect)]\n }\n\n if (datatypes.includes(administratorDataTypes.location)) {\n\n let locationSqlSelect = {\n [`COALESCE(\n JSON_AGG(\n DISTINCT JSONB_BUILD_OBJECT(\n '${ModelLocationFields.location_id}', location.location_id,\n '${ModelLocationFields.location_code}', location.location_code,\n '${ModelLocationFields.location_name}', location.location_name,\n '${ModelLocationFields.location_type}', location.location_type,\n '${ModelLocationFields.address_1}', location.address_1,\n '${ModelLocationFields.address_2}', location.address_2,\n '${ModelLocationFields.area_id}', location.area_id,\n '${ModelLocationFields.country_id}', location.country_id,\n '${ModelLocationFields.state_id}', location.state_id,\n '${ModelLocationFields.postcode}', location.postcode,\n '${ModelLocationFields.is_default}', location.is_default,\n '${ModelLocationFields.person_contact}', location.person_contact,\n '${ModelLocationFields.person_name}', location.person_contact,\n '${ModelLocationFields.person_email}', location.person_email,\n '${ModelLocationFields.isdelete}', location.isdelete,\n '${ModelLocationFields.istrash}', location.istrash\n )\n ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n '[]'\n )`]: \"locations\"\n }\n\n filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"adm.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n }\n\n if (datatypes.includes(administratorDataTypes.locationCount)) {\n\n let locationCountSqlSelect = {\n [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n }\n\n filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"adm.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n }\n\n if (datatypes.includes(administratorDataTypes.parentUser)) {\n\n filterColumns = { ...filterColumns, ...userParentSqlSelect }\n\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"wrk\", \"users\", \"parentuser\", [\"usr.parent_user_id = parentuser.user_id\", \"parentuser.isdelete = false\", \"parentuser.istrash = false\"])]\n sqlSelect = [...sqlSelect, buildSqlSelect(``, userParentSqlSelect)]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(userParentSqlSelect)]\n\n }\n\n // if (datatypes.includes(customerDataTypes.branchUserCount)) {\n\n // let branchUserCountSqlSelect = {\n // [`COUNT(DISTINCT brnusrcount.${ModelBranchUserFields.branch_user_id})::INT`]: \"branch_user_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...branchUserCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, branchUserCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branch_users\", \"brnusrcount\", [\"adm.user_id = brnusrcount.user_id\", \"brnusrcount.isdelete = false\", \"brnusrcount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `adm.isdelete = false`,\n `adm.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"administrators\",\n mainAlias: \"adm\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId\n })\n\n data = await administratorModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeAdministrators = async ({ userIds }: AdministratorRemoveProps) => {\n\n if (!userIds.length) throwError('userIds is required');\n\n const response = await administratorModel.remove({\n where: {\n [`${ModelAdministratorFields.user_id}`]: {\n in: userIds\n },\n [`${ModelAdministratorFields.is_owner}`]: false // cannot default is_owner account\n }\n });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(administratorDataTypes);\n }\n\n // return {\n // createAdministrator,\n // updateAdministrator,\n // getAdministrator,\n // listAdministrators,\n // removeAdministrators,\n // getDataTypes\n // }\n\n const methodConfigs = {\n getAdministrator: { fn: getAdministrator, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"get administrator\" },\n getAdministratorByUsername: { fn: getAdministratorByUsername, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"get administrator by username\" },\n listAdministrators: { fn: listAdministrators, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"list administrators\" },\n createAdministrator: { fn: createAdministrator, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"create administrator\" },\n updateAdministrator: { fn: updateAdministrator, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"update administrator\" },\n removeAdministrators: { fn: removeAdministrators, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"remove administrators\" },\n getDataTypes: { fn: getDataTypes, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"get administrator datatypes\" },\n };\n\n return ServiceFactory(\"AdministratorService\", rest, methodConfigs);\n\n}\n\n"]}
1
+ {"version":3,"file":"AdministratorService.js","sourceRoot":"","sources":["../../../src/services/user/AdministratorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n AdministratorModel,\n ModelAdministratorFields,\n ModelGroupFields,\n ModelUserPropFields,\n ModelLocationFields\n} from \"@/models\";\n\nimport { InjectionFieldService, userParentSqlSelect } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nimport { ServiceFactory } from \"@/lib\";\n\nexport type UserType = \"administrator\"\n\nexport const administratorDataTypes = {\n location: \"location\",\n locationCount: \"location_count\",\n administratorInjectionFields: \"administrator_injection_fields\",\n parentUser: \"parent_user\"\n}\n\nexport type AdministratorDataType = keyof typeof administratorDataTypes;\n\nexport type AdministratorServiceProps = DefaultServiceProps & {};\n\nexport type AdministratorGetProps = {\n id: number,\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorGetByUsernameProps = {\n username: string,\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorListProps = QueryList & {\n includePassword?: boolean\n datatypes: AdministratorDataType[]\n skipFilterAccountId?: boolean\n};\n\nexport type AdministratorRemoveProps = {\n userIds: BigInt[]\n};\n\nexport type AdministratorCreateProps = {\n data:\n // administrator\n {\n administrator: {\n userId: number,\n isOwner: boolean\n }\n }\n}\n\nexport type AdministratorUpdateProps = {\n userId: number,\n data:\n // administrator\n {\n administrator: {\n // userId: number,\n }\n }\n}\n\nconst getCreatePayload = (data: AdministratorCreateProps[\"data\"]) => {\n\n if (\"administrator\" in data) {\n\n return {\n [`${ModelAdministratorFields.user_id}`]: data.administrator.userId,\n [`${ModelAdministratorFields.is_owner}`]: Boolean(data.administrator.isOwner),\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: AdministratorUpdateProps[\"data\"]) => {\n\n if (\"administrator\" in data) {\n\n return {\n // [`${ModelAdministratorFields.user_id}`]: data.administrator.userId,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`adm.${ModelAdministratorFields.administrator_id}`]: \"administrator_id\",\n [`adm.${ModelAdministratorFields.user_id}`]: \"user_id\",\n [`adm.${ModelAdministratorFields.is_owner}`]: \"is_owner\",\n}\n\nlet userSqlSelect = {\n [`usr.${ModelUserFields.login_username}`]: \"username\",\n [`usr.${ModelUserFields.user_type}`]: \"user_type\",\n [`usr.${ModelUserFields.firstname}`]: \"firstname\",\n [`usr.${ModelUserFields.lastname}`]: \"lastname\",\n [`CONCAT(usr.${ModelUserFields.contact_country_code}, usr.${ModelUserFields.contact_phone_number})`]: \"contact\",\n [`usr.${ModelUserFields.contact_country_code}`]: \"contact_country_code\",\n [`usr.${ModelUserFields.contact_phone_number}`]: \"contact_phone_number\",\n [`usr.${ModelUserFields.email}`]: \"email\",\n [`usr.${ModelUserFields.address}`]: \"address\",\n [`usr.${ModelUserFields.status}`]: \"status\",\n}\n\nlet defaultSqlSelect = {\n [`adm.${ModelAdministratorFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`adm.${ModelAdministratorFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`adm.${ModelAdministratorFields.isdelete}`]: \"isdelete\",\n [`adm.${ModelAdministratorFields.istrash}`]: \"istrash\",\n [`adm.${ModelAdministratorFields.accountid}`]: \"accountid\",\n}\n\n// let userStatusIsOwnerSqlSelect = {\n// [`COALESCE(usrsta_isowner.${ModelUserStatusFields.status}::int, 0)`]: \"is_owner\"\n// }\n\nlet userPropLocationSqlSelect = {\n // [`COALESCE(usrprop_location.${ModelUserPropFields.props_id}::int, 0)`]: \"location_id\",\n [`COALESCE(\n STRING_AGG(DISTINCT usrprop_location.${ModelUserPropFields.props_id}::text, ', '),\n ''\n )`]: \"location_id\",\n // [`COALESCE(location.${ModelLocationFields.location_name}::text, '')`]: \"location_name\",\n [`COALESCE(\n STRING_AGG(DISTINCT location.${ModelLocationFields.location_name}::text, ', '),\n ''\n )`]: \"location_name\",\n}\n\nlet groupOwnerSqlSelect = {\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_id}::text, ', '),\n ''\n )`]: \"access_group_id\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_label}::text, ', '),\n ''\n )`]: \"access_group_label\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_description}::text, ', '),\n ''\n )`]: \"access_group_description\",\n [`COALESCE(\n STRING_AGG(DISTINCT grp.${ModelGroupFields.group_type}::text, ', '),\n ''\n )`]: \"access_group_type\"\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelGroupFields.group_label}', grp.group_label,\n // '${ModelGroupFields.group_id}', grp.group_id,\n // '${ModelGroupFields.group_type}', grp.group_type\n // )\n // ) FILTER (WHERE grp.group_id IS NOT NULL AND grp.isdelete = false AND grp.istrash = false), \n // '[]'\n // )`]: \"grp\"\n}\n\nexport const AdministratorService = (props: AdministratorServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const administratorModel = AdministratorModel({ ...rest })\n\n const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n const createAdministrator = async ({ data }: AdministratorCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create administrator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await administratorModel.create({ data: _data })\n\n return response\n }\n\n const updateAdministrator = async ({ userId, data }: AdministratorUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update administrator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await administratorModel.update({ where: { [`${ModelAdministratorFields.user_id}`]: userId }, data: _data })\n\n return response\n }\n\n const getAdministrator = async ({ id, datatypes = [], includePassword = false, skipFilterAccountId = false }: AdministratorGetProps) => {\n\n let { data } = await listAdministrators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{ field: \"user_id\", operator: \"=\", value: id }],\n sortfield: \"user_id\",\n sortorder: \"ASC\",\n datatypes,\n skipFilterAccountId\n })\n\n return data[0] ?? null;\n\n };\n\n const getAdministratorByUsername = async ({ username = \"\", includePassword = false, datatypes = [], skipFilterAccountId = false }: AdministratorGetByUsernameProps) => {\n\n let { data } = await listAdministrators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [\n { field: `username`, operator: \"=\", value: `${username}` },\n { field: `user_type`, operator: \"=\", value: `administrator` },\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n datatypes,\n skipFilterAccountId\n })\n\n return data[0] ?? null;\n\n };\n\n const listAdministrators = async ({\n includePassword = false,\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = [],\n skipFilterAccountId = false\n }: AdministratorListProps) => {\n\n let data = []\n\n if (includePassword === true) {\n userSqlSelect = {\n ...userSqlSelect,\n [`usr.${ModelUserFields.login_password}`]: \"password\",\n }\n } else {\n delete userSqlSelect[`usr.${ModelUserFields.login_password}`];\n }\n\n let sqlSelect = [\n `COUNT(*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, userSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n // buildSqlSelect(``, userStatusIsOwnerSqlSelect),\n buildSqlSelect(``, userPropLocationSqlSelect),\n buildSqlSelect(``, groupOwnerSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"adm\", \"users\", \"usr\", [\"adm.user_id = usr.user_id\", \"usr.isdelete = false\", \"usr.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"users\", \"creator\", [\"adm.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"users\", \"updater\", [\"adm.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"adm\", \"user_status\", \"usrsta_isowner\", [\"adm.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"user_props\", \"usrprop_location\", [\"adm.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"group_owners\", \"grpown\", [\"adm.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n buildSqlRelation(\"left\", \"adm\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(userSqlSelect),\n // ...Object.keys(userStatusIsOwnerSqlSelect),\n // ...Object.keys(userPropLocationSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...userSqlSelect,\n // ...userStatusIsOwnerSqlSelect,\n ...userPropLocationSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(administratorDataTypes.administratorInjectionFields)) {\n\n let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"administrator\")\n\n const administratorInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n filterColumns = { ...filterColumns, ...administratorInjectionFieldSqlSelect }\n\n sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, administratorInjectionFieldSqlSelect)] : [])]\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"adm\", \"user_injection_fields\", \"uif\", [\"adm.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'administrator'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(administratorInjectionFieldSqlSelect)]\n }\n\n if (datatypes.includes(administratorDataTypes.location)) {\n\n let locationSqlSelect = {\n [`COALESCE(\n JSON_AGG(\n DISTINCT JSONB_BUILD_OBJECT(\n '${ModelLocationFields.location_id}', location.location_id,\n '${ModelLocationFields.location_code}', location.location_code,\n '${ModelLocationFields.location_name}', location.location_name,\n '${ModelLocationFields.location_type}', location.location_type,\n '${ModelLocationFields.address_1}', location.address_1,\n '${ModelLocationFields.address_2}', location.address_2,\n '${ModelLocationFields.area_id}', location.area_id,\n '${ModelLocationFields.country_id}', location.country_id,\n '${ModelLocationFields.state_id}', location.state_id,\n '${ModelLocationFields.postcode}', location.postcode,\n '${ModelLocationFields.is_default}', location.is_default,\n '${ModelLocationFields.person_contact}', location.person_contact,\n '${ModelLocationFields.person_name}', location.person_contact,\n '${ModelLocationFields.person_email}', location.person_email,\n '${ModelLocationFields.isdelete}', location.isdelete,\n '${ModelLocationFields.istrash}', location.istrash\n )\n ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n '[]'\n )`]: \"locations\"\n }\n\n filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"adm.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n }\n\n if (datatypes.includes(administratorDataTypes.locationCount)) {\n\n let locationCountSqlSelect = {\n [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n }\n\n filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"adm.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n }\n\n if (datatypes.includes(administratorDataTypes.parentUser)) {\n\n filterColumns = { ...filterColumns, ...userParentSqlSelect }\n\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"wrk\", \"users\", \"parentuser\", [\"usr.parent_user_id = parentuser.user_id\", \"parentuser.isdelete = false\", \"parentuser.istrash = false\"])]\n sqlSelect = [...sqlSelect, buildSqlSelect(``, userParentSqlSelect)]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(userParentSqlSelect)]\n\n }\n\n // if (datatypes.includes(customerDataTypes.branchUserCount)) {\n\n // let branchUserCountSqlSelect = {\n // [`COUNT(DISTINCT brnusrcount.${ModelBranchUserFields.branch_user_id})::INT`]: \"branch_user_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...branchUserCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, branchUserCountSqlSelect)]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branch_users\", \"brnusrcount\", [\"adm.user_id = brnusrcount.user_id\", \"brnusrcount.isdelete = false\", \"brnusrcount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `adm.isdelete = false`,\n `adm.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"administrators\",\n mainAlias: \"adm\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId\n })\n\n data = await administratorModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeAdministrators = async ({ userIds }: AdministratorRemoveProps) => {\n\n if (!userIds.length) throwError('userIds is required');\n\n const response = await administratorModel.remove({\n where: {\n [`${ModelAdministratorFields.user_id}`]: {\n in: userIds\n },\n [`${ModelAdministratorFields.is_owner}`]: false // cannot default is_owner account\n }\n });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(administratorDataTypes);\n }\n\n // return {\n // createAdministrator,\n // updateAdministrator,\n // getAdministrator,\n // listAdministrators,\n // removeAdministrators,\n // getDataTypes\n // }\n\n const methodConfigs = {\n getAdministrator: { fn: getAdministrator, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"get administrator\" },\n getAdministratorByUsername: { fn: getAdministratorByUsername, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"get administrator by username\" },\n listAdministrators: { fn: listAdministrators, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"list administrators\" },\n createAdministrator: { fn: createAdministrator, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"create administrator\" },\n updateAdministrator: { fn: updateAdministrator, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"update administrator\" },\n removeAdministrators: { fn: removeAdministrators, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"remove administrators\" },\n getDataTypes: { fn: getDataTypes, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"get administrator datatypes\" },\n };\n\n return ServiceFactory(\"AdministratorService\", rest, methodConfigs);\n\n}\n\n"]}
@@ -133,9 +133,10 @@ const OperatorService = (props) => {
133
133
  includePassword,
134
134
  limit: 1,
135
135
  offset: 0,
136
- filters: [{
137
- field: `username`, operator: "=", value: `${username}`
138
- }],
136
+ filters: [
137
+ { field: `username`, operator: "=", value: `${username}` },
138
+ { field: `user_type`, operator: "=", value: `operator` },
139
+ ],
139
140
  sortfield: `${models_1.ModelUserFields.user_id}`,
140
141
  sortorder: "ASC",
141
142
  datatypes
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorService.js","sourceRoot":"","sources":["../../../src/services/user/OperatorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n OperatorModel,\n ModelOperatorFields,\n} from \"@/models\";\n\nimport { userParentSqlSelect } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nimport { ServiceFactory } from \"@/lib\";\n\nexport type UserType = \"operator\"\n\nexport const operatorDataTypes = {\n // location: \"location\",\n // locationCount: \"location_count\",\n // administratorInjectionFields: \"administrator_injection_fields\",\n parentUser: \"parent_user\"\n}\n\nexport type OperatorDataType = keyof typeof operatorDataTypes;\n\nexport type OperatorServiceProps = DefaultServiceProps & {};\n\nexport type OperatorGetProps = {\n id: number,\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorGetByUsernameProps = {\n username: string,\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorListProps = QueryList & {\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorRemoveProps = {\n userIds: BigInt[]\n};\n\nexport type OperatorCreateProps = {\n data:\n // operator\n {\n operator: {\n userId: number,\n }\n }\n}\n\nexport type OperatorUpdateProps = {\n userId: number,\n data:\n // operator\n {\n operator: {\n // userId: number,\n }\n }\n}\n\nconst getCreatePayload = (data: OperatorCreateProps[\"data\"]) => {\n\n if (\"operator\" in data) {\n\n return {\n [`${ModelOperatorFields.user_id}`]: data.operator.userId\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: OperatorUpdateProps[\"data\"]) => {\n\n if (\"operator\" in data) {\n\n return {\n // [`${ModelOperatorFields.user_id}`]: data.operator.userId,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`oper.${ModelOperatorFields.operator_id}`]: \"operator_id\",\n [`oper.${ModelOperatorFields.user_id}`]: \"user_id\",\n}\n\nlet userSqlSelect = {\n [`usr.${ModelUserFields.login_username}`]: \"username\",\n [`usr.${ModelUserFields.user_type}`]: \"user_type\",\n [`usr.${ModelUserFields.firstname}`]: \"firstname\",\n [`usr.${ModelUserFields.lastname}`]: \"lastname\",\n [`CONCAT(usr.${ModelUserFields.contact_country_code}, usr.${ModelUserFields.contact_phone_number})`]: \"contact\",\n [`usr.${ModelUserFields.contact_country_code}`]: \"contact_country_code\",\n [`usr.${ModelUserFields.contact_phone_number}`]: \"contact_phone_number\",\n [`usr.${ModelUserFields.email}`]: \"email\",\n [`usr.${ModelUserFields.address}`]: \"address\",\n [`usr.${ModelUserFields.status}`]: \"status\",\n}\n\nlet defaultSqlSelect = {\n [`oper.${ModelOperatorFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`oper.${ModelOperatorFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`oper.${ModelOperatorFields.isdelete}`]: \"isdelete\",\n [`oper.${ModelOperatorFields.istrash}`]: \"istrash\",\n [`oper.${ModelOperatorFields.accountid}`]: \"accountid\",\n}\n\n// let userStatusIsOwnerSqlSelect = {\n// [`COALESCE(usrsta_isowner.${ModelUserStatusFields.status}::int, 0)`]: \"is_owner\"\n// }\n\n// let userPropLocationSqlSelect = {\n// // [`COALESCE(usrprop_location.${ModelUserPropFields.props_id}::int, 0)`]: \"location_id\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT usrprop_location.${ModelUserPropFields.props_id}::text, ', '),\n// ''\n// )`]: \"location_id\",\n// // [`COALESCE(location.${ModelLocationFields.location_name}::text, '')`]: \"location_name\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT location.${ModelLocationFields.location_name}::text, ', '),\n// ''\n// )`]: \"location_name\",\n// }\n\n// let groupOwnerSqlSelect = {\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_id}::text, ', '),\n// ''\n// )`]: \"access_group_id\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_label}::text, ', '),\n// ''\n// )`]: \"access_group_label\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_description}::text, ', '),\n// ''\n// )`]: \"access_group_description\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_type}::text, ', '),\n// ''\n// )`]: \"access_group_type\"\n// // [`COALESCE(\n// // JSON_AGG(\n// // DISTINCT JSONB_BUILD_OBJECT(\n// // '${ModelGroupFields.group_label}', grp.group_label,\n// // '${ModelGroupFields.group_id}', grp.group_id,\n// // '${ModelGroupFields.group_type}', grp.group_type\n// // )\n// // ) FILTER (WHERE grp.group_id IS NOT NULL AND grp.isdelete = false AND grp.istrash = false), \n// // '[]'\n// // )`]: \"grp\"\n// }\n\nexport const OperatorService = (props: OperatorServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const operatorModel = OperatorModel({ ...rest })\n\n // const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n const createOperator = async ({ data }: OperatorCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create operator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await operatorModel.create({ data: _data })\n\n return response\n }\n\n const updateOperator = async ({ userId, data }: OperatorUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update operator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await operatorModel.update({ where: { [`${ModelOperatorFields.user_id}`]: userId }, data: _data })\n\n return response\n }\n\n const getOperator = async ({ id, datatypes = [], includePassword = false }: OperatorGetProps) => {\n\n let { data } = await listOperators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelOperatorFields.user_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelOperatorFields.user_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const getOperatorByUsername = async ({ username = \"\", includePassword = false, datatypes = [] }: OperatorGetByUsernameProps) => {\n\n let { data } = await listOperators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{\n field: `username`, operator: \"=\", value: `${username}`\n }],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listOperators = async ({\n includePassword = false,\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: OperatorListProps) => {\n\n let data = []\n\n if (includePassword === true) {\n userSqlSelect = {\n ...userSqlSelect,\n [`usr.${ModelUserFields.login_password}`]: \"password\",\n }\n } else {\n delete userSqlSelect[`usr.${ModelUserFields.login_password}`];\n }\n\n let sqlSelect = [\n `COUNT(*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, userSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n // buildSqlSelect(``, userStatusIsOwnerSqlSelect),\n // buildSqlSelect(``, userPropLocationSqlSelect),\n // buildSqlSelect(``, groupOwnerSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"oper\", \"users\", \"usr\", [\"oper.user_id = usr.user_id\", \"usr.isdelete = false\", \"usr.istrash = false\"]),\n buildSqlRelation(\"left\", \"oper\", \"users\", \"creator\", [\"oper.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"oper\", \"users\", \"updater\", [\"oper.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"user_status\", \"usrsta_isowner\", [\"oper.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"user_props\", \"usrprop_location\", [\"oper.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"group_owners\", \"grpown\", [\"oper.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(userSqlSelect),\n // ...Object.keys(userStatusIsOwnerSqlSelect),\n // ...Object.keys(userPropLocationSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...userSqlSelect,\n // ...userStatusIsOwnerSqlSelect,\n // ...userPropLocationSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(operatorDataTypes.parentUser)) {\n\n filterColumns = { ...filterColumns, ...userParentSqlSelect }\n\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"wrk\", \"users\", \"parentuser\", [\"usr.parent_user_id = parentuser.user_id\", \"parentuser.isdelete = false\", \"parentuser.istrash = false\"])]\n sqlSelect = [...sqlSelect, buildSqlSelect(``, userParentSqlSelect)]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(userParentSqlSelect)]\n\n }\n\n // if (datatypes.includes(operatorDataTypes.administratorInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"administrator\")\n\n // const administratorInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...administratorInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, administratorInjectionFieldSqlSelect)] : [])]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"adm\", \"user_injection_fields\", \"uif\", [\"oper.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'administrator'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n // sqlGroupBy = [...sqlGroupBy, ...Object.keys(administratorInjectionFieldSqlSelect)]\n // }\n\n // if (datatypes.includes(operatorDataTypes.location)) {\n\n // let locationSqlSelect = {\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelLocationFields.location_id}', location.location_id,\n // '${ModelLocationFields.location_code}', location.location_code,\n // '${ModelLocationFields.location_name}', location.location_name,\n // '${ModelLocationFields.location_type}', location.location_type,\n // '${ModelLocationFields.address_1}', location.address_1,\n // '${ModelLocationFields.address_2}', location.address_2,\n // '${ModelLocationFields.area_id}', location.area_id,\n // '${ModelLocationFields.country_id}', location.country_id,\n // '${ModelLocationFields.state_id}', location.state_id,\n // '${ModelLocationFields.postcode}', location.postcode,\n // '${ModelLocationFields.is_default}', location.is_default,\n // '${ModelLocationFields.person_contact}', location.person_contact,\n // '${ModelLocationFields.person_name}', location.person_contact,\n // '${ModelLocationFields.person_email}', location.person_email,\n // '${ModelLocationFields.isdelete}', location.isdelete,\n // '${ModelLocationFields.istrash}', location.istrash\n // )\n // ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n // '[]'\n // )`]: \"locations\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"oper.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n // }\n\n // if (datatypes.includes(operatorDataTypes.locationCount)) {\n\n // let locationCountSqlSelect = {\n // [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"oper.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `oper.isdelete = false`,\n `oper.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"operators\",\n mainAlias: \"oper\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId: true\n })\n\n data = await operatorModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeOperators = async ({ userIds }: OperatorRemoveProps) => {\n\n if (!userIds.length) throwError('userIds is required');\n\n const response = await operatorModel.remove({ where: { [`${ModelOperatorFields.user_id}`]: { in: userIds } } });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(operatorDataTypes);\n }\n\n // return {\n // createOperator,\n // updateOperator,\n // getOperator,\n // listOperators,\n // removeOperators,\n // getDataTypes\n // }\n\n const methodConfigs = {\n getOperator: { fn: getOperator, allowUserTypes: [\"operator\"] as const, actionName: \"get operator\" },\n getOperatorByUsername: { fn: getOperatorByUsername, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"get operator by username\" },\n listOperators: { fn: listOperators, allowUserTypes: [\"operator\"] as const, actionName: \"list operators\" },\n createOperator: { fn: createOperator, allowUserTypes: [\"operator\"] as const, actionName: \"create operator\" },\n updateOperator: { fn: updateOperator, allowUserTypes: [\"operator\"] as const, actionName: \"update operator\" },\n removeOperators: { fn: removeOperators, allowUserTypes: [\"operator\"] as const, actionName: \"remove operators\" },\n getDataTypes: { fn: getDataTypes, allowUserTypes: [\"operator\"] as const, actionName: \"get operator datatypes\" },\n };\n\n return ServiceFactory(\"OperatorService\", rest, methodConfigs);\n\n}\n\n"]}
1
+ {"version":3,"file":"OperatorService.js","sourceRoot":"","sources":["../../../src/services/user/OperatorService.ts"],"names":[],"mappings":"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","sourcesContent":["import { logError, throwError } from \"@/utils\";\n\nimport {\n ModelUserFields,\n OperatorModel,\n ModelOperatorFields,\n} from \"@/models\";\n\nimport { userParentSqlSelect } from \"@/services\";\n\nimport { QueryList, QueryGet } from \"@/schema/common\";\n\nimport { DefaultServiceProps } from \"@/utils\";\n\nimport { buildSqlRelation, buildSqlRawSelect, buildSqlWhere, buildSqlSelect, buildSqlLimitOffset, buildSqlOrderBy, buildInjectionFieldsSqlSelect } from \"@/lib\";\n\nimport { ServiceFactory } from \"@/lib\";\n\nexport type UserType = \"operator\"\n\nexport const operatorDataTypes = {\n // location: \"location\",\n // locationCount: \"location_count\",\n // administratorInjectionFields: \"administrator_injection_fields\",\n parentUser: \"parent_user\"\n}\n\nexport type OperatorDataType = keyof typeof operatorDataTypes;\n\nexport type OperatorServiceProps = DefaultServiceProps & {};\n\nexport type OperatorGetProps = {\n id: number,\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorGetByUsernameProps = {\n username: string,\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorListProps = QueryList & {\n includePassword?: boolean\n datatypes: OperatorDataType[]\n};\n\nexport type OperatorRemoveProps = {\n userIds: BigInt[]\n};\n\nexport type OperatorCreateProps = {\n data:\n // operator\n {\n operator: {\n userId: number,\n }\n }\n}\n\nexport type OperatorUpdateProps = {\n userId: number,\n data:\n // operator\n {\n operator: {\n // userId: number,\n }\n }\n}\n\nconst getCreatePayload = (data: OperatorCreateProps[\"data\"]) => {\n\n if (\"operator\" in data) {\n\n return {\n [`${ModelOperatorFields.user_id}`]: data.operator.userId\n }\n }\n\n return false\n\n}\n\nconst getUpdatePayload = (data: OperatorUpdateProps[\"data\"]) => {\n\n if (\"operator\" in data) {\n\n return {\n // [`${ModelOperatorFields.user_id}`]: data.operator.userId,\n }\n }\n\n return false\n\n}\n\nlet mainSqlSelect = {\n [`oper.${ModelOperatorFields.operator_id}`]: \"operator_id\",\n [`oper.${ModelOperatorFields.user_id}`]: \"user_id\",\n}\n\nlet userSqlSelect = {\n [`usr.${ModelUserFields.login_username}`]: \"username\",\n [`usr.${ModelUserFields.user_type}`]: \"user_type\",\n [`usr.${ModelUserFields.firstname}`]: \"firstname\",\n [`usr.${ModelUserFields.lastname}`]: \"lastname\",\n [`CONCAT(usr.${ModelUserFields.contact_country_code}, usr.${ModelUserFields.contact_phone_number})`]: \"contact\",\n [`usr.${ModelUserFields.contact_country_code}`]: \"contact_country_code\",\n [`usr.${ModelUserFields.contact_phone_number}`]: \"contact_phone_number\",\n [`usr.${ModelUserFields.email}`]: \"email\",\n [`usr.${ModelUserFields.address}`]: \"address\",\n [`usr.${ModelUserFields.status}`]: \"status\",\n}\n\nlet defaultSqlSelect = {\n [`oper.${ModelOperatorFields.createdatetime}`]: \"createdatetime\",\n [`creator.${ModelUserFields.login_username}`]: \"createusername\",\n [`oper.${ModelOperatorFields.updatedatetime}`]: \"updatedatetime\",\n [`updater.${ModelUserFields.login_username}`]: \"updateusername\",\n [`oper.${ModelOperatorFields.isdelete}`]: \"isdelete\",\n [`oper.${ModelOperatorFields.istrash}`]: \"istrash\",\n [`oper.${ModelOperatorFields.accountid}`]: \"accountid\",\n}\n\n// let userStatusIsOwnerSqlSelect = {\n// [`COALESCE(usrsta_isowner.${ModelUserStatusFields.status}::int, 0)`]: \"is_owner\"\n// }\n\n// let userPropLocationSqlSelect = {\n// // [`COALESCE(usrprop_location.${ModelUserPropFields.props_id}::int, 0)`]: \"location_id\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT usrprop_location.${ModelUserPropFields.props_id}::text, ', '),\n// ''\n// )`]: \"location_id\",\n// // [`COALESCE(location.${ModelLocationFields.location_name}::text, '')`]: \"location_name\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT location.${ModelLocationFields.location_name}::text, ', '),\n// ''\n// )`]: \"location_name\",\n// }\n\n// let groupOwnerSqlSelect = {\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_id}::text, ', '),\n// ''\n// )`]: \"access_group_id\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_label}::text, ', '),\n// ''\n// )`]: \"access_group_label\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_description}::text, ', '),\n// ''\n// )`]: \"access_group_description\",\n// [`COALESCE(\n// STRING_AGG(DISTINCT grp.${ModelGroupFields.group_type}::text, ', '),\n// ''\n// )`]: \"access_group_type\"\n// // [`COALESCE(\n// // JSON_AGG(\n// // DISTINCT JSONB_BUILD_OBJECT(\n// // '${ModelGroupFields.group_label}', grp.group_label,\n// // '${ModelGroupFields.group_id}', grp.group_id,\n// // '${ModelGroupFields.group_type}', grp.group_type\n// // )\n// // ) FILTER (WHERE grp.group_id IS NOT NULL AND grp.isdelete = false AND grp.istrash = false), \n// // '[]'\n// // )`]: \"grp\"\n// }\n\nexport const OperatorService = (props: OperatorServiceProps) => {\n\n const {\n ...rest\n } = props\n\n const operatorModel = OperatorModel({ ...rest })\n\n // const injectionFieldService = InjectionFieldService({ ...rest, injectionFieldType: \"user\" })\n\n const createOperator = async ({ data }: OperatorCreateProps) => {\n\n const _data = getCreatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid create operator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await operatorModel.create({ data: _data })\n\n return response\n }\n\n const updateOperator = async ({ userId, data }: OperatorUpdateProps) => {\n\n const _data = getUpdatePayload(data)\n\n if (!_data) {\n throw new Error(`Invalid update operator payload: ${JSON.stringify(_data)}`);\n }\n\n let response = await operatorModel.update({ where: { [`${ModelOperatorFields.user_id}`]: userId }, data: _data })\n\n return response\n }\n\n const getOperator = async ({ id, datatypes = [], includePassword = false }: OperatorGetProps) => {\n\n let { data } = await listOperators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [{ field: `${ModelOperatorFields.user_id}`, operator: \"=\", value: id }],\n sortfield: `${ModelOperatorFields.user_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const getOperatorByUsername = async ({ username = \"\", includePassword = false, datatypes = [] }: OperatorGetByUsernameProps) => {\n\n let { data } = await listOperators({\n includePassword,\n limit: 1,\n offset: 0,\n filters: [\n { field: `username`, operator: \"=\", value: `${username}` },\n { field: `user_type`, operator: \"=\", value: `operator` },\n ],\n sortfield: `${ModelUserFields.user_id}`,\n sortorder: \"ASC\",\n datatypes\n })\n\n return data[0] ?? null;\n\n };\n\n const listOperators = async ({\n includePassword = false,\n limit,\n offset,\n filters,\n sortfield,\n sortorder,\n datatypes = []\n }: OperatorListProps) => {\n\n let data = []\n\n if (includePassword === true) {\n userSqlSelect = {\n ...userSqlSelect,\n [`usr.${ModelUserFields.login_password}`]: \"password\",\n }\n } else {\n delete userSqlSelect[`usr.${ModelUserFields.login_password}`];\n }\n\n let sqlSelect = [\n `COUNT(*) OVER() as filtered_count`,\n buildSqlSelect(``, mainSqlSelect),\n buildSqlSelect(``, userSqlSelect),\n buildSqlSelect(``, defaultSqlSelect),\n // buildSqlSelect(``, userStatusIsOwnerSqlSelect),\n // buildSqlSelect(``, userPropLocationSqlSelect),\n // buildSqlSelect(``, groupOwnerSqlSelect)\n ]\n\n let sqlRelation = [\n buildSqlRelation(\"left\", \"oper\", \"users\", \"usr\", [\"oper.user_id = usr.user_id\", \"usr.isdelete = false\", \"usr.istrash = false\"]),\n buildSqlRelation(\"left\", \"oper\", \"users\", \"creator\", [\"oper.createuserid = creator.user_id\", \"creator.isdelete = false\", \"creator.istrash = false\"]),\n buildSqlRelation(\"left\", \"oper\", \"users\", \"updater\", [\"oper.updateuserid = updater.user_id\", \"updater.isdelete = false\", \"updater.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"user_status\", \"usrsta_isowner\", [\"oper.user_id = usrsta_isowner.user_id\", \"usrsta_isowner.type = 'IS_OWNER'\", \"usrsta_isowner.isdelete = false\", \"usrsta_isowner.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"user_props\", \"usrprop_location\", [\"oper.user_id = usrprop_location.user_id\", \"usrprop_location.type = 'LOCATION_ID'\", \"usrprop_location.isdelete = false\", \"usrprop_location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"locations\", \"location\", [\"usrprop_location.props_id = location.location_id\", \"location.isdelete = false\", \"location.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"group_owners\", \"grpown\", [\"oper.user_id = grpown.user_id\", \"grpown.isdelete = false\", \"grpown.istrash = false\"]),\n // buildSqlRelation(\"left\", \"oper\", \"groups\", \"grp\", [\"grpown.group_id = grp.group_id\", \"grp.isdelete = false\", \"grp.istrash = false\"])\n ]\n\n let sqlGroupBy: string[] = [\n ...Object.keys(mainSqlSelect),\n ...Object.keys(userSqlSelect),\n // ...Object.keys(userStatusIsOwnerSqlSelect),\n // ...Object.keys(userPropLocationSqlSelect),\n ...Object.keys(defaultSqlSelect)\n ]\n\n let filterColumns = {\n ...mainSqlSelect,\n ...userSqlSelect,\n // ...userStatusIsOwnerSqlSelect,\n // ...userPropLocationSqlSelect,\n ...defaultSqlSelect\n }\n\n if (datatypes.includes(operatorDataTypes.parentUser)) {\n\n filterColumns = { ...filterColumns, ...userParentSqlSelect }\n\n sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"wrk\", \"users\", \"parentuser\", [\"usr.parent_user_id = parentuser.user_id\", \"parentuser.isdelete = false\", \"parentuser.istrash = false\"])]\n sqlSelect = [...sqlSelect, buildSqlSelect(``, userParentSqlSelect)]\n sqlGroupBy = [...sqlGroupBy, ...Object.keys(userParentSqlSelect)]\n\n }\n\n // if (datatypes.includes(operatorDataTypes.administratorInjectionFields)) {\n\n // let activeInjectionFields = await injectionFieldService.listActiveInjectionFields(\"user\", \"administrator\")\n\n // const administratorInjectionFieldSqlSelect = buildInjectionFieldsSqlSelect(\"uif\", activeInjectionFields)\n\n // filterColumns = { ...filterColumns, ...administratorInjectionFieldSqlSelect }\n\n // sqlSelect = [...sqlSelect, ...(activeInjectionFields.length > 0 ? [buildSqlSelect(``, administratorInjectionFieldSqlSelect)] : [])]\n // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"adm\", \"user_injection_fields\", \"uif\", [\"oper.user_id = uif.user_id\", \"uif.field_ref = 'user'\", \"uif.field_module = 'administrator'\", \"uif.isdelete = false\", \"uif.istrash = false\"])]\n // sqlGroupBy = [...sqlGroupBy, ...Object.keys(administratorInjectionFieldSqlSelect)]\n // }\n\n // if (datatypes.includes(operatorDataTypes.location)) {\n\n // let locationSqlSelect = {\n // [`COALESCE(\n // JSON_AGG(\n // DISTINCT JSONB_BUILD_OBJECT(\n // '${ModelLocationFields.location_id}', location.location_id,\n // '${ModelLocationFields.location_code}', location.location_code,\n // '${ModelLocationFields.location_name}', location.location_name,\n // '${ModelLocationFields.location_type}', location.location_type,\n // '${ModelLocationFields.address_1}', location.address_1,\n // '${ModelLocationFields.address_2}', location.address_2,\n // '${ModelLocationFields.area_id}', location.area_id,\n // '${ModelLocationFields.country_id}', location.country_id,\n // '${ModelLocationFields.state_id}', location.state_id,\n // '${ModelLocationFields.postcode}', location.postcode,\n // '${ModelLocationFields.is_default}', location.is_default,\n // '${ModelLocationFields.person_contact}', location.person_contact,\n // '${ModelLocationFields.person_name}', location.person_contact,\n // '${ModelLocationFields.person_email}', location.person_email,\n // '${ModelLocationFields.isdelete}', location.isdelete,\n // '${ModelLocationFields.istrash}', location.istrash\n // )\n // ) FILTER (WHERE location.location_id IS NOT NULL AND location.isdelete = false AND location.istrash = false), \n // '[]'\n // )`]: \"locations\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"usrprop_location\", \"location\", \"brn\", [\"oper.user_id = brn.user_id\", \"brn.isdelete = false\", \"brn.istrash = false\"])]\n\n // }\n\n // if (datatypes.includes(operatorDataTypes.locationCount)) {\n\n // let locationCountSqlSelect = {\n // [`COUNT(DISTINCT location.${ModelLocationFields.location_id})::INT`]: \"location_count\"\n // }\n\n // filterColumns = { ...filterColumns, ...locationCountSqlSelect }\n\n // sqlSelect = [...sqlSelect, buildSqlSelect(``, locationCountSqlSelect)]\n // // sqlRelation = [...sqlRelation, buildSqlRelation(\"left\", \"cus\", \"branches\", \"brncount\", [\"oper.user_id = brncount.user_id\", \"brncount.isdelete = false\", \"brncount.istrash = false\"])]\n\n // }\n\n let sqlWhere = [\n `oper.isdelete = false`,\n `oper.istrash = false`,\n ...(filters.length ? [buildSqlWhere(filters, filterColumns)?.where] : []),\n ]\n\n let sqlOrderby = buildSqlOrderBy(sortfield, sortorder)\n let sqlLimitOffset = buildSqlLimitOffset(limit, offset)\n\n const sqlRaw = buildSqlRawSelect({\n tableName: \"operators\",\n mainAlias: \"oper\",\n accountId: rest.accountId,\n sqlSelect,\n sqlRelation,\n sqlWhere,\n sqlGroupBy,\n sqlOrderby,\n sqlLimitOffset,\n skipFilterAccountId: true\n })\n\n data = await operatorModel.raw(sqlRaw)\n\n const response = {\n data: data.map(({ filtered_count, ...rest }) => rest),\n total: data.length ? Number(data[0].filtered_count) : 0\n }\n\n return response\n\n };\n\n const removeOperators = async ({ userIds }: OperatorRemoveProps) => {\n\n if (!userIds.length) throwError('userIds is required');\n\n const response = await operatorModel.remove({ where: { [`${ModelOperatorFields.user_id}`]: { in: userIds } } });\n\n return response\n };\n\n const getDataTypes = () => {\n return Object.values(operatorDataTypes);\n }\n\n // return {\n // createOperator,\n // updateOperator,\n // getOperator,\n // listOperators,\n // removeOperators,\n // getDataTypes\n // }\n\n const methodConfigs = {\n getOperator: { fn: getOperator, allowUserTypes: [\"operator\"] as const, actionName: \"get operator\" },\n getOperatorByUsername: { fn: getOperatorByUsername, allowUserTypes: [\"operator\", \"administrator\"] as const, actionName: \"get operator by username\" },\n listOperators: { fn: listOperators, allowUserTypes: [\"operator\"] as const, actionName: \"list operators\" },\n createOperator: { fn: createOperator, allowUserTypes: [\"operator\"] as const, actionName: \"create operator\" },\n updateOperator: { fn: updateOperator, allowUserTypes: [\"operator\"] as const, actionName: \"update operator\" },\n removeOperators: { fn: removeOperators, allowUserTypes: [\"operator\"] as const, actionName: \"remove operators\" },\n getDataTypes: { fn: getDataTypes, allowUserTypes: [\"operator\"] as const, actionName: \"get operator datatypes\" },\n };\n\n return ServiceFactory(\"OperatorService\", rest, methodConfigs);\n\n}\n\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "storemw-core-api",
3
- "version": "1.0.159",
3
+ "version": "1.0.161",
4
4
  "description": "STOREMW Core API",
5
5
  "main": "dist/app.js",
6
6
  "types": "dist/app.d.ts",