helpers/licencesDB/addTransaction.js
import sqlite from "better-sqlite3";
import { licencesDB as databasePath } from "../../data/databasePaths.js";
import * as dateTimeFns from "@cityssm/expressjs-server-js/dateTimeFns.js";
import { getMaxTransactionIndexWithDB } from "./getMaxTransactionIndex.js";
import { getLicenceWithDB } from "./getLicence.js";
import { addLicenceAmendmentWithDB } from "./addLicenceAmendment.js";
export const addTransaction = (requestBody, requestSession) => {
const database = sqlite(databasePath);
const licenceObject = getLicenceWithDB(database, requestBody.licenceID, requestSession, {
includeTicketTypes: false,
includeFields: false,
includeEvents: false,
includeAmendments: false,
includeTransactions: false
});
const newTransactionIndex = getMaxTransactionIndexWithDB(database, requestBody.licenceID) + 1;
const rightNow = new Date();
const transactionDate = dateTimeFns.dateToInteger(rightNow);
const transactionTime = dateTimeFns.dateToTimeInteger(rightNow);
database.prepare("insert into LotteryLicenceTransactions (" +
"licenceID, transactionIndex," +
" transactionDate, transactionTime," +
" externalReceiptNumber, transactionAmount, transactionNote," +
" recordCreate_userName, recordCreate_timeMillis," +
" recordUpdate_userName, recordUpdate_timeMillis)" +
" values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
.run(requestBody.licenceID, newTransactionIndex, transactionDate, transactionTime, requestBody.externalReceiptNumber, requestBody.transactionAmount, requestBody.transactionNote, requestSession.user.userName, rightNow.getTime(), requestSession.user.userName, rightNow.getTime());
if (licenceObject.trackUpdatesAsAmendments) {
addLicenceAmendmentWithDB(database, requestBody.licenceID, "New Transaction", "", 1, requestSession);
}
if (requestBody.issueLicence === "true") {
database.prepare("update LotteryLicences" +
" set issueDate = ?," +
" issueTime = ?," +
" trackUpdatesAsAmendments = 1," +
" recordUpdate_userName = ?," +
" recordUpdate_timeMillis = ?" +
" where licenceID = ?" +
" and recordDelete_timeMillis is null" +
" and issueDate is null")
.run(transactionDate, transactionTime, requestSession.user.userName, rightNow.getTime(), requestBody.licenceID);
}
database.close();
return newTransactionIndex;
};