cityssm/lottery-licence-manager

View on GitHub
helpers/licencesDB/voidTransaction.ts

Summary

Maintainability
A
0 mins
Test Coverage
import sqlite from "better-sqlite3";
import { licencesDB as databasePath } from "../../data/databasePaths.js";

import { getLicenceWithDB } from "./getLicence.js";
import { addLicenceAmendmentWithDB } from "./addLicenceAmendment.js";

import type * as expressSession from "express-session";


export const voidTransaction =
  (licenceID: number, transactionIndex: number, requestSession: expressSession.Session): boolean => {

    const database = sqlite(databasePath);

    const licenceObject = getLicenceWithDB(database, licenceID, requestSession, {
      includeTicketTypes: false,
      includeFields: false,
      includeEvents: false,
      includeAmendments: false,
      includeTransactions: false
    });

    const nowMillis = Date.now();

    const hasChanges = database.prepare("update LotteryLicenceTransactions" +
      " set recordDelete_userName = ?," +
      " recordDelete_timeMillis = ?" +
      " where licenceID = ?" +
      " and transactionIndex = ?" +
      " and recordDelete_timeMillis is null")
      .run(requestSession.user.userName,
        nowMillis,
        licenceID,
        transactionIndex
      ).changes > 0;

    if (hasChanges && licenceObject.trackUpdatesAsAmendments) {

      addLicenceAmendmentWithDB(
        database,
        licenceID,
        "Transaction Voided",
        "",
        1,
        requestSession
      );

    }

    database.close();

    return hasChanges;
  };