173 lines
4.8 KiB
JavaScript
173 lines
4.8 KiB
JavaScript
var firebase = require("firebase/app");
|
|
const { initializeApp } = require("firebase/app");
|
|
const { getFirestore } = require("firebase/firestore");
|
|
const {
|
|
collection,
|
|
deleteDoc,
|
|
doc,
|
|
onSnapshot,
|
|
query,
|
|
where,
|
|
updateDoc,
|
|
increment,
|
|
} = require("firebase/firestore");
|
|
|
|
const {
|
|
apiKey,
|
|
authDomain,
|
|
projectId,
|
|
storageBucket,
|
|
messagingSenderId,
|
|
appId,
|
|
measurementId,
|
|
} = require("./secrets");
|
|
|
|
const firebaseConfig = {
|
|
apiKey: apiKey,
|
|
authDomain: authDomain,
|
|
projectId: projectId,
|
|
storageBucket: storageBucket,
|
|
messagingSenderId: messagingSenderId,
|
|
appId: appId,
|
|
measurementId: measurementId,
|
|
};
|
|
|
|
const app = initializeApp(firebaseConfig);
|
|
const db = getFirestore(app);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Write determinedDocType to Firebase DB
|
|
*
|
|
******************************************************************************/
|
|
|
|
async function updateDB(docId, docType) {
|
|
await updateDoc(doc(db, "documents", docId), {
|
|
docType: docType,
|
|
});
|
|
}
|
|
|
|
async function updateDBCombNum(docId, message) {
|
|
await updateDoc(doc(db, "documents", docId), {
|
|
combinedNumberedType: message,
|
|
});
|
|
}
|
|
|
|
async function getDoc(docId) {
|
|
try {
|
|
const docRef = doc(db, "documents", `${docId}`);
|
|
const docSnap = await getDoc(docRef);
|
|
if (docSnap.exists()) {
|
|
const _doc = docSnap.data();
|
|
return _doc;
|
|
} else {
|
|
console.log("DB item does not exist");
|
|
}
|
|
} catch (error) {
|
|
console.log(`A system error occurred while getting doc: ${error}`);
|
|
}
|
|
}
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Resest Number of Available Docs each month
|
|
*
|
|
******************************************************************************/
|
|
|
|
async function getUsers() {
|
|
onSnapshot(collection(db, "users"), (snapshot) => {
|
|
const idArray = [];
|
|
const run = snapshot.docs.map((user) => {
|
|
const userData = user.data();
|
|
console.log("userData", userData);
|
|
const userDate = userData.subscriptionPeriodStart;
|
|
const subStart = new Date(userDate * 1000);
|
|
const subDayOfMonth = subStart.toDateString().split(" ")[2];
|
|
//stringDateconst subDay = stringDate;
|
|
const subDay = Number(subDayOfMonth);
|
|
|
|
const today = new Date();
|
|
const thisDay = today.getDate();
|
|
//console.log("subDay, thisDay", subDay, thisDay);
|
|
if (subDay === thisDay) {
|
|
//console.log("user.id =>", user.id);
|
|
const obj = {};
|
|
obj["userId"] = user.id;
|
|
obj["docsPerMonth"] = userData.subscriptionPlan[0].docsAllowedPerMonth;
|
|
obj["docsGenerated"] = userData.docsGenerated;
|
|
const tempCarryOverDocs =
|
|
userData.subscriptionPlan[0].docsAllowedPerMonth -
|
|
userData.docsGenerated;
|
|
let actualCarryOverDocs;
|
|
if (userData.subscriptionPlan[0].docsAllowedPerMonth === 3) {
|
|
if (tempCarryOverDocs >= 2) {
|
|
actualCarryOverDocs = 2;
|
|
} else {
|
|
actualCarryOverDocs = tempCarryOverDocs;
|
|
}
|
|
let tempDocsThisPeriod =
|
|
userData.subscriptionPlan[0].docsAllowedPerMonth +
|
|
actualCarryOverDocs;
|
|
const docsThisPeriod =
|
|
tempDocsThisPeriod > 5 ? 5 : tempDocsThisPeriod;
|
|
obj["docsThisPeriod"] = docsThisPeriod;
|
|
} else if (
|
|
userData.subscriptionPlan[0].docsAllowedPerMonth === 1 &&
|
|
tempCarryOverDocs > 0
|
|
) {
|
|
actualCarryOverDocs = 1;
|
|
obj["actualCarryOverDocs"] = actualCarryOverDocs;
|
|
let tempDocsThisPeriod =
|
|
userData.subscriptionPlan[0].docsAllowedPerMonth +
|
|
actualCarryOverDocs;
|
|
const docsThisPeriod =
|
|
tempDocsThisPeriod >= 2 ? 2 : tempDocsThisPeriod;
|
|
obj["docsThisPeriod"] = docsThisPeriod;
|
|
}
|
|
|
|
idArray.push(obj);
|
|
}
|
|
});
|
|
console.log("idArray", idArray);
|
|
idArray.forEach((obj) => {
|
|
// update db to add docsThisPeriod prop/value
|
|
});
|
|
});
|
|
return;
|
|
}
|
|
|
|
//getUsers();
|
|
|
|
module.exports = {
|
|
db,
|
|
updateDB,
|
|
updateDBCombNum,
|
|
getDoc,
|
|
};
|
|
|
|
/*
|
|
async function updateRespGenerationCount(docId) {
|
|
await updateDoc(doc(db, "documents", docId), {
|
|
docType: "interrogatories",
|
|
});
|
|
}
|
|
*/
|
|
//updateRespGenerationCount("4af8c149-1bda-44a7-8c54-be0c09ed655c");
|
|
|
|
/*
|
|
var admin = require("firebase-admin");
|
|
|
|
// Fetch the service account key JSON file contents
|
|
var serviceAccount = require("./agentx2-firebase-adminsdk.json");
|
|
|
|
// Initialize the app with a service account, granting admin privileges
|
|
admin.initializeApp({
|
|
credential: admin.credential.cert(serviceAccount),
|
|
databaseURL: "https://agentx2.firebaseio.com",
|
|
});
|
|
|
|
// As an admin, the app has access to read and write all data, regardless of Security Rules
|
|
var db = admin.database();
|
|
var ref = db.ref("restricted_access/secret_document");
|
|
*/
|