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.
- package/dist/lib/model_factory/default.d.ts +5 -5
- package/dist/lib/model_factory/default.js +1 -1
- package/dist/lib/model_factory/default.js.map +1 -1
- package/dist/services/auth/AuthService.d.ts +2 -1
- package/dist/services/auth/AuthService.js +12 -47
- package/dist/services/auth/AuthService.js.map +1 -1
- package/dist/services/user/AdministratorService.js +4 -3
- package/dist/services/user/AdministratorService.js.map +1 -1
- package/dist/services/user/OperatorService.js +4 -3
- package/dist/services/user/OperatorService.js.map +1 -1
- package/package.json +1 -1
|
@@ -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:
|
|
3
|
+
createuserid: any;
|
|
4
4
|
createdatetime: string;
|
|
5
|
-
updateuserid:
|
|
5
|
+
updateuserid: any;
|
|
6
6
|
updatedatetime: string;
|
|
7
7
|
accountid: number;
|
|
8
8
|
};
|
|
9
9
|
export declare const getDefaultUpdateFields: (updateUserId: number) => {
|
|
10
|
-
updateuserid:
|
|
10
|
+
updateuserid: any;
|
|
11
11
|
updatedatetime: string;
|
|
12
12
|
};
|
|
13
13
|
export declare const getDefaultTrashFields: (updateUserId: number) => {
|
|
14
14
|
istrash: boolean;
|
|
15
|
-
updateuserid:
|
|
15
|
+
updateuserid: any;
|
|
16
16
|
updatedatetime: string;
|
|
17
17
|
};
|
|
18
18
|
export declare const getDefaultRemoveFields: (updateUserId: number) => {
|
|
19
19
|
isdelete: boolean;
|
|
20
|
-
updateuserid:
|
|
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,
|
|
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
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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"]}
|