mobioffice-cli 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{src/index.ts → lib/index.d.ts} +1 -45
- package/lib/models/Feed-Details-Screen.model.d.ts +6 -0
- package/lib/models/Feed-Details-Screen.model.js +27 -0
- package/lib/models/action.model.d.ts +58 -0
- package/lib/models/action.model.js +315 -0
- package/lib/models/actions/doffing.d.ts +6 -0
- package/lib/models/actions/doffing.js +64 -0
- package/lib/models/actions/folding.d.ts +7 -0
- package/lib/models/actions/folding.js +37 -0
- package/lib/models/attendance.model.d.ts +44 -0
- package/lib/models/attendance.model.js +446 -0
- package/lib/models/cicoPost.model.d.ts +9 -0
- package/lib/models/cicoPost.model.js +19 -0
- package/lib/models/company.model.d.ts +67 -0
- package/lib/models/company.model.js +725 -0
- package/lib/models/contact-us/resquest.model.d.ts +30 -0
- package/lib/models/contact-us/resquest.model.js +73 -0
- package/lib/models/crud/crud.d.ts +7 -0
- package/lib/models/crud/crud.js +27 -0
- package/lib/models/customCollection.model.d.ts +9 -0
- package/lib/models/customCollection.model.js +40 -0
- package/lib/models/customer/customer.model.d.ts +32 -0
- package/lib/models/customer/customer.model.js +62 -0
- package/lib/models/deviceChangeReq.d.ts +10 -0
- package/lib/models/deviceChangeReq.js +138 -0
- package/lib/models/dispatch.model.d.ts +14 -0
- package/lib/models/dispatch.model.js +93 -0
- package/lib/models/feed.models.d.ts +8 -0
- package/lib/models/feed.models.js +97 -0
- package/lib/models/geofence.model.d.ts +7 -0
- package/lib/models/geofence.model.js +61 -0
- package/lib/models/leaveApplicationPost.model.d.ts +12 -0
- package/lib/models/leaveApplicationPost.model.js +72 -0
- package/lib/models/license.model.d.ts +25 -0
- package/lib/models/license.model.js +198 -0
- package/lib/models/log.model.d.ts +6 -0
- package/{src/models/log.model.ts → lib/models/log.model.js} +11 -11
- package/lib/models/meeting.model.d.ts +11 -0
- package/lib/models/meeting.model.js +79 -0
- package/lib/models/meter.model.d.ts +18 -0
- package/lib/models/meter.model.js +54 -0
- package/lib/models/missingPunchPost.model.d.ts +15 -0
- package/lib/models/missingPunchPost.model.js +69 -0
- package/lib/models/offline.model.d.ts +70 -0
- package/lib/models/offline.model.js +831 -0
- package/lib/models/post.model.d.ts +38 -0
- package/lib/models/post.model.js +94 -0
- package/lib/models/printDetailsScreen.model.d.ts +6 -0
- package/lib/models/printDetailsScreen.model.js +27 -0
- package/lib/models/pushNotifications/pushNotification.model.d.ts +4 -0
- package/lib/models/pushNotifications/pushNotification.model.js +17 -0
- package/lib/models/report-actions.model.d.ts +26 -0
- package/lib/models/report-actions.model.js +56 -0
- package/lib/models/report-definition-details.model.d.ts +13 -0
- package/lib/models/report-definition-details.model.js +85 -0
- package/lib/models/report-definition.model.d.ts +23 -0
- package/lib/models/report-definition.model.js +26 -0
- package/lib/models/report-definitions-summary.model.d.ts +8 -0
- package/lib/models/report-definitions-summary.model.js +59 -0
- package/lib/models/report-detail-data.model.d.ts +46 -0
- package/lib/models/report-detail-data.model.js +49 -0
- package/lib/models/report-visibility.model.d.ts +7 -0
- package/lib/models/report-visibility.model.js +42 -0
- package/lib/models/report.model.d.ts +19 -0
- package/lib/models/report.model.js +138 -0
- package/lib/models/reportGenerator.model.d.ts +164 -0
- package/lib/models/reportGenerator.model.js +642 -0
- package/lib/models/response.model.d.ts +18 -0
- package/lib/models/response.model.js +30 -0
- package/lib/models/steps.factory.model.d.ts +172 -0
- package/lib/models/steps.factory.model.js +187 -0
- package/lib/models/storeGupShupLog.model.d.ts +6 -0
- package/lib/models/storeGupShupLog.model.js +51 -0
- package/lib/models/summary.model.d.ts +10 -0
- package/{src/models/summary.model.ts → lib/models/summary.model.js} +28 -27
- package/lib/models/tasks/sub-task-group.model.d.ts +42 -0
- package/lib/models/tasks/sub-task-group.model.js +154 -0
- package/lib/models/tasks/tags.model.d.ts +29 -0
- package/lib/models/tasks/tags.model.js +70 -0
- package/lib/models/tasks/task-group.model.d.ts +53 -0
- package/lib/models/tasks/task-group.model.js +156 -0
- package/lib/models/tasks/task.model.d.ts +163 -0
- package/lib/models/tasks/task.model.js +603 -0
- package/lib/models/tempCollection.model.d.ts +40 -0
- package/{src/models/tempCollection.model.ts → lib/models/tempCollection.model.js} +114 -130
- package/lib/models/user.model.d.ts +42 -0
- package/lib/models/user.model.js +272 -0
- package/lib/models/utility.model.d.ts +13 -0
- package/lib/models/utility.model.js +93 -0
- package/lib/models/visitorManagement/acknowledgement.model.d.ts +9 -0
- package/lib/models/visitorManagement/acknowledgement.model.js +55 -0
- package/lib/models/visitorManagement/invite.model.d.ts +32 -0
- package/lib/models/visitorManagement/invite.model.js +326 -0
- package/lib/models/visitorManagement/newIn.model.d.ts +19 -0
- package/lib/models/visitorManagement/newIn.model.js +67 -0
- package/lib/models/visitorManagement/selfServe.model.d.ts +13 -0
- package/lib/models/visitorManagement/selfServe.model.js +46 -0
- package/lib/models/worklogPost.model.d.ts +6 -0
- package/lib/models/worklogPost.model.js +9 -0
- package/lib/services/customer.d.ts +30 -0
- package/lib/services/customer.js +354 -0
- package/lib/services/meeting.d.ts +19 -0
- package/lib/services/meeting.js +109 -0
- package/package.json +4 -1
- package/.prettierrc +0 -4
- package/a.js +0 -3
- package/scripts/1.ts +0 -1300
- package/scripts/GCloudPubSub/pub-sub-config.json +0 -12
- package/scripts/GCloudPubSub/visitorAutoRejection.ts +0 -86
- package/scripts/actions/assignUsersFromOneActionToOther.ts +0 -64
- package/scripts/actions/assignUsersListToAction.ts +0 -81
- package/scripts/actions/getActionsListOfUser.ts +0 -42
- package/scripts/actions/getCompanyUserDetails.ts +0 -49
- package/scripts/actions/giveActionToUser.ts +0 -41
- package/scripts/actions/giveUsersToActivitySelector.ts +0 -56
- package/scripts/actions/groupActionsInActivitySelector.ts +0 -101
- package/scripts/actions/modifySummaryReportDB.ts +0 -42
- package/scripts/actions/setUrlToActionStep.ts +0 -18
- package/scripts/actions/syncMySqlAttendanceDBWithFirebase.ts +0 -93
- package/scripts/actions/syncMySqlMeetingsDBWithFirebase.ts +0 -103
- package/scripts/actions/test.ts +0 -29
- package/scripts/actions/transferFeedsOldIdToNew.ts +0 -40
- package/scripts/actions/transformUserIntoManager.ts +0 -89
- package/scripts/argvConfig.js +0 -9
- package/scripts/backUpData/testCode.ts +0 -131
- package/scripts/benaraScripts/addWorkAreaMap.ts +0 -46
- package/scripts/benaraScripts/add_customers.ts +0 -26
- package/scripts/benaraScripts/add_customers_contact.ts +0 -27
- package/scripts/benaraScripts/add_empty_work_area.ts +0 -17
- package/scripts/benaraScripts/assignManagers.ts +0 -35
- package/scripts/benaraScripts/changeCheckInFlag.ts +0 -45
- package/scripts/benaraScripts/createCustomerContactsList.ts +0 -170
- package/scripts/benaraScripts/createUserByDeletingOldUser.ts +0 -70
- package/scripts/benaraScripts/createUsersAreaMapCollection.ts +0 -23
- package/scripts/benaraScripts/createWorkAreaMap.ts +0 -24
- package/scripts/benaraScripts/mapWorkAreasToUsers.ts +0 -112
- package/scripts/companies_data.json +0 -2496
- package/scripts/create_or_update_users.ts +0 -31
- package/scripts/csvToJson/csvToJson.ts +0 -90
- package/scripts/csvToJson/users.json +0 -3896
- package/scripts/db.js +0 -27
- package/scripts/db.json +0 -13
- package/scripts/dbMySql.ts +0 -63
- package/scripts/delete_action_steps.ts +0 -11
- package/scripts/delete_user.ts +0 -71
- package/scripts/dev_companies_data.json +0 -613
- package/scripts/enroll.xlsx +0 -0
- package/scripts/export_users.ts +0 -72
- package/scripts/files/visitorManagementFiles/displayScreen.json +0 -70
- package/scripts/files/visitorManagementFiles/init_report_visibility.ts +0 -79
- package/scripts/firebaseConfig.js +0 -12
- package/scripts/firebaseDocs/deleteIncommingCollection.ts +0 -47
- package/scripts/firebaseDocs/updateDoc.ts +0 -43
- package/scripts/getActionDataIntoJSON/getActionData.ts +0 -68
- package/scripts/get_attendance_by_any_date.ts +0 -14
- package/scripts/get_attendance_by_month.ts +0 -12
- package/scripts/get_attendance_monthly_by_team.ts +0 -11
- package/scripts/get_daily_report.ts +0 -10
- package/scripts/get_mangers.ts +0 -13
- package/scripts/grant_user_license.ts +0 -18
- package/scripts/init_CustomCollection.ts +0 -16
- package/scripts/init_action_steps.ts +0 -28
- package/scripts/init_actions.ts +0 -31
- package/scripts/init_company.ts +0 -18
- package/scripts/init_customer_mysql.ts +0 -12
- package/scripts/init_feed.ts +0 -4
- package/scripts/init_feed_details_screen.ts +0 -14
- package/scripts/init_geofence.ts +0 -26
- package/scripts/init_print_details_screen.ts +0 -14
- package/scripts/init_report_actions.ts +0 -24
- package/scripts/init_report_definition_detail.ts +0 -26
- package/scripts/init_report_definition_summary.ts +0 -16
- package/scripts/init_report_visibility.ts +0 -46
- package/scripts/init_user_customcollection.ts +0 -16
- package/scripts/json/action.json +0 -21
- package/scripts/json/company.json +0 -24
- package/scripts/json/report-action.json +0 -13
- package/scripts/json/report-def-deet.json +0 -43
- package/scripts/json/resp.json +0 -784
- package/scripts/json/steps.json +0 -24
- package/scripts/json/test.ts +0 -49
- package/scripts/mysqlConfig.ts +0 -9
- package/scripts/revoke_or_extend_license.ts +0 -14
- package/scripts/stream.js +0 -4
- package/scripts/testing1.ts +0 -35
- package/scripts/update/doc.json +0 -20
- package/scripts/update/getDocByPath.ts +0 -34
- package/scripts/update/updateDocByPath.ts +0 -47
- package/scripts/update/updateUsersOfCompanies.ts +0 -58
- package/scripts/update_actions.ts +0 -19
- package/scripts/update_actions_steps.ts +0 -19
- package/scripts/update_company.ts +0 -19
- package/scripts/update_geofence.ts +0 -20
- package/scripts/update_managers.ts +0 -16
- package/scripts/visitorMgmt/createArea.ts +0 -68
- package/scripts/visitorMgmt/createArea.txt +0 -3
- package/scripts/visitorMgmt/createVisitorPathInstructionDocs.ts +0 -130
- package/scripts/visitorMgmt/createVisitorPathInstructionDocs.txt +0 -18
- package/scripts/visitorMgmt/encryptDateString.ts +0 -71
- package/scripts/visitorMgmt/makeHostsManagersOfEachOther.ts +0 -117
- package/scripts/whatsapp_gupshup/sendMessage.ts +0 -97
- package/src/models/Feed-Details-Screen.model.ts +0 -29
- package/src/models/action.model.ts +0 -355
- package/src/models/actions/doffing.ts +0 -71
- package/src/models/actions/folding.ts +0 -39
- package/src/models/attendance.model.ts +0 -615
- package/src/models/cicoPost.model.ts +0 -20
- package/src/models/company.model.ts +0 -975
- package/src/models/contact-us/resquest.model.ts +0 -87
- package/src/models/crud/crud.ts +0 -30
- package/src/models/customCollection.model.ts +0 -47
- package/src/models/customer/customer.model.ts +0 -85
- package/src/models/deviceChangeReq.ts +0 -150
- package/src/models/dispatch.model.ts +0 -99
- package/src/models/feed.models.ts +0 -104
- package/src/models/geofence.model.ts +0 -61
- package/src/models/leaveApplicationPost.model.ts +0 -79
- package/src/models/license.model.ts +0 -215
- package/src/models/meeting.model.ts +0 -80
- package/src/models/meter.model.ts +0 -62
- package/src/models/missingPunchPost.model.ts +0 -84
- package/src/models/offline.model.ts +0 -1133
- package/src/models/post.model.ts +0 -105
- package/src/models/printDetailsScreen.model.ts +0 -30
- package/src/models/pushNotifications/pushNotification.model.ts +0 -17
- package/src/models/report-actions.model.ts +0 -57
- package/src/models/report-definition-details.model.ts +0 -89
- package/src/models/report-definition.model.ts +0 -26
- package/src/models/report-definitions-summary.model.ts +0 -59
- package/src/models/report-detail-data.model.ts +0 -49
- package/src/models/report-visibility.model.ts +0 -44
- package/src/models/report.model.ts +0 -179
- package/src/models/reportGenerator.model.ts +0 -883
- package/src/models/response.model.ts +0 -31
- package/src/models/steps.factory.model.ts +0 -195
- package/src/models/storeGupShupLog.model.ts +0 -49
- package/src/models/tasks/sub-task-group.model.ts +0 -173
- package/src/models/tasks/tags.model.ts +0 -113
- package/src/models/tasks/task-group.model.ts +0 -172
- package/src/models/tasks/task.model.ts +0 -681
- package/src/models/user.model.ts +0 -319
- package/src/models/utility.model.ts +0 -100
- package/src/models/visitorManagement/acknowledgement.model.ts +0 -71
- package/src/models/visitorManagement/invite.model.ts +0 -406
- package/src/models/visitorManagement/newIn.model.ts +0 -82
- package/src/models/visitorManagement/selfServe.model.ts +0 -58
- package/src/models/worklogPost.model.ts +0 -8
- package/src/services/customer.ts +0 -382
- package/src/services/meeting.ts +0 -123
- package/test/1.ts +0 -13
- package/test/db.js +0 -19
- package/test/firebaseConfig.js +0 -1
- package/tsconfig.json +0 -16
@@ -1,975 +0,0 @@
|
|
1
|
-
//import { User } from "@mj6uc/mobioffice/models/user.model.js";
|
2
|
-
import * as admin from "firebase-admin";
|
3
|
-
import { Action } from "./action.model";
|
4
|
-
import { Attendance } from "./attendance.model";
|
5
|
-
import { License } from "./license.model";
|
6
|
-
import { User } from "./user.model";
|
7
|
-
class Company {
|
8
|
-
id: string = "";
|
9
|
-
nickname: string = "";
|
10
|
-
description: string = "";
|
11
|
-
image: string = "";
|
12
|
-
name: string = "";
|
13
|
-
users: string[] = [];
|
14
|
-
endpoints: string[] = [];
|
15
|
-
|
16
|
-
static async initCompany(firestore: admin.firestore.Firestore) {
|
17
|
-
firestore.collection("Companies");
|
18
|
-
}
|
19
|
-
|
20
|
-
static async getCompanyIdByNickName(
|
21
|
-
firestore: admin.firestore.Firestore,
|
22
|
-
nickName: string
|
23
|
-
) {
|
24
|
-
const companyInfo = await firestore
|
25
|
-
.collection("Companies")
|
26
|
-
.where("nickname", "==", nickName)
|
27
|
-
.get();
|
28
|
-
let companyId = "";
|
29
|
-
companyInfo.docs.forEach((info) => {
|
30
|
-
companyId = info.data().id;
|
31
|
-
});
|
32
|
-
return companyId;
|
33
|
-
}
|
34
|
-
|
35
|
-
static async getOrCreateCompany(
|
36
|
-
firestore: admin.firestore.Firestore,
|
37
|
-
companyDetails: any
|
38
|
-
) {
|
39
|
-
let company_snapshot = await firestore
|
40
|
-
.collection("Companies")
|
41
|
-
.where("nickname", "==", companyDetails.nickname)
|
42
|
-
.get();
|
43
|
-
if (company_snapshot.empty) {
|
44
|
-
let company = await Company.createCompany(firestore, companyDetails);
|
45
|
-
return company;
|
46
|
-
} else {
|
47
|
-
let id = "";
|
48
|
-
company_snapshot.forEach((doc) => {
|
49
|
-
id = doc.data().id;
|
50
|
-
});
|
51
|
-
let companyData = await company_snapshot.docs.map((doc) => {
|
52
|
-
return doc.data();
|
53
|
-
});
|
54
|
-
return companyData;
|
55
|
-
}
|
56
|
-
}
|
57
|
-
|
58
|
-
static async createCompany(
|
59
|
-
firestore: admin.firestore.Firestore,
|
60
|
-
companyDetails: any
|
61
|
-
) {
|
62
|
-
//companyDetails = await Company.convertCompanyDataType(companyDetails)
|
63
|
-
let docRef = firestore.collection("Companies").doc();
|
64
|
-
companyDetails.id = docRef.id;
|
65
|
-
await docRef.set(companyDetails);
|
66
|
-
return companyDetails;
|
67
|
-
}
|
68
|
-
|
69
|
-
static async convertCompanyDataType(companyDetails: any) {
|
70
|
-
if (companyDetails.names) {
|
71
|
-
let names = companyDetails.names.split("&");
|
72
|
-
let link = companyDetails.links.split("&");
|
73
|
-
let map = new Map();
|
74
|
-
for (let i = 0; i < names.length; i++) {
|
75
|
-
map.set(names[i], link[i]);
|
76
|
-
}
|
77
|
-
const obj = Object.fromEntries(map);
|
78
|
-
delete companyDetails.names;
|
79
|
-
delete companyDetails.links;
|
80
|
-
companyDetails.endpoints = obj;
|
81
|
-
} else {
|
82
|
-
companyDetails.endpoints = {};
|
83
|
-
}
|
84
|
-
if (companyDetails.users) {
|
85
|
-
companyDetails.users = companyDetails.users.split("&");
|
86
|
-
} else {
|
87
|
-
companyDetails.users = [];
|
88
|
-
}
|
89
|
-
if (companyDetails.e10xSupport) {
|
90
|
-
companyDetails.e10xSupport = companyDetails.e10xSupport == "true";
|
91
|
-
}
|
92
|
-
return companyDetails;
|
93
|
-
}
|
94
|
-
|
95
|
-
static async updateCompany(
|
96
|
-
firestore: admin.firestore.Firestore,
|
97
|
-
nickName: string,
|
98
|
-
companyDoc: any
|
99
|
-
) {
|
100
|
-
let snapshot = await firestore
|
101
|
-
.collection("Companies")
|
102
|
-
.where("nickname", "==", nickName)
|
103
|
-
.get();
|
104
|
-
if (snapshot.empty) {
|
105
|
-
return "Company doesn't exists";
|
106
|
-
} else {
|
107
|
-
//companyDoc = await Company.convertCompanyDataType(companyDoc)
|
108
|
-
if (companyDoc.users) {
|
109
|
-
delete companyDoc.users;
|
110
|
-
}
|
111
|
-
let endpoints = snapshot.docs[0].data().endpoints;
|
112
|
-
Object.assign(companyDoc.endpoints, endpoints);
|
113
|
-
// console.log(companyDoc)
|
114
|
-
snapshot.docs[0].ref.update(companyDoc);
|
115
|
-
return "Updated successfully";
|
116
|
-
}
|
117
|
-
}
|
118
|
-
|
119
|
-
static async addUserIdsInsideCompanies(
|
120
|
-
firestore: admin.firestore.Firestore,
|
121
|
-
arrayUnion: any,
|
122
|
-
nickName: string
|
123
|
-
) {
|
124
|
-
let usersList = await Company.getUsersListbyCompany(firestore, nickName);
|
125
|
-
let userIds = [];
|
126
|
-
for (let user of usersList) {
|
127
|
-
userIds.push(user.id);
|
128
|
-
}
|
129
|
-
let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
|
130
|
-
await firestore
|
131
|
-
.collection("Companies")
|
132
|
-
.doc(companyId)
|
133
|
-
.update({
|
134
|
-
users: arrayUnion(...userIds),
|
135
|
-
});
|
136
|
-
}
|
137
|
-
|
138
|
-
static async checkIfUserExists(
|
139
|
-
firestore: admin.firestore.Firestore,
|
140
|
-
companyId: string,
|
141
|
-
userId: string
|
142
|
-
) {
|
143
|
-
let snapshot = await firestore
|
144
|
-
.collection("Companies")
|
145
|
-
.doc(companyId)
|
146
|
-
.collection("Users")
|
147
|
-
.where("id", "==", userId)
|
148
|
-
.get();
|
149
|
-
if (snapshot.empty) {
|
150
|
-
return null;
|
151
|
-
} else {
|
152
|
-
return true;
|
153
|
-
}
|
154
|
-
}
|
155
|
-
|
156
|
-
static async intiActionsInCompany(
|
157
|
-
firestore: admin.firestore.Firestore,
|
158
|
-
companyId: string,
|
159
|
-
actions: []
|
160
|
-
) {
|
161
|
-
let document = firestore
|
162
|
-
.collection("Companies")
|
163
|
-
.doc(companyId)
|
164
|
-
.collection("Actions")
|
165
|
-
.doc();
|
166
|
-
await document.set({
|
167
|
-
id: document.id,
|
168
|
-
});
|
169
|
-
for (let element of actions) {
|
170
|
-
let docRef = firestore
|
171
|
-
.collection("Companies")
|
172
|
-
.doc(companyId)
|
173
|
-
.collection("Actions")
|
174
|
-
.doc();
|
175
|
-
let id = docRef.id;
|
176
|
-
let docs = { companyId: companyId, name: element, id: id, users: [] };
|
177
|
-
await docRef.set(docs);
|
178
|
-
}
|
179
|
-
return actions;
|
180
|
-
}
|
181
|
-
|
182
|
-
static async getUserDetailsByPhone(
|
183
|
-
firestore: admin.firestore.Firestore,
|
184
|
-
nickName: string,
|
185
|
-
phoneNumber: string
|
186
|
-
) {
|
187
|
-
let company_id = await Company.getCompanyIdbyNickname(firestore, nickName);
|
188
|
-
let snapshot = await firestore
|
189
|
-
.collection("Companies")
|
190
|
-
.doc(company_id)
|
191
|
-
.collection("Users")
|
192
|
-
.where("phone", "==", phoneNumber)
|
193
|
-
.get();
|
194
|
-
if (snapshot.empty) {
|
195
|
-
return "Not found";
|
196
|
-
}
|
197
|
-
let userDetails_arr: any = [];
|
198
|
-
snapshot.forEach((doc) => {
|
199
|
-
userDetails_arr.push(doc.data());
|
200
|
-
});
|
201
|
-
return userDetails_arr;
|
202
|
-
}
|
203
|
-
|
204
|
-
static async createOrUpdateUser(
|
205
|
-
firestore: admin.firestore.Firestore,
|
206
|
-
auth: admin.auth.Auth,
|
207
|
-
arrayUnion: any,
|
208
|
-
nickName: string,
|
209
|
-
newDetails: any
|
210
|
-
) {
|
211
|
-
console.log("nickName ===> ", nickName)
|
212
|
-
newDetails.phone = "+" + newDetails.phone;
|
213
|
-
newDetails.isFetchFaceVisible = true;
|
214
|
-
newDetails.devicesLimit = 1;
|
215
|
-
|
216
|
-
if (newDetails.birthDate) {
|
217
|
-
newDetails.birthDate = await License.convertDatetoTimestamp(
|
218
|
-
newDetails.birthDate
|
219
|
-
);
|
220
|
-
}
|
221
|
-
if (newDetails.reportingTo) {
|
222
|
-
let reportingTo = newDetails.reportingTo.split("&");
|
223
|
-
const managers: any = [];
|
224
|
-
let reportingtoIds: any = [];
|
225
|
-
for (let phone of reportingTo) {
|
226
|
-
console.log("phone ===> ", phone)
|
227
|
-
phone = "+" + phone;
|
228
|
-
let user_snapshot = await Company.getUserDetailsByPhone(
|
229
|
-
firestore,
|
230
|
-
nickName,
|
231
|
-
phone
|
232
|
-
);
|
233
|
-
console.log(user_snapshot)
|
234
|
-
user_snapshot.forEach((doc: any) => {
|
235
|
-
reportingtoIds.push(doc.id);
|
236
|
-
managers.push(doc.name);
|
237
|
-
});
|
238
|
-
}
|
239
|
-
newDetails.reportingTo = reportingtoIds;
|
240
|
-
newDetails.managers = managers;
|
241
|
-
}
|
242
|
-
if (newDetails.roles) {
|
243
|
-
let rolesList: string[] = [];
|
244
|
-
rolesList = newDetails.roles.split("&");
|
245
|
-
newDetails.roles = rolesList;
|
246
|
-
newDetails.internalRoles = rolesList;
|
247
|
-
newDetails.fatchBGLocation = false;
|
248
|
-
}
|
249
|
-
if (newDetails.userName && newDetails.password) {
|
250
|
-
newDetails['loginInfo'] = {
|
251
|
-
username: newDetails.userName,
|
252
|
-
password: newDetails.password
|
253
|
-
}
|
254
|
-
}
|
255
|
-
delete newDetails.userName;
|
256
|
-
delete newDetails.password;
|
257
|
-
let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
|
258
|
-
let snapshot = await firestore
|
259
|
-
.collection("Companies")
|
260
|
-
.doc(companyId)
|
261
|
-
.collection("Users")
|
262
|
-
.where("phone", "==", newDetails.oldPhoneNo ? newDetails.oldPhoneNo : newDetails.phone)
|
263
|
-
.get();
|
264
|
-
console.log(newDetails);
|
265
|
-
console.log(snapshot.empty)
|
266
|
-
//let userCollection = await Company.updateUserPhone(firestore,newDetails.uid,newDetails.phone)
|
267
|
-
delete newDetails.oldPhoneNo
|
268
|
-
if (snapshot.empty) {
|
269
|
-
return await Company.createUser(
|
270
|
-
firestore,
|
271
|
-
auth,
|
272
|
-
arrayUnion,
|
273
|
-
companyId,
|
274
|
-
newDetails
|
275
|
-
);
|
276
|
-
} else {
|
277
|
-
let userId = "";
|
278
|
-
let temp = newDetails.reportingTo;
|
279
|
-
if (newDetails.reportingTo.length) {
|
280
|
-
snapshot.forEach((doc) => {
|
281
|
-
doc.ref.update({
|
282
|
-
reportingTo: arrayUnion(...temp),
|
283
|
-
});
|
284
|
-
});
|
285
|
-
delete newDetails.reportingTo;
|
286
|
-
}
|
287
|
-
snapshot.forEach((doc) => {
|
288
|
-
userId = doc.data().id;
|
289
|
-
doc.ref.update(newDetails);
|
290
|
-
});
|
291
|
-
|
292
|
-
const userDetails = await firestore.collection('Users').doc(userId).get();
|
293
|
-
userDetails.ref.update({
|
294
|
-
phone: newDetails.phone
|
295
|
-
})
|
296
|
-
|
297
|
-
return { companyId: companyId, userId: userId, actions: [] };
|
298
|
-
}
|
299
|
-
}
|
300
|
-
|
301
|
-
static async createNewUser(
|
302
|
-
firestore: admin.firestore.Firestore,
|
303
|
-
auth: any,
|
304
|
-
arrayUnion: any,
|
305
|
-
nickName: string,
|
306
|
-
newDetails: any
|
307
|
-
) {
|
308
|
-
newDetails.phone = `+${newDetails.phone}`;
|
309
|
-
let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
|
310
|
-
let snapshot = await firestore
|
311
|
-
.collection("Companies")
|
312
|
-
.doc(companyId)
|
313
|
-
.collection("Users")
|
314
|
-
.where("phone", "==", newDetails.phone)
|
315
|
-
.get();
|
316
|
-
if (snapshot.empty) {
|
317
|
-
if (newDetails.birthDate) {
|
318
|
-
newDetails.birthDate = await License.convertDatetoTimestamp(
|
319
|
-
newDetails.birthDate
|
320
|
-
);
|
321
|
-
}
|
322
|
-
if (newDetails.reportingTo) {
|
323
|
-
await this.addReportingToInfoToDetails(
|
324
|
-
firestore,
|
325
|
-
newDetails,
|
326
|
-
companyId
|
327
|
-
);
|
328
|
-
}
|
329
|
-
console.log("newDetails", newDetails);
|
330
|
-
return await Company.createUser(
|
331
|
-
firestore,
|
332
|
-
auth,
|
333
|
-
arrayUnion,
|
334
|
-
companyId,
|
335
|
-
newDetails
|
336
|
-
);
|
337
|
-
} else {
|
338
|
-
return {
|
339
|
-
data: snapshot.docs[0].data(),
|
340
|
-
message: "Phone number already used.",
|
341
|
-
};
|
342
|
-
}
|
343
|
-
}
|
344
|
-
|
345
|
-
static async updateUser(
|
346
|
-
firestore: admin.firestore.Firestore,
|
347
|
-
arrayUnion: any,
|
348
|
-
nickName: string,
|
349
|
-
newDetails: any
|
350
|
-
) {
|
351
|
-
newDetails.phone = `+${newDetails.phone}`;
|
352
|
-
let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
|
353
|
-
let snapshot = await firestore
|
354
|
-
.collection("Companies")
|
355
|
-
.doc(companyId)
|
356
|
-
.collection("Users")
|
357
|
-
.where("phone", "==", newDetails.phone)
|
358
|
-
.get();
|
359
|
-
if (snapshot.empty) {
|
360
|
-
throw new Error("User doesn't exist, please check phone Number.");
|
361
|
-
}
|
362
|
-
if (newDetails.birthDate) {
|
363
|
-
newDetails.birthDate = await License.convertDatetoTimestamp(
|
364
|
-
newDetails.birthDate
|
365
|
-
);
|
366
|
-
}
|
367
|
-
if (newDetails.reportingTo) {
|
368
|
-
await this.addReportingToInfoToDetails(firestore, newDetails, companyId);
|
369
|
-
if (newDetails.reportingTo.length) {
|
370
|
-
snapshot.forEach((doc) => {
|
371
|
-
doc.ref.update({
|
372
|
-
reportingTo: arrayUnion(...newDetails.reportingTo),
|
373
|
-
managers: arrayUnion(...newDetails.managers),
|
374
|
-
});
|
375
|
-
});
|
376
|
-
delete newDetails.reportingTo;
|
377
|
-
delete newDetails.managers;
|
378
|
-
}
|
379
|
-
}
|
380
|
-
let userId = "";
|
381
|
-
await Promise.all(
|
382
|
-
snapshot.docs.map(async (doc) => {
|
383
|
-
userId = doc.data().id;
|
384
|
-
await doc.ref.update(newDetails);
|
385
|
-
})
|
386
|
-
);
|
387
|
-
const updatedUserDoc = await firestore
|
388
|
-
.collection("Companies")
|
389
|
-
.doc(companyId)
|
390
|
-
.collection("Users")
|
391
|
-
.where("phone", "==", newDetails.phone)
|
392
|
-
.get();
|
393
|
-
return updatedUserDoc.docs[0].data();
|
394
|
-
}
|
395
|
-
|
396
|
-
static async addReportingToInfoToDetails(
|
397
|
-
firestore: admin.firestore.Firestore,
|
398
|
-
newDetails: any,
|
399
|
-
companyId: string
|
400
|
-
) {
|
401
|
-
const managers: any = [];
|
402
|
-
let reportingToIds: any = [];
|
403
|
-
for (let phone of newDetails.reportingTo) {
|
404
|
-
phone = "+" + phone;
|
405
|
-
const userId = await User.getUserIdByPhone(firestore, phone);
|
406
|
-
let managerInfoDoc: any = await firestore
|
407
|
-
.collection("Companies")
|
408
|
-
.doc(companyId)
|
409
|
-
.collection("Users")
|
410
|
-
.doc(userId)
|
411
|
-
.get();
|
412
|
-
if (managerInfoDoc.exists) {
|
413
|
-
reportingToIds.push(managerInfoDoc.data().id);
|
414
|
-
managers.push(managerInfoDoc.data().name);
|
415
|
-
}
|
416
|
-
}
|
417
|
-
newDetails.reportingTo = reportingToIds;
|
418
|
-
newDetails.managers = managers;
|
419
|
-
}
|
420
|
-
|
421
|
-
static async getSubordinatesById(
|
422
|
-
firestore: admin.firestore.Firestore,
|
423
|
-
uid: string,
|
424
|
-
cid: string
|
425
|
-
) {
|
426
|
-
console.log("Path => ", `Companies/${cid}/Users`);
|
427
|
-
const companyUsers = await firestore
|
428
|
-
.collection(`Companies/${cid}/Users`)
|
429
|
-
.get();
|
430
|
-
|
431
|
-
const userDocs = companyUsers.docs.map((doc) => doc.data());
|
432
|
-
// console.log("UserDocs => ", userDocs);
|
433
|
-
const filteredUsers = userDocs.filter((user) =>
|
434
|
-
user["reportingTo"].includes(uid)
|
435
|
-
);
|
436
|
-
// console.log("filteredUsers => ", filteredUsers);
|
437
|
-
console.log("filteredUsers => ", filteredUsers.length);
|
438
|
-
const phones = [];
|
439
|
-
for (var user of filteredUsers) {
|
440
|
-
phones.push(user["phone"]);
|
441
|
-
}
|
442
|
-
|
443
|
-
console.log("phones => ", phones);
|
444
|
-
|
445
|
-
return phones;
|
446
|
-
}
|
447
|
-
|
448
|
-
static async updateUserPhone(
|
449
|
-
firestore: admin.firestore.Firestore,
|
450
|
-
uid: string,
|
451
|
-
phone: string
|
452
|
-
) {
|
453
|
-
let snapshot = await firestore
|
454
|
-
.collection("Users")
|
455
|
-
.where("id", "==", uid)
|
456
|
-
.get();
|
457
|
-
if (snapshot.empty) {
|
458
|
-
return null;
|
459
|
-
}
|
460
|
-
snapshot.forEach((doc) => {
|
461
|
-
doc.ref.update({ phone });
|
462
|
-
});
|
463
|
-
return true;
|
464
|
-
}
|
465
|
-
|
466
|
-
static async convertUserDataType(data: any) {
|
467
|
-
if (data.managers) {
|
468
|
-
data.managers = data.managers.split("&");
|
469
|
-
} else {
|
470
|
-
data.managers = [];
|
471
|
-
}
|
472
|
-
if (data.roles) {
|
473
|
-
data.roles = data.roles.split("&");
|
474
|
-
} else {
|
475
|
-
data.roles = [];
|
476
|
-
}
|
477
|
-
return data;
|
478
|
-
}
|
479
|
-
|
480
|
-
static async createUser(
|
481
|
-
firestore: admin.firestore.Firestore,
|
482
|
-
auth: admin.auth.Auth,
|
483
|
-
arrayUnion: any,
|
484
|
-
companyId: string,
|
485
|
-
newDetails: any
|
486
|
-
) {
|
487
|
-
if (!newDetails.reportingTo) {
|
488
|
-
newDetails.reportingTo = [];
|
489
|
-
}
|
490
|
-
let actionsList: string[] = [];
|
491
|
-
if (newDetails.actions) {
|
492
|
-
actionsList = newDetails.actions;
|
493
|
-
actionsList = newDetails.actions.split("&");
|
494
|
-
// -------------------------------------
|
495
|
-
// uncomment the above line while
|
496
|
-
// creating users through create_or_update_users script.
|
497
|
-
delete newDetails.actions;
|
498
|
-
} else {
|
499
|
-
return "Please provide actions";
|
500
|
-
}
|
501
|
-
//newDetails = await Company.convertUserDataType(newDetails)
|
502
|
-
if (!newDetails.birthDate) {
|
503
|
-
let currectDate: string = await Attendance.getCurrentdate();
|
504
|
-
newDetails.birthDate = currectDate.replace(/\//g, "-");
|
505
|
-
newDetails.birthDate = await License.convertDatetoTimestamp(
|
506
|
-
newDetails.birthDate
|
507
|
-
);
|
508
|
-
}
|
509
|
-
let userExits: any = await auth.listUsers();
|
510
|
-
let flagForUser = false;
|
511
|
-
let uid: string = "";
|
512
|
-
if (userExits) {
|
513
|
-
let userList = userExits.users;
|
514
|
-
for (let element of userList) {
|
515
|
-
if (element.phoneNumber == newDetails.phone) {
|
516
|
-
flagForUser = true;
|
517
|
-
uid = element.uid;
|
518
|
-
}
|
519
|
-
}
|
520
|
-
}
|
521
|
-
console.log(newDetails);
|
522
|
-
console.log("flagForUser", flagForUser);
|
523
|
-
if (flagForUser) {
|
524
|
-
await Object.assign(newDetails, { id: uid });
|
525
|
-
await firestore
|
526
|
-
.collection("Companies")
|
527
|
-
.doc(companyId)
|
528
|
-
.collection("Users")
|
529
|
-
.doc(uid)
|
530
|
-
.set(newDetails);
|
531
|
-
console.log("user Created in company");
|
532
|
-
} else {
|
533
|
-
let newUser = await auth.createUser({ phoneNumber: newDetails.phone });
|
534
|
-
uid = newUser.uid;
|
535
|
-
await Object.assign(newDetails, { id: newUser.uid }, { fcmToken: null });
|
536
|
-
await firestore
|
537
|
-
.collection("Companies")
|
538
|
-
.doc(companyId)
|
539
|
-
.collection("Users")
|
540
|
-
.doc(newUser.uid)
|
541
|
-
.set(newDetails);
|
542
|
-
await firestore
|
543
|
-
.collection("Users")
|
544
|
-
.doc(newUser.uid)
|
545
|
-
.set({ id: newUser.uid, phone: newDetails.phone });
|
546
|
-
console.log("user created in both places");
|
547
|
-
}
|
548
|
-
let actions = await Company.addUserId(
|
549
|
-
firestore,
|
550
|
-
arrayUnion,
|
551
|
-
companyId,
|
552
|
-
uid,
|
553
|
-
actionsList
|
554
|
-
);
|
555
|
-
if (actions.length) {
|
556
|
-
return { companyId: companyId, userId: uid, actions: actions };
|
557
|
-
} else {
|
558
|
-
return "error occured when adding userId in users array";
|
559
|
-
}
|
560
|
-
}
|
561
|
-
|
562
|
-
static async addUserId(
|
563
|
-
firestore: admin.firestore.Firestore,
|
564
|
-
arrayUnion: any,
|
565
|
-
companyId: string,
|
566
|
-
id: string,
|
567
|
-
actions: string[]
|
568
|
-
) {
|
569
|
-
console.log(id);
|
570
|
-
await Company.addUserIdinCompany(firestore, arrayUnion, companyId, id);
|
571
|
-
for (let i = 0; i < actions.length; i++) {
|
572
|
-
await Action.addUserIdInAction(
|
573
|
-
firestore,
|
574
|
-
arrayUnion,
|
575
|
-
actions[i],
|
576
|
-
companyId,
|
577
|
-
id
|
578
|
-
);
|
579
|
-
}
|
580
|
-
return actions;
|
581
|
-
}
|
582
|
-
|
583
|
-
static async getCompanyDocByCompanyId(
|
584
|
-
firestore: admin.firestore.Firestore,
|
585
|
-
companyId: string
|
586
|
-
) {
|
587
|
-
let companyDoc = await firestore
|
588
|
-
.collection("Companies")
|
589
|
-
.doc(companyId)
|
590
|
-
.get();
|
591
|
-
return companyDoc.data();
|
592
|
-
}
|
593
|
-
|
594
|
-
static async addUserIdinCompany(
|
595
|
-
firestore: admin.firestore.Firestore,
|
596
|
-
arrayUnion: any,
|
597
|
-
companyId: string,
|
598
|
-
userId: string
|
599
|
-
) {
|
600
|
-
await firestore
|
601
|
-
.collection("Companies")
|
602
|
-
.doc(companyId)
|
603
|
-
.update({
|
604
|
-
users: arrayUnion(userId),
|
605
|
-
});
|
606
|
-
}
|
607
|
-
|
608
|
-
static async getUsersListbyCompany(
|
609
|
-
firestore: admin.firestore.Firestore,
|
610
|
-
nickName: string
|
611
|
-
) {
|
612
|
-
let company_id = await Company.getCompanyIdbyNickname(firestore, nickName);
|
613
|
-
let snapshot = await firestore
|
614
|
-
.collection("Companies")
|
615
|
-
.doc(company_id)
|
616
|
-
.collection("Users")
|
617
|
-
.get();
|
618
|
-
if (snapshot.empty) {
|
619
|
-
return [];
|
620
|
-
}
|
621
|
-
let user_list: any[] = [];
|
622
|
-
snapshot.forEach((doc) => {
|
623
|
-
user_list.push(doc.data());
|
624
|
-
});
|
625
|
-
return user_list;
|
626
|
-
}
|
627
|
-
|
628
|
-
static async getCompanyIdbyNickname(
|
629
|
-
firestore: admin.firestore.Firestore,
|
630
|
-
nickName: string
|
631
|
-
) {
|
632
|
-
let company_details = await firestore
|
633
|
-
.collection("Companies")
|
634
|
-
.where("nickname", "==", nickName)
|
635
|
-
.get();
|
636
|
-
if (company_details.empty) {
|
637
|
-
return "Not found";
|
638
|
-
}
|
639
|
-
let company_id: string = "";
|
640
|
-
company_details.forEach((doc) => {
|
641
|
-
company_id = doc.data().id;
|
642
|
-
});
|
643
|
-
return company_id;
|
644
|
-
}
|
645
|
-
|
646
|
-
static async userIdbycompany(
|
647
|
-
firestore: admin.firestore.Firestore,
|
648
|
-
nickName: string
|
649
|
-
) {
|
650
|
-
let snapshot = await firestore
|
651
|
-
.collection("Companies")
|
652
|
-
.where("nickname", "==", nickName)
|
653
|
-
.select("users")
|
654
|
-
.get();
|
655
|
-
let usersId = snapshot.docs.map(async (doc) => doc.data().users);
|
656
|
-
return usersId[0];
|
657
|
-
}
|
658
|
-
|
659
|
-
static async getMangersList(
|
660
|
-
firestore: admin.firestore.Firestore,
|
661
|
-
nickName: string
|
662
|
-
) {
|
663
|
-
let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
|
664
|
-
let snapshot = await firestore
|
665
|
-
.collection("Companies")
|
666
|
-
.doc(companyId)
|
667
|
-
.collection("Users")
|
668
|
-
.get();
|
669
|
-
let set = new Set();
|
670
|
-
for (let element of snapshot.docs) {
|
671
|
-
if (element.data().reportingTo) {
|
672
|
-
for (let data of element.data().reportingTo) {
|
673
|
-
set.add(data);
|
674
|
-
}
|
675
|
-
}
|
676
|
-
}
|
677
|
-
return Array.from(set);
|
678
|
-
}
|
679
|
-
|
680
|
-
static async getTeamListOfManager(
|
681
|
-
firestore: admin.firestore.Firestore,
|
682
|
-
nickName: string,
|
683
|
-
phone: string
|
684
|
-
) {
|
685
|
-
let companyId = await Company.getCompanyIdByNickName(firestore, nickName);
|
686
|
-
let userId = await User.getUserIdByPhone(firestore, phone);
|
687
|
-
console.log(userId);
|
688
|
-
let usersRef = await firestore
|
689
|
-
.collection("Companies")
|
690
|
-
.doc(companyId)
|
691
|
-
.collection("Users")
|
692
|
-
.where("reportingTo", "array-contains", userId)
|
693
|
-
.get();
|
694
|
-
return usersRef.docs.map((doc) => {
|
695
|
-
return doc.data();
|
696
|
-
});
|
697
|
-
}
|
698
|
-
// static async updatephone(firestore:admin.firestore.Firestore,nickName:string,phone:string,updatenumber:string){
|
699
|
-
// let user_snapshot = await firestore.collection('Users').where('phone','==',phone).get()
|
700
|
-
// await user_snapshot.forEach((doc)=>{
|
701
|
-
// doc.ref.update({phone:updatenumber})
|
702
|
-
// })
|
703
|
-
// let snapshot = await firestore.collection('Licenses').where('user','==',phone).get()
|
704
|
-
// await snapshot.forEach((doc)=>{
|
705
|
-
// doc.ref.update({user:updatenumber})
|
706
|
-
// })
|
707
|
-
|
708
|
-
// let company_id = await Company.getCompanyIdbyNickname(firestore,nickName)
|
709
|
-
// let company_snapshot = await firestore.collection('Companies').doc(company_id).collection('Users').where('phone','==',phone).get()
|
710
|
-
// await company_snapshot.forEach((doc)=>{
|
711
|
-
// doc.ref.update({phone:updatenumber})
|
712
|
-
// })
|
713
|
-
// return "Updated successfully"
|
714
|
-
// }
|
715
|
-
|
716
|
-
async initByNickname(db: any, nickname: string) {
|
717
|
-
var d = await Company.getCompanyDocByNickName(db, nickname);
|
718
|
-
this.initViaSnapshotDoc(d);
|
719
|
-
}
|
720
|
-
|
721
|
-
initViaSnapshotDoc(doc: admin.firestore.DocumentData) {
|
722
|
-
var _data = doc;
|
723
|
-
|
724
|
-
this.id = _data.id;
|
725
|
-
this.nickname = _data.nickname;
|
726
|
-
this.name = _data.name;
|
727
|
-
this.description = _data.description;
|
728
|
-
this.users = _data.users;
|
729
|
-
this.image = _data.image;
|
730
|
-
this.endpoints = _data.endpoints;
|
731
|
-
|
732
|
-
//console.log(this.name)
|
733
|
-
}
|
734
|
-
|
735
|
-
// static async createUserbyPhone(auth:admin.auth.Auth,phoneNumber:string){
|
736
|
-
// let newUser = await auth.createUser({phoneNumber})
|
737
|
-
// return newUser
|
738
|
-
// }
|
739
|
-
|
740
|
-
static async testFB(fdb: admin.firestore.Firestore, s: string) {
|
741
|
-
const coRef = fdb.collection("Companies");
|
742
|
-
const snapshot = await coRef.where("nickname", "==", s).get();
|
743
|
-
if (snapshot.empty) {
|
744
|
-
throw "Nickname " + s + " not found";
|
745
|
-
} else {
|
746
|
-
let rdoc: any = snapshot.docs.map((doc) => doc.data());
|
747
|
-
console.log(typeof snapshot.docs.map((doc) => doc.data()));
|
748
|
-
return rdoc[0];
|
749
|
-
}
|
750
|
-
}
|
751
|
-
|
752
|
-
static async getUsers(
|
753
|
-
firestore: admin.firestore.Firestore,
|
754
|
-
nickname: string
|
755
|
-
) {
|
756
|
-
const snap = await firestore
|
757
|
-
.collection("Companies")
|
758
|
-
.where("nickname", "==", nickname)
|
759
|
-
.get();
|
760
|
-
const data = snap.docs.map((doc) => doc.data());
|
761
|
-
return { users: data[0].users, id: data[0].id };
|
762
|
-
}
|
763
|
-
|
764
|
-
static async getCompanyDocByNickName(
|
765
|
-
fdb: admin.firestore.Firestore,
|
766
|
-
nickname: string
|
767
|
-
): Promise<admin.firestore.DocumentData> {
|
768
|
-
const coRef = fdb.collection("Companies");
|
769
|
-
const snapshot = await coRef.where("nickname", "==", nickname).get();
|
770
|
-
snapshot.docs;
|
771
|
-
if (snapshot.empty) {
|
772
|
-
throw "Nickname " + nickname + " not found";
|
773
|
-
} else {
|
774
|
-
let rdoc: admin.firestore.DocumentData[] = snapshot.docs.map((doc) =>
|
775
|
-
doc.data()
|
776
|
-
);
|
777
|
-
return rdoc[0];
|
778
|
-
}
|
779
|
-
}
|
780
|
-
|
781
|
-
static async getCompaniesList(firestore: admin.firestore.Firestore) {
|
782
|
-
const companies = await firestore.collection("Companies").get();
|
783
|
-
const companiesList: any = [];
|
784
|
-
companies.forEach((doc) => {
|
785
|
-
companiesList.push({
|
786
|
-
label: doc.data().name,
|
787
|
-
id: doc.data().id,
|
788
|
-
});
|
789
|
-
});
|
790
|
-
return companiesList;
|
791
|
-
}
|
792
|
-
|
793
|
-
static async getActionDocByEventId(
|
794
|
-
firestore: admin.firestore.Firestore,
|
795
|
-
eventId: string,
|
796
|
-
companyId: string,
|
797
|
-
actionName: string
|
798
|
-
) {
|
799
|
-
const actionId = await Action.getActionId(firestore, companyId, actionName);
|
800
|
-
const docArr = await firestore
|
801
|
-
.collection("Companies")
|
802
|
-
.doc(companyId)
|
803
|
-
.collection("Actions")
|
804
|
-
.doc(actionId)
|
805
|
-
.collection(actionName)
|
806
|
-
.where("eventId", "==", eventId)
|
807
|
-
.get();
|
808
|
-
let requestDocArr = docArr.docs.map((doc) => {
|
809
|
-
return doc.data();
|
810
|
-
});
|
811
|
-
let requestDoc = requestDocArr.length ? requestDocArr[0] : null;
|
812
|
-
return requestDoc;
|
813
|
-
}
|
814
|
-
|
815
|
-
static async getActionDocByEnrollId(
|
816
|
-
firestore: admin.firestore.Firestore,
|
817
|
-
enrollId: string,
|
818
|
-
companyId: string,
|
819
|
-
actionId: string,
|
820
|
-
actionName: string,
|
821
|
-
) {
|
822
|
-
const docArr = await firestore
|
823
|
-
.collection("Companies")
|
824
|
-
.doc(companyId)
|
825
|
-
.collection("Actions")
|
826
|
-
.doc(actionId)
|
827
|
-
.collection(actionName)
|
828
|
-
.where('refId', '==', enrollId)
|
829
|
-
.orderBy("createdAt", "desc")
|
830
|
-
.limit(1)
|
831
|
-
.get();
|
832
|
-
let requestDocArr = docArr.docs.map((doc) => {
|
833
|
-
return doc.data();
|
834
|
-
});
|
835
|
-
let requestDoc = requestDocArr.length ? requestDocArr[0] : null;
|
836
|
-
return requestDoc;
|
837
|
-
}
|
838
|
-
|
839
|
-
static async getActionDocsByEventIdsForMpApproval(
|
840
|
-
firestore: admin.firestore.Firestore,
|
841
|
-
eventIds: string[],
|
842
|
-
companyId: string,
|
843
|
-
actionName: string
|
844
|
-
) {
|
845
|
-
const actionId = await Action.getActionId(firestore, companyId, actionName);
|
846
|
-
const docArr = await firestore
|
847
|
-
.collection("Companies")
|
848
|
-
.doc(companyId)
|
849
|
-
.collection("Actions")
|
850
|
-
.doc(actionId)
|
851
|
-
.collection(actionName)
|
852
|
-
.where("eventId", "in", eventIds)
|
853
|
-
.get();
|
854
|
-
let requestDocsArr: any[] = docArr.docs.map((doc) => {
|
855
|
-
return doc.data();
|
856
|
-
});
|
857
|
-
return requestDocsArr;
|
858
|
-
}
|
859
|
-
|
860
|
-
static async markActionDocAsProcessed(
|
861
|
-
firestore: admin.firestore.Firestore,
|
862
|
-
eventId: string,
|
863
|
-
companyId: string,
|
864
|
-
actionName: string
|
865
|
-
) {
|
866
|
-
const actionId = await Action.getActionId(firestore, companyId, actionName);
|
867
|
-
const docArr = await firestore
|
868
|
-
.collection("Companies")
|
869
|
-
.doc(companyId)
|
870
|
-
.collection("Actions")
|
871
|
-
.doc(actionId)
|
872
|
-
.collection(actionName)
|
873
|
-
.where("eventId", "==", eventId)
|
874
|
-
.get();
|
875
|
-
docArr.forEach((doc) => {
|
876
|
-
doc.ref.update({
|
877
|
-
isProcessed: true,
|
878
|
-
});
|
879
|
-
});
|
880
|
-
}
|
881
|
-
|
882
|
-
static async getActionInfo(
|
883
|
-
firestore: admin.firestore.Firestore,
|
884
|
-
companyId: string,
|
885
|
-
actionName: string
|
886
|
-
) {
|
887
|
-
const actionId = await Action.getActionId(firestore, companyId, actionName);
|
888
|
-
const actionInfoDoc = await firestore
|
889
|
-
.collection("Companies")
|
890
|
-
.doc(companyId)
|
891
|
-
.collection("Actions")
|
892
|
-
.doc(actionId)
|
893
|
-
.get();
|
894
|
-
const actionInfo = actionInfoDoc.data();
|
895
|
-
return actionInfo;
|
896
|
-
}
|
897
|
-
|
898
|
-
static async updateReportingTo(
|
899
|
-
firestore: admin.firestore.Firestore,
|
900
|
-
arrayUnion: any,
|
901
|
-
nickName: string,
|
902
|
-
userData: any
|
903
|
-
) {
|
904
|
-
let managersIdList: any = [];
|
905
|
-
let managersNameList: any = [];
|
906
|
-
let managersPhoneNo = userData.reportingToArr;
|
907
|
-
for (let manager of managersPhoneNo) {
|
908
|
-
let temp = await Company.getUserDetailsByPhone(
|
909
|
-
firestore,
|
910
|
-
nickName,
|
911
|
-
manager
|
912
|
-
);
|
913
|
-
managersIdList.push(temp[0].id);
|
914
|
-
managersNameList.push(temp[0].name);
|
915
|
-
}
|
916
|
-
let companyId = await Company.getCompanyIdByNickName(firestore, nickName);
|
917
|
-
let userSnapshot = await firestore
|
918
|
-
.collection("Companies")
|
919
|
-
.doc(companyId)
|
920
|
-
.collection("Users")
|
921
|
-
.where("phone", "==", userData.phone)
|
922
|
-
.get();
|
923
|
-
let userName = userSnapshot.docs.map((doc) => {
|
924
|
-
return doc.data().name;
|
925
|
-
});
|
926
|
-
userSnapshot.docs.map((doc) => {
|
927
|
-
doc.ref.update({
|
928
|
-
reportingTo: [],
|
929
|
-
});
|
930
|
-
doc.ref.update({
|
931
|
-
reportingTo: arrayUnion(...managersIdList),
|
932
|
-
managers: arrayUnion(...managersNameList),
|
933
|
-
});
|
934
|
-
});
|
935
|
-
return `${managersNameList} are managers of ${userName[0]} `;
|
936
|
-
}
|
937
|
-
|
938
|
-
/* static async getCompanyDocByPhone(phone) {
|
939
|
-
const coRef = db.collection("Companies");
|
940
|
-
var uDoc = await User.getUserDocByPhone(phone);
|
941
|
-
var uid = uDoc.id;
|
942
|
-
const snapshot = await coRef.where("users", "array-contains", uid).get();
|
943
|
-
if (snapshot.empty) {
|
944
|
-
throw "Nickname " + nickname + " not found";
|
945
|
-
} else {
|
946
|
-
var rdoc = [];
|
947
|
-
snapshot.forEach((doc) => {
|
948
|
-
//console.log(doc.id, "=>", doc.data());
|
949
|
-
rdoc.push(doc);
|
950
|
-
});
|
951
|
-
return rdoc;
|
952
|
-
}
|
953
|
-
}
|
954
|
-
|
955
|
-
static companyTemplate = {
|
956
|
-
id: "",
|
957
|
-
name: "",
|
958
|
-
nickname: "",
|
959
|
-
apiName: "",
|
960
|
-
description: "",
|
961
|
-
image: "",
|
962
|
-
users: [],
|
963
|
-
accessTKN: "",
|
964
|
-
apiId: "",
|
965
|
-
allowRefresh: "",
|
966
|
-
};
|
967
|
-
|
968
|
-
static async addCompany(companyMap) {
|
969
|
-
var companyRef = db.collection("Companies").doc();
|
970
|
-
companyMap.id = companyRef.id;
|
971
|
-
await companyRef.set({ ...companyMap });
|
972
|
-
} */
|
973
|
-
}
|
974
|
-
|
975
|
-
export { Company };
|