mobioffice-cli 1.0.0 → 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,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Geofence = void 0;
4
+ const company_model_1 = require("./company.model");
5
+ class Geofence {
6
+ static async getOrCreateGeoFence(firestore, geofenceDoc) {
7
+ let snapshot = await firestore.collection('Geofence').where('companyNickName', '==', geofenceDoc.companyNickName).get();
8
+ if (snapshot.empty) {
9
+ if (!geofenceDoc.companyId) {
10
+ let companynickname = await company_model_1.Company.getCompanyIdbyNickname(firestore, geofenceDoc.companyNickName);
11
+ geofenceDoc.companyId = companynickname;
12
+ }
13
+ geofenceDoc = await Geofence.convertGeofenceDataType(geofenceDoc);
14
+ let geofence_snapshot = firestore.collection("Geofence").doc();
15
+ let docId = geofence_snapshot.id;
16
+ geofenceDoc.id = docId;
17
+ geofence_snapshot.set(geofenceDoc);
18
+ return geofenceDoc;
19
+ }
20
+ return snapshot.docs[0].data();
21
+ }
22
+ static async convertGeofenceDataType(geoFenceDoc) {
23
+ if (geoFenceDoc.geoFenceIds) {
24
+ geoFenceDoc.geoFenceIds = geoFenceDoc.geoFenceIds.split('&').map(Number);
25
+ }
26
+ else {
27
+ geoFenceDoc.geoFenceIds = [];
28
+ }
29
+ for (let value of geoFenceDoc.geoFence) {
30
+ if (value.area) {
31
+ value.area = Number(value.area);
32
+ }
33
+ value.attributes = {};
34
+ if (value.calendarId) {
35
+ value.calendarId = Number(value.calendarId);
36
+ }
37
+ if (value.id) {
38
+ value.id = Number(value.id);
39
+ }
40
+ }
41
+ return geoFenceDoc;
42
+ }
43
+ static async updateGeofence(firestore, arrayUnion, geofenceDoc) {
44
+ let snapshot = await firestore.collection('Geofence').where('companyNickName', '==', geofenceDoc.companyNickName).get();
45
+ if (snapshot.empty) {
46
+ return `create geofence for this company ${geofenceDoc.nickName}`;
47
+ }
48
+ else {
49
+ for (let geofenceDetail of geofenceDoc.geoFence) {
50
+ snapshot.forEach((doc) => {
51
+ doc.ref.update({
52
+ geoFence: arrayUnion(geofenceDetail),
53
+ geoFenceIds: arrayUnion(geofenceDetail.id)
54
+ });
55
+ });
56
+ }
57
+ return "updated successfully";
58
+ }
59
+ }
60
+ }
61
+ exports.Geofence = Geofence;
@@ -0,0 +1,12 @@
1
+ import { Post } from "./post.model";
2
+ import * as admin from "firebase-admin";
3
+ declare class LeaveApplication extends Post {
4
+ actionEvent: string;
5
+ actionType: string;
6
+ actionName: string;
7
+ isProcessed: boolean;
8
+ static setIncomingInfoToLeaveApplicationPost(info: any, post: LeaveApplication): Promise<LeaveApplication>;
9
+ static modifyExtraDataForLeave(info: any): Promise<any>;
10
+ static getOpenedLeaveRequests(firestore: admin.firestore.Firestore, nickName: string, phone: string, actionName: string): Promise<admin.firestore.DocumentData[]>;
11
+ }
12
+ export { LeaveApplication };
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LeaveApplication = void 0;
4
+ const post_model_1 = require("./post.model");
5
+ const action_model_1 = require("./action.model");
6
+ const company_model_1 = require("./company.model");
7
+ class LeaveApplication extends post_model_1.Post {
8
+ actionEvent = "";
9
+ actionType = "worklog";
10
+ actionName = "leave-application";
11
+ isProcessed = false;
12
+ static async setIncomingInfoToLeaveApplicationPost(info, post) {
13
+ post.actionEvent = info.extra.actionEvent;
14
+ post.actionId = info.extra.actionId;
15
+ post.actionName = info.extra.actionName;
16
+ post.actionType = info.extra.actionType;
17
+ post.companyId = info.extra.companyId;
18
+ post.createdAt = info.extra.createdAt;
19
+ post.description = `Leave application for ${info.extra.extraData.reason} on ${info.extra.extraData.leaveDate}.`;
20
+ post.eventId = info.extra.eventId;
21
+ post.isGeofence = info.extra.isGeofence;
22
+ post.userId = info.userId;
23
+ const newExtraData = await this.modifyExtraDataForLeave(info);
24
+ post.extraData = newExtraData;
25
+ post.isProcessed = false;
26
+ post.target = info.target || "";
27
+ post.time = info.extra.time;
28
+ post.checkInternet = info.extra.checkInternet;
29
+ return post;
30
+ }
31
+ static async modifyExtraDataForLeave(info) {
32
+ const time = info.extra.startAt;
33
+ const date = new Date(info.extra.startAt).toLocaleDateString("en-GB");
34
+ const newExtraData = {
35
+ ...info.extra.extraData,
36
+ date: date,
37
+ time: time,
38
+ reason: info.extra.extraData.reason,
39
+ appliedDate: info.extra.extraData.leaveDate,
40
+ forApprovalText: "Approval Pending"
41
+ };
42
+ return newExtraData;
43
+ }
44
+ static async getOpenedLeaveRequests(firestore, nickName, phone, actionName) {
45
+ try {
46
+ let teamList = await company_model_1.Company.getTeamListOfManager(firestore, nickName, phone);
47
+ teamList = teamList.map(user => user.id);
48
+ const allOpenRequests = [];
49
+ const companyId = await company_model_1.Company.getCompanyIdByNickName(firestore, nickName);
50
+ const actionId = await action_model_1.Action.getActionId(firestore, companyId, actionName);
51
+ for (let userId of teamList) {
52
+ const openRequestsDocs = await firestore.collection("Companies")
53
+ .doc(companyId)
54
+ .collection("Actions")
55
+ .doc(actionId)
56
+ .collection(actionName)
57
+ .where("isProcessed", "==", false)
58
+ .where("userId", "==", userId)
59
+ .get();
60
+ const openRequests = openRequestsDocs.docs.map(doc => {
61
+ return doc.data();
62
+ });
63
+ allOpenRequests.push(...openRequests);
64
+ }
65
+ return allOpenRequests;
66
+ }
67
+ catch (error) {
68
+ throw new Error(error.message);
69
+ }
70
+ }
71
+ }
72
+ exports.LeaveApplication = LeaveApplication;
@@ -0,0 +1,25 @@
1
+ import * as admin from 'firebase-admin';
2
+ declare class License {
3
+ company: string;
4
+ to_date?: string;
5
+ from_date?: string;
6
+ user: string;
7
+ license_type?: string;
8
+ device_id: string;
9
+ static minimumDevices: number;
10
+ static validateUserLicense(firestore: admin.firestore.Firestore, arrayUnion: any, today_date: admin.firestore.Timestamp, nickName: string, user: string, device_id: string, modelName: string, brand: string): Promise<any[]>;
11
+ static getUserDevices(firestore: admin.firestore.Firestore, nickName: string, phone: string): Promise<{
12
+ data: {
13
+ resArray: any;
14
+ };
15
+ message: string;
16
+ }>;
17
+ static grantUserLicense(firestore: admin.firestore.Firestore, nickName: string, newUserDetails: License): Promise<string>;
18
+ static convertDatetoTimestamp(data: any): Promise<number>;
19
+ static convertTimestamptoDate(timestamp: number): Promise<string>;
20
+ static extendLicense(firestore: admin.firestore.Firestore, nickName: string, userDetails: License): Promise<"User does exists" | "User details not found" | "Updated successfully">;
21
+ static resetDeviceIdforUserLicense(firestore: admin.firestore.Firestore, company: string, phone: string): Promise<{
22
+ message: string;
23
+ }>;
24
+ }
25
+ export { License };
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.License = void 0;
4
+ const action_model_1 = require("./action.model");
5
+ const company_model_1 = require("./company.model");
6
+ class License {
7
+ company = "";
8
+ to_date = ""; //new Date();
9
+ from_date = ""; //new Date();
10
+ user = "";
11
+ license_type = "";
12
+ device_id = "";
13
+ static minimumDevices = 1;
14
+ static async validateUserLicense(firestore, arrayUnion, today_date, nickName, user, device_id, modelName, brand) {
15
+ user = user.replace(' ', '+');
16
+ console.log(user);
17
+ let userDetails_snapshot = await firestore.collection('Licenses').where('company', '==', nickName).where('user', '==', user).get();
18
+ if (userDetails_snapshot.empty) {
19
+ return ["User not found", null, null];
20
+ }
21
+ let flag = false;
22
+ let device_flag = false;
23
+ let license_date = await Promise.all(userDetails_snapshot.docs.map(async (doc) => {
24
+ if (doc.data().device_id == 1) {
25
+ doc.ref.update({
26
+ device_id: device_id,
27
+ extraDevices: arrayUnion({
28
+ deviceId: device_id,
29
+ modelName: modelName,
30
+ brandName: brand,
31
+ fromData: Date.now()
32
+ })
33
+ });
34
+ device_flag = true;
35
+ if ((today_date.seconds * 1000) <= doc.data().to_date) {
36
+ flag = true;
37
+ }
38
+ }
39
+ else {
40
+ let extraDevices = doc.data().extraDevices ? doc.data().extraDevices : [];
41
+ extraDevices = extraDevices.map((device) => {
42
+ return device.deviceId;
43
+ });
44
+ const uniqueExtraDevices = Array.from(new Set([...extraDevices]));
45
+ for (let storedDeviceId of uniqueExtraDevices) {
46
+ if (device_id == storedDeviceId) {
47
+ device_flag = true;
48
+ }
49
+ }
50
+ if ((today_date.seconds * 1000) <= doc.data().to_date) {
51
+ flag = true;
52
+ }
53
+ if (!device_flag) {
54
+ let userInfo = await company_model_1.Company.getUserDetailsByPhone(firestore, nickName, user);
55
+ userInfo = userInfo[0];
56
+ const devicesLimit = userInfo.devicesLimit ? userInfo.devicesLimit : this.minimumDevices;
57
+ console.log("devicesLimit", devicesLimit);
58
+ if (flag) {
59
+ if (extraDevices.length < Number(devicesLimit)) {
60
+ const objToStore = {
61
+ deviceId: device_id,
62
+ modelName: modelName,
63
+ brandName: brand,
64
+ fromDate: Date.now()
65
+ };
66
+ userDetails_snapshot.forEach((doc) => {
67
+ doc.ref.update({
68
+ extraDevices: arrayUnion(objToStore)
69
+ });
70
+ });
71
+ device_flag = true;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ return doc.data().to_date;
77
+ }));
78
+ let filtered_newest_date = license_date.reduce((a, b) => { return a > b ? a : b; });
79
+ let convert_to_timestamp = await License.convertTimestamptoDate(filtered_newest_date);
80
+ const status = flag && device_flag;
81
+ const action = "requestForm";
82
+ const companyId = await company_model_1.Company.getCompanyIdByNickName(firestore, nickName);
83
+ const actionId = await action_model_1.Action.getActionId(firestore, companyId, action);
84
+ return [status, convert_to_timestamp, device_flag, actionId];
85
+ }
86
+ static async getUserDevices(firestore, nickName, phone) {
87
+ let license = await firestore.collection("Licenses")
88
+ .where("user", "==", `+${phone}`)
89
+ .where("company", "==", nickName)
90
+ .get();
91
+ license = license.docs[0].data();
92
+ const devicesList = license.extraDevices.map((obj) => {
93
+ let label;
94
+ if (obj.modelName && obj.brandName) {
95
+ label = `${obj.brandName}(${obj.modelName})`;
96
+ }
97
+ return {
98
+ id: obj.deviceId,
99
+ label: label ? label : obj.deviceId
100
+ };
101
+ });
102
+ if (devicesList.length > 0) {
103
+ return {
104
+ data: {
105
+ resArray: devicesList,
106
+ },
107
+ message: "success"
108
+ };
109
+ }
110
+ else {
111
+ return {
112
+ data: {
113
+ resArray: [{
114
+ label: "No devices found"
115
+ }]
116
+ },
117
+ message: "Error"
118
+ };
119
+ }
120
+ }
121
+ static async grantUserLicense(firestore, nickName, newUserDetails) {
122
+ console.log(newUserDetails);
123
+ newUserDetails.user = "+" + newUserDetails.user;
124
+ let to_date = await License.convertDatetoTimestamp(newUserDetails["to_date"]);
125
+ let from_date = await License.convertDatetoTimestamp(newUserDetails["from_date"]);
126
+ console.log(to_date, from_date);
127
+ Object.assign(newUserDetails, { company: nickName }, { to_date: to_date }, { from_date: from_date });
128
+ let company_id = await company_model_1.Company.getCompanyIdbyNickname(firestore, newUserDetails.company);
129
+ if (company_id == 'Not found') {
130
+ return "Company does not exists";
131
+ }
132
+ let snapshot = await firestore.collection('Companies').doc(company_id).collection('Users').where('phone', '==', newUserDetails.user).get();
133
+ if (snapshot.empty) {
134
+ return "User does not exists";
135
+ }
136
+ let user_license = await firestore.collection('Licenses').where('company', '==', `${newUserDetails.company}`).where('user', '==', newUserDetails.user).get();
137
+ let flag = false;
138
+ let user_list = [];
139
+ user_license.forEach((doc) => {
140
+ user_list.push(doc.data());
141
+ if (newUserDetails.company == doc.data().company) {
142
+ if (newUserDetails.user == doc.data().user) {
143
+ if (newUserDetails.license_type == doc.data().license_type) {
144
+ if (newUserDetails.to_date == doc.data().to_date) {
145
+ flag = true;
146
+ }
147
+ }
148
+ }
149
+ }
150
+ });
151
+ if (flag) {
152
+ return `${newUserDetails.user} data already exists`;
153
+ }
154
+ await firestore.collection('Licenses').add(newUserDetails);
155
+ return `${newUserDetails.user} created successfully`;
156
+ }
157
+ static async convertDatetoTimestamp(data) {
158
+ const [day, month, year] = data.split('-');
159
+ const timestamp = new Date(year, month - 1, day, 24, 0, 0).getTime();
160
+ return timestamp;
161
+ }
162
+ static async convertTimestamptoDate(timestamp) {
163
+ let date = new Date(timestamp).toLocaleString();
164
+ return date;
165
+ }
166
+ static async extendLicense(firestore, nickName, userDetails) {
167
+ userDetails.user = "+" + userDetails.user;
168
+ let companyId = await company_model_1.Company.getCompanyIdbyNickname(firestore, nickName);
169
+ let userExist = await firestore.collection('Companies').doc(companyId).collection('Users').where('phone', '==', userDetails.user).get();
170
+ if (userExist.empty) {
171
+ return "User does exists";
172
+ }
173
+ let snapshot = await firestore.collection('Licenses').where('company', '==', nickName).where('user', '==', userDetails.user).where('license_type', '==', userDetails.license_type).get();
174
+ if (snapshot.empty) {
175
+ return "User details not found";
176
+ }
177
+ let toDateTimestamp = await this.convertDatetoTimestamp(userDetails.to_date);
178
+ snapshot.forEach((doc) => {
179
+ doc.ref.update({ to_date: toDateTimestamp });
180
+ });
181
+ return 'Updated successfully';
182
+ }
183
+ static async resetDeviceIdforUserLicense(firestore, company, phone) {
184
+ if (phone[0] != "+") {
185
+ phone = "+" + phone;
186
+ }
187
+ console.log(phone);
188
+ let userLicense = await firestore.collection("Licenses").where("user", "==", phone).where("company", "==", company).get();
189
+ if (userLicense.empty) {
190
+ return { message: "User not found" };
191
+ }
192
+ userLicense.forEach((doc) => {
193
+ doc.ref.update({ device_id: 1 });
194
+ });
195
+ return { message: "updated" };
196
+ }
197
+ }
198
+ exports.License = License;
@@ -0,0 +1,6 @@
1
+ import * as admin from 'firebase-admin';
2
+ declare class Logs {
3
+ static logEduceResponseToDB(firestore: admin.firestore.Firestore, userId: string, companyId: string, responseFromAPI: any, apiName: string): Promise<void>;
4
+ static createLogDocToStore(responseFromEduce: any): Promise<any>;
5
+ }
6
+ export { Logs };
@@ -1,25 +1,25 @@
1
- import * as admin from 'firebase-admin';
2
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logs = void 0;
3
4
  class Logs {
4
-
5
- static async logEduceResponseToDB(firestore: admin.firestore.Firestore, userId: string, companyId: string, responseFromAPI: any, apiName: string) {
5
+ static async logEduceResponseToDB(firestore, userId, companyId, responseFromAPI, apiName) {
6
6
  const logToStore = await this.createLogDocToStore(responseFromAPI);
7
7
  let responseObj = {
8
8
  createdAt: new Date().getTime(),
9
9
  logToStore,
10
10
  apiName
11
- }
12
- await firestore.collection("Logs").doc(userId).collection(companyId).doc().set(responseObj)
11
+ };
12
+ await firestore.collection("Logs").doc(userId).collection(companyId).doc().set(responseObj);
13
13
  }
14
-
15
- static async createLogDocToStore(responseFromEduce: any) {
16
- let logToStore: any = {};
14
+ static async createLogDocToStore(responseFromEduce) {
15
+ let logToStore = {};
17
16
  if (responseFromEduce.data) {
18
17
  logToStore.message = responseFromEduce.message;
19
- } else if (responseFromEduce.error) {
18
+ }
19
+ else if (responseFromEduce.error) {
20
20
  logToStore.error = responseFromEduce.error;
21
21
  }
22
22
  return logToStore;
23
23
  }
24
24
  }
25
- export { Logs }
25
+ exports.Logs = Logs;
@@ -0,0 +1,11 @@
1
+ import { Pool } from "mysql2/typings/mysql/lib/Pool";
2
+ declare class MeetingSummary {
3
+ customerName: string;
4
+ contactName: string;
5
+ meetingImage: string;
6
+ constructor(customerName: string, contactName: string, meetingImage: string);
7
+ static syncReportDBFirebaseUserEntries(meetingsDBConnection: Pool, doc: any, employeeName: string): Promise<void>;
8
+ static uploadEntryToReportDB(meetingsConnection: Pool, info: any): Promise<void>;
9
+ static updateEndTimeToReportDB(meetingsConnection: Pool, eventId: string, meetingEndTime: any): Promise<void>;
10
+ }
11
+ export { MeetingSummary };
@@ -0,0 +1,79 @@
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.MeetingSummary = void 0;
7
+ const crud_1 = __importDefault(require("./crud/crud"));
8
+ class MeetingSummary {
9
+ customerName;
10
+ contactName;
11
+ meetingImage;
12
+ constructor(customerName, contactName, meetingImage) {
13
+ this.customerName = customerName;
14
+ this.meetingImage = meetingImage;
15
+ this.contactName = contactName;
16
+ }
17
+ static async syncReportDBFirebaseUserEntries(meetingsDBConnection, doc, employeeName) {
18
+ try {
19
+ const reportData = {
20
+ companyId: doc.companyId ?? "",
21
+ employeeName: employeeName ?? "",
22
+ eventId: doc.eventId ?? "",
23
+ userId: doc.userId ?? "",
24
+ phone: doc.phone ?? "",
25
+ meetingDate: doc.extraData.date ?? "",
26
+ meetingStartTime: doc.extraData["Start Time"] ?? "",
27
+ meetingEndTime: doc.extraData["End Time"] ?? "",
28
+ meetingImage: doc.extraData["meetingImage"] ?? "",
29
+ contactName: doc.extraData.contactName ?? "",
30
+ customerName: doc.extraData.customerName ?? "",
31
+ companyNickName: "benara",
32
+ time: doc.date
33
+ };
34
+ await this.uploadEntryToReportDB(meetingsDBConnection, reportData);
35
+ }
36
+ catch (error) {
37
+ console.log(error.message);
38
+ }
39
+ }
40
+ static async uploadEntryToReportDB(meetingsConnection, info) {
41
+ const curdService = new crud_1.default(meetingsConnection);
42
+ try {
43
+ const qryString = `INSERT INTO meeting_reports
44
+ (userId, eventId, companyId, name, phone, companyNickName,
45
+ meetingDate, meetingStartTime, meetingEndTime, contactName, customerName,
46
+ meetingImage, createOn )
47
+ VALUES ('${info.userId}',
48
+ '${info.eventId}',
49
+ '${info.companyId}',
50
+ '${info.employeeName}',
51
+ '${info.phone}',
52
+ '${info.companyNickName}',
53
+ '${info.meetingDate}',
54
+ '${info.meetingStartTime}',
55
+ '${info.meetingEndTime}',
56
+ '${info.contactName}',
57
+ '${info.customerName}',
58
+ '${info.meetingImage}',
59
+ '${info.time}')`;
60
+ await curdService.query(qryString);
61
+ }
62
+ catch (error) {
63
+ console.log(error.message);
64
+ }
65
+ }
66
+ static async updateEndTimeToReportDB(meetingsConnection, eventId, meetingEndTime) {
67
+ const curdService = new crud_1.default(meetingsConnection);
68
+ try {
69
+ const qryString = `update meeting_reports
70
+ set meetingEndTime = '${meetingEndTime}'
71
+ where eventId = '${eventId}'`;
72
+ await curdService.query(qryString);
73
+ }
74
+ catch (error) {
75
+ console.log(error);
76
+ }
77
+ }
78
+ }
79
+ exports.MeetingSummary = MeetingSummary;
@@ -0,0 +1,18 @@
1
+ import { Post } from "./post.model";
2
+ import * as admin from "firebase-admin";
3
+ declare class Meter extends Post {
4
+ actionEvent: string;
5
+ actionType: string;
6
+ actionName: string;
7
+ static createPostForMeter(firestore: admin.firestore.Firestore, postInfo: any): Promise<unknown>;
8
+ static setIncomingInfoToMeter(info: any, post: Meter): Promise<Meter>;
9
+ static modifyExtraDataForMeter(info: any): Promise<{
10
+ status: any;
11
+ machineMeterId: any;
12
+ currentReading: any;
13
+ consumption: any;
14
+ date: string;
15
+ time: any;
16
+ }>;
17
+ }
18
+ export { Meter };
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Meter = void 0;
4
+ const post_model_1 = require("./post.model");
5
+ class Meter extends post_model_1.Post {
6
+ actionEvent = "";
7
+ actionType = "worklog";
8
+ actionName = "meter_reading";
9
+ static async createPostForMeter(firestore, postInfo) {
10
+ let post = new Meter();
11
+ post = await Meter.setIncomingInfoToMeter(postInfo, post);
12
+ let eventId = await post_model_1.Post.createNewPost(firestore, post);
13
+ return eventId;
14
+ }
15
+ static async setIncomingInfoToMeter(info, post) {
16
+ post.actionEvent = info.extra.actionEvent;
17
+ post.id = info.id;
18
+ post.actionId = info.extra.actionId;
19
+ post.companyId = info.extra.companyId;
20
+ post.createdAt = info.extra.createdAt;
21
+ post.description = info.description;
22
+ post.eventId = info.extra.eventId;
23
+ post.isGeofence = info.extra.isGeofence;
24
+ post.userId = info.userId;
25
+ const newExtraData = await this.modifyExtraDataForMeter(info);
26
+ post.extraData = newExtraData;
27
+ post.seen = info.extra.seen;
28
+ post.startAt = "";
29
+ post.startLat = info.extra.startLat;
30
+ post.startLong = info.extra.startLong;
31
+ post.endAt = "";
32
+ post.endLat = info.extra.endLat;
33
+ post.endLong = info.extra.endLong;
34
+ post.stepValues = info.extra.stepValues;
35
+ post.time = info.extra.time;
36
+ post.checkInternet = info.extra.checkInternet;
37
+ return post;
38
+ }
39
+ static async modifyExtraDataForMeter(info) {
40
+ const time = info.createdAt;
41
+ const date = new Date(time).toLocaleDateString("en-GB");
42
+ const newExtraData = {
43
+ // ...info.extra.extraData,
44
+ status: info.status,
45
+ machineMeterId: info.machineMeterId,
46
+ currentReading: info.currentReading,
47
+ consumption: info.consumption,
48
+ date: date,
49
+ time: time
50
+ };
51
+ return newExtraData;
52
+ }
53
+ }
54
+ exports.Meter = Meter;
@@ -0,0 +1,15 @@
1
+ import { Post } from "./post.model";
2
+ import * as admin from "firebase-admin";
3
+ declare class MissingPunch extends Post {
4
+ actionEvent: string;
5
+ actionType: string;
6
+ actionName: string;
7
+ description: string;
8
+ isProcessed: boolean;
9
+ missedEvent: string;
10
+ static getOpenedMpRequests(firestore: admin.firestore.Firestore, nickName: string, phone: string): Promise<admin.firestore.DocumentData[]>;
11
+ static createUpdatedFeed(requestDoc: any, description: string, forApprovalText: string): Promise<any>;
12
+ static updateFeedByUserId(firestore: admin.firestore.Firestore, updatedFeed: any, userId: string, companyId: string): Promise<void>;
13
+ static updateUserManagersFeed(firestore: admin.firestore.Firestore, updatedFeed: any, userId: string, companyId: string): Promise<void>;
14
+ }
15
+ export { MissingPunch };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MissingPunch = void 0;
4
+ const post_model_1 = require("./post.model");
5
+ const action_model_1 = require("./action.model");
6
+ const user_model_1 = require("./user.model");
7
+ const company_model_1 = require("./company.model");
8
+ class MissingPunch extends post_model_1.Post {
9
+ actionEvent = "";
10
+ actionType = "worklog";
11
+ actionName = "mp";
12
+ description = "";
13
+ isProcessed = false;
14
+ missedEvent = "";
15
+ static async getOpenedMpRequests(firestore, nickName, phone) {
16
+ let teamList = await company_model_1.Company.getTeamListOfManager(firestore, nickName, phone);
17
+ teamList = teamList.map(user => user.id);
18
+ const allOpenRequests = [];
19
+ const companyId = await company_model_1.Company.getCompanyIdByNickName(firestore, nickName);
20
+ const actionId = await action_model_1.Action.getActionId(firestore, companyId, "mp");
21
+ for (let userId of teamList) {
22
+ const openRequestsDocs = await firestore.collection("Companies")
23
+ .doc(companyId)
24
+ .collection("Actions")
25
+ .doc(actionId)
26
+ .collection("mp")
27
+ .where("isProcessed", "==", false)
28
+ .where("userId", "==", userId)
29
+ .get();
30
+ const openRequests = openRequestsDocs.docs.map(doc => {
31
+ return doc.data();
32
+ });
33
+ allOpenRequests.push(...openRequests);
34
+ }
35
+ return allOpenRequests;
36
+ }
37
+ static async createUpdatedFeed(requestDoc, description, forApprovalText) {
38
+ const extraData = {
39
+ ...requestDoc.extraData,
40
+ forApprovalText
41
+ };
42
+ const updatedFeed = {
43
+ ...requestDoc,
44
+ description: description,
45
+ forApprovalText,
46
+ extraData
47
+ };
48
+ return updatedFeed;
49
+ }
50
+ static async updateFeedByUserId(firestore, updatedFeed, userId, companyId) {
51
+ const oldFeeds = await firestore.collection("Feeds")
52
+ .doc(userId)
53
+ .collection(companyId)
54
+ .where("eventId", "==", updatedFeed.eventId)
55
+ .get();
56
+ oldFeeds.forEach((doc) => {
57
+ doc.ref.set(updatedFeed);
58
+ });
59
+ }
60
+ static async updateUserManagersFeed(firestore, updatedFeed, userId, companyId) {
61
+ updatedFeed.description = updatedFeed.description.slice(5);
62
+ const userDetails = await user_model_1.User.getUserInfoById(firestore, userId, companyId);
63
+ const managersList = userDetails.reportingTo;
64
+ for (let id of managersList) {
65
+ await this.updateFeedByUserId(firestore, updatedFeed, id, companyId);
66
+ }
67
+ }
68
+ }
69
+ exports.MissingPunch = MissingPunch;