mobioffice-cli 0.2.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/{src/index.ts → lib/index.d.ts} +1 -45
  2. package/lib/models/Feed-Details-Screen.model.d.ts +6 -0
  3. package/lib/models/Feed-Details-Screen.model.js +27 -0
  4. package/lib/models/action.model.d.ts +58 -0
  5. package/lib/models/action.model.js +315 -0
  6. package/lib/models/actions/doffing.d.ts +6 -0
  7. package/lib/models/actions/doffing.js +64 -0
  8. package/lib/models/actions/folding.d.ts +7 -0
  9. package/lib/models/actions/folding.js +37 -0
  10. package/lib/models/attendance.model.d.ts +44 -0
  11. package/lib/models/attendance.model.js +446 -0
  12. package/lib/models/cicoPost.model.d.ts +9 -0
  13. package/lib/models/cicoPost.model.js +19 -0
  14. package/lib/models/company.model.d.ts +67 -0
  15. package/lib/models/company.model.js +725 -0
  16. package/lib/models/contact-us/resquest.model.d.ts +30 -0
  17. package/lib/models/contact-us/resquest.model.js +73 -0
  18. package/lib/models/crud/crud.d.ts +7 -0
  19. package/lib/models/crud/crud.js +27 -0
  20. package/lib/models/customCollection.model.d.ts +9 -0
  21. package/lib/models/customCollection.model.js +40 -0
  22. package/lib/models/customer/customer.model.d.ts +32 -0
  23. package/lib/models/customer/customer.model.js +62 -0
  24. package/lib/models/deviceChangeReq.d.ts +10 -0
  25. package/lib/models/deviceChangeReq.js +138 -0
  26. package/lib/models/dispatch.model.d.ts +14 -0
  27. package/lib/models/dispatch.model.js +93 -0
  28. package/lib/models/feed.models.d.ts +8 -0
  29. package/lib/models/feed.models.js +97 -0
  30. package/lib/models/geofence.model.d.ts +7 -0
  31. package/lib/models/geofence.model.js +61 -0
  32. package/lib/models/leaveApplicationPost.model.d.ts +12 -0
  33. package/lib/models/leaveApplicationPost.model.js +72 -0
  34. package/lib/models/license.model.d.ts +25 -0
  35. package/lib/models/license.model.js +198 -0
  36. package/lib/models/log.model.d.ts +6 -0
  37. package/{src/models/log.model.ts → lib/models/log.model.js} +11 -11
  38. package/lib/models/meeting.model.d.ts +11 -0
  39. package/lib/models/meeting.model.js +79 -0
  40. package/lib/models/meter.model.d.ts +18 -0
  41. package/lib/models/meter.model.js +54 -0
  42. package/lib/models/missingPunchPost.model.d.ts +15 -0
  43. package/lib/models/missingPunchPost.model.js +69 -0
  44. package/lib/models/offline.model.d.ts +70 -0
  45. package/lib/models/offline.model.js +831 -0
  46. package/lib/models/post.model.d.ts +38 -0
  47. package/lib/models/post.model.js +94 -0
  48. package/lib/models/printDetailsScreen.model.d.ts +6 -0
  49. package/lib/models/printDetailsScreen.model.js +27 -0
  50. package/lib/models/pushNotifications/pushNotification.model.d.ts +4 -0
  51. package/lib/models/pushNotifications/pushNotification.model.js +17 -0
  52. package/lib/models/report-actions.model.d.ts +26 -0
  53. package/lib/models/report-actions.model.js +56 -0
  54. package/lib/models/report-definition-details.model.d.ts +13 -0
  55. package/lib/models/report-definition-details.model.js +85 -0
  56. package/lib/models/report-definition.model.d.ts +23 -0
  57. package/lib/models/report-definition.model.js +26 -0
  58. package/lib/models/report-definitions-summary.model.d.ts +8 -0
  59. package/lib/models/report-definitions-summary.model.js +59 -0
  60. package/lib/models/report-detail-data.model.d.ts +46 -0
  61. package/lib/models/report-detail-data.model.js +49 -0
  62. package/lib/models/report-visibility.model.d.ts +7 -0
  63. package/lib/models/report-visibility.model.js +42 -0
  64. package/lib/models/report.model.d.ts +19 -0
  65. package/lib/models/report.model.js +138 -0
  66. package/lib/models/reportGenerator.model.d.ts +164 -0
  67. package/lib/models/reportGenerator.model.js +642 -0
  68. package/lib/models/response.model.d.ts +18 -0
  69. package/lib/models/response.model.js +30 -0
  70. package/lib/models/steps.factory.model.d.ts +172 -0
  71. package/lib/models/steps.factory.model.js +187 -0
  72. package/lib/models/storeGupShupLog.model.d.ts +6 -0
  73. package/lib/models/storeGupShupLog.model.js +51 -0
  74. package/lib/models/summary.model.d.ts +10 -0
  75. package/{src/models/summary.model.ts → lib/models/summary.model.js} +28 -27
  76. package/lib/models/tasks/sub-task-group.model.d.ts +42 -0
  77. package/lib/models/tasks/sub-task-group.model.js +154 -0
  78. package/lib/models/tasks/tags.model.d.ts +29 -0
  79. package/lib/models/tasks/tags.model.js +70 -0
  80. package/lib/models/tasks/task-group.model.d.ts +53 -0
  81. package/lib/models/tasks/task-group.model.js +156 -0
  82. package/lib/models/tasks/task.model.d.ts +163 -0
  83. package/lib/models/tasks/task.model.js +603 -0
  84. package/lib/models/tempCollection.model.d.ts +40 -0
  85. package/{src/models/tempCollection.model.ts → lib/models/tempCollection.model.js} +114 -130
  86. package/lib/models/user.model.d.ts +42 -0
  87. package/lib/models/user.model.js +272 -0
  88. package/lib/models/utility.model.d.ts +13 -0
  89. package/lib/models/utility.model.js +93 -0
  90. package/lib/models/visitorManagement/acknowledgement.model.d.ts +9 -0
  91. package/lib/models/visitorManagement/acknowledgement.model.js +55 -0
  92. package/lib/models/visitorManagement/invite.model.d.ts +32 -0
  93. package/lib/models/visitorManagement/invite.model.js +326 -0
  94. package/lib/models/visitorManagement/newIn.model.d.ts +19 -0
  95. package/lib/models/visitorManagement/newIn.model.js +67 -0
  96. package/lib/models/visitorManagement/selfServe.model.d.ts +13 -0
  97. package/lib/models/visitorManagement/selfServe.model.js +46 -0
  98. package/lib/models/worklogPost.model.d.ts +6 -0
  99. package/lib/models/worklogPost.model.js +9 -0
  100. package/lib/services/customer.d.ts +30 -0
  101. package/lib/services/customer.js +354 -0
  102. package/lib/services/meeting.d.ts +19 -0
  103. package/lib/services/meeting.js +109 -0
  104. package/package.json +4 -1
  105. package/.prettierrc +0 -4
  106. package/a.js +0 -3
  107. package/scripts/1.ts +0 -1300
  108. package/scripts/GCloudPubSub/pub-sub-config.json +0 -12
  109. package/scripts/GCloudPubSub/visitorAutoRejection.ts +0 -86
  110. package/scripts/actions/assignUsersFromOneActionToOther.ts +0 -64
  111. package/scripts/actions/assignUsersListToAction.ts +0 -81
  112. package/scripts/actions/getActionsListOfUser.ts +0 -42
  113. package/scripts/actions/getCompanyUserDetails.ts +0 -49
  114. package/scripts/actions/giveActionToUser.ts +0 -41
  115. package/scripts/actions/giveUsersToActivitySelector.ts +0 -56
  116. package/scripts/actions/groupActionsInActivitySelector.ts +0 -101
  117. package/scripts/actions/modifySummaryReportDB.ts +0 -42
  118. package/scripts/actions/setUrlToActionStep.ts +0 -18
  119. package/scripts/actions/syncMySqlAttendanceDBWithFirebase.ts +0 -93
  120. package/scripts/actions/syncMySqlMeetingsDBWithFirebase.ts +0 -103
  121. package/scripts/actions/test.ts +0 -29
  122. package/scripts/actions/transferFeedsOldIdToNew.ts +0 -40
  123. package/scripts/actions/transformUserIntoManager.ts +0 -89
  124. package/scripts/argvConfig.js +0 -9
  125. package/scripts/backUpData/testCode.ts +0 -131
  126. package/scripts/benaraScripts/addWorkAreaMap.ts +0 -46
  127. package/scripts/benaraScripts/add_customers.ts +0 -26
  128. package/scripts/benaraScripts/add_customers_contact.ts +0 -27
  129. package/scripts/benaraScripts/add_empty_work_area.ts +0 -17
  130. package/scripts/benaraScripts/assignManagers.ts +0 -35
  131. package/scripts/benaraScripts/changeCheckInFlag.ts +0 -45
  132. package/scripts/benaraScripts/createCustomerContactsList.ts +0 -170
  133. package/scripts/benaraScripts/createUserByDeletingOldUser.ts +0 -70
  134. package/scripts/benaraScripts/createUsersAreaMapCollection.ts +0 -23
  135. package/scripts/benaraScripts/createWorkAreaMap.ts +0 -24
  136. package/scripts/benaraScripts/mapWorkAreasToUsers.ts +0 -112
  137. package/scripts/companies_data.json +0 -2496
  138. package/scripts/create_or_update_users.ts +0 -31
  139. package/scripts/csvToJson/csvToJson.ts +0 -90
  140. package/scripts/csvToJson/users.json +0 -3896
  141. package/scripts/db.js +0 -27
  142. package/scripts/db.json +0 -13
  143. package/scripts/dbMySql.ts +0 -63
  144. package/scripts/delete_action_steps.ts +0 -11
  145. package/scripts/delete_user.ts +0 -71
  146. package/scripts/dev_companies_data.json +0 -613
  147. package/scripts/enroll.xlsx +0 -0
  148. package/scripts/export_users.ts +0 -72
  149. package/scripts/files/visitorManagementFiles/displayScreen.json +0 -70
  150. package/scripts/files/visitorManagementFiles/init_report_visibility.ts +0 -79
  151. package/scripts/firebaseConfig.js +0 -12
  152. package/scripts/firebaseDocs/deleteIncommingCollection.ts +0 -47
  153. package/scripts/firebaseDocs/updateDoc.ts +0 -43
  154. package/scripts/getActionDataIntoJSON/getActionData.ts +0 -68
  155. package/scripts/get_attendance_by_any_date.ts +0 -14
  156. package/scripts/get_attendance_by_month.ts +0 -12
  157. package/scripts/get_attendance_monthly_by_team.ts +0 -11
  158. package/scripts/get_daily_report.ts +0 -10
  159. package/scripts/get_mangers.ts +0 -13
  160. package/scripts/grant_user_license.ts +0 -18
  161. package/scripts/init_CustomCollection.ts +0 -16
  162. package/scripts/init_action_steps.ts +0 -28
  163. package/scripts/init_actions.ts +0 -31
  164. package/scripts/init_company.ts +0 -18
  165. package/scripts/init_customer_mysql.ts +0 -12
  166. package/scripts/init_feed.ts +0 -4
  167. package/scripts/init_feed_details_screen.ts +0 -14
  168. package/scripts/init_geofence.ts +0 -26
  169. package/scripts/init_print_details_screen.ts +0 -14
  170. package/scripts/init_report_actions.ts +0 -24
  171. package/scripts/init_report_definition_detail.ts +0 -26
  172. package/scripts/init_report_definition_summary.ts +0 -16
  173. package/scripts/init_report_visibility.ts +0 -46
  174. package/scripts/init_user_customcollection.ts +0 -16
  175. package/scripts/json/action.json +0 -21
  176. package/scripts/json/company.json +0 -24
  177. package/scripts/json/report-action.json +0 -13
  178. package/scripts/json/report-def-deet.json +0 -43
  179. package/scripts/json/resp.json +0 -784
  180. package/scripts/json/steps.json +0 -24
  181. package/scripts/json/test.ts +0 -49
  182. package/scripts/mysqlConfig.ts +0 -9
  183. package/scripts/revoke_or_extend_license.ts +0 -14
  184. package/scripts/stream.js +0 -4
  185. package/scripts/testing1.ts +0 -35
  186. package/scripts/update/doc.json +0 -20
  187. package/scripts/update/getDocByPath.ts +0 -34
  188. package/scripts/update/updateDocByPath.ts +0 -47
  189. package/scripts/update/updateUsersOfCompanies.ts +0 -58
  190. package/scripts/update_actions.ts +0 -19
  191. package/scripts/update_actions_steps.ts +0 -19
  192. package/scripts/update_company.ts +0 -19
  193. package/scripts/update_geofence.ts +0 -20
  194. package/scripts/update_managers.ts +0 -16
  195. package/scripts/visitorMgmt/createArea.ts +0 -68
  196. package/scripts/visitorMgmt/createArea.txt +0 -3
  197. package/scripts/visitorMgmt/createVisitorPathInstructionDocs.ts +0 -130
  198. package/scripts/visitorMgmt/createVisitorPathInstructionDocs.txt +0 -18
  199. package/scripts/visitorMgmt/encryptDateString.ts +0 -71
  200. package/scripts/visitorMgmt/makeHostsManagersOfEachOther.ts +0 -117
  201. package/scripts/whatsapp_gupshup/sendMessage.ts +0 -97
  202. package/src/models/Feed-Details-Screen.model.ts +0 -29
  203. package/src/models/action.model.ts +0 -355
  204. package/src/models/actions/doffing.ts +0 -71
  205. package/src/models/actions/folding.ts +0 -39
  206. package/src/models/attendance.model.ts +0 -615
  207. package/src/models/cicoPost.model.ts +0 -20
  208. package/src/models/company.model.ts +0 -975
  209. package/src/models/contact-us/resquest.model.ts +0 -87
  210. package/src/models/crud/crud.ts +0 -30
  211. package/src/models/customCollection.model.ts +0 -47
  212. package/src/models/customer/customer.model.ts +0 -85
  213. package/src/models/deviceChangeReq.ts +0 -150
  214. package/src/models/dispatch.model.ts +0 -99
  215. package/src/models/feed.models.ts +0 -104
  216. package/src/models/geofence.model.ts +0 -61
  217. package/src/models/leaveApplicationPost.model.ts +0 -79
  218. package/src/models/license.model.ts +0 -215
  219. package/src/models/meeting.model.ts +0 -80
  220. package/src/models/meter.model.ts +0 -62
  221. package/src/models/missingPunchPost.model.ts +0 -84
  222. package/src/models/offline.model.ts +0 -1133
  223. package/src/models/post.model.ts +0 -105
  224. package/src/models/printDetailsScreen.model.ts +0 -30
  225. package/src/models/pushNotifications/pushNotification.model.ts +0 -17
  226. package/src/models/report-actions.model.ts +0 -57
  227. package/src/models/report-definition-details.model.ts +0 -89
  228. package/src/models/report-definition.model.ts +0 -26
  229. package/src/models/report-definitions-summary.model.ts +0 -59
  230. package/src/models/report-detail-data.model.ts +0 -49
  231. package/src/models/report-visibility.model.ts +0 -44
  232. package/src/models/report.model.ts +0 -179
  233. package/src/models/reportGenerator.model.ts +0 -883
  234. package/src/models/response.model.ts +0 -31
  235. package/src/models/steps.factory.model.ts +0 -195
  236. package/src/models/storeGupShupLog.model.ts +0 -49
  237. package/src/models/tasks/sub-task-group.model.ts +0 -173
  238. package/src/models/tasks/tags.model.ts +0 -113
  239. package/src/models/tasks/task-group.model.ts +0 -172
  240. package/src/models/tasks/task.model.ts +0 -681
  241. package/src/models/user.model.ts +0 -319
  242. package/src/models/utility.model.ts +0 -100
  243. package/src/models/visitorManagement/acknowledgement.model.ts +0 -71
  244. package/src/models/visitorManagement/invite.model.ts +0 -406
  245. package/src/models/visitorManagement/newIn.model.ts +0 -82
  246. package/src/models/visitorManagement/selfServe.model.ts +0 -58
  247. package/src/models/worklogPost.model.ts +0 -8
  248. package/src/services/customer.ts +0 -382
  249. package/src/services/meeting.ts +0 -123
  250. package/test/1.ts +0 -13
  251. package/test/db.js +0 -19
  252. package/test/firebaseConfig.js +0 -1
  253. 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 };