mobioffice-cli 0.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/.prettierrc +4 -0
- package/README.md +1 -0
- package/a.js +3 -0
- package/lib/index.js +87 -0
- package/package.json +50 -0
- package/scripts/1.ts +1300 -0
- package/scripts/GCloudPubSub/pub-sub-config.json +12 -0
- package/scripts/GCloudPubSub/visitorAutoRejection.ts +86 -0
- package/scripts/actions/assignUsersFromOneActionToOther.ts +64 -0
- package/scripts/actions/assignUsersListToAction.ts +81 -0
- package/scripts/actions/getActionsListOfUser.ts +42 -0
- package/scripts/actions/getCompanyUserDetails.ts +49 -0
- package/scripts/actions/giveActionToUser.ts +41 -0
- package/scripts/actions/giveUsersToActivitySelector.ts +56 -0
- package/scripts/actions/groupActionsInActivitySelector.ts +101 -0
- package/scripts/actions/modifySummaryReportDB.ts +42 -0
- package/scripts/actions/setUrlToActionStep.ts +18 -0
- package/scripts/actions/syncMySqlAttendanceDBWithFirebase.ts +93 -0
- package/scripts/actions/syncMySqlMeetingsDBWithFirebase.ts +103 -0
- package/scripts/actions/test.ts +29 -0
- package/scripts/actions/transferFeedsOldIdToNew.ts +40 -0
- package/scripts/actions/transformUserIntoManager.ts +89 -0
- package/scripts/argvConfig.js +9 -0
- package/scripts/backUpData/testCode.ts +131 -0
- package/scripts/benaraScripts/addWorkAreaMap.ts +46 -0
- package/scripts/benaraScripts/add_customers.ts +26 -0
- package/scripts/benaraScripts/add_customers_contact.ts +27 -0
- package/scripts/benaraScripts/add_empty_work_area.ts +17 -0
- package/scripts/benaraScripts/assignManagers.ts +35 -0
- package/scripts/benaraScripts/changeCheckInFlag.ts +45 -0
- package/scripts/benaraScripts/createCustomerContactsList.ts +170 -0
- package/scripts/benaraScripts/createUserByDeletingOldUser.ts +70 -0
- package/scripts/benaraScripts/createUsersAreaMapCollection.ts +23 -0
- package/scripts/benaraScripts/createWorkAreaMap.ts +24 -0
- package/scripts/benaraScripts/mapWorkAreasToUsers.ts +112 -0
- package/scripts/companies_data.json +2496 -0
- package/scripts/create_or_update_users.ts +31 -0
- package/scripts/csvToJson/csvToJson.ts +90 -0
- package/scripts/csvToJson/users.json +3896 -0
- package/scripts/db.js +27 -0
- package/scripts/db.json +13 -0
- package/scripts/dbMySql.ts +63 -0
- package/scripts/delete_action_steps.ts +11 -0
- package/scripts/delete_user.ts +71 -0
- package/scripts/dev_companies_data.json +613 -0
- package/scripts/enroll.xlsx +0 -0
- package/scripts/export_users.ts +72 -0
- package/scripts/files/visitorManagementFiles/displayScreen.json +70 -0
- package/scripts/files/visitorManagementFiles/init_report_visibility.ts +79 -0
- package/scripts/firebaseConfig.js +12 -0
- package/scripts/firebaseDocs/deleteIncommingCollection.ts +47 -0
- package/scripts/firebaseDocs/updateDoc.ts +43 -0
- package/scripts/getActionDataIntoJSON/getActionData.ts +68 -0
- package/scripts/get_attendance_by_any_date.ts +14 -0
- package/scripts/get_attendance_by_month.ts +12 -0
- package/scripts/get_attendance_monthly_by_team.ts +11 -0
- package/scripts/get_daily_report.ts +10 -0
- package/scripts/get_mangers.ts +13 -0
- package/scripts/grant_user_license.ts +18 -0
- package/scripts/init_CustomCollection.ts +16 -0
- package/scripts/init_action_steps.ts +28 -0
- package/scripts/init_actions.ts +31 -0
- package/scripts/init_company.ts +18 -0
- package/scripts/init_customer_mysql.ts +12 -0
- package/scripts/init_feed.ts +4 -0
- package/scripts/init_feed_details_screen.ts +14 -0
- package/scripts/init_geofence.ts +26 -0
- package/scripts/init_print_details_screen.ts +14 -0
- package/scripts/init_report_actions.ts +24 -0
- package/scripts/init_report_definition_detail.ts +26 -0
- package/scripts/init_report_definition_summary.ts +16 -0
- package/scripts/init_report_visibility.ts +46 -0
- package/scripts/init_user_customcollection.ts +16 -0
- package/scripts/json/action.json +21 -0
- package/scripts/json/company.json +24 -0
- package/scripts/json/report-action.json +13 -0
- package/scripts/json/report-def-deet.json +43 -0
- package/scripts/json/resp.json +784 -0
- package/scripts/json/steps.json +24 -0
- package/scripts/json/test.ts +49 -0
- package/scripts/mysqlConfig.ts +9 -0
- package/scripts/revoke_or_extend_license.ts +14 -0
- package/scripts/stream.js +4 -0
- package/scripts/testing1.ts +35 -0
- package/scripts/update/doc.json +20 -0
- package/scripts/update/getDocByPath.ts +34 -0
- package/scripts/update/updateDocByPath.ts +47 -0
- package/scripts/update/updateUsersOfCompanies.ts +58 -0
- package/scripts/update_actions.ts +19 -0
- package/scripts/update_actions_steps.ts +19 -0
- package/scripts/update_company.ts +19 -0
- package/scripts/update_geofence.ts +20 -0
- package/scripts/update_managers.ts +16 -0
- package/scripts/visitorMgmt/createArea.ts +68 -0
- package/scripts/visitorMgmt/createArea.txt +3 -0
- package/scripts/visitorMgmt/createVisitorPathInstructionDocs.ts +130 -0
- package/scripts/visitorMgmt/createVisitorPathInstructionDocs.txt +18 -0
- package/scripts/visitorMgmt/encryptDateString.ts +71 -0
- package/scripts/visitorMgmt/makeHostsManagersOfEachOther.ts +117 -0
- package/scripts/whatsapp_gupshup/sendMessage.ts +97 -0
- package/src/index.ts +87 -0
- package/src/models/Feed-Details-Screen.model.ts +29 -0
- package/src/models/action.model.ts +355 -0
- package/src/models/actions/doffing.ts +71 -0
- package/src/models/actions/folding.ts +39 -0
- package/src/models/attendance.model.ts +615 -0
- package/src/models/cicoPost.model.ts +20 -0
- package/src/models/company.model.ts +975 -0
- package/src/models/contact-us/resquest.model.ts +87 -0
- package/src/models/crud/crud.ts +30 -0
- package/src/models/customCollection.model.ts +47 -0
- package/src/models/customer/customer.model.ts +85 -0
- package/src/models/deviceChangeReq.ts +150 -0
- package/src/models/dispatch.model.ts +99 -0
- package/src/models/feed.models.ts +104 -0
- package/src/models/geofence.model.ts +61 -0
- package/src/models/leaveApplicationPost.model.ts +79 -0
- package/src/models/license.model.ts +215 -0
- package/src/models/log.model.ts +25 -0
- package/src/models/meeting.model.ts +80 -0
- package/src/models/meter.model.ts +62 -0
- package/src/models/missingPunchPost.model.ts +84 -0
- package/src/models/offline.model.ts +1133 -0
- package/src/models/post.model.ts +105 -0
- package/src/models/printDetailsScreen.model.ts +30 -0
- package/src/models/pushNotifications/pushNotification.model.ts +17 -0
- package/src/models/report-actions.model.ts +57 -0
- package/src/models/report-definition-details.model.ts +89 -0
- package/src/models/report-definition.model.ts +26 -0
- package/src/models/report-definitions-summary.model.ts +59 -0
- package/src/models/report-detail-data.model.ts +49 -0
- package/src/models/report-visibility.model.ts +44 -0
- package/src/models/report.model.ts +179 -0
- package/src/models/reportGenerator.model.ts +883 -0
- package/src/models/response.model.ts +31 -0
- package/src/models/steps.factory.model.ts +195 -0
- package/src/models/storeGupShupLog.model.ts +49 -0
- package/src/models/summary.model.ts +63 -0
- package/src/models/tasks/sub-task-group.model.ts +173 -0
- package/src/models/tasks/tags.model.ts +113 -0
- package/src/models/tasks/task-group.model.ts +172 -0
- package/src/models/tasks/task.model.ts +681 -0
- package/src/models/tempCollection.model.ts +398 -0
- package/src/models/user.model.ts +319 -0
- package/src/models/utility.model.ts +100 -0
- package/src/models/visitorManagement/acknowledgement.model.ts +71 -0
- package/src/models/visitorManagement/invite.model.ts +406 -0
- package/src/models/visitorManagement/newIn.model.ts +82 -0
- package/src/models/visitorManagement/selfServe.model.ts +58 -0
- package/src/models/worklogPost.model.ts +8 -0
- package/src/services/customer.ts +382 -0
- package/src/services/meeting.ts +123 -0
- package/test/1.ts +13 -0
- package/test/db.js +19 -0
- package/test/firebaseConfig.js +1 -0
- package/tsconfig.json +16 -0
@@ -0,0 +1,93 @@
|
|
1
|
+
import { createInterface } from "readline";
|
2
|
+
import { Utilities } from "../../src/models/utility.model";
|
3
|
+
import admin from "../db";
|
4
|
+
import { Company } from "../../src/models/company.model";
|
5
|
+
import { Action } from "../../src/models/action.model";
|
6
|
+
import { User } from "../../src/models/user.model";
|
7
|
+
import { Attendance } from "../../src/models/attendance.model";
|
8
|
+
import CurdService from "../../src/models/crud/crud";
|
9
|
+
import { ProdAttendancePool } from "../dbMySql";
|
10
|
+
|
11
|
+
const readLineInterface = createInterface({
|
12
|
+
input: process.stdin,
|
13
|
+
output: process.stdout
|
14
|
+
})
|
15
|
+
|
16
|
+
const firestore = admin.firestore();
|
17
|
+
|
18
|
+
const readLine = Utilities.readLineAsync;
|
19
|
+
const readLineClose = Utilities.readLineClose;
|
20
|
+
|
21
|
+
async function syncReportDBFirebaseUserEntries(userPhone: string, companyId: string) {
|
22
|
+
const curdService = new CurdService(ProdAttendancePool)
|
23
|
+
try {
|
24
|
+
const userId = await User.getUserIdByPhone(firestore, userPhone);
|
25
|
+
const userInfo: any = await User.getUserInfoById(firestore, userId, companyId);
|
26
|
+
const userName = userInfo.name;
|
27
|
+
const actionName = "check_in_out";
|
28
|
+
const actionId = await Action.getActionId(firestore, companyId, actionName);
|
29
|
+
const companyActionInfo = await firestore.collection("Companies")
|
30
|
+
.doc(companyId)
|
31
|
+
.collection("Actions")
|
32
|
+
.doc(actionId)
|
33
|
+
.collection(actionName)
|
34
|
+
.where("userId", "==", userId)
|
35
|
+
.get();
|
36
|
+
let matched = 0;
|
37
|
+
let docsCount = 0;
|
38
|
+
for(let doc of companyActionInfo.docs){
|
39
|
+
docsCount++;
|
40
|
+
let epochTime = doc.data().startAt ?? doc.data().endAt;
|
41
|
+
const docInfo = doc.data();
|
42
|
+
const eventType = docInfo.startAt ? "checkIn" : "checkOut";
|
43
|
+
const actionName = docInfo.missedEvent ? "approveMP" : "check_in_out";
|
44
|
+
let dateTime = await Utilities.epochToMySqlDateTime(epochTime);
|
45
|
+
const phone = await User.getUserPhonebyUserId(firestore, doc.data().userId);
|
46
|
+
const qryString = `SELECT * FROM attendanceEntries
|
47
|
+
WHERE time='${dateTime}' AND phoneNo='${phone}'
|
48
|
+
AND companyId='${companyId}'`;
|
49
|
+
const storedInfo: any = await curdService.query(qryString);
|
50
|
+
if (storedInfo.length) {
|
51
|
+
matched++;
|
52
|
+
console.log("matched", storedInfo[0].time, matched)
|
53
|
+
} else {
|
54
|
+
console.log("need to create an entry in reportDB for ", dateTime)
|
55
|
+
const reportData = {
|
56
|
+
companyId: companyId,
|
57
|
+
employeeName: userName,
|
58
|
+
eventType: eventType,
|
59
|
+
time: epochTime,
|
60
|
+
phoneNo: userInfo.phone,
|
61
|
+
actionName: actionName
|
62
|
+
}
|
63
|
+
console.log(reportData);
|
64
|
+
await Attendance.uploadEntryToReportDB(ProdAttendancePool, reportData);
|
65
|
+
console.log("uploaded entry for ", dateTime);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
console.log(docsCount);
|
69
|
+
} catch(error) {
|
70
|
+
console.log(error);
|
71
|
+
} finally {
|
72
|
+
readLineClose(readLineInterface);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
async function syncMySqlAttendanceDbWithFirebase() {
|
77
|
+
const companyNickName: any = await readLine("Enter company Name: ", readLineInterface);
|
78
|
+
console.log("companyNickName", companyNickName);
|
79
|
+
const companyId = await Company.getCompanyIdByNickName(firestore, companyNickName);
|
80
|
+
// const userPhone: any = await readLine("Enter user phone: ", readLineInterface);
|
81
|
+
const companyUsersList = await Company.getUsersListbyCompany(firestore, companyNickName);
|
82
|
+
const usersPhoneList = companyUsersList.map(obj => obj.phone);
|
83
|
+
console.log(usersPhoneList);
|
84
|
+
for (let phone of usersPhoneList) {
|
85
|
+
await syncReportDBFirebaseUserEntries(phone, companyId);
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
async function main() {
|
90
|
+
await syncMySqlAttendanceDbWithFirebase();
|
91
|
+
}
|
92
|
+
|
93
|
+
main();
|
@@ -0,0 +1,103 @@
|
|
1
|
+
import { createInterface } from "readline";
|
2
|
+
import { Utilities } from "../../src/models/utility.model";
|
3
|
+
import admin from "../db";
|
4
|
+
import { Company } from "../../src/models/company.model";
|
5
|
+
import { Action } from "../../src/models/action.model";
|
6
|
+
import { User } from "../../src/models/user.model";
|
7
|
+
import { MeetingSummary } from "../../src/models/meeting.model";
|
8
|
+
import { MeetingsPool } from "../dbMySql";
|
9
|
+
import CurdService from "../../src/models/crud/crud";
|
10
|
+
|
11
|
+
|
12
|
+
const readLineInterface = createInterface({
|
13
|
+
input: process.stdin,
|
14
|
+
output: process.stdout
|
15
|
+
})
|
16
|
+
|
17
|
+
const firestore = admin.firestore();
|
18
|
+
|
19
|
+
const readLine = Utilities.readLineAsync;
|
20
|
+
const readLineClose = Utilities.readLineClose;
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
async function syncReportDBFirebaseUserEntries(doc:any,employeeName:string) {
|
25
|
+
try {
|
26
|
+
const reportData = {
|
27
|
+
companyId: doc.companyId ?? "",
|
28
|
+
employeeName: employeeName ?? "",
|
29
|
+
eventId: doc.eventId ?? "",
|
30
|
+
userId: doc.userId ?? "",
|
31
|
+
phone: doc.phone ?? "",
|
32
|
+
meetingDate: doc.extraData.date ?? "",
|
33
|
+
meetingStartTime: doc.extraData["Start Time"] ?? "",
|
34
|
+
meetingEndTime: doc.extraData["End Time"] ?? "",
|
35
|
+
meetingImage: doc.extraData["meetingImage"] ?? "",
|
36
|
+
contactName: doc.extraData.contactName ?? "",
|
37
|
+
customerName: doc.extraData.customerName ?? "",
|
38
|
+
companyNickName: "benara",
|
39
|
+
time: doc.date
|
40
|
+
}
|
41
|
+
// console.log(reportData)
|
42
|
+
await MeetingSummary.uploadEntryToReportDB(MeetingsPool, reportData);
|
43
|
+
} catch(error) {
|
44
|
+
console.log(error);
|
45
|
+
} finally {
|
46
|
+
readLineClose(readLineInterface);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
async function syncMySqlAttendanceDbWithFirebase() {
|
51
|
+
const curdService = new CurdService(MeetingsPool)
|
52
|
+
const companyNickName: any = await readLine("Enter company Name: ", readLineInterface);
|
53
|
+
console.log("companyNickName", companyNickName);
|
54
|
+
const actionName: any = await readLine("Enter action Name: ", readLineInterface);
|
55
|
+
console.log("actionName", actionName);
|
56
|
+
const companyId = await Company.getCompanyIdByNickName(firestore, companyNickName);
|
57
|
+
console.log(companyId)
|
58
|
+
const actionId = await Action.getActionId(firestore, companyId, actionName);
|
59
|
+
const companyActionInfo = await firestore.collection("Companies")
|
60
|
+
.doc(companyId)
|
61
|
+
.collection("Actions")
|
62
|
+
.doc(actionId)
|
63
|
+
.collection("meetings")
|
64
|
+
.orderBy("id")
|
65
|
+
.get();
|
66
|
+
// console.log(companyActionInfo.docs[0].data())
|
67
|
+
const companyActionDocList = companyActionInfo.docs.map(obj => obj.data());
|
68
|
+
let userNameMap = new Map()
|
69
|
+
console.log(companyActionDocList.length)
|
70
|
+
let matchedcount = 0
|
71
|
+
let unmatchedcount = 0
|
72
|
+
for (let doc of companyActionDocList) {
|
73
|
+
|
74
|
+
if(!userNameMap.has(doc.userId)){
|
75
|
+
let snapShot = await firestore.collection("Companies")
|
76
|
+
.doc(companyId)
|
77
|
+
.collection("Users")
|
78
|
+
.doc(doc.userId)
|
79
|
+
.get()
|
80
|
+
let userName = snapShot.data()?.name
|
81
|
+
userNameMap.set(doc.userId,userName)
|
82
|
+
}
|
83
|
+
const qryString = `SELECT * FROM mobioffice_meetings.meeting_reports
|
84
|
+
WHERE eventId = '${doc.eventId}'`;
|
85
|
+
const storedInfo:any = await curdService.query(qryString)
|
86
|
+
if(storedInfo.length){
|
87
|
+
matchedcount++;
|
88
|
+
console.log("matched", matchedcount, storedInfo[0].id)
|
89
|
+
}else{
|
90
|
+
unmatchedcount++
|
91
|
+
console.log(doc.id)
|
92
|
+
let employeeName = userNameMap.get(doc.userId)
|
93
|
+
await syncReportDBFirebaseUserEntries(doc,employeeName);
|
94
|
+
console.log(unmatchedcount, `doc id ${doc.id} added`)
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
async function main() {
|
100
|
+
await syncMySqlAttendanceDbWithFirebase();
|
101
|
+
}
|
102
|
+
|
103
|
+
main();
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { Utilities } from "../../src/models/utility.model";
|
2
|
+
import { createInterface } from "readline";
|
3
|
+
import { getCompanyUsersDetails } from "./getCompanyUserDetails";
|
4
|
+
|
5
|
+
const readLine = Utilities.readLineAsync;
|
6
|
+
const readLineClose = Utilities.readLineClose;
|
7
|
+
|
8
|
+
const readLineInterface = createInterface({
|
9
|
+
input: process.stdin,
|
10
|
+
output: process.stdout
|
11
|
+
})
|
12
|
+
|
13
|
+
async function fetchCompanyUserDetails() {
|
14
|
+
try {
|
15
|
+
const nickname = await readLine("Provide company nickname: ", readLineInterface);
|
16
|
+
const userDetails = await getCompanyUsersDetails(nickname);
|
17
|
+
console.log(userDetails);
|
18
|
+
readLineClose(readLineInterface);
|
19
|
+
}catch(error) {
|
20
|
+
console.log(error.message);
|
21
|
+
readLineClose(readLineInterface);
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
async function main() {
|
26
|
+
await fetchCompanyUserDetails();
|
27
|
+
}
|
28
|
+
|
29
|
+
main();
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { createInterface } from "readline";
|
2
|
+
import { Utilities } from "../../src/models/utility.model";
|
3
|
+
import { Company } from "../../src/models/company.model";
|
4
|
+
import admin from "../db";
|
5
|
+
import { User } from "../../src/models/user.model";
|
6
|
+
|
7
|
+
const readLineAsync = Utilities.readLineAsync;
|
8
|
+
const readLineClose = Utilities.readLineClose;
|
9
|
+
|
10
|
+
const readLineInterface = createInterface({
|
11
|
+
input: process.stdin,
|
12
|
+
output: process.stdout
|
13
|
+
})
|
14
|
+
|
15
|
+
async function transferFeedsFromOldToNewId() {
|
16
|
+
const firestore = admin.firestore();
|
17
|
+
try {
|
18
|
+
const oldUserId: any = await readLineAsync("Provide user's old Id => ", readLineInterface);
|
19
|
+
console.log(oldUserId);
|
20
|
+
const companyNickName: any = await readLineAsync("Provide company nickname => ", readLineInterface);
|
21
|
+
const companyId = await Company.getCompanyIdByNickName(firestore, companyNickName);
|
22
|
+
console.log("got companyId:", companyId)
|
23
|
+
// const oldFeedsDocsList = await firestore.collection("Feeds").doc(oldUserId)
|
24
|
+
// .collection(companyId).get();
|
25
|
+
const userNewId: any = await readLineAsync("Provide user's new Id => ", readLineInterface);
|
26
|
+
const userPhone = await User.getUserPhonebyUserId(firestore, userNewId);
|
27
|
+
console.log("got user phone:", userPhone);
|
28
|
+
// console.log("number of old feeds:", oldFeedsDocsList.docs.length);
|
29
|
+
readLineClose(readLineInterface);
|
30
|
+
} catch(error) {
|
31
|
+
console.log(error.message);
|
32
|
+
readLineClose(readLineInterface);
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
function main() {
|
37
|
+
transferFeedsFromOldToNewId();
|
38
|
+
}
|
39
|
+
|
40
|
+
main();
|
@@ -0,0 +1,89 @@
|
|
1
|
+
import { createInterface } from "readline";
|
2
|
+
import { Utilities } from "../../src/models/utility.model";
|
3
|
+
import { Company } from "../../src/models/company.model";
|
4
|
+
import admin from "../db";
|
5
|
+
import { User } from "../../src/models/user.model";
|
6
|
+
|
7
|
+
const readLineInterface = createInterface({
|
8
|
+
input: process.stdin,
|
9
|
+
output: process.stdout
|
10
|
+
})
|
11
|
+
|
12
|
+
const readLine = Utilities.readLineAsync;
|
13
|
+
const readLineClose = Utilities.readLineClose;
|
14
|
+
|
15
|
+
async function transformUserIntoManager() {
|
16
|
+
const firestore = admin.firestore();
|
17
|
+
try {
|
18
|
+
const nickName: any = await readLine("Enter company nickname: ", readLineInterface);
|
19
|
+
const companyId = await Company.getCompanyIdByNickName(firestore, nickName);
|
20
|
+
if (companyId) {
|
21
|
+
console.log("Company Id:", companyId);
|
22
|
+
} else {
|
23
|
+
throw {
|
24
|
+
message: "Invalid company nickname."
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
const phonesCSV: any = await readLine("Provide 10-digits comma separated phone numbers of user which are to become managers: ", readLineInterface);
|
29
|
+
const phonesArr = phonesCSV.split(",").map((phone) => phone.trim());
|
30
|
+
if (phonesArr.length === 0) {
|
31
|
+
throw {
|
32
|
+
message: "Please provide the phone numbers of users"
|
33
|
+
}
|
34
|
+
}
|
35
|
+
for (let i = 0; i < phonesArr.length; i++) {
|
36
|
+
const toBeManagerUserId = await User.getUserIdByPhone(firestore, `+91${phonesArr[i]}`);
|
37
|
+
if (toBeManagerUserId) {
|
38
|
+
console.log("User id:", toBeManagerUserId);
|
39
|
+
} else {
|
40
|
+
throw {
|
41
|
+
message: `No user found with the provided number (${phonesArr[i]})`
|
42
|
+
}
|
43
|
+
}
|
44
|
+
const toBeManagerInfo = await User.getUserInfoById(firestore, toBeManagerUserId, companyId);
|
45
|
+
const toBeManagerName = toBeManagerInfo?.name;
|
46
|
+
const companyUsers = await firestore.collection("Companies").doc(companyId)
|
47
|
+
.collection("Users").get();
|
48
|
+
const proceedConfmn: any = await readLine(`${toBeManagerName} is going to be everyone's manager, Do you want to Proceed(Yes/No)? `, readLineInterface);
|
49
|
+
if (proceedConfmn.trim().toLowerCase() === 'yes') {
|
50
|
+
console.log("Proceeding...")
|
51
|
+
} else {
|
52
|
+
console.log("Stopping");
|
53
|
+
return;
|
54
|
+
}
|
55
|
+
await Promise.all(companyUsers.docs.map(async (userDoc) => {
|
56
|
+
const usersManagersList = userDoc.data()?.reportingTo;
|
57
|
+
const usersManagersNames = userDoc.data()?.managers;
|
58
|
+
const updatedManagersList = Array.from(new Set([
|
59
|
+
...usersManagersList,
|
60
|
+
toBeManagerUserId
|
61
|
+
]));
|
62
|
+
const updatedManagersNames = Array.from(new Set([
|
63
|
+
...usersManagersNames,
|
64
|
+
toBeManagerName
|
65
|
+
]))
|
66
|
+
|
67
|
+
if (userDoc.id !== toBeManagerUserId) {
|
68
|
+
await userDoc.ref.update({
|
69
|
+
reportingTo: updatedManagersList
|
70
|
+
})
|
71
|
+
await userDoc.ref.update({
|
72
|
+
managers: updatedManagersNames
|
73
|
+
})
|
74
|
+
}
|
75
|
+
}))
|
76
|
+
console.log(`the userId of (${phonesArr[i]}) is now present in every one's reporting to list`)
|
77
|
+
}
|
78
|
+
readLineClose(readLineInterface);
|
79
|
+
} catch(error) {
|
80
|
+
readLineClose(readLineInterface);
|
81
|
+
console.log(error.message);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
async function main() {
|
86
|
+
await transformUserIntoManager();
|
87
|
+
}
|
88
|
+
|
89
|
+
main();
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import commandLineArgs from 'command-line-args'
|
2
|
+
|
3
|
+
const optionDefinitions = [
|
4
|
+
{ name: 'verbose', alias: 'v', type: Boolean },
|
5
|
+
{ name: 'args', type: String, multiple: true, defaultOption: true },
|
6
|
+
{ name: 'timeout', alias: 't', type: Number }
|
7
|
+
]
|
8
|
+
|
9
|
+
export const options = commandLineArgs(optionDefinitions)
|
@@ -0,0 +1,131 @@
|
|
1
|
+
import fetch from 'node-fetch';
|
2
|
+
import admin from "../db.js";
|
3
|
+
// import * as fs from 'fs/promises';
|
4
|
+
|
5
|
+
// interface RoleData {
|
6
|
+
// [key: string]: any[];
|
7
|
+
// }
|
8
|
+
|
9
|
+
// interface ObjectData {
|
10
|
+
// [key: string]: any;
|
11
|
+
// }
|
12
|
+
|
13
|
+
// async function fetchData(url: string): Promise<any[]> {
|
14
|
+
// const callResponse = await fetch(url, {
|
15
|
+
// method: 'GET',
|
16
|
+
// headers: {
|
17
|
+
// 'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVSUQiOjMyLCJDSUQiOjEwMDAsIkFJRCI6MSwiYXBwTmFtZSI6ImNoaWxkc2FmZXR5IiwiY29tcGFueU5hbWUiOiJmb3VudGFpbmhlYWQiLCJVc2VybmFtZVBob25lRW1haWwiOiJyYW1AZ21haWwuY29tIiwiaWF0IjoxNzA3NzM1MzQyLCJleHAiOjE3MDgzNDAxNDJ9.m5fYA6l9fm2UTlmQ5v-pI7R9L5l05rmxIaClRu8pIPM',
|
18
|
+
// 'Content-Type': 'application/json',
|
19
|
+
// },
|
20
|
+
// });
|
21
|
+
|
22
|
+
// const data = await callResponse.json();
|
23
|
+
// return data['Table'];
|
24
|
+
// }
|
25
|
+
|
26
|
+
// async function processObject(object: ObjectData): Promise<ObjectData> {
|
27
|
+
// const newObj: ObjectData = { ...object };
|
28
|
+
|
29
|
+
// try {
|
30
|
+
// const employeesArray = object.employeeMobiles;
|
31
|
+
// const executionarData = await fetchData(`https://api.mobi-um.mobioffice.io/api/account/GetUsersByRID?RID=${object.checkListItemData.roleId}`);
|
32
|
+
// newObj['Incharge'] = await fetchData(`https://api.mobi-um.mobioffice.io/api/account/GetUsersByRID?RID=${object.standardRoleId}`);
|
33
|
+
// newObj[object.checkListItemData.roleName] = executionarData.filter(employee => !employeesArray.includes(employee.Phone))
|
34
|
+
// newObj['watchers'] = [...newObj[object.checkListItemData.roleName], ...newObj['Incharge']];
|
35
|
+
// newObj['dueDate'] = convertDate(newObj['dueDate']);
|
36
|
+
|
37
|
+
// } catch (error) {
|
38
|
+
// console.error('Error fetching API data:', error);
|
39
|
+
// }
|
40
|
+
|
41
|
+
// return newObj;
|
42
|
+
// }
|
43
|
+
|
44
|
+
// async function main() {
|
45
|
+
// try {
|
46
|
+
// // Read JSON data and parse
|
47
|
+
// const jsonData = await fs.readFile('payload.json', 'utf-8');
|
48
|
+
// const dataArray: { data: ObjectData[] } = JSON.parse(jsonData);
|
49
|
+
|
50
|
+
// // Create an empty array for final data
|
51
|
+
// const finalData: ObjectData[] = await Promise.all(dataArray.data.map(processObject));
|
52
|
+
|
53
|
+
// console.log(finalData.length)
|
54
|
+
|
55
|
+
// // Write finalData to a new file
|
56
|
+
// await fs.writeFile(`${new Date().getTime()} Latest finalData.json`, JSON.stringify(finalData, null, 2));
|
57
|
+
|
58
|
+
// console.log('Final data saved successfully!');
|
59
|
+
// } catch (error) {
|
60
|
+
// console.error('Error reading JSON file:', error);
|
61
|
+
// }
|
62
|
+
// }
|
63
|
+
|
64
|
+
// function convertDate(timestamp) {
|
65
|
+
// let date = new Date(timestamp);
|
66
|
+
|
67
|
+
// let day = date.getDate().toString().padStart(2, '0');
|
68
|
+
// let month = (date.getMonth() + 1).toString().padStart(2, '0');
|
69
|
+
// let year = date.getFullYear();
|
70
|
+
|
71
|
+
// let formattedDate = `${day}-${month}-${year}`;
|
72
|
+
// return formattedDate;
|
73
|
+
// }
|
74
|
+
|
75
|
+
// main();
|
76
|
+
|
77
|
+
// import fs from 'fs';
|
78
|
+
// async function main() {
|
79
|
+
// try {
|
80
|
+
// const jsonData = fs.readFileSync('1707735426147 Latest finalData.json', 'utf-8');
|
81
|
+
// const objectsArray = JSON.parse(jsonData);
|
82
|
+
|
83
|
+
// for (const obj of objectsArray) {
|
84
|
+
// try {
|
85
|
+
// const apiUrl = 'https://api.cs-mobiapp.mobioffice.io/api/child-safety/pushTasksToApp';
|
86
|
+
// const payload = JSON.stringify(obj)
|
87
|
+
// const apiResponse = await fetch(apiUrl, {
|
88
|
+
// method: 'POST',
|
89
|
+
// headers: {
|
90
|
+
// 'Content-Type': 'application/json',
|
91
|
+
// },
|
92
|
+
// body: JSON.stringify(payload),
|
93
|
+
// });
|
94
|
+
|
95
|
+
// const apiData = await apiResponse.json();
|
96
|
+
// console.log('API Response:', apiData);
|
97
|
+
|
98
|
+
// } catch (apiError) {
|
99
|
+
// console.error('Error calling API:', apiError);
|
100
|
+
// }
|
101
|
+
// }
|
102
|
+
|
103
|
+
// console.log({ success: true, message: 'Objects processed successfully' });
|
104
|
+
// } catch (error) {
|
105
|
+
// console.error('Error processing objects:', error);
|
106
|
+
// console.log({ success: false, error: 'Internal Server Error' });
|
107
|
+
// }
|
108
|
+
// };
|
109
|
+
|
110
|
+
// import fs from 'fs';
|
111
|
+
// async function main() {
|
112
|
+
// try {
|
113
|
+
// const jsonData = fs.readFileSync('1707555398005 backUpTask-GroupData.json', 'utf-8');
|
114
|
+
// const objectsArray = JSON.parse(jsonData);
|
115
|
+
|
116
|
+
// for (const obj of objectsArray) {
|
117
|
+
// try {
|
118
|
+
// const firestore = admin.firestore();
|
119
|
+
// const docRef = await firestore.collection('Companies').doc('PVUhOWtzgw2V6omtD5Ra').collection('Task-Group').doc(obj.id).set(obj);
|
120
|
+
|
121
|
+
// } catch (Error) {
|
122
|
+
// console.error('Error calling API:', Error);
|
123
|
+
// }
|
124
|
+
// }
|
125
|
+
|
126
|
+
// console.log({ success: true, message: 'Objects processed successfully' });
|
127
|
+
// } catch (error) {
|
128
|
+
// console.error('Error processing objects:', error);
|
129
|
+
// console.log({ success: false, error: 'Internal Server Error' });
|
130
|
+
// }
|
131
|
+
// };
|
@@ -0,0 +1,46 @@
|
|
1
|
+
|
2
|
+
import fs from "fs";
|
3
|
+
import admin from ".././db";
|
4
|
+
import {Company} from '../../src/models/company.model'
|
5
|
+
import * as csvToJson from 'convert-csv-to-json'
|
6
|
+
import { options } from ".././argvConfig.js";
|
7
|
+
|
8
|
+
let argv = options.args[0].split(',')
|
9
|
+
let firestore = admin.firestore();
|
10
|
+
|
11
|
+
let arrayUnion = admin.firestore.FieldValue.arrayUnion
|
12
|
+
let usersList = csvToJson.fieldDelimiter(',').getJsonFromCsv(argv[0]);
|
13
|
+
// console.log(usersList)
|
14
|
+
let userArray:any = []
|
15
|
+
for(let user of usersList){
|
16
|
+
let workAreas = user.Area.split("/").map(area => area.trim())
|
17
|
+
console.log("city",workAreas)
|
18
|
+
let userDetailsInFireStore = await firestore.collection("Companies")
|
19
|
+
.doc("GC5BOfo2Ibma9CJ4NRpM")
|
20
|
+
.collection("Users")
|
21
|
+
.where("phone","==","+91"+user.phoneNumber)
|
22
|
+
.get()
|
23
|
+
if(userDetailsInFireStore.empty){
|
24
|
+
let name = user.first_name+" "+user.last_name
|
25
|
+
userArray.push(name)
|
26
|
+
console.log(name)
|
27
|
+
}else{
|
28
|
+
|
29
|
+
let userId = userDetailsInFireStore.docs[0].data().id
|
30
|
+
console.log(userId)
|
31
|
+
let snapshot = await firestore.collection("CustomCollections")
|
32
|
+
.doc("GC5BOfo2Ibma9CJ4NRpM")
|
33
|
+
.collection("Users")
|
34
|
+
.doc(userId).get()
|
35
|
+
await firestore.collection("CustomCollections")
|
36
|
+
.doc("GC5BOfo2Ibma9CJ4NRpM")
|
37
|
+
.collection("Users")
|
38
|
+
.doc(userId).set({
|
39
|
+
id:userId,
|
40
|
+
workAreas: admin.firestore.FieldValue.arrayUnion(...workAreas)
|
41
|
+
})
|
42
|
+
}
|
43
|
+
}
|
44
|
+
console.log(userArray.length)
|
45
|
+
const usersInfoToWrite = JSON.stringify(userArray);
|
46
|
+
fs.writeFileSync("./usersList.json", usersInfoToWrite, { flag: "w" });
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import admin from "../db.js";
|
2
|
+
import {Company} from '../../src/models/company.model'
|
3
|
+
import * as csvToJson from 'convert-csv-to-json'
|
4
|
+
import { options } from "../argvConfig.js";
|
5
|
+
import { CustomerServices } from "../../src/services/customer"
|
6
|
+
|
7
|
+
let argv = options.args;
|
8
|
+
let firestore = admin.firestore();
|
9
|
+
let nickName = argv[0]
|
10
|
+
let customersList = csvToJson.fieldDelimiter(',').getJsonFromCsv(argv[1]);
|
11
|
+
let count = 0
|
12
|
+
|
13
|
+
for(let user of customersList){
|
14
|
+
if(user.address){
|
15
|
+
user.address = user.address.replaceAll("&",",")
|
16
|
+
}
|
17
|
+
let status:any = await CustomerServices.addCustomers(firestore,nickName,user)
|
18
|
+
count += 1
|
19
|
+
console.log(count)
|
20
|
+
}
|
21
|
+
console.log("done");
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import admin from "../db.js";
|
2
|
+
import {Company} from '../../src/models/company.model'
|
3
|
+
// import * as csvToJson from 'convert-csv-to-json'
|
4
|
+
import { options } from "../argvConfig.js";
|
5
|
+
import { CustomerServices } from "../../src/services/customer"
|
6
|
+
import fs from "fs";
|
7
|
+
|
8
|
+
let argv = options.args;
|
9
|
+
let firestore = admin.firestore();
|
10
|
+
let nickName = argv[0]
|
11
|
+
let filePath = argv[1];
|
12
|
+
const file = fs.readFileSync(filePath, "utf-8");
|
13
|
+
const contactsList = JSON.parse(file);
|
14
|
+
// let customerContactsList = csvToJson.fieldDelimiter(',').getJsonFromCsv(argv[1]);
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
for(let i = 0; i < contactsList.length; i++){
|
19
|
+
// let status:any = await CustomerServices.deleteCustomerContact(firestore,nickName,customerContact)
|
20
|
+
let status:any = await CustomerServices.addCustomerContactsViaJSON(firestore,nickName,contactsList[i]);
|
21
|
+
console.log(status)
|
22
|
+
}
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import admin from "../db";
|
2
|
+
|
3
|
+
const firestore = admin.firestore();
|
4
|
+
const arr = ["9BF7phZxYYSOuSjMkag1X5rgUhB3","qHvxp9Wts1NeSuDK6IQgiY7dWEq2","ZHucAZh0VFOzqt1BDLmn5NvckZn2","PlcmNHwHmvSH0VlCZ5DN1CwXgYn1"]
|
5
|
+
for(let id of arr){
|
6
|
+
const previousUsers = await firestore.collection("CustomCollections")
|
7
|
+
.doc("GC5BOfo2Ibma9CJ4NRpM")
|
8
|
+
.collection("Users")
|
9
|
+
.doc(id)
|
10
|
+
.set({
|
11
|
+
id:id,
|
12
|
+
workAreas:[]
|
13
|
+
})
|
14
|
+
}
|
15
|
+
|
16
|
+
|
17
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import admin from ".././db";
|
2
|
+
let firestore = admin.firestore();
|
3
|
+
let userDetailsInFireStore = await firestore.collection("Companies")
|
4
|
+
.doc("GC5BOfo2Ibma9CJ4NRpM")
|
5
|
+
.collection("Users")
|
6
|
+
.get()
|
7
|
+
let userList:any = userDetailsInFireStore.docs.map(async(user)=>{
|
8
|
+
let managerNameList = user.data().managers
|
9
|
+
// console.log(managerNameList)
|
10
|
+
if(managerNameList.length){
|
11
|
+
let managerId: any = []
|
12
|
+
// console.log(user.data().name)
|
13
|
+
for(let manager of managerNameList){
|
14
|
+
let userSnapshot = await firestore.collection("Companies")
|
15
|
+
.doc("GC5BOfo2Ibma9CJ4NRpM")
|
16
|
+
.collection("Users")
|
17
|
+
.where("name",'==',manager)
|
18
|
+
.get()
|
19
|
+
// console.log(userSnapshot.docs.length)
|
20
|
+
if(userSnapshot.docs.length > 0){
|
21
|
+
managerId.push(userSnapshot.docs[0].data().id)
|
22
|
+
}
|
23
|
+
}
|
24
|
+
await user.ref.update({
|
25
|
+
reportingTo: []
|
26
|
+
})
|
27
|
+
await user.ref.update({
|
28
|
+
reportingTo: admin.firestore.FieldValue.arrayUnion(...managerId)
|
29
|
+
})
|
30
|
+
console.log(managerId)
|
31
|
+
console.log(user.data().name)
|
32
|
+
}else{
|
33
|
+
// console.log(user.data().name)
|
34
|
+
}
|
35
|
+
})
|