cityssm/lottery-licence-manager

View on GitHub
helpers/licencesDB/updateEvent.js

Summary

Maintainability
A
1 hr
Test Coverage
F
10%
import sqlite from "better-sqlite3";
import * as dateTimeFns from "@cityssm/expressjs-server-js/dateTimeFns.js";
import * as licencesDB from "../licencesDB.js";
import { licencesDB as databasePath } from "../../data/databasePaths.js";
export const updateEvent = (requestBody, requestSession) => {
    const database = sqlite(databasePath);
    const nowMillis = Date.now();
    const info = database.prepare("update LotteryEvents" +
        " set reportDate = ?," +
        " bank_name = ?," +
        " bank_address = ?," +
        " bank_accountNumber = ?," +
        " bank_accountBalance = ?," +
        " costs_amountDonated = ?," +
        " recordUpdate_userName = ?," +
        " recordUpdate_timeMillis = ?" +
        " where licenceID = ?" +
        " and eventDate = ?" +
        " and recordDelete_timeMillis is null")
        .run((requestBody.reportDateString === "" ? undefined : dateTimeFns.dateStringToInteger(requestBody.reportDateString)), requestBody.bank_name, requestBody.bank_address, requestBody.bank_accountNumber, (requestBody.bank_accountBalance === "" ? undefined : requestBody.bank_accountBalance), (requestBody.costs_amountDonated === "" ? undefined : requestBody.costs_amountDonated), requestSession.user.userName, nowMillis, requestBody.licenceID, requestBody.eventDate);
    const changeCount = info.changes;
    if (!changeCount) {
        database.close();
        return false;
    }
    database.prepare("delete from LotteryEventCosts" +
        " where licenceID = ?" +
        " and eventDate = ?")
        .run(requestBody.licenceID, requestBody.eventDate);
    const ticketTypes = requestBody.ticketTypes.split(",");
    for (const ticketType of ticketTypes) {
        const costs_receipts = requestBody["costs_receipts-" + ticketType];
        const costs_admin = requestBody["costs_admin-" + ticketType];
        const costs_prizesAwarded = requestBody["costs_prizesAwarded-" + ticketType];
        database.prepare("insert into LotteryEventCosts" +
            " (licenceID, eventDate, ticketType, costs_receipts, costs_admin, costs_prizesAwarded)" +
            " values (?, ?, ?, ?, ?, ?)")
            .run(requestBody.licenceID, requestBody.eventDate, (ticketType === "" ? undefined : ticketType), (costs_receipts === "" ? undefined : costs_receipts), (costs_admin === "" ? undefined : costs_admin), (costs_prizesAwarded === "" ? undefined : costs_prizesAwarded));
    }
    database.prepare("delete from LotteryEventFields" +
        " where licenceID = ?" +
        " and eventDate = ?")
        .run(requestBody.licenceID, requestBody.eventDate);
    const fieldKeys = requestBody.fieldKeys.split(",");
    for (const fieldKey of fieldKeys) {
        const fieldValue = requestBody[fieldKey];
        if (fieldValue !== "") {
            database.prepare("insert into LotteryEventFields" +
                " (licenceID, eventDate, fieldKey, fieldValue)" +
                " values (?, ?, ?, ?)")
                .run(requestBody.licenceID, requestBody.eventDate, fieldKey, fieldValue);
        }
    }
    database.close();
    licencesDB.resetEventTableStats();
    return changeCount > 0;
};