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
@@ -0,0 +1,725 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Company = void 0;
4
+ const action_model_1 = require("./action.model");
5
+ const attendance_model_1 = require("./attendance.model");
6
+ const license_model_1 = require("./license.model");
7
+ const user_model_1 = require("./user.model");
8
+ class Company {
9
+ id = "";
10
+ nickname = "";
11
+ description = "";
12
+ image = "";
13
+ name = "";
14
+ users = [];
15
+ endpoints = [];
16
+ static async initCompany(firestore) {
17
+ firestore.collection("Companies");
18
+ }
19
+ static async getCompanyIdByNickName(firestore, nickName) {
20
+ const companyInfo = await firestore
21
+ .collection("Companies")
22
+ .where("nickname", "==", nickName)
23
+ .get();
24
+ let companyId = "";
25
+ companyInfo.docs.forEach((info) => {
26
+ companyId = info.data().id;
27
+ });
28
+ return companyId;
29
+ }
30
+ static async getOrCreateCompany(firestore, companyDetails) {
31
+ let company_snapshot = await firestore
32
+ .collection("Companies")
33
+ .where("nickname", "==", companyDetails.nickname)
34
+ .get();
35
+ if (company_snapshot.empty) {
36
+ let company = await Company.createCompany(firestore, companyDetails);
37
+ return company;
38
+ }
39
+ else {
40
+ let id = "";
41
+ company_snapshot.forEach((doc) => {
42
+ id = doc.data().id;
43
+ });
44
+ let companyData = await company_snapshot.docs.map((doc) => {
45
+ return doc.data();
46
+ });
47
+ return companyData;
48
+ }
49
+ }
50
+ static async createCompany(firestore, companyDetails) {
51
+ //companyDetails = await Company.convertCompanyDataType(companyDetails)
52
+ let docRef = firestore.collection("Companies").doc();
53
+ companyDetails.id = docRef.id;
54
+ await docRef.set(companyDetails);
55
+ return companyDetails;
56
+ }
57
+ static async convertCompanyDataType(companyDetails) {
58
+ if (companyDetails.names) {
59
+ let names = companyDetails.names.split("&");
60
+ let link = companyDetails.links.split("&");
61
+ let map = new Map();
62
+ for (let i = 0; i < names.length; i++) {
63
+ map.set(names[i], link[i]);
64
+ }
65
+ const obj = Object.fromEntries(map);
66
+ delete companyDetails.names;
67
+ delete companyDetails.links;
68
+ companyDetails.endpoints = obj;
69
+ }
70
+ else {
71
+ companyDetails.endpoints = {};
72
+ }
73
+ if (companyDetails.users) {
74
+ companyDetails.users = companyDetails.users.split("&");
75
+ }
76
+ else {
77
+ companyDetails.users = [];
78
+ }
79
+ if (companyDetails.e10xSupport) {
80
+ companyDetails.e10xSupport = companyDetails.e10xSupport == "true";
81
+ }
82
+ return companyDetails;
83
+ }
84
+ static async updateCompany(firestore, nickName, companyDoc) {
85
+ let snapshot = await firestore
86
+ .collection("Companies")
87
+ .where("nickname", "==", nickName)
88
+ .get();
89
+ if (snapshot.empty) {
90
+ return "Company doesn't exists";
91
+ }
92
+ else {
93
+ //companyDoc = await Company.convertCompanyDataType(companyDoc)
94
+ if (companyDoc.users) {
95
+ delete companyDoc.users;
96
+ }
97
+ let endpoints = snapshot.docs[0].data().endpoints;
98
+ Object.assign(companyDoc.endpoints, endpoints);
99
+ // console.log(companyDoc)
100
+ snapshot.docs[0].ref.update(companyDoc);
101
+ return "Updated successfully";
102
+ }
103
+ }
104
+ static async addUserIdsInsideCompanies(firestore, arrayUnion, nickName) {
105
+ let usersList = await Company.getUsersListbyCompany(firestore, nickName);
106
+ let userIds = [];
107
+ for (let user of usersList) {
108
+ userIds.push(user.id);
109
+ }
110
+ let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
111
+ await firestore
112
+ .collection("Companies")
113
+ .doc(companyId)
114
+ .update({
115
+ users: arrayUnion(...userIds),
116
+ });
117
+ }
118
+ static async checkIfUserExists(firestore, companyId, userId) {
119
+ let snapshot = await firestore
120
+ .collection("Companies")
121
+ .doc(companyId)
122
+ .collection("Users")
123
+ .where("id", "==", userId)
124
+ .get();
125
+ if (snapshot.empty) {
126
+ return null;
127
+ }
128
+ else {
129
+ return true;
130
+ }
131
+ }
132
+ static async intiActionsInCompany(firestore, companyId, actions) {
133
+ let document = firestore
134
+ .collection("Companies")
135
+ .doc(companyId)
136
+ .collection("Actions")
137
+ .doc();
138
+ await document.set({
139
+ id: document.id,
140
+ });
141
+ for (let element of actions) {
142
+ let docRef = firestore
143
+ .collection("Companies")
144
+ .doc(companyId)
145
+ .collection("Actions")
146
+ .doc();
147
+ let id = docRef.id;
148
+ let docs = { companyId: companyId, name: element, id: id, users: [] };
149
+ await docRef.set(docs);
150
+ }
151
+ return actions;
152
+ }
153
+ static async getUserDetailsByPhone(firestore, nickName, phoneNumber) {
154
+ let company_id = await Company.getCompanyIdbyNickname(firestore, nickName);
155
+ let snapshot = await firestore
156
+ .collection("Companies")
157
+ .doc(company_id)
158
+ .collection("Users")
159
+ .where("phone", "==", phoneNumber)
160
+ .get();
161
+ if (snapshot.empty) {
162
+ return "Not found";
163
+ }
164
+ let userDetails_arr = [];
165
+ snapshot.forEach((doc) => {
166
+ userDetails_arr.push(doc.data());
167
+ });
168
+ return userDetails_arr;
169
+ }
170
+ static async createOrUpdateUser(firestore, auth, arrayUnion, nickName, newDetails) {
171
+ console.log("nickName ===> ", nickName);
172
+ newDetails.phone = "+" + newDetails.phone;
173
+ newDetails.isFetchFaceVisible = true;
174
+ newDetails.devicesLimit = 1;
175
+ if (newDetails.birthDate) {
176
+ newDetails.birthDate = await license_model_1.License.convertDatetoTimestamp(newDetails.birthDate);
177
+ }
178
+ if (newDetails.reportingTo) {
179
+ let reportingTo = newDetails.reportingTo.split("&");
180
+ const managers = [];
181
+ let reportingtoIds = [];
182
+ for (let phone of reportingTo) {
183
+ console.log("phone ===> ", phone);
184
+ phone = "+" + phone;
185
+ let user_snapshot = await Company.getUserDetailsByPhone(firestore, nickName, phone);
186
+ console.log(user_snapshot);
187
+ user_snapshot.forEach((doc) => {
188
+ reportingtoIds.push(doc.id);
189
+ managers.push(doc.name);
190
+ });
191
+ }
192
+ newDetails.reportingTo = reportingtoIds;
193
+ newDetails.managers = managers;
194
+ }
195
+ if (newDetails.roles) {
196
+ let rolesList = [];
197
+ rolesList = newDetails.roles.split("&");
198
+ newDetails.roles = rolesList;
199
+ newDetails.internalRoles = rolesList;
200
+ newDetails.fatchBGLocation = false;
201
+ }
202
+ if (newDetails.userName && newDetails.password) {
203
+ newDetails['loginInfo'] = {
204
+ username: newDetails.userName,
205
+ password: newDetails.password
206
+ };
207
+ }
208
+ delete newDetails.userName;
209
+ delete newDetails.password;
210
+ let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
211
+ let snapshot = await firestore
212
+ .collection("Companies")
213
+ .doc(companyId)
214
+ .collection("Users")
215
+ .where("phone", "==", newDetails.oldPhoneNo ? newDetails.oldPhoneNo : newDetails.phone)
216
+ .get();
217
+ console.log(newDetails);
218
+ console.log(snapshot.empty);
219
+ //let userCollection = await Company.updateUserPhone(firestore,newDetails.uid,newDetails.phone)
220
+ delete newDetails.oldPhoneNo;
221
+ if (snapshot.empty) {
222
+ return await Company.createUser(firestore, auth, arrayUnion, companyId, newDetails);
223
+ }
224
+ else {
225
+ let userId = "";
226
+ let temp = newDetails.reportingTo;
227
+ if (newDetails.reportingTo.length) {
228
+ snapshot.forEach((doc) => {
229
+ doc.ref.update({
230
+ reportingTo: arrayUnion(...temp),
231
+ });
232
+ });
233
+ delete newDetails.reportingTo;
234
+ }
235
+ snapshot.forEach((doc) => {
236
+ userId = doc.data().id;
237
+ doc.ref.update(newDetails);
238
+ });
239
+ const userDetails = await firestore.collection('Users').doc(userId).get();
240
+ userDetails.ref.update({
241
+ phone: newDetails.phone
242
+ });
243
+ return { companyId: companyId, userId: userId, actions: [] };
244
+ }
245
+ }
246
+ static async createNewUser(firestore, auth, arrayUnion, nickName, newDetails) {
247
+ newDetails.phone = `+${newDetails.phone}`;
248
+ let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
249
+ let snapshot = await firestore
250
+ .collection("Companies")
251
+ .doc(companyId)
252
+ .collection("Users")
253
+ .where("phone", "==", newDetails.phone)
254
+ .get();
255
+ if (snapshot.empty) {
256
+ if (newDetails.birthDate) {
257
+ newDetails.birthDate = await license_model_1.License.convertDatetoTimestamp(newDetails.birthDate);
258
+ }
259
+ if (newDetails.reportingTo) {
260
+ await this.addReportingToInfoToDetails(firestore, newDetails, companyId);
261
+ }
262
+ console.log("newDetails", newDetails);
263
+ return await Company.createUser(firestore, auth, arrayUnion, companyId, newDetails);
264
+ }
265
+ else {
266
+ return {
267
+ data: snapshot.docs[0].data(),
268
+ message: "Phone number already used.",
269
+ };
270
+ }
271
+ }
272
+ static async updateUser(firestore, arrayUnion, nickName, newDetails) {
273
+ newDetails.phone = `+${newDetails.phone}`;
274
+ let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
275
+ let snapshot = await firestore
276
+ .collection("Companies")
277
+ .doc(companyId)
278
+ .collection("Users")
279
+ .where("phone", "==", newDetails.phone)
280
+ .get();
281
+ if (snapshot.empty) {
282
+ throw new Error("User doesn't exist, please check phone Number.");
283
+ }
284
+ if (newDetails.birthDate) {
285
+ newDetails.birthDate = await license_model_1.License.convertDatetoTimestamp(newDetails.birthDate);
286
+ }
287
+ if (newDetails.reportingTo) {
288
+ await this.addReportingToInfoToDetails(firestore, newDetails, companyId);
289
+ if (newDetails.reportingTo.length) {
290
+ snapshot.forEach((doc) => {
291
+ doc.ref.update({
292
+ reportingTo: arrayUnion(...newDetails.reportingTo),
293
+ managers: arrayUnion(...newDetails.managers),
294
+ });
295
+ });
296
+ delete newDetails.reportingTo;
297
+ delete newDetails.managers;
298
+ }
299
+ }
300
+ let userId = "";
301
+ await Promise.all(snapshot.docs.map(async (doc) => {
302
+ userId = doc.data().id;
303
+ await doc.ref.update(newDetails);
304
+ }));
305
+ const updatedUserDoc = await firestore
306
+ .collection("Companies")
307
+ .doc(companyId)
308
+ .collection("Users")
309
+ .where("phone", "==", newDetails.phone)
310
+ .get();
311
+ return updatedUserDoc.docs[0].data();
312
+ }
313
+ static async addReportingToInfoToDetails(firestore, newDetails, companyId) {
314
+ const managers = [];
315
+ let reportingToIds = [];
316
+ for (let phone of newDetails.reportingTo) {
317
+ phone = "+" + phone;
318
+ const userId = await user_model_1.User.getUserIdByPhone(firestore, phone);
319
+ let managerInfoDoc = await firestore
320
+ .collection("Companies")
321
+ .doc(companyId)
322
+ .collection("Users")
323
+ .doc(userId)
324
+ .get();
325
+ if (managerInfoDoc.exists) {
326
+ reportingToIds.push(managerInfoDoc.data().id);
327
+ managers.push(managerInfoDoc.data().name);
328
+ }
329
+ }
330
+ newDetails.reportingTo = reportingToIds;
331
+ newDetails.managers = managers;
332
+ }
333
+ static async getSubordinatesById(firestore, uid, cid) {
334
+ console.log("Path => ", `Companies/${cid}/Users`);
335
+ const companyUsers = await firestore
336
+ .collection(`Companies/${cid}/Users`)
337
+ .get();
338
+ const userDocs = companyUsers.docs.map((doc) => doc.data());
339
+ // console.log("UserDocs => ", userDocs);
340
+ const filteredUsers = userDocs.filter((user) => user["reportingTo"].includes(uid));
341
+ // console.log("filteredUsers => ", filteredUsers);
342
+ console.log("filteredUsers => ", filteredUsers.length);
343
+ const phones = [];
344
+ for (var user of filteredUsers) {
345
+ phones.push(user["phone"]);
346
+ }
347
+ console.log("phones => ", phones);
348
+ return phones;
349
+ }
350
+ static async updateUserPhone(firestore, uid, phone) {
351
+ let snapshot = await firestore
352
+ .collection("Users")
353
+ .where("id", "==", uid)
354
+ .get();
355
+ if (snapshot.empty) {
356
+ return null;
357
+ }
358
+ snapshot.forEach((doc) => {
359
+ doc.ref.update({ phone });
360
+ });
361
+ return true;
362
+ }
363
+ static async convertUserDataType(data) {
364
+ if (data.managers) {
365
+ data.managers = data.managers.split("&");
366
+ }
367
+ else {
368
+ data.managers = [];
369
+ }
370
+ if (data.roles) {
371
+ data.roles = data.roles.split("&");
372
+ }
373
+ else {
374
+ data.roles = [];
375
+ }
376
+ return data;
377
+ }
378
+ static async createUser(firestore, auth, arrayUnion, companyId, newDetails) {
379
+ if (!newDetails.reportingTo) {
380
+ newDetails.reportingTo = [];
381
+ }
382
+ let actionsList = [];
383
+ if (newDetails.actions) {
384
+ actionsList = newDetails.actions;
385
+ actionsList = newDetails.actions.split("&");
386
+ // -------------------------------------
387
+ // uncomment the above line while
388
+ // creating users through create_or_update_users script.
389
+ delete newDetails.actions;
390
+ }
391
+ else {
392
+ return "Please provide actions";
393
+ }
394
+ //newDetails = await Company.convertUserDataType(newDetails)
395
+ if (!newDetails.birthDate) {
396
+ let currectDate = await attendance_model_1.Attendance.getCurrentdate();
397
+ newDetails.birthDate = currectDate.replace(/\//g, "-");
398
+ newDetails.birthDate = await license_model_1.License.convertDatetoTimestamp(newDetails.birthDate);
399
+ }
400
+ let userExits = await auth.listUsers();
401
+ let flagForUser = false;
402
+ let uid = "";
403
+ if (userExits) {
404
+ let userList = userExits.users;
405
+ for (let element of userList) {
406
+ if (element.phoneNumber == newDetails.phone) {
407
+ flagForUser = true;
408
+ uid = element.uid;
409
+ }
410
+ }
411
+ }
412
+ console.log(newDetails);
413
+ console.log("flagForUser", flagForUser);
414
+ if (flagForUser) {
415
+ await Object.assign(newDetails, { id: uid });
416
+ await firestore
417
+ .collection("Companies")
418
+ .doc(companyId)
419
+ .collection("Users")
420
+ .doc(uid)
421
+ .set(newDetails);
422
+ console.log("user Created in company");
423
+ }
424
+ else {
425
+ let newUser = await auth.createUser({ phoneNumber: newDetails.phone });
426
+ uid = newUser.uid;
427
+ await Object.assign(newDetails, { id: newUser.uid }, { fcmToken: null });
428
+ await firestore
429
+ .collection("Companies")
430
+ .doc(companyId)
431
+ .collection("Users")
432
+ .doc(newUser.uid)
433
+ .set(newDetails);
434
+ await firestore
435
+ .collection("Users")
436
+ .doc(newUser.uid)
437
+ .set({ id: newUser.uid, phone: newDetails.phone });
438
+ console.log("user created in both places");
439
+ }
440
+ let actions = await Company.addUserId(firestore, arrayUnion, companyId, uid, actionsList);
441
+ if (actions.length) {
442
+ return { companyId: companyId, userId: uid, actions: actions };
443
+ }
444
+ else {
445
+ return "error occured when adding userId in users array";
446
+ }
447
+ }
448
+ static async addUserId(firestore, arrayUnion, companyId, id, actions) {
449
+ console.log(id);
450
+ await Company.addUserIdinCompany(firestore, arrayUnion, companyId, id);
451
+ for (let i = 0; i < actions.length; i++) {
452
+ await action_model_1.Action.addUserIdInAction(firestore, arrayUnion, actions[i], companyId, id);
453
+ }
454
+ return actions;
455
+ }
456
+ static async getCompanyDocByCompanyId(firestore, companyId) {
457
+ let companyDoc = await firestore
458
+ .collection("Companies")
459
+ .doc(companyId)
460
+ .get();
461
+ return companyDoc.data();
462
+ }
463
+ static async addUserIdinCompany(firestore, arrayUnion, companyId, userId) {
464
+ await firestore
465
+ .collection("Companies")
466
+ .doc(companyId)
467
+ .update({
468
+ users: arrayUnion(userId),
469
+ });
470
+ }
471
+ static async getUsersListbyCompany(firestore, nickName) {
472
+ let company_id = await Company.getCompanyIdbyNickname(firestore, nickName);
473
+ let snapshot = await firestore
474
+ .collection("Companies")
475
+ .doc(company_id)
476
+ .collection("Users")
477
+ .get();
478
+ if (snapshot.empty) {
479
+ return [];
480
+ }
481
+ let user_list = [];
482
+ snapshot.forEach((doc) => {
483
+ user_list.push(doc.data());
484
+ });
485
+ return user_list;
486
+ }
487
+ static async getCompanyIdbyNickname(firestore, nickName) {
488
+ let company_details = await firestore
489
+ .collection("Companies")
490
+ .where("nickname", "==", nickName)
491
+ .get();
492
+ if (company_details.empty) {
493
+ return "Not found";
494
+ }
495
+ let company_id = "";
496
+ company_details.forEach((doc) => {
497
+ company_id = doc.data().id;
498
+ });
499
+ return company_id;
500
+ }
501
+ static async userIdbycompany(firestore, nickName) {
502
+ let snapshot = await firestore
503
+ .collection("Companies")
504
+ .where("nickname", "==", nickName)
505
+ .select("users")
506
+ .get();
507
+ let usersId = snapshot.docs.map(async (doc) => doc.data().users);
508
+ return usersId[0];
509
+ }
510
+ static async getMangersList(firestore, nickName) {
511
+ let companyId = await Company.getCompanyIdbyNickname(firestore, nickName);
512
+ let snapshot = await firestore
513
+ .collection("Companies")
514
+ .doc(companyId)
515
+ .collection("Users")
516
+ .get();
517
+ let set = new Set();
518
+ for (let element of snapshot.docs) {
519
+ if (element.data().reportingTo) {
520
+ for (let data of element.data().reportingTo) {
521
+ set.add(data);
522
+ }
523
+ }
524
+ }
525
+ return Array.from(set);
526
+ }
527
+ static async getTeamListOfManager(firestore, nickName, phone) {
528
+ let companyId = await Company.getCompanyIdByNickName(firestore, nickName);
529
+ let userId = await user_model_1.User.getUserIdByPhone(firestore, phone);
530
+ console.log(userId);
531
+ let usersRef = await firestore
532
+ .collection("Companies")
533
+ .doc(companyId)
534
+ .collection("Users")
535
+ .where("reportingTo", "array-contains", userId)
536
+ .get();
537
+ return usersRef.docs.map((doc) => {
538
+ return doc.data();
539
+ });
540
+ }
541
+ // static async updatephone(firestore:admin.firestore.Firestore,nickName:string,phone:string,updatenumber:string){
542
+ // let user_snapshot = await firestore.collection('Users').where('phone','==',phone).get()
543
+ // await user_snapshot.forEach((doc)=>{
544
+ // doc.ref.update({phone:updatenumber})
545
+ // })
546
+ // let snapshot = await firestore.collection('Licenses').where('user','==',phone).get()
547
+ // await snapshot.forEach((doc)=>{
548
+ // doc.ref.update({user:updatenumber})
549
+ // })
550
+ // let company_id = await Company.getCompanyIdbyNickname(firestore,nickName)
551
+ // let company_snapshot = await firestore.collection('Companies').doc(company_id).collection('Users').where('phone','==',phone).get()
552
+ // await company_snapshot.forEach((doc)=>{
553
+ // doc.ref.update({phone:updatenumber})
554
+ // })
555
+ // return "Updated successfully"
556
+ // }
557
+ async initByNickname(db, nickname) {
558
+ var d = await Company.getCompanyDocByNickName(db, nickname);
559
+ this.initViaSnapshotDoc(d);
560
+ }
561
+ initViaSnapshotDoc(doc) {
562
+ var _data = doc;
563
+ this.id = _data.id;
564
+ this.nickname = _data.nickname;
565
+ this.name = _data.name;
566
+ this.description = _data.description;
567
+ this.users = _data.users;
568
+ this.image = _data.image;
569
+ this.endpoints = _data.endpoints;
570
+ //console.log(this.name)
571
+ }
572
+ // static async createUserbyPhone(auth:admin.auth.Auth,phoneNumber:string){
573
+ // let newUser = await auth.createUser({phoneNumber})
574
+ // return newUser
575
+ // }
576
+ static async testFB(fdb, s) {
577
+ const coRef = fdb.collection("Companies");
578
+ const snapshot = await coRef.where("nickname", "==", s).get();
579
+ if (snapshot.empty) {
580
+ throw "Nickname " + s + " not found";
581
+ }
582
+ else {
583
+ let rdoc = snapshot.docs.map((doc) => doc.data());
584
+ console.log(typeof snapshot.docs.map((doc) => doc.data()));
585
+ return rdoc[0];
586
+ }
587
+ }
588
+ static async getUsers(firestore, nickname) {
589
+ const snap = await firestore
590
+ .collection("Companies")
591
+ .where("nickname", "==", nickname)
592
+ .get();
593
+ const data = snap.docs.map((doc) => doc.data());
594
+ return { users: data[0].users, id: data[0].id };
595
+ }
596
+ static async getCompanyDocByNickName(fdb, nickname) {
597
+ const coRef = fdb.collection("Companies");
598
+ const snapshot = await coRef.where("nickname", "==", nickname).get();
599
+ snapshot.docs;
600
+ if (snapshot.empty) {
601
+ throw "Nickname " + nickname + " not found";
602
+ }
603
+ else {
604
+ let rdoc = snapshot.docs.map((doc) => doc.data());
605
+ return rdoc[0];
606
+ }
607
+ }
608
+ static async getCompaniesList(firestore) {
609
+ const companies = await firestore.collection("Companies").get();
610
+ const companiesList = [];
611
+ companies.forEach((doc) => {
612
+ companiesList.push({
613
+ label: doc.data().name,
614
+ id: doc.data().id,
615
+ });
616
+ });
617
+ return companiesList;
618
+ }
619
+ static async getActionDocByEventId(firestore, eventId, companyId, actionName) {
620
+ const actionId = await action_model_1.Action.getActionId(firestore, companyId, actionName);
621
+ const docArr = await firestore
622
+ .collection("Companies")
623
+ .doc(companyId)
624
+ .collection("Actions")
625
+ .doc(actionId)
626
+ .collection(actionName)
627
+ .where("eventId", "==", eventId)
628
+ .get();
629
+ let requestDocArr = docArr.docs.map((doc) => {
630
+ return doc.data();
631
+ });
632
+ let requestDoc = requestDocArr.length ? requestDocArr[0] : null;
633
+ return requestDoc;
634
+ }
635
+ static async getActionDocByEnrollId(firestore, enrollId, companyId, actionId, actionName) {
636
+ const docArr = await firestore
637
+ .collection("Companies")
638
+ .doc(companyId)
639
+ .collection("Actions")
640
+ .doc(actionId)
641
+ .collection(actionName)
642
+ .where('refId', '==', enrollId)
643
+ .orderBy("createdAt", "desc")
644
+ .limit(1)
645
+ .get();
646
+ let requestDocArr = docArr.docs.map((doc) => {
647
+ return doc.data();
648
+ });
649
+ let requestDoc = requestDocArr.length ? requestDocArr[0] : null;
650
+ return requestDoc;
651
+ }
652
+ static async getActionDocsByEventIdsForMpApproval(firestore, eventIds, companyId, actionName) {
653
+ const actionId = await action_model_1.Action.getActionId(firestore, companyId, actionName);
654
+ const docArr = await firestore
655
+ .collection("Companies")
656
+ .doc(companyId)
657
+ .collection("Actions")
658
+ .doc(actionId)
659
+ .collection(actionName)
660
+ .where("eventId", "in", eventIds)
661
+ .get();
662
+ let requestDocsArr = docArr.docs.map((doc) => {
663
+ return doc.data();
664
+ });
665
+ return requestDocsArr;
666
+ }
667
+ static async markActionDocAsProcessed(firestore, eventId, companyId, actionName) {
668
+ const actionId = await action_model_1.Action.getActionId(firestore, companyId, actionName);
669
+ const docArr = await firestore
670
+ .collection("Companies")
671
+ .doc(companyId)
672
+ .collection("Actions")
673
+ .doc(actionId)
674
+ .collection(actionName)
675
+ .where("eventId", "==", eventId)
676
+ .get();
677
+ docArr.forEach((doc) => {
678
+ doc.ref.update({
679
+ isProcessed: true,
680
+ });
681
+ });
682
+ }
683
+ static async getActionInfo(firestore, companyId, actionName) {
684
+ const actionId = await action_model_1.Action.getActionId(firestore, companyId, actionName);
685
+ const actionInfoDoc = await firestore
686
+ .collection("Companies")
687
+ .doc(companyId)
688
+ .collection("Actions")
689
+ .doc(actionId)
690
+ .get();
691
+ const actionInfo = actionInfoDoc.data();
692
+ return actionInfo;
693
+ }
694
+ static async updateReportingTo(firestore, arrayUnion, nickName, userData) {
695
+ let managersIdList = [];
696
+ let managersNameList = [];
697
+ let managersPhoneNo = userData.reportingToArr;
698
+ for (let manager of managersPhoneNo) {
699
+ let temp = await Company.getUserDetailsByPhone(firestore, nickName, manager);
700
+ managersIdList.push(temp[0].id);
701
+ managersNameList.push(temp[0].name);
702
+ }
703
+ let companyId = await Company.getCompanyIdByNickName(firestore, nickName);
704
+ let userSnapshot = await firestore
705
+ .collection("Companies")
706
+ .doc(companyId)
707
+ .collection("Users")
708
+ .where("phone", "==", userData.phone)
709
+ .get();
710
+ let userName = userSnapshot.docs.map((doc) => {
711
+ return doc.data().name;
712
+ });
713
+ userSnapshot.docs.map((doc) => {
714
+ doc.ref.update({
715
+ reportingTo: [],
716
+ });
717
+ doc.ref.update({
718
+ reportingTo: arrayUnion(...managersIdList),
719
+ managers: arrayUnion(...managersNameList),
720
+ });
721
+ });
722
+ return `${managersNameList} are managers of ${userName[0]} `;
723
+ }
724
+ }
725
+ exports.Company = Company;