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.
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,1133 +0,0 @@
1
- import * as admin from "firebase-admin";
2
- import { MissingPunch } from "./missingPunchPost.model";
3
- import { User } from "./user.model";
4
- import { Attendance } from "./attendance.model";
5
- import { PushNotifications } from "./pushNotifications/pushNotification.model";
6
- import { CheckInCheckOutPost } from "./cicoPost.model";
7
- import { WorklogPost } from "./worklogPost.model";
8
- import { Summary } from "./summary.model";
9
- import { Post } from "./post.model";
10
- import * as qr from "qr-image";
11
- import { Action } from "./action.model";
12
- import { Utilities } from "./utility.model";
13
- import { Company } from "./company.model";
14
-
15
- interface FaceInfo {
16
- faceJpg: string;
17
- id: string;
18
- templates: string;
19
- }
20
- class Offline {
21
- static async deleteDocFromOfflineLocation(
22
- firestore: admin.firestore.Firestore,
23
- offlineLocationId: string
24
- ) {
25
- let snapshot = await firestore
26
- .collection("offline-location")
27
- .doc(offlineLocationId)
28
- .collection("location")
29
- .listDocuments();
30
- snapshot.forEach((doc) => {
31
- doc.delete();
32
- });
33
- return `${offlineLocationId} deleted successfully`;
34
- }
35
-
36
- static async OfflineLocationDocsbyDeviceId(
37
- firestore: admin.firestore.Firestore,
38
- offlineLocationId: string
39
- ) {
40
- let snapshot = await firestore
41
- .collection("offline-location")
42
- .doc(offlineLocationId)
43
- .collection("location")
44
- .get();
45
- let listOfDocs = await Promise.all(
46
- snapshot.docs.map(async (doc) => {
47
- return doc.data();
48
- })
49
- );
50
- return listOfDocs;
51
- }
52
-
53
- static async mpApprovalOffline(
54
- firestore: admin.firestore.Firestore,
55
- incomingCollectionDocId: string,
56
- missingPunchInfo: any,
57
- forApprovalText: any,
58
- format: any
59
- ) {
60
- try {
61
- let missingPunchDoc = new MissingPunch();
62
- missingPunchDoc = JSON.parse(JSON.stringify(missingPunchDoc));
63
- await this.setIncomingInfoToMissingPunchPost(
64
- missingPunchInfo,
65
- missingPunchDoc
66
- );
67
- let updatedDocForFeed = await this.createUpdatedDocForFeed(
68
- missingPunchDoc,
69
- forApprovalText,
70
- format
71
- );
72
- try {
73
- let userSnapshot = await this.createRefForUser(
74
- firestore,
75
- missingPunchDoc.companyId,
76
- missingPunchDoc.userId
77
- );
78
- await this.sendFeedToManagers(
79
- firestore,
80
- updatedDocForFeed.companyId,
81
- updatedDocForFeed.userId,
82
- updatedDocForFeed
83
- );
84
- updatedDocForFeed.id = userSnapshot.id;
85
- userSnapshot.set(updatedDocForFeed);
86
- } catch (e) {
87
- console.log("the error in updating the activity in approval is ", e);
88
- }
89
- await this.deleteInfoFromIncoming(firestore, incomingCollectionDocId);
90
- await this.updateFeedsTextForMissingPunch(
91
- firestore,
92
- forApprovalText,
93
- missingPunchDoc,
94
- missingPunchDoc.userId
95
- );
96
- const managersList = await this.getUserManagersList(
97
- firestore,
98
- missingPunchDoc.companyId,
99
- missingPunchDoc.userId
100
- );
101
- for (let managerId of managersList) {
102
- await this.updateFeedsTextForMissingPunch(
103
- firestore,
104
- forApprovalText,
105
- missingPunchDoc,
106
- managerId
107
- );
108
- }
109
- if (forApprovalText == "Approved") {
110
- console.log("inside Approved");
111
- if (
112
- missingPunchDoc.actionEvent == "1" ||
113
- missingPunchDoc.actionEvent == "2"
114
- ) {
115
- const cicoFetch = await firestore
116
- .collection("Companies")
117
- .doc(missingPunchDoc.companyId)
118
- .collection("Actions")
119
- .where("name", "==", "check_in_out")
120
- .get();
121
- const cicoData = cicoFetch.docs.map((doc) => doc.data());
122
- let docForCico = await this.createDocForCico(
123
- cicoData,
124
- missingPunchDoc
125
- );
126
- console.log("missing punch ", docForCico);
127
- await firestore
128
- .collection("Companies")
129
- .doc(missingPunchDoc.companyId)
130
- .collection("Actions")
131
- .doc(docForCico.actionId)
132
- .collection(docForCico.actionName)
133
- .doc(missingPunchDoc["eventId"])
134
- .set(docForCico);
135
- await Offline.changingCheckInCheckoutStatus(
136
- firestore,
137
- missingPunchDoc.actionEvent,
138
- missingPunchInfo.extra.startAt,
139
- missingPunchDoc.companyId,
140
- missingPunchDoc.userId
141
- );
142
- }
143
- }
144
- return "success";
145
- } catch (error) {
146
- console.log(error);
147
- return error;
148
- }
149
- }
150
-
151
- static async changingCheckInCheckoutStatus(
152
- firestore: admin.firestore.Firestore,
153
- actionEvent: string,
154
- logTime: number,
155
- companyId: string,
156
- userId: string
157
- ) {
158
- let today_date = await Attendance.getCurrentdate();
159
- let doc_date = new Date(logTime).toLocaleDateString();
160
- if (today_date == doc_date) {
161
- let check_in_out_status: boolean = false;
162
- if (actionEvent == "1") {
163
- check_in_out_status = true;
164
- }
165
- await firestore
166
- .collection("Companies")
167
- .doc(companyId)
168
- .collection("Users")
169
- .doc(userId)
170
- .update({ hasCheckedIn: check_in_out_status });
171
- }
172
- return;
173
- }
174
-
175
- static async updateFeedsTextForMissingPunch(
176
- firestore: admin.firestore.Firestore,
177
- forApprovalText: string,
178
- missingPunchDoc: any,
179
- userId: string
180
- ) {
181
- let rejectedsnapshot = await firestore
182
- .collection("Feeds")
183
- .doc(userId)
184
- .collection(missingPunchDoc.companyId)
185
- .where("eventId", "==", missingPunchDoc.eventId)
186
- .get();
187
- await Promise.all(
188
- rejectedsnapshot.docs.map(async (doc) => {
189
- doc.ref.update({ forApprovalText: forApprovalText });
190
- })
191
- );
192
- }
193
-
194
- static async createDocForCico(cicoData: any, missingPunchDoc: any) {
195
- let docForCico = JSON.parse(JSON.stringify(missingPunchDoc));
196
- docForCico.actionId = cicoData[0]["id"];
197
- docForCico.actionName = cicoData[0]["name"];
198
- docForCico.actionType = cicoData[0]["actionType"];
199
- docForCico.forApproval = null;
200
- docForCico.forApproval = false;
201
- docForCico.fromType = "missing punch";
202
- docForCico.eventId = missingPunchDoc["eventId"];
203
- if (missingPunchDoc.actionEvent == "2") {
204
- docForCico.endAt = missingPunchDoc.startAt;
205
- docForCico.endLat = missingPunchDoc.startLat;
206
- docForCico.endLong = missingPunchDoc.startLong;
207
- docForCico.startAt = null;
208
- docForCico.startLat = null;
209
- docForCico.startLong = null;
210
- }
211
- return docForCico;
212
- }
213
-
214
- static async getInfoForEduce(
215
- firestore: admin.firestore.Firestore,
216
- userId: string,
217
- entryOrExitTime: number,
218
- format: any
219
- ) {
220
- console.log(userId);
221
- var phoneNumber: string = await User.getUserPhonebyUserId(
222
- firestore,
223
- userId
224
- );
225
- phoneNumber = phoneNumber.replace("+", "");
226
- var dateEpoch = new Date(entryOrExitTime);
227
- var time = new Date(dateEpoch).toLocaleString("en-US", {
228
- timeZone: "Asia/Kolkata",
229
- hour12: false,
230
- });
231
-
232
- var checkInTime = time.split(" ")[1];
233
- var date = format(dateEpoch, "dd/MM/yy");
234
- return { checkInTime, date, phoneNumber };
235
- }
236
-
237
- static async createUpdatedDocForFeed(
238
- missingPunchDoc: any,
239
- forApprovalText: string,
240
- format: any
241
- ) {
242
- let updatedDocForFeed = JSON.parse(JSON.stringify(missingPunchDoc));
243
- updatedDocForFeed["forApproval"] = false;
244
- updatedDocForFeed["actionName"] = "worklog";
245
- updatedDocForFeed["description"] = `Your missing punch for ${
246
- updatedDocForFeed.actionEvent == "1" ? "Check In" : "Check Out"
247
- } on ${format(
248
- new Date(updatedDocForFeed.startAt),
249
- "dd/MM/yyyy"
250
- )} is ${forApprovalText}`;
251
- updatedDocForFeed["actionEvent"] = "";
252
- return updatedDocForFeed;
253
- }
254
-
255
- static async createNewPost(
256
- firestore: admin.firestore.Firestore,
257
- admin: any,
258
- storageRef: any,
259
- postInfo: any
260
- ) {
261
- console.log("inside createnewpost");
262
- console.log(postInfo.extra.startAt);
263
- try {
264
- let post = await this.determineTypeAndCreatePost(postInfo);
265
- let userRef = await Offline.createRefForUser(
266
- firestore,
267
- postInfo.companyId,
268
- postInfo.userId
269
- );
270
- console.log("created Ref for user");
271
- post.id = userRef.id;
272
- if (postInfo.extra.actionName == "mp") {
273
- console.log(postInfo.extra.startAt);
274
- await Offline.setIncomingInfoToMissingPunchPost(postInfo, post);
275
- console.log("____after setiting post");
276
- console.log(post);
277
- console.log("info set into missingPunch");
278
- } else if (postInfo.extra.actionName == "check_in_out") {
279
- await this.setIncomingInfoToPost(postInfo, post);
280
- const imageUrl = await this.uploadImg(
281
- storageRef,
282
- postInfo.extra.imgAsBase64,
283
- postInfo.extra.actionName,
284
- postInfo.extra.createdAt
285
- );
286
- if (imageUrl) {
287
- post.image = imageUrl;
288
- }
289
- console.log("checkInOut post created");
290
- } else if (postInfo.extra.actionName == "summary") {
291
- const planImageUrl = await this.uploadImg(
292
- storageRef,
293
- postInfo.extra.extraData.planImage,
294
- postInfo.extra.actionName,
295
- postInfo.extra.createdAt
296
- );
297
- const groupImageUrl = await this.uploadImg(
298
- storageRef,
299
- postInfo.extra.extraData.groupImage,
300
- postInfo.extra.actionName,
301
- postInfo.extra.createdAt + 1
302
- );
303
- const images = {
304
- planImage: planImageUrl,
305
- groupImage: groupImageUrl,
306
- };
307
- await Offline.setIncomingInfoToSummary(postInfo, post, images);
308
- post.startAt = "";
309
- console.log(post);
310
- console.log("summary post created");
311
- } else if (postInfo.extra.actionName == "worklog") {
312
- await Offline.setIncomingInfoToPost(postInfo, post);
313
- console.log("worklog post created");
314
- } else {
315
- return "undefined actionName";
316
- }
317
- const postToSave = JSON.parse(JSON.stringify(post));
318
- console.log(postToSave.startAt, "------before saving in company");
319
- let postEventId = await this.addDetailsToCompanyActions(
320
- firestore,
321
- postInfo.companyId,
322
- postInfo.extra.actionId,
323
- postToSave,
324
- postInfo.actionName
325
- );
326
- postToSave.eventId = postEventId;
327
- await userRef.set(postToSave);
328
- console.log("post sent to user feed");
329
- await this.sendFeedToManagers(
330
- firestore,
331
- postInfo.companyId,
332
- postInfo.userId,
333
- postToSave
334
- );
335
- if (postInfo.extra.actionName == "mp") {
336
- const userName = await Offline.getUserNameFromId(
337
- firestore,
338
- postInfo.companyId,
339
- postInfo.userId
340
- );
341
- const message = {
342
- notification: {
343
- title: "Missing Punch Request",
344
- body: `MP request from ${userName}`,
345
- },
346
- };
347
- await this.sendNotificationsToManagers(
348
- firestore,
349
- admin,
350
- postInfo.companyId,
351
- postInfo.userId,
352
- message
353
- );
354
- }
355
-
356
- console.log("post sent to managers' feed", postToSave.startAt);
357
- await this.deleteInfoFromIncoming(firestore, postInfo.id);
358
- console.log("document deleted from incoming");
359
- return "Success";
360
- } catch (error) {
361
- await firestore.collection("Incoming").doc(postInfo.id).update({
362
- message: "Error",
363
- errorDetail: error,
364
- errorId: "err101",
365
- });
366
- console.log(error);
367
- return error;
368
- }
369
- }
370
-
371
- static async sendFeedToManagers(
372
- firestore: admin.firestore.Firestore,
373
- companyId: string,
374
- userId: string,
375
- postToSave: any
376
- ) {
377
- let managersList = await this.getUserManagersList(
378
- firestore,
379
- companyId,
380
- userId
381
- );
382
- for (let manager of managersList) {
383
- let managerRef = await Offline.createRefForUser(
384
- firestore,
385
- companyId,
386
- manager
387
- );
388
- postToSave.id = managerRef.id;
389
- managerRef.set(postToSave);
390
- }
391
- }
392
-
393
- static async sendNotificationsToManagers(
394
- firestore: admin.firestore.Firestore,
395
- admin: any,
396
- companyId: string,
397
- userId: string,
398
- message: any
399
- ) {
400
- const managersList = await this.getUserManagersList(
401
- firestore,
402
- companyId,
403
- userId
404
- );
405
- const managersPhoneList = await this.getUsersPhonesListFromIds(
406
- firestore,
407
- managersList
408
- );
409
- const userName = await this.getUserNameFromId(firestore, companyId, userId);
410
- if (!userName) throw new Error("user not found");
411
- if (managersPhoneList.length > 0) {
412
- let fcmTokens = await this.getFCMTokensFromPhonesList(
413
- firestore,
414
- managersPhoneList
415
- );
416
- if (fcmTokens.length) {
417
- fcmTokens = fcmTokens.filter((token) => (token ? true : false));
418
- console.log("sending", message);
419
- await PushNotifications.sendPushNotification(admin, fcmTokens, message);
420
- console.log(fcmTokens);
421
- } else {
422
- return new Error("FCM Tokens Not Found");
423
- }
424
- }
425
- }
426
-
427
- static async getUserNameFromId(
428
- firestore: admin.firestore.Firestore,
429
- companyId: string,
430
- userId: string
431
- ) {
432
- const userDoc_snapshot: any = await firestore
433
- .collection("Companies")
434
- .doc(companyId)
435
- .collection("Users")
436
- .doc(userId)
437
- .get();
438
- if (userDoc_snapshot.exists) {
439
- return userDoc_snapshot.data().name;
440
- } else {
441
- return null;
442
- }
443
- }
444
-
445
- static async getFCMTokensFromPhonesList(
446
- firestore: admin.firestore.Firestore,
447
- phoneList: string[]
448
- ) {
449
- const userDocs = await firestore
450
- .collection("Users")
451
- .where("phone", "in", phoneList)
452
- .get();
453
- let fcmTokens;
454
- try {
455
- fcmTokens = userDocs.docs.map((doc) => {
456
- if (!doc.data().fcmToken) {
457
- console.log("fcmToken not found for", doc.data().name);
458
- }
459
- return doc.data().fcmToken;
460
- });
461
- fcmTokens = fcmTokens.filter((token) => Boolean(token));
462
- return fcmTokens;
463
- } catch (e) {
464
- console.log("returned empty array");
465
- return [];
466
- }
467
- }
468
-
469
- static async getUsersPhonesListFromIds(
470
- firestore: admin.firestore.Firestore,
471
- idsList: string[]
472
- ) {
473
- const phonesList: string[] = [];
474
- for (let userId of idsList) {
475
- let phone = await User.getUserPhonebyUserId(firestore, userId);
476
- phonesList.push(phone);
477
- }
478
- return phonesList;
479
- }
480
-
481
- static async getUserManagersList(
482
- firestore: admin.firestore.Firestore,
483
- companyId: string,
484
- userId: string
485
- ) {
486
- let usersList_Snapshot = await firestore
487
- .collection("Companies")
488
- .doc(companyId)
489
- .collection("Users")
490
- .where("id", "==", userId)
491
- .get();
492
- let managersList = usersList_Snapshot.docs[0].data().reportingTo;
493
- managersList = managersList ? managersList : [];
494
- return managersList;
495
- }
496
-
497
- static async determineTypeAndCreatePost(postInfo: any) {
498
- if (postInfo.extra.actionName == "mp") {
499
- return new MissingPunch();
500
- } else if (postInfo.extra.actionName == "check_in_out") {
501
- return new CheckInCheckOutPost();
502
- } else if (postInfo.extra.actionName == "worklog") {
503
- return new WorklogPost();
504
- } else if (postInfo.extra.actionName == "summary") {
505
- return new Summary();
506
- } else {
507
- return new Post();
508
- }
509
- }
510
-
511
- static async addDetailsToCompanyActions(
512
- firestore: admin.firestore.Firestore,
513
- companyId: string,
514
- actionId: string,
515
- doc: any,
516
- actionName: string
517
- ) {
518
- let snapshot = await firestore
519
- .collection("Companies")
520
- .doc(companyId)
521
- .collection("Actions")
522
- .doc(actionId)
523
- .collection(actionName)
524
- .doc();
525
- doc.eventId = snapshot.id;
526
- await snapshot.set(doc);
527
- return snapshot.id;
528
- }
529
-
530
- static async deleteInfoFromIncoming(
531
- firestore: admin.firestore.Firestore,
532
- docId: string
533
- ) {
534
- await firestore.collection("Incoming").doc(docId).delete();
535
- }
536
-
537
- static async setIncomingInfoToMissingPunchPost(
538
- info: any,
539
- post: MissingPunch
540
- ) {
541
- post.actionEvent = info.extra.actionEvent;
542
- post.actionId = info.extra.actionId;
543
- post.actionName = info.extra.actionName;
544
- post.actionType = info.extra.actionType;
545
- post.companyId = info.extra.companyId;
546
- post.createdAt = info.extra.createdAt;
547
- post.description = `Missing punch for ${
548
- info.extra.extraData.eventTypeId == "1" ? "Check In" : "Check Out"
549
- } at ${await Utilities.getTimeFromEpoch(info.extra.startAt)} on ${info.extra.extraData.date} has been filed.`;
550
- post.eventId = info.extra.eventId;
551
- post.isGeofence = info.extra.isGeofence;
552
- post.userId = info.userId;
553
- const newExtraData = await this.modifyExtraDataForMp(info);
554
- post.extraData = newExtraData;
555
- post.forApproval = info.extra.forApproval;
556
- post.forApprovalText = info.extra.forApprovalText;
557
- post.object = info.extra.startAt ?? "object";
558
- post.seen = info.extra.seen;
559
- post.startAt = info.extra.startAt;
560
- post.startLat = info.extra.startLat;
561
- post.startLong = info.extra.startLong;
562
- post.endAt = "";
563
- post.endLat = "";
564
- post.endLong = "";
565
- post.stepValues = info.extra.stepValues;
566
- post.target = info.target || "";
567
- post.time = info.extra.time;
568
- post.checkInternet = info.extra.checkInternet;
569
- post.missedEvent = info.missedEvent;
570
- return post;
571
- }
572
-
573
- static async modifyExtraDataForMp(info: any) {
574
- const time = info.extra.startAt;
575
- const date = info.extra.extraData.date;
576
- const newExtraData = {
577
- ...info.extra.extraData,
578
- eventType: info.extra.extraData.eventTypeId == "1" ? "Check In" : "Check Out",
579
- date: date,
580
- time: time,
581
- };
582
- return newExtraData;
583
- }
584
-
585
- static async setIncomingInfoToWorkLogPost(info: any, post: any) {
586
- post.actionEvent = info.extra.actionEvent;
587
- post.actionId = info.extra.actionId;
588
- post.companyId = info.extra.companyId;
589
- post.createdAt = info.extra.createdAt;
590
- post.description = info.extra.extraData.description;
591
- post.eventId = info.extra.eventId;
592
- post.isGeofence = info.extra.isGeofence;
593
- post.userId = info.userId;
594
- const newExtraData = await this.modifyExtraDataForWorkLog(info);
595
- post.extraData = newExtraData;
596
- post.object = info.extra.startAt ?? "object";
597
- post.origin = `${info.userId}--${info.companyId}--${info.actionName}`;
598
- post.seen = info.extra.seen;
599
- post.startAt = info.extra.startAt;
600
- post.startLat = info.extra.startLat;
601
- post.startLong = info.extra.startLong;
602
- post.endAt = info.extra.endAt;
603
- post.endLat = info.extra.endLat;
604
- post.endLong = info.extra.endLong;
605
- post.stepValues = info.extra.stepValues;
606
- post.target = info.target || "";
607
- post.time = info.extra.time;
608
- post.checkInternet = info.extra.checkInternet;
609
- return post;
610
- }
611
-
612
- static async modifyExtraDataForWorkLog(info: any) {
613
- const time = info.extra.startAt;
614
- const date = new Date(info.extra.startAt).toLocaleDateString("en-GB");
615
- const newExtraData = {
616
- ...info.extra.extraData,
617
- description: info.extra.extraData.description,
618
- date: date,
619
- time: time,
620
- };
621
- return newExtraData;
622
- }
623
-
624
- static async setIncomingInfoToPost(info: any, post: any) {
625
- post.actionEvent = info.extra.actionEvent;
626
- post.actionId = info.extra.actionId;
627
- post.companyId = info.extra.companyId;
628
- post.createdAt = info.extra.createdAt;
629
- post.description = info.extra.description;
630
- post.eventId = info.extra.eventId;
631
- post.isGeofence = info.extra.isGeofence;
632
- post.userId = info.userId;
633
- post.extraData = info.extra.extraData;
634
- post.object = info.extra.startAt ?? "object";
635
- post.origin = `${info.userId}--${info.companyId}--${info.actionName}`;
636
- post.seen = info.extra.seen;
637
- post.startAt = info.extra.startAt;
638
- post.startLat = info.extra.startLat;
639
- post.startLong = info.extra.startLong;
640
- post.endAt = info.extra.endAt;
641
- post.endLat = info.extra.endLat;
642
- post.endLong = info.extra.endLong;
643
- post.stepValues = info.extra.stepValues;
644
- post.target = info.target || "";
645
- post.time = info.extra.time;
646
- post.checkInternet = info.extra.checkInternet;
647
- return post;
648
- }
649
-
650
- static async setIncomingInfoToSummary(info: any, post: any, images: any) {
651
- post.actionEvent = info.extra.actionEvent;
652
- post.actionId = info.extra.actionId;
653
- post.companyId = info.extra.companyId;
654
- post.createdAt = info.extra.createdAt;
655
- post.description = info.extra.description;
656
- post.eventId = info.extra.eventId;
657
- post.isGeofence = info.extra.isGeofence;
658
- post.userId = info.userId;
659
- let extraData = await this.restructureExtraData(
660
- info.extra.extraData,
661
- images
662
- );
663
- extraData = { ...extraData, description: info.extra.description };
664
- post.extraData = extraData;
665
- post.object = info.extra.startAt ?? "object";
666
- post.origin = `${info.userId}--${info.companyId}--${info.actionName}`;
667
- post.seen = info.extra.seen;
668
- post.startAt = info.extra.startAt;
669
- post.startLat = info.extra.startLat;
670
- post.startLong = info.extra.startLong;
671
- post.endAt = info.extra.endAt;
672
- post.endLat = info.extra.endLat;
673
- post.endLong = info.extra.endLong;
674
- post.stepValues = info.extra.stepValues;
675
- post.target = info.target || "";
676
- post.time = info.extra.time;
677
- post.checkInternet = info.extra.checkInternet;
678
- return post;
679
- }
680
-
681
- static async restructureExtraData(extraData: any, images: any) {
682
- let newExtraData = { ...extraData };
683
- newExtraData.startTime =
684
- extraData.startTime["_seconds"] * 1000 +
685
- parseInt((extraData.startTime["_nanoseconds"] / 1000000).toString());
686
- newExtraData.endTime =
687
- extraData.endTime["_seconds"] * 1000 +
688
- parseInt((extraData.endTime["_nanoseconds"] / 1000000).toString());
689
- let level = extraData.level;
690
- newExtraData.level = level;
691
- let groundName = extraData.ground;
692
- newExtraData.ground = groundName;
693
- newExtraData.planImage = images.planImage;
694
- newExtraData.groupImage = images.groupImage;
695
- delete newExtraData.planImageArray;
696
- delete newExtraData.groupImageArray;
697
- return newExtraData;
698
- }
699
-
700
- static createRefForUser(
701
- firestore: admin.firestore.Firestore,
702
- companyId: string,
703
- userId: string
704
- ) {
705
- let snapshot = firestore
706
- .collection("Feeds")
707
- .doc(userId)
708
- .collection(companyId)
709
- .doc();
710
- return snapshot;
711
- }
712
-
713
- static async uploadImg(
714
- storageRef: any,
715
- imgAsBase64: string,
716
- actionName: string,
717
- createdAt: string
718
- ) {
719
- console.log("imgAsBase64");
720
- let imageBuffer = Buffer.from(imgAsBase64, "base64");
721
- let file = await storageRef.file(`${actionName}/${createdAt}`);
722
- await file.save(
723
- imageBuffer,
724
- {
725
- metadata: { contentType: "image/jpeg" },
726
- },
727
- () => {
728
- return "Unable to upload the image.";
729
- }
730
- );
731
- let options: object = {
732
- action: "read",
733
- expires: "03-17-2025",
734
- };
735
- const url = await file.getSignedUrl(options);
736
- return url[0];
737
- }
738
-
739
- // static async updateImage(
740
- // firestore: admin.firestore.Firestore,
741
- // idOfIncomingCollection: string,
742
- // eventId: string,
743
- // imgURL: any,
744
- // event: string,
745
- // companyId: string,
746
- // actionId: string,
747
- // userId: string,
748
- // actionName: string
749
- // ) {
750
- // let modelFetchingSnap = await firestore
751
- // .collection(`Feeds/${userId}/${companyId}`)
752
- // .where("eventId", "==", eventId)
753
- // .get();
754
- // const modelData = modelFetchingSnap.docs.map((doc) => doc.data());
755
- // var modelForImageUpdate = modelData[0];
756
- // var activityTime = new Date(modelForImageUpdate["startAt"]);
757
- // var streamId = `${modelForImageUpdate["userId"]}--${modelForImageUpdate["companyId"]}`;
758
- // var activity = {
759
- // actor: streamId,
760
- // verb: modelForImageUpdate["actionName"],
761
- // object:
762
- // modelForImageUpdate["startAt"] ??
763
- // modelForImageUpdate["endAt"] ??
764
- // "object",
765
- // time: activityTime,
766
- // foreign_id: modelForImageUpdate["eventId"],
767
- // };
768
- // if (event == "IN") {
769
- // modelForImageUpdate["userUploadedImage"] = imgURL;
770
- // } else if (event == "OUT") {
771
- // modelForImageUpdate["userUploadedEndImage"] = imgURL;
772
- // }
773
- // var mainActivity: any = {
774
- // ...activity,
775
- // ...modelForImageUpdate,
776
- // };
777
- // if (event == "IN") {
778
- // await firestore
779
- // .doc(
780
- // `Feeds/${modelForImageUpdate["userId"]}/${modelForImageUpdate["companyId"]}/${modelForImageUpdate["streamActivityId"]}`
781
- // )
782
- // .update({ userUploadedImage: imgURL });
783
- // } else if (event == "OUT") {
784
- // await firestore
785
- // .doc(
786
- // `Feeds/${modelForImageUpdate["userId"]}/${modelForImageUpdate["companyId"]}/${modelForImageUpdate["streamActivityId"]}`
787
- // )
788
- // .update({ userUploadedEndImage: imgURL });
789
- // }
790
-
791
- // console.log("After updating feeds collection I am here");
792
- // console.log("After Updating Activity");
793
- // await firestore.doc(`Incoming/${idOfIncomingCollection}`).delete();
794
- // console.log("After Everything");
795
- // return;
796
- // }
797
-
798
- static async refreshFeeds(
799
- firestore: admin.firestore.Firestore,
800
- companyId: string,
801
- userId: string
802
- ) {
803
- await this.deleteUpdateDocsOfUser(firestore, userId);
804
- await this.updateLeftDocsInIncoming(firestore, userId, companyId);
805
- }
806
-
807
- static async deleteUpdateDocsOfUser(
808
- firestore: admin.firestore.Firestore,
809
- userId: string
810
- ) {
811
- const updateDoc = await firestore
812
- .collection("Incoming")
813
- .where("userId", "==", userId)
814
- .where("type", "==", "update")
815
- .get();
816
- if (updateDoc.empty) {
817
- console.log("No update Docs");
818
- return "No update Docs";
819
- }
820
- updateDoc.forEach(async (doc) => {
821
- await doc.ref.delete();
822
- });
823
- }
824
-
825
- static async updateLeftDocsInIncoming(
826
- firestore: admin.firestore.Firestore,
827
- userId: string,
828
- companyId: string
829
- ) {
830
- const userDocsInIncoming = await firestore
831
- .collection("Incoming")
832
- .where("userId", "==", userId)
833
- .where("companyId", "==", companyId)
834
- .get();
835
- if (userDocsInIncoming.empty) {
836
- console.log("No docs to update");
837
- return "No docs to update";
838
- }
839
- userDocsInIncoming.forEach((doc) => {
840
- let time = new Date().getTime();
841
- doc.ref.update({ updatedAt: time });
842
- });
843
- }
844
-
845
- static async updateFeeds(
846
- firestore: admin.firestore.Firestore,
847
- companyId: string,
848
- userId: string,
849
- incomingId: string
850
- ) {
851
- let listOfActivities_snapshot = await firestore
852
- .collection("Feeds")
853
- .doc(userId)
854
- .collection(companyId)
855
- .limit(20)
856
- .get();
857
- let listOfActivities: any[] = listOfActivities_snapshot.docs.map(
858
- (doc) => doc
859
- );
860
-
861
- for (let activity of listOfActivities) {
862
- activity["actor"] = null;
863
- activity["verb"] = null;
864
- activity["foreign_id"] = null;
865
- if (activity["streamActivityId"] == null) {
866
- activity["streamActivityId"] = activity["id"];
867
- }
868
-
869
- let cleanModel: any = new Object();
870
- for (var key of Object.keys(activity)) {
871
- if (activity[key] != null) {
872
- cleanModel[key] = activity[key];
873
- }
874
- }
875
- let docSnap = await firestore
876
- .collection(`Feeds/${userId}/${companyId}`)
877
- .where("id", "==", activity["id"])
878
- .get();
879
-
880
- if (docSnap.docs.length != 0) {
881
- await firestore
882
- .doc(`Feeds/${userId}/${companyId}/${activity["id"]}`)
883
- .update(cleanModel);
884
- } else {
885
- await firestore
886
- .doc(`Feeds/${userId}/${companyId}/${activity["id"]}`)
887
- .set(cleanModel);
888
- }
889
- }
890
- await firestore.doc(`Incoming/${incomingId}`).delete();
891
- console.log("Feeds Collection Is Synced With Get Stream...");
892
- }
893
-
894
- static async clearUserdetails(
895
- firestore: admin.firestore.Firestore,
896
- companyId: string,
897
- userId: string,
898
- id: string
899
- ) {
900
- await firestore
901
- .collection(`Feeds/${userId}/${companyId}`)
902
- .listDocuments()
903
- .then((val) => {
904
- val.map((doc) => {
905
- doc.delete();
906
- });
907
- });
908
- await firestore.collection("Users").doc(userId).delete();
909
- await firestore.collection("Incoming").doc(id).delete();
910
- return { message: "Successfully deleted" };
911
- }
912
-
913
- static async punchInErp(
914
- firestore: admin.firestore.Firestore,
915
- companyId: string
916
- ) {
917
- console.log(companyId);
918
- let e10x_support: boolean = false;
919
- let company_snapshot = await firestore
920
- .collection("Companies")
921
- .where("id", "==", companyId)
922
- .get();
923
- let companyApi = "";
924
- company_snapshot.forEach((doc) => {
925
- e10x_support = doc.data().e10xSupport;
926
- if (e10x_support) {
927
- companyApi = doc.data()["endpoints"]["punching-api"];
928
- }
929
- });
930
- console.log(companyApi);
931
- return { e10x_support: e10x_support, companyApi: companyApi };
932
- }
933
-
934
- static async fetchUrlFromFirebase(
935
- firestore: admin.firestore.Firestore,
936
- nickName: string,
937
- endpointName: string
938
- ) {
939
- let company_snapshot = await firestore
940
- .collection("Companies")
941
- .where("nickname", "==", nickName)
942
- .get();
943
- let companyApi = "";
944
- let firmId = "";
945
- let firmName = "";
946
- company_snapshot.forEach((doc) => {
947
- companyApi = doc.data()["endpoints"][endpointName];
948
- firmId = doc.data()["apiId"];
949
- firmName = doc.data()["apiName"];
950
- });
951
- return { companyApi: companyApi, firmId: firmId, firmName: firmName };
952
- }
953
-
954
- static async generateQRCodeString(qrCodeString: string) {
955
- var pngString = await qr.imageSync(qrCodeString, { type: "png" });
956
- return pngString;
957
- }
958
-
959
- static async deleteImageFromStorage(storageRef: any, filePath: string) {
960
- await storageRef.file(filePath).delete();
961
- console.log("after");
962
- }
963
-
964
- static async updateCompanyActionDoc(
965
- firestore: admin.firestore.Firestore,
966
- companyId: string,
967
- actionName: string,
968
- eventId: string,
969
- updatedDoc: any
970
- ) {
971
- const actionId = await Action.getActionId(firestore, companyId, actionName);
972
- const docArr = await firestore
973
- .collection("Companies")
974
- .doc(companyId)
975
- .collection("Actions")
976
- .doc(actionId)
977
- .collection(actionName)
978
- .where("eventId", "==", eventId)
979
- .get();
980
- docArr.docs.map((doc) => doc.ref.update(updatedDoc));
981
- }
982
-
983
- static async updateCompanyActionDocByEnrollId(
984
- firestore: admin.firestore.Firestore,
985
- companyId: string,
986
- actionName: string,
987
- enrollId: string,
988
- updatedDoc: any
989
- ) {
990
- const actionId = await Action.getActionId(firestore, companyId, actionName);
991
- const docArr = await firestore
992
- .collection("Companies")
993
- .doc(companyId)
994
- .collection("Actions")
995
- .doc(actionId)
996
- .collection(actionName)
997
- .where("refId", "==", enrollId)
998
- .get();
999
- docArr.docs.map((doc) => doc.ref.update(updatedDoc));
1000
- }
1001
-
1002
- static async updateRelatedFeeds(
1003
- firestore: admin.firestore.Firestore,
1004
- companyId: string,
1005
- userId: string,
1006
- eventId: string,
1007
- updateObj: any
1008
- ) {
1009
- const managersList = await Offline.getUserManagersList(
1010
- firestore,
1011
- companyId,
1012
- userId
1013
- );
1014
- const feedUpdationTargets = [...managersList, userId];
1015
- console.log("feedUpdation targets", feedUpdationTargets);
1016
- for (let userId of feedUpdationTargets) {
1017
- console.log("userId", userId);
1018
- await this.updateUserFeed(
1019
- firestore,
1020
- companyId,
1021
- userId,
1022
- eventId,
1023
- updateObj
1024
- );
1025
- }
1026
- }
1027
-
1028
- static async updateUserFeed(
1029
- firestore: admin.firestore.Firestore,
1030
- companyId: string,
1031
- userId: string,
1032
- eventId: string,
1033
- updateObj: any
1034
- ) {
1035
- const targetDocsSnapshot = await firestore
1036
- .collection("Feeds")
1037
- .doc(userId)
1038
- .collection(companyId)
1039
- .where("eventId", "==", eventId)
1040
- .get();
1041
- await Promise.all(
1042
- targetDocsSnapshot.docs.map((doc) => doc.ref.update(updateObj))
1043
- );
1044
- }
1045
-
1046
- static async createSummaryReports(
1047
- firestore: admin.firestore.Firestore,
1048
- connection: any
1049
- ) {
1050
- try {
1051
- console.log("Creating Summary");
1052
- const nickName = "uset";
1053
- const companyId = await Company.getCompanyIdByNickName(
1054
- firestore,
1055
- nickName
1056
- );
1057
- const actionName = "summary";
1058
- const actionId = await Action.getActionId(
1059
- firestore,
1060
- companyId,
1061
- actionName
1062
- );
1063
- let i = 0;
1064
- const reportObjects = await firestore
1065
- .collection("Companies")
1066
- .doc(companyId)
1067
- .collection("Actions")
1068
- .doc(actionId)
1069
- .collection(actionName)
1070
- .get();
1071
-
1072
- reportObjects.docs.map(async (doc) => {
1073
- i++;
1074
- console.log(doc.data().eventId, i);
1075
- });
1076
- } catch (error: any) {
1077
- throw new Error(error.message);
1078
- }
1079
- }
1080
-
1081
- static getEpochTimeFromTimeObj(timeObj: any) {
1082
- return timeObj._seconds * 1000 + Math.floor(timeObj._nanoseconds / 1000000);
1083
- }
1084
-
1085
- static async enrollOrUpdateNewFace(
1086
- firestore: admin.firestore.Firestore,
1087
- faceInfo: FaceInfo,
1088
- companyId: string
1089
- ) {
1090
- try {
1091
- const faceInfoRef = await firestore
1092
- .collection("Companies")
1093
- .doc(companyId)
1094
- .collection("Enroll")
1095
- .doc(faceInfo.id)
1096
- .get();
1097
-
1098
- if (faceInfoRef.exists == false) {
1099
- await faceInfoRef.ref.set(faceInfo);
1100
- console.log("FaceInfo update in company database");
1101
- }
1102
- } catch (error: any) {
1103
- console.log(error.message);
1104
- throw {
1105
- message: "Error while adding new face",
1106
- };
1107
- }
1108
- }
1109
-
1110
- static async enrollOrUpdateNewFaceForWorkers(
1111
- firestore: admin.firestore.Firestore,
1112
- faceInfo: FaceInfo,
1113
- companyId: string
1114
- ) {
1115
- try {
1116
- const faceInfoRef = await firestore
1117
- .collection("Companies")
1118
- .doc(companyId)
1119
- .collection("Workers")
1120
- .doc(faceInfo.id)
1121
- .get();
1122
- await faceInfoRef.ref.set(faceInfo);
1123
- console.log("FaceInfo update in company database");
1124
- } catch (error: any) {
1125
- console.log(error.message);
1126
- throw {
1127
- message: "Error while adding new face",
1128
- };
1129
- }
1130
- }
1131
- }
1132
-
1133
- export { Offline };