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,642 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ReportGenerator = void 0;
7
+ const user_model_1 = require("./user.model");
8
+ const company_model_1 = require("./company.model");
9
+ const date_fns_1 = require("date-fns");
10
+ const crud_1 = __importDefault(require("./crud/crud"));
11
+ class ReportGenerator {
12
+ constructor() { }
13
+ async generateReport(firestore, actionDBMap, nickName, action, timeInterval, phone) {
14
+ if (action === "summary") {
15
+ const summaryReport = await this.getSummaryReport(firestore, nickName, timeInterval, actionDBMap, action, phone, false);
16
+ return summaryReport;
17
+ }
18
+ else if (action === "teamSummary") {
19
+ action = "summary";
20
+ const teamSummaryReport = await this.getSummaryReport(firestore, nickName, timeInterval, actionDBMap, action, phone, true);
21
+ return teamSummaryReport;
22
+ }
23
+ else if (action === "attendance") {
24
+ const attendanceReport = await this.getAttendanceReport(firestore, actionDBMap, timeInterval, action, phone, nickName, false);
25
+ return attendanceReport;
26
+ }
27
+ else if (action === "visitorMgmt") {
28
+ const visitorMgmtReport = await this.getVisitorMgmtReport(firestore, actionDBMap, timeInterval, action, phone, nickName, false);
29
+ return visitorMgmtReport;
30
+ }
31
+ else if (action === "teamAttendance") {
32
+ action = "attendance";
33
+ const attendanceReport = await this.getAttendanceReport(firestore, actionDBMap, timeInterval, action, phone, nickName, true);
34
+ return attendanceReport;
35
+ }
36
+ else if (action === "visitorMgmtAll") {
37
+ action = "visitorMgmt";
38
+ const visitorMgmtReport = await this.getVisitorMgmtReport(firestore, actionDBMap, timeInterval, action, phone, nickName, true);
39
+ return visitorMgmtReport;
40
+ }
41
+ else if (action === "meetings&&attendance") {
42
+ const meetingsReport = await this.getTeamDetailsReport(firestore, actionDBMap, timeInterval, action, phone, nickName);
43
+ console.log("hjere");
44
+ return meetingsReport;
45
+ }
46
+ }
47
+ async getPastVisits(actionDBMap, companyId, subordinates, todaysDate, last7Days) {
48
+ const qry = `SELECT COUNT(*) AS count FROM visits WHERE companyId = '${companyId}'
49
+ AND checkInTime IS NOT NULL AND checkOutTime IS NOT NULL AND meetingTime IS NOT NULL
50
+ AND meetingPersonPhone IN (${String(subordinates)})
51
+ AND checkInTime >= '${last7Days} 00:00:00' AND checkInTime <= '${todaysDate} 23:59:59'
52
+ ORDER BY checkInTime ASC;`;
53
+ console.log(qry);
54
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
55
+ try {
56
+ return await curdService.query(qry);
57
+ }
58
+ catch (error) {
59
+ return { statusCode: 502, message: error.body.message, details: error };
60
+ }
61
+ }
62
+ async getFutureVisits(actionDBMap, companyId, subordinates, todaysDate, next7Days) {
63
+ const year = todaysDate.split("-")[0];
64
+ const month = todaysDate.split("-")[1];
65
+ const days = (0, date_fns_1.getDay)(new Date(Number(year), Number(month)));
66
+ const qry = `SELECT COUNT(*) AS count FROM visits WHERE companyId = '${companyId}'
67
+ AND meetingPersonPhone IN (${String(subordinates)})
68
+ AND checkInTime IS NULL AND meetingTime IS NULL AND checkOutTime IS NULL
69
+ AND scheduledTime >= '${todaysDate} 00:00:00' AND scheduledTime <= '${next7Days} 23:59:59'
70
+ ORDER BY checkInTime ASC;`;
71
+ console.log(qry);
72
+ const curdService = new crud_1.default(actionDBMap["visitorMgmt"].connection);
73
+ try {
74
+ return await curdService.query(qry);
75
+ }
76
+ catch (error) {
77
+ return { statusCode: 502, message: error.body.message, details: error };
78
+ }
79
+ }
80
+ async getCurrentVisits(actionDBMap, companyId, subordinates, todaysDate) {
81
+ const qry = `SELECT COUNT(*) as count FROM visits
82
+ WHERE companyId = '${companyId}'
83
+ AND meetingPersonPhone IN (${String(subordinates)})
84
+ AND checkInTime IS NOT NULL AND checkOutTime IS NULL
85
+ AND checkInTime >= '${todaysDate} 00:00:00' AND checkInTime <= '${todaysDate} 23:59:59'
86
+ ORDER BY checkInTime ASC;`;
87
+ console.log(qry);
88
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
89
+ try {
90
+ return await curdService.query(qry);
91
+ }
92
+ catch (error) {
93
+ return { statusCode: 502, message: error.body.message, details: error };
94
+ }
95
+ }
96
+ async getTodayVisitsOwner(actionDBMap, companyId, subordinates, todaysDate) {
97
+ const qry = `SELECT COUNT(*) AS count FROM visits
98
+ WHERE companyId = '${companyId}'
99
+ AND meetingPersonPhone IN (${String(subordinates)})
100
+ AND checkInTime IS NOT NULL
101
+ AND checkInTime <= '${todaysDate} 23:59:59'
102
+ AND checkOutTime IS NOT NULL
103
+ AND isApproved = TRUE
104
+ AND checkInTime >= '${todaysDate} 00:00:00';`;
105
+ console.log("getTodayVisitsOwner => ", qry);
106
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
107
+ try {
108
+ return await curdService.query(qry);
109
+ }
110
+ catch (error) {
111
+ return { statusCode: 502, message: error.body.message, details: error };
112
+ }
113
+ }
114
+ async getHostsForNotif(actionDBMap, companyId, todaysDate) {
115
+ const qry = `SELECT * FROM visits WHERE companyId = '${companyId}'
116
+ AND meetingTime IS NULL
117
+ AND checkInTime IS NOT NULL
118
+ AND isApproved = TRUE
119
+ AND checkInTime >= '${todaysDate} 00:00:00'
120
+ AND checkInTime <= '${todaysDate} 23:59:59';`;
121
+ console.log("Get Hosts For Notif QRY: => ", qry);
122
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
123
+ try {
124
+ return await curdService.query(qry);
125
+ }
126
+ catch (error) {
127
+ return { statusCode: 502, message: error.body.message, details: error };
128
+ }
129
+ }
130
+ async getTodayVisitsById(actionDBMap, companyId, phone) {
131
+ const qry = `SELECT COUNT(*) as count FROM visits
132
+ where checkOutTime IS NULL AND checkInTime IS NOT NULL
133
+ AND companyId = '${companyId}'
134
+ AND meetingPersonPhone = '${phone}';`;
135
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
136
+ try {
137
+ return await curdService.query(qry);
138
+ }
139
+ catch (error) {
140
+ return { statusCode: 502, message: error.body.message, details: error };
141
+ }
142
+ }
143
+ async latestVisitor(actionDBMap, date, phone, companyId) {
144
+ const qry = `SELECT id, visitorName, scheduledTime, checkInTime
145
+ FROM visits WHERE companyId = '${companyId}'
146
+ AND meetingPersonPhone = '${phone}' AND scheduledTime IS NOT NULL AND meetingTime IS NULL
147
+ AND checkOutTime IS NULL AND scheduledTime >= '${date}' ORDER BY scheduledTime ASC;`;
148
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
149
+ try {
150
+ return await curdService.query(qry);
151
+ }
152
+ catch (error) {
153
+ return { statusCode: 502, message: error.body.message, details: error };
154
+ }
155
+ }
156
+ async upcomingVisitorsForOwners(actionDBMap, subordinates, date, next7Days, companyId) {
157
+ const qry = `SELECT id, visitorName, scheduledTime FROM visits
158
+ WHERE companyId = '${companyId}' AND meetingPersonPhone
159
+ IN (${String(subordinates)}) AND visitType = 'invite'
160
+ AND checkInTime IS NULL AND scheduledTime >= '${date} 00:00:00'
161
+ AND scheduledTime <= '${next7Days} 23:59:59' ORDER BY scheduledTime ASC;`;
162
+ console.log(qry);
163
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
164
+ try {
165
+ return await curdService.query(qry);
166
+ }
167
+ catch (error) {
168
+ return { statusCode: 502, message: error.body.message, details: error };
169
+ }
170
+ }
171
+ async approveVisitorList(actionDBMap, companyId, phone) {
172
+ // if (phone.charAt(0) != "+") {
173
+ // phone = `+${phone}`;
174
+ // }
175
+ const currentDate = new Date();
176
+ const formattedDate = (0, date_fns_1.format)(currentDate, "yyyy-MM-dd");
177
+ console.log('---> ', formattedDate);
178
+ const qry = `SELECT visitorName, purposeOfVisit, visitId FROM visits
179
+ WHERE checkInTime IS NOT NULL
180
+ AND checkInTime >= '${formattedDate} 00:00:00'
181
+ AND companyId = '${companyId}'
182
+ AND approvedAt IS NULL
183
+ AND meetingPersonPhone in (${String(phone)}) AND isApproved = false
184
+ ORDER BY checkInTime DESC`;
185
+ console.log(qry);
186
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
187
+ try {
188
+ return await curdService.query(qry);
189
+ }
190
+ catch (error) {
191
+ return { statusCode: 502, message: error.body.message, details: error };
192
+ }
193
+ }
194
+ async getVisitorsInTheBuilding(actionDBMap, companyId, todaysDate) {
195
+ const qry = `SELECT id, visitorName, meetingPerson, cardColor, checkInTime FROM visits
196
+ WHERE cardColor IS NOT NULL AND companyId = '${companyId}'
197
+ AND checkInTime >= '${todaysDate} 00:00:00' AND checkInTime IS NOT NULL
198
+ ORDER BY checkInTime DESC;`;
199
+ console.log(qry);
200
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
201
+ try {
202
+ return await curdService.query(qry);
203
+ }
204
+ catch (error) {
205
+ return { statusCode: 502, message: error.body.message, details: error };
206
+ }
207
+ }
208
+ async upcomingVisits(actionDBMap, hour, phone, companyId, date) {
209
+ const qry = `SELECT id, visitorName, scheduledTime FROM visits WHERE companyId = '${companyId}'
210
+ AND checkInTime IS NULL AND meetingPersonPhone = '${phone}' AND scheduledTime >= '${date} ${hour}:00:00'
211
+ AND visitType = 'invite' LIMIT 10;`;
212
+ console.log(qry);
213
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
214
+ try {
215
+ return await curdService.query(qry);
216
+ }
217
+ catch (error) {
218
+ return { statusCode: 502, message: error.body.message, details: error };
219
+ }
220
+ }
221
+ async completedMeetings(actionDBMap, phone, companyId) {
222
+ const qry = `SELECT id, visitorName, scheduledTime FROM visits WHERE companyId = '${companyId}'
223
+ AND meetingPersonPhone = '${phone}' AND meetingTime IS NOT NULL ORDER BY meetingTime DESC LIMIT 10;`;
224
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
225
+ try {
226
+ return await curdService.query(qry);
227
+ }
228
+ catch (error) {
229
+ return { statusCode: 502, message: error.body.message, details: error };
230
+ }
231
+ }
232
+ async completedMeetingsForOwner(actionDBMap, companyId, subordinates, todaysDate) {
233
+ const month = todaysDate.split("-")[1];
234
+ const qry = `SELECT id, visitorName, scheduledTime FROM visits
235
+ WHERE companyId = '${companyId}'
236
+ AND meetingPersonPhone IN (${String(subordinates)})
237
+ AND meetingTime IS NOT NULL AND meetingTime <= '${todaysDate} 23:59:59'
238
+ AND meetingTime >= '2023-${month}-01 00:00:00' ORDER BY meetingTime ASC;`;
239
+ console.log(qry);
240
+ const curdService = new crud_1.default(actionDBMap['visitorMgmt'].connection);
241
+ try {
242
+ return await curdService.query(qry);
243
+ }
244
+ catch (error) {
245
+ return { statusCode: 502, message: error.body.message, details: error };
246
+ }
247
+ }
248
+ async getSummaryReport(firestore, nickName, timeInterval, actionDBMap, action, phone, isTeamSummary) {
249
+ const curdService = new crud_1.default(actionDBMap[action].connection);
250
+ try {
251
+ const tableName = actionDBMap[action].tableName;
252
+ const companyId = await company_model_1.Company.getCompanyIdByNickName(firestore, nickName);
253
+ let targetPhones;
254
+ if (isTeamSummary) {
255
+ const teamList = await company_model_1.Company.getTeamListOfManager(firestore, nickName, phone);
256
+ targetPhones = teamList.map((personObj) => personObj.phone);
257
+ }
258
+ else {
259
+ targetPhones = [`+${phone}`];
260
+ }
261
+ console.log(targetPhones);
262
+ const qryStr = `SELECT * FROM ${tableName}
263
+ WHERE eventDate <= '${timeInterval.endTime}'
264
+ AND eventDate >= '${timeInterval.startTime}'
265
+ AND userPhone IN (${targetPhones})
266
+ AND companyId = '${companyId}'
267
+ ORDER BY createdAt ASC`;
268
+ let reportInfo = await curdService.query(qryStr);
269
+ reportInfo = this.groupReportInfoUserwise(reportInfo, "userPhone");
270
+ const phonesArr = Object.keys(reportInfo);
271
+ phonesArr.forEach((phone) => {
272
+ const userReportObjList = reportInfo[phone];
273
+ reportInfo[phone] = this.groupUserInfoDaywise(userReportObjList);
274
+ });
275
+ let usersReportList = await Promise.all(phonesArr.map(async (phone) => {
276
+ const userId = await user_model_1.User.getUserIdByPhone(firestore, phone);
277
+ console.log(userId, companyId);
278
+ if (userId) {
279
+ const userInfo = await user_model_1.User.getUserInfoById(firestore, userId, companyId);
280
+ const name = userInfo.name;
281
+ const userReportObj = {
282
+ phone: phone,
283
+ userName: name,
284
+ daywiseInfoObj: reportInfo[phone],
285
+ };
286
+ return userReportObj;
287
+ }
288
+ }));
289
+ console.log(usersReportList);
290
+ usersReportList = usersReportList.filter((userReport) => Boolean(userReport));
291
+ return usersReportList;
292
+ }
293
+ catch (error) {
294
+ console.log(error.message);
295
+ }
296
+ }
297
+ groupReportInfoUserwise(reportInfo, groupingKey) {
298
+ const groupedReportInfo = reportInfo.reduce((accumulator, currVal) => {
299
+ if (accumulator[currVal[groupingKey]]) {
300
+ accumulator[currVal[groupingKey]].push(currVal);
301
+ }
302
+ else {
303
+ accumulator[currVal[groupingKey]] = [currVal];
304
+ }
305
+ return accumulator;
306
+ }, {});
307
+ return groupedReportInfo;
308
+ }
309
+ groupUserInfoDaywise(userReportsObjList) {
310
+ const daywiseInfoObj = userReportsObjList.reduce((accumulator, currVal) => {
311
+ if (accumulator[currVal.eventDetails.date]) {
312
+ accumulator[currVal.eventDetails.date].push(currVal.eventDetails);
313
+ }
314
+ else {
315
+ accumulator[currVal.eventDetails.date] = [currVal.eventDetails];
316
+ }
317
+ return accumulator;
318
+ }, {});
319
+ return daywiseInfoObj;
320
+ }
321
+ groupVisitsInfoDaywise(userReportObjList, timeStringKey) {
322
+ const daywiseInfoObj = userReportObjList.reduce((acc, curr) => {
323
+ const date = curr[timeStringKey].split(" ")[0];
324
+ if (acc[date]) {
325
+ acc[date].push(curr);
326
+ }
327
+ else {
328
+ acc[date] = [curr];
329
+ }
330
+ return acc;
331
+ }, {});
332
+ return daywiseInfoObj;
333
+ }
334
+ groupInfoDaywise(userReportObjList, timeStringKey) {
335
+ const daywiseInfoObj = userReportObjList.reduce((acc, curr) => {
336
+ const date = curr[timeStringKey].split(" ")[0];
337
+ let eventType = curr.eventType == "checkIn" ? "checkIn" : "checkOut";
338
+ let otherEventType = eventType == "checkIn" ? "checkOut" : "checkIn";
339
+ let time = curr.time.split(" ");
340
+ if (acc[date]) {
341
+ acc[date][eventType] = time[1];
342
+ }
343
+ else {
344
+ acc[date] = {
345
+ [eventType]: time[1],
346
+ date: date,
347
+ [otherEventType]: "--",
348
+ };
349
+ }
350
+ return acc;
351
+ }, {});
352
+ return daywiseInfoObj;
353
+ }
354
+ groupAndCountMeetingInfo(userReportObjList, timeStringKey) {
355
+ const daywiseInfoObj = userReportObjList.reduce((acc, curr) => {
356
+ console.log(curr[timeStringKey]);
357
+ const date = new Date(Number(curr[timeStringKey]))
358
+ .toISOString()
359
+ .split("T")[0];
360
+ if (acc[date]) {
361
+ acc[date].count = acc[date].count + 1;
362
+ }
363
+ else {
364
+ acc[date] = {
365
+ count: 0,
366
+ };
367
+ acc[date]["count"] = 1;
368
+ }
369
+ return acc;
370
+ }, {});
371
+ return daywiseInfoObj;
372
+ }
373
+ async getAttendanceReport(firestore, actionDBMap, timeInterval, action, phone, nickName, isTeamAttendance) {
374
+ try {
375
+ const tableName = actionDBMap[action].tableName;
376
+ console.log(tableName);
377
+ const companyId = await company_model_1.Company.getCompanyIdByNickName(firestore, nickName);
378
+ let targetPhones;
379
+ if (isTeamAttendance) {
380
+ const teamList = await company_model_1.Company.getTeamListOfManager(firestore, nickName, phone);
381
+ targetPhones = teamList.map((personObj) => personObj.phone);
382
+ }
383
+ else {
384
+ targetPhones = [`+${phone}`];
385
+ }
386
+ console.log("164", targetPhones);
387
+ const qryStr = `SELECT * FROM ${tableName}
388
+ WHERE time >= '${timeInterval.startTime}'
389
+ AND time <= '${timeInterval.endTime}'
390
+ AND phoneNo IN (${targetPhones})
391
+ AND companyId = '${companyId}'
392
+ ORDER BY time`;
393
+ const curdService = new crud_1.default(actionDBMap[action].connection);
394
+ let reportInfo = await curdService.query(qryStr);
395
+ reportInfo = this.groupReportInfoUserwise(reportInfo, "phoneNo");
396
+ const phonesArr = Object.keys(reportInfo);
397
+ const nameNPhoneInfo = new Map();
398
+ phonesArr.forEach((phone) => {
399
+ const name = reportInfo[phone][0].employeeName;
400
+ nameNPhoneInfo.set(phone, name);
401
+ });
402
+ phonesArr.forEach((phone) => {
403
+ const userReportObjList = reportInfo[phone];
404
+ reportInfo[phone] = this.groupVisitsInfoDaywise(userReportObjList, "time");
405
+ });
406
+ let usersReportsList = phonesArr.map((phone) => {
407
+ return {
408
+ phone,
409
+ name: nameNPhoneInfo.get(phone),
410
+ daywiseInfoObj: reportInfo[phone],
411
+ };
412
+ });
413
+ usersReportsList = usersReportsList.filter((report) => Boolean(report));
414
+ console.log(usersReportsList);
415
+ return usersReportsList;
416
+ }
417
+ catch (error) {
418
+ console.log(error.message);
419
+ throw new Error(error.message);
420
+ }
421
+ }
422
+ async getTeamDetailsReport(firestore, actionDBMap, timeInterval, action, phone, nickName) {
423
+ try {
424
+ let actionList = action.split("&&");
425
+ let meetings = actionList[0];
426
+ let attendance = actionList[1];
427
+ let userAttendanceReport = await this.getCustomAttendanceReport(firestore, actionDBMap, timeInterval, attendance, phone, nickName);
428
+ let userMeetingsReport = await this.getMeetingsReport(firestore, actionDBMap, timeInterval, meetings, phone, nickName);
429
+ let startTime = timeInterval.startTime.split(" ");
430
+ let endTime = timeInterval.endTime.split(" ");
431
+ let dataRange = await this.getDatesInRange(startTime[0], endTime[0]);
432
+ let arr = [];
433
+ for (let element of userAttendanceReport) {
434
+ let obj = {
435
+ phone: element.phone,
436
+ name: element.name,
437
+ daywiseInfoObj: dataRange.map((str) => {
438
+ return {
439
+ [str]: {
440
+ checkIn: "--",
441
+ date: str,
442
+ checkOut: "--",
443
+ noOfMeeting: 0,
444
+ },
445
+ };
446
+ }),
447
+ };
448
+ arr.push(obj);
449
+ }
450
+ let mergedData = [];
451
+ for (const person of userAttendanceReport) {
452
+ const { phone, name, daywiseInfoObj } = person;
453
+ console.log(name, "./././././");
454
+ let idx = userMeetingsReport.findIndex((obj) => {
455
+ // console.log(obj.name, "118525255", name , typeof name, typeof obj.name)
456
+ return obj.name == name;
457
+ });
458
+ console.log(idx);
459
+ let obj = {
460
+ phone,
461
+ name,
462
+ daywiseInfoObj,
463
+ };
464
+ for (let day in daywiseInfoObj) {
465
+ if (!!userMeetingsReport[idx])
466
+ console.log(userMeetingsReport[idx], userMeetingsReport[idx]["daywiseInfoObj"], userMeetingsReport[idx]["daywiseInfoObj"][day], day);
467
+ // console.log(userMeetingsReport[idx]["daywiseInfoObj"][day]["count"])
468
+ obj.daywiseInfoObj[day] = {
469
+ checkIn: daywiseInfoObj[day].checkIn,
470
+ checkOut: daywiseInfoObj[day].checkOut,
471
+ date: daywiseInfoObj[day].date,
472
+ noOfMeetings: userMeetingsReport[idx]
473
+ ? userMeetingsReport[idx]["daywiseInfoObj"][day]
474
+ ? userMeetingsReport[idx]["daywiseInfoObj"][day]["count"]
475
+ : 0
476
+ : "",
477
+ };
478
+ }
479
+ mergedData.push(obj);
480
+ }
481
+ return mergedData;
482
+ }
483
+ catch (error) {
484
+ console.log(error.message);
485
+ throw new Error(error.message);
486
+ }
487
+ }
488
+ async getDatesInRange(startDate, endDate) {
489
+ const dates = [];
490
+ const currentDate = new Date(startDate);
491
+ const endDateLimit = new Date(endDate);
492
+ while (currentDate <= endDateLimit) {
493
+ const date = new Date(currentDate).toLocaleString("en-US", {
494
+ year: "numeric",
495
+ month: "2-digit",
496
+ day: "2-digit",
497
+ });
498
+ dates.push(date);
499
+ currentDate.setDate(currentDate.getDate() + 1);
500
+ }
501
+ return dates;
502
+ }
503
+ async getCustomAttendanceReport(firestore, actionDBMap, timeInterval, action, phone, nickName) {
504
+ try {
505
+ const tableName = actionDBMap[action].tableName;
506
+ const companyId = await company_model_1.Company.getCompanyIdByNickName(firestore, nickName);
507
+ const teamList = await company_model_1.Company.getTeamListOfManager(firestore, nickName, phone);
508
+ let targetPhones = teamList.map((personObj) => personObj.phone);
509
+ const qryStr = `SELECT * FROM ${tableName}
510
+ WHERE time >= '${timeInterval.startTime}'
511
+ AND time <= '${timeInterval.endTime}'
512
+ AND phoneNo IN (${targetPhones})
513
+ AND companyId = '${companyId}'
514
+ ORDER BY time`;
515
+ console.log(actionDBMap[action]);
516
+ const curdService = new crud_1.default(actionDBMap[action].connection);
517
+ let reportInfo = await curdService.query(qryStr);
518
+ console.log(reportInfo);
519
+ reportInfo = this.groupReportInfoUserwise(reportInfo, "phoneNo");
520
+ // console.log(reportInfo)
521
+ const phonesArr = Object.keys(reportInfo);
522
+ const nameNPhoneInfo = new Map();
523
+ phonesArr.forEach((phone) => {
524
+ const name = reportInfo[phone][0].employeeName;
525
+ nameNPhoneInfo.set(phone, name);
526
+ });
527
+ phonesArr.forEach((phone) => {
528
+ const userReportObjList = reportInfo[phone];
529
+ reportInfo[phone] = this.groupInfoDaywise(userReportObjList, "time");
530
+ });
531
+ let usersReportsList = phonesArr.map((phone) => {
532
+ return {
533
+ phone,
534
+ name: nameNPhoneInfo.get(phone),
535
+ daywiseInfoObj: reportInfo[phone],
536
+ };
537
+ });
538
+ usersReportsList = usersReportsList.filter((report) => Boolean(report));
539
+ console.log(usersReportsList[0]);
540
+ return usersReportsList;
541
+ }
542
+ catch (error) {
543
+ console.log(error.message);
544
+ throw new Error(error.message);
545
+ }
546
+ }
547
+ async getMeetingsReport(firestore, actionDBMap, timeInterval, action, phone, nickName) {
548
+ try {
549
+ console.log(timeInterval, "time");
550
+ const tableName = actionDBMap[action].tableName;
551
+ const companyId = await company_model_1.Company.getCompanyIdByNickName(firestore, nickName);
552
+ let startTime = new Date(timeInterval.startTime).getTime() / 1000;
553
+ let endTime = new Date(timeInterval.endTime).getTime() / 1000;
554
+ const teamList = await company_model_1.Company.getTeamListOfManager(firestore, nickName, phone);
555
+ let targetPhones = teamList.map((personObj) => personObj.phone);
556
+ const qryStr = `SELECT * FROM ${tableName}
557
+ WHERE meetingDate >= '${startTime}'
558
+ AND meetingDate <= '${endTime}'
559
+ AND phone IN (${targetPhones})
560
+ AND companyId = '${companyId}'
561
+ ORDER BY meetingDate`;
562
+ console.log(actionDBMap[action]);
563
+ const curdService = new crud_1.default(actionDBMap[action].connection);
564
+ let reportInfo = await curdService.query(qryStr);
565
+ console.log(reportInfo);
566
+ reportInfo = this.groupReportInfoUserwise(reportInfo, "phone");
567
+ // console.log(reportInfo)
568
+ const phonesArr = Object.keys(reportInfo);
569
+ const nameNPhoneInfo = new Map();
570
+ phonesArr.forEach((phone) => {
571
+ const name = reportInfo[phone][0].name;
572
+ nameNPhoneInfo.set(phone, name);
573
+ });
574
+ phonesArr.forEach((phone) => {
575
+ const userReportObjList = reportInfo[phone];
576
+ reportInfo[phone] = this.groupAndCountMeetingInfo(userReportObjList, "meetingDate");
577
+ });
578
+ let usersReportsList = phonesArr.map((phone) => {
579
+ return {
580
+ phone,
581
+ name: nameNPhoneInfo.get(phone),
582
+ daywiseInfoObj: reportInfo[phone],
583
+ };
584
+ });
585
+ usersReportsList = usersReportsList.filter((report) => Boolean(report));
586
+ console.log(usersReportsList[0]);
587
+ return usersReportsList;
588
+ }
589
+ catch (error) {
590
+ console.log(error.message);
591
+ throw new Error(error.message);
592
+ }
593
+ }
594
+ async getVisitorMgmtReport(firestore, actionDBMap, timeInterval, action, phone, nickName, isAllVisits) {
595
+ try {
596
+ const tableName = actionDBMap[action].tableName;
597
+ const companyId = await company_model_1.Company.getCompanyIdByNickName(firestore, nickName);
598
+ let targetPhones;
599
+ if (isAllVisits) {
600
+ const teamList = await company_model_1.Company.getTeamListOfManager(firestore, nickName, phone);
601
+ targetPhones = teamList.map((personObj) => personObj.phone);
602
+ }
603
+ else {
604
+ targetPhones = [`+${phone}`];
605
+ }
606
+ targetPhones.push(`+${phone}`);
607
+ const qryStr = `SELECT * FROM ${tableName}
608
+ WHERE scheduledTime >= '${timeInterval.startTime}'
609
+ AND scheduledTime <= '${timeInterval.endTime}'
610
+ AND meetingPersonPhone IN (${targetPhones})
611
+ AND companyId = '${companyId}'
612
+ ORDER BY scheduledTime`;
613
+ const curdService = new crud_1.default(actionDBMap[action].connection);
614
+ let reportInfo = await curdService.query(qryStr);
615
+ reportInfo = this.groupReportInfoUserwise(reportInfo, "meetingPersonPhone");
616
+ const phonesArr = Object.keys(reportInfo);
617
+ const nameNPhoneInfo = new Map();
618
+ phonesArr.forEach((phone) => {
619
+ const name = reportInfo[phone][0].meetingPerson;
620
+ nameNPhoneInfo.set(phone, name);
621
+ });
622
+ phonesArr.forEach((phone) => {
623
+ const userReportObjList = reportInfo[phone];
624
+ reportInfo[phone] = this.groupVisitsInfoDaywise(userReportObjList, "scheduledTime");
625
+ });
626
+ let usersReportsList = phonesArr.map((phone) => {
627
+ return {
628
+ phone,
629
+ name: nameNPhoneInfo.get(phone),
630
+ daywiseInfoObj: reportInfo[phone],
631
+ };
632
+ });
633
+ usersReportsList = usersReportsList.filter((report) => Boolean(report));
634
+ console.log(usersReportsList);
635
+ return usersReportsList;
636
+ }
637
+ catch (error) {
638
+ console.log(error.message);
639
+ }
640
+ }
641
+ }
642
+ exports.ReportGenerator = ReportGenerator;
@@ -0,0 +1,18 @@
1
+ declare class HttpResponseAndErrorHandling {
2
+ private statusCode;
3
+ private message;
4
+ private data;
5
+ private error;
6
+ constructor(statusCode: number, message: string, data: any, error: any);
7
+ getSuccessResponse(): {
8
+ statusCode: number;
9
+ message: string;
10
+ data: any;
11
+ };
12
+ getErrorResponse(): {
13
+ statusCode: number;
14
+ message: string;
15
+ error: any;
16
+ };
17
+ }
18
+ export { HttpResponseAndErrorHandling };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpResponseAndErrorHandling = void 0;
4
+ class HttpResponseAndErrorHandling {
5
+ statusCode;
6
+ message;
7
+ data;
8
+ error;
9
+ constructor(statusCode, message, data, error) {
10
+ this.statusCode = statusCode;
11
+ this.message = message;
12
+ this.data = data;
13
+ this.error = error;
14
+ }
15
+ getSuccessResponse() {
16
+ return {
17
+ statusCode: this.statusCode,
18
+ message: this.message,
19
+ data: this.data
20
+ };
21
+ }
22
+ getErrorResponse() {
23
+ return {
24
+ statusCode: this.statusCode,
25
+ message: this.message,
26
+ error: this.error
27
+ };
28
+ }
29
+ }
30
+ exports.HttpResponseAndErrorHandling = HttpResponseAndErrorHandling;