cityssm/lottery-licence-manager

View on GitHub
helpers/licencesDB/getEvent.js

Summary

Maintainability
A
0 mins
Test Coverage
F
12%
import sqlite from "better-sqlite3";
import { licencesDB as databasePath } from "../../data/databasePaths.js";
import * as dateTimeFns from "@cityssm/expressjs-server-js/dateTimeFns.js";
import { canUpdateObject } from "../licencesDB.js";
export const getEvent = (licenceID, eventDate, requestSession) => {
    const database = sqlite(databasePath, {
        readonly: true
    });
    const eventObject = database.prepare("select *" +
        " from LotteryEvents" +
        " where recordDelete_timeMillis is null" +
        " and licenceID = ?" +
        " and eventDate = ?")
        .get(licenceID, eventDate);
    if (eventObject) {
        eventObject.recordType = "event";
        eventObject.eventDateString = dateTimeFns.dateIntegerToString(eventObject.eventDate);
        eventObject.reportDateString = dateTimeFns.dateIntegerToString(eventObject.reportDate);
        eventObject.startTimeString = dateTimeFns.timeIntegerToString(eventObject.startTime || 0);
        eventObject.endTimeString = dateTimeFns.timeIntegerToString(eventObject.endTime || 0);
        eventObject.canUpdate = canUpdateObject(eventObject, requestSession);
        let rows = database.prepare("select fieldKey, fieldValue" +
            " from LotteryEventFields" +
            " where licenceID = ? and eventDate = ?")
            .all(licenceID, eventDate);
        eventObject.eventFields = rows || [];
        rows = database.prepare("select distinct t.ticketType," +
            " c.costs_receipts, c.costs_admin, c.costs_prizesAwarded" +
            " from LotteryLicenceTicketTypes t" +
            " left join LotteryEventCosts c on t.licenceID = c.licenceID and t.ticketType = c.ticketType and c.eventDate = ?" +
            " where t.licenceID = ?" +
            " and (t.recordDelete_timeMillis is null or c.ticketType is not null)" +
            " order by t.ticketType")
            .all(eventDate, licenceID);
        eventObject.eventCosts = rows || [];
        if (eventObject.eventCosts.length === 0) {
            rows = database.prepare("select c.ticketType," +
                " c.costs_receipts, c.costs_admin, c.costs_prizesAwarded" +
                " from LotteryEventCosts c" +
                " where c.licenceID = ?" +
                " and c.eventDate = ?" +
                " order by c.ticketType")
                .all(licenceID, eventDate);
            eventObject.eventCosts = rows || [];
        }
        if (eventObject.eventCosts.length === 0) {
            eventObject.eventCosts.push({
                ticketType: undefined,
                costs_receipts: undefined,
                costs_admin: undefined,
                costs_prizesAwarded: undefined
            });
        }
    }
    database.close();
    return eventObject;
};
export default getEvent;