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.
- package/{src/index.ts → lib/index.d.ts} +1 -45
- package/lib/models/Feed-Details-Screen.model.d.ts +6 -0
- package/lib/models/Feed-Details-Screen.model.js +27 -0
- package/lib/models/action.model.d.ts +58 -0
- package/lib/models/action.model.js +315 -0
- package/lib/models/actions/doffing.d.ts +6 -0
- package/lib/models/actions/doffing.js +64 -0
- package/lib/models/actions/folding.d.ts +7 -0
- package/lib/models/actions/folding.js +37 -0
- package/lib/models/attendance.model.d.ts +44 -0
- package/lib/models/attendance.model.js +446 -0
- package/lib/models/cicoPost.model.d.ts +9 -0
- package/lib/models/cicoPost.model.js +19 -0
- package/lib/models/company.model.d.ts +67 -0
- package/lib/models/company.model.js +725 -0
- package/lib/models/contact-us/resquest.model.d.ts +30 -0
- package/lib/models/contact-us/resquest.model.js +73 -0
- package/lib/models/crud/crud.d.ts +7 -0
- package/lib/models/crud/crud.js +27 -0
- package/lib/models/customCollection.model.d.ts +9 -0
- package/lib/models/customCollection.model.js +40 -0
- package/lib/models/customer/customer.model.d.ts +32 -0
- package/lib/models/customer/customer.model.js +62 -0
- package/lib/models/deviceChangeReq.d.ts +10 -0
- package/lib/models/deviceChangeReq.js +138 -0
- package/lib/models/dispatch.model.d.ts +14 -0
- package/lib/models/dispatch.model.js +93 -0
- package/lib/models/feed.models.d.ts +8 -0
- package/lib/models/feed.models.js +97 -0
- package/lib/models/geofence.model.d.ts +7 -0
- package/lib/models/geofence.model.js +61 -0
- package/lib/models/leaveApplicationPost.model.d.ts +12 -0
- package/lib/models/leaveApplicationPost.model.js +72 -0
- package/lib/models/license.model.d.ts +25 -0
- package/lib/models/license.model.js +198 -0
- package/lib/models/log.model.d.ts +6 -0
- package/{src/models/log.model.ts → lib/models/log.model.js} +11 -11
- package/lib/models/meeting.model.d.ts +11 -0
- package/lib/models/meeting.model.js +79 -0
- package/lib/models/meter.model.d.ts +18 -0
- package/lib/models/meter.model.js +54 -0
- package/lib/models/missingPunchPost.model.d.ts +15 -0
- package/lib/models/missingPunchPost.model.js +69 -0
- package/lib/models/offline.model.d.ts +70 -0
- package/lib/models/offline.model.js +831 -0
- package/lib/models/post.model.d.ts +38 -0
- package/lib/models/post.model.js +94 -0
- package/lib/models/printDetailsScreen.model.d.ts +6 -0
- package/lib/models/printDetailsScreen.model.js +27 -0
- package/lib/models/pushNotifications/pushNotification.model.d.ts +4 -0
- package/lib/models/pushNotifications/pushNotification.model.js +17 -0
- package/lib/models/report-actions.model.d.ts +26 -0
- package/lib/models/report-actions.model.js +56 -0
- package/lib/models/report-definition-details.model.d.ts +13 -0
- package/lib/models/report-definition-details.model.js +85 -0
- package/lib/models/report-definition.model.d.ts +23 -0
- package/lib/models/report-definition.model.js +26 -0
- package/lib/models/report-definitions-summary.model.d.ts +8 -0
- package/lib/models/report-definitions-summary.model.js +59 -0
- package/lib/models/report-detail-data.model.d.ts +46 -0
- package/lib/models/report-detail-data.model.js +49 -0
- package/lib/models/report-visibility.model.d.ts +7 -0
- package/lib/models/report-visibility.model.js +42 -0
- package/lib/models/report.model.d.ts +19 -0
- package/lib/models/report.model.js +138 -0
- package/lib/models/reportGenerator.model.d.ts +164 -0
- package/lib/models/reportGenerator.model.js +642 -0
- package/lib/models/response.model.d.ts +18 -0
- package/lib/models/response.model.js +30 -0
- package/lib/models/steps.factory.model.d.ts +172 -0
- package/lib/models/steps.factory.model.js +187 -0
- package/lib/models/storeGupShupLog.model.d.ts +6 -0
- package/lib/models/storeGupShupLog.model.js +51 -0
- package/lib/models/summary.model.d.ts +10 -0
- package/{src/models/summary.model.ts → lib/models/summary.model.js} +28 -27
- package/lib/models/tasks/sub-task-group.model.d.ts +42 -0
- package/lib/models/tasks/sub-task-group.model.js +154 -0
- package/lib/models/tasks/tags.model.d.ts +29 -0
- package/lib/models/tasks/tags.model.js +70 -0
- package/lib/models/tasks/task-group.model.d.ts +53 -0
- package/lib/models/tasks/task-group.model.js +156 -0
- package/lib/models/tasks/task.model.d.ts +163 -0
- package/lib/models/tasks/task.model.js +603 -0
- package/lib/models/tempCollection.model.d.ts +40 -0
- package/{src/models/tempCollection.model.ts → lib/models/tempCollection.model.js} +114 -130
- package/lib/models/user.model.d.ts +42 -0
- package/lib/models/user.model.js +272 -0
- package/lib/models/utility.model.d.ts +13 -0
- package/lib/models/utility.model.js +93 -0
- package/lib/models/visitorManagement/acknowledgement.model.d.ts +9 -0
- package/lib/models/visitorManagement/acknowledgement.model.js +55 -0
- package/lib/models/visitorManagement/invite.model.d.ts +32 -0
- package/lib/models/visitorManagement/invite.model.js +326 -0
- package/lib/models/visitorManagement/newIn.model.d.ts +19 -0
- package/lib/models/visitorManagement/newIn.model.js +67 -0
- package/lib/models/visitorManagement/selfServe.model.d.ts +13 -0
- package/lib/models/visitorManagement/selfServe.model.js +46 -0
- package/lib/models/worklogPost.model.d.ts +6 -0
- package/lib/models/worklogPost.model.js +9 -0
- package/lib/services/customer.d.ts +30 -0
- package/lib/services/customer.js +354 -0
- package/lib/services/meeting.d.ts +19 -0
- package/lib/services/meeting.js +109 -0
- package/package.json +4 -1
- package/.prettierrc +0 -4
- package/a.js +0 -3
- package/scripts/1.ts +0 -1300
- package/scripts/GCloudPubSub/pub-sub-config.json +0 -12
- package/scripts/GCloudPubSub/visitorAutoRejection.ts +0 -86
- package/scripts/actions/assignUsersFromOneActionToOther.ts +0 -64
- package/scripts/actions/assignUsersListToAction.ts +0 -81
- package/scripts/actions/getActionsListOfUser.ts +0 -42
- package/scripts/actions/getCompanyUserDetails.ts +0 -49
- package/scripts/actions/giveActionToUser.ts +0 -41
- package/scripts/actions/giveUsersToActivitySelector.ts +0 -56
- package/scripts/actions/groupActionsInActivitySelector.ts +0 -101
- package/scripts/actions/modifySummaryReportDB.ts +0 -42
- package/scripts/actions/setUrlToActionStep.ts +0 -18
- package/scripts/actions/syncMySqlAttendanceDBWithFirebase.ts +0 -93
- package/scripts/actions/syncMySqlMeetingsDBWithFirebase.ts +0 -103
- package/scripts/actions/test.ts +0 -29
- package/scripts/actions/transferFeedsOldIdToNew.ts +0 -40
- package/scripts/actions/transformUserIntoManager.ts +0 -89
- package/scripts/argvConfig.js +0 -9
- package/scripts/backUpData/testCode.ts +0 -131
- package/scripts/benaraScripts/addWorkAreaMap.ts +0 -46
- package/scripts/benaraScripts/add_customers.ts +0 -26
- package/scripts/benaraScripts/add_customers_contact.ts +0 -27
- package/scripts/benaraScripts/add_empty_work_area.ts +0 -17
- package/scripts/benaraScripts/assignManagers.ts +0 -35
- package/scripts/benaraScripts/changeCheckInFlag.ts +0 -45
- package/scripts/benaraScripts/createCustomerContactsList.ts +0 -170
- package/scripts/benaraScripts/createUserByDeletingOldUser.ts +0 -70
- package/scripts/benaraScripts/createUsersAreaMapCollection.ts +0 -23
- package/scripts/benaraScripts/createWorkAreaMap.ts +0 -24
- package/scripts/benaraScripts/mapWorkAreasToUsers.ts +0 -112
- package/scripts/companies_data.json +0 -2496
- package/scripts/create_or_update_users.ts +0 -31
- package/scripts/csvToJson/csvToJson.ts +0 -90
- package/scripts/csvToJson/users.json +0 -3896
- package/scripts/db.js +0 -27
- package/scripts/db.json +0 -13
- package/scripts/dbMySql.ts +0 -63
- package/scripts/delete_action_steps.ts +0 -11
- package/scripts/delete_user.ts +0 -71
- package/scripts/dev_companies_data.json +0 -613
- package/scripts/enroll.xlsx +0 -0
- package/scripts/export_users.ts +0 -72
- package/scripts/files/visitorManagementFiles/displayScreen.json +0 -70
- package/scripts/files/visitorManagementFiles/init_report_visibility.ts +0 -79
- package/scripts/firebaseConfig.js +0 -12
- package/scripts/firebaseDocs/deleteIncommingCollection.ts +0 -47
- package/scripts/firebaseDocs/updateDoc.ts +0 -43
- package/scripts/getActionDataIntoJSON/getActionData.ts +0 -68
- package/scripts/get_attendance_by_any_date.ts +0 -14
- package/scripts/get_attendance_by_month.ts +0 -12
- package/scripts/get_attendance_monthly_by_team.ts +0 -11
- package/scripts/get_daily_report.ts +0 -10
- package/scripts/get_mangers.ts +0 -13
- package/scripts/grant_user_license.ts +0 -18
- package/scripts/init_CustomCollection.ts +0 -16
- package/scripts/init_action_steps.ts +0 -28
- package/scripts/init_actions.ts +0 -31
- package/scripts/init_company.ts +0 -18
- package/scripts/init_customer_mysql.ts +0 -12
- package/scripts/init_feed.ts +0 -4
- package/scripts/init_feed_details_screen.ts +0 -14
- package/scripts/init_geofence.ts +0 -26
- package/scripts/init_print_details_screen.ts +0 -14
- package/scripts/init_report_actions.ts +0 -24
- package/scripts/init_report_definition_detail.ts +0 -26
- package/scripts/init_report_definition_summary.ts +0 -16
- package/scripts/init_report_visibility.ts +0 -46
- package/scripts/init_user_customcollection.ts +0 -16
- package/scripts/json/action.json +0 -21
- package/scripts/json/company.json +0 -24
- package/scripts/json/report-action.json +0 -13
- package/scripts/json/report-def-deet.json +0 -43
- package/scripts/json/resp.json +0 -784
- package/scripts/json/steps.json +0 -24
- package/scripts/json/test.ts +0 -49
- package/scripts/mysqlConfig.ts +0 -9
- package/scripts/revoke_or_extend_license.ts +0 -14
- package/scripts/stream.js +0 -4
- package/scripts/testing1.ts +0 -35
- package/scripts/update/doc.json +0 -20
- package/scripts/update/getDocByPath.ts +0 -34
- package/scripts/update/updateDocByPath.ts +0 -47
- package/scripts/update/updateUsersOfCompanies.ts +0 -58
- package/scripts/update_actions.ts +0 -19
- package/scripts/update_actions_steps.ts +0 -19
- package/scripts/update_company.ts +0 -19
- package/scripts/update_geofence.ts +0 -20
- package/scripts/update_managers.ts +0 -16
- package/scripts/visitorMgmt/createArea.ts +0 -68
- package/scripts/visitorMgmt/createArea.txt +0 -3
- package/scripts/visitorMgmt/createVisitorPathInstructionDocs.ts +0 -130
- package/scripts/visitorMgmt/createVisitorPathInstructionDocs.txt +0 -18
- package/scripts/visitorMgmt/encryptDateString.ts +0 -71
- package/scripts/visitorMgmt/makeHostsManagersOfEachOther.ts +0 -117
- package/scripts/whatsapp_gupshup/sendMessage.ts +0 -97
- package/src/models/Feed-Details-Screen.model.ts +0 -29
- package/src/models/action.model.ts +0 -355
- package/src/models/actions/doffing.ts +0 -71
- package/src/models/actions/folding.ts +0 -39
- package/src/models/attendance.model.ts +0 -615
- package/src/models/cicoPost.model.ts +0 -20
- package/src/models/company.model.ts +0 -975
- package/src/models/contact-us/resquest.model.ts +0 -87
- package/src/models/crud/crud.ts +0 -30
- package/src/models/customCollection.model.ts +0 -47
- package/src/models/customer/customer.model.ts +0 -85
- package/src/models/deviceChangeReq.ts +0 -150
- package/src/models/dispatch.model.ts +0 -99
- package/src/models/feed.models.ts +0 -104
- package/src/models/geofence.model.ts +0 -61
- package/src/models/leaveApplicationPost.model.ts +0 -79
- package/src/models/license.model.ts +0 -215
- package/src/models/meeting.model.ts +0 -80
- package/src/models/meter.model.ts +0 -62
- package/src/models/missingPunchPost.model.ts +0 -84
- package/src/models/offline.model.ts +0 -1133
- package/src/models/post.model.ts +0 -105
- package/src/models/printDetailsScreen.model.ts +0 -30
- package/src/models/pushNotifications/pushNotification.model.ts +0 -17
- package/src/models/report-actions.model.ts +0 -57
- package/src/models/report-definition-details.model.ts +0 -89
- package/src/models/report-definition.model.ts +0 -26
- package/src/models/report-definitions-summary.model.ts +0 -59
- package/src/models/report-detail-data.model.ts +0 -49
- package/src/models/report-visibility.model.ts +0 -44
- package/src/models/report.model.ts +0 -179
- package/src/models/reportGenerator.model.ts +0 -883
- package/src/models/response.model.ts +0 -31
- package/src/models/steps.factory.model.ts +0 -195
- package/src/models/storeGupShupLog.model.ts +0 -49
- package/src/models/tasks/sub-task-group.model.ts +0 -173
- package/src/models/tasks/tags.model.ts +0 -113
- package/src/models/tasks/task-group.model.ts +0 -172
- package/src/models/tasks/task.model.ts +0 -681
- package/src/models/user.model.ts +0 -319
- package/src/models/utility.model.ts +0 -100
- package/src/models/visitorManagement/acknowledgement.model.ts +0 -71
- package/src/models/visitorManagement/invite.model.ts +0 -406
- package/src/models/visitorManagement/newIn.model.ts +0 -82
- package/src/models/visitorManagement/selfServe.model.ts +0 -58
- package/src/models/worklogPost.model.ts +0 -8
- package/src/services/customer.ts +0 -382
- package/src/services/meeting.ts +0 -123
- package/test/1.ts +0 -13
- package/test/db.js +0 -19
- package/test/firebaseConfig.js +0 -1
- 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
|
-
|
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
|
-
|
16
|
-
let logToStore: any = {};
|
14
|
+
static async createLogDocToStore(responseFromEduce) {
|
15
|
+
let logToStore = {};
|
17
16
|
if (responseFromEduce.data) {
|
18
17
|
logToStore.message = responseFromEduce.message;
|
19
|
-
}
|
18
|
+
}
|
19
|
+
else if (responseFromEduce.error) {
|
20
20
|
logToStore.error = responseFromEduce.error;
|
21
21
|
}
|
22
22
|
return logToStore;
|
23
23
|
}
|
24
24
|
}
|
25
|
-
|
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;
|