sunrise-cms/helpers/functions.sqlFilters.js

84 lines
3.0 KiB
JavaScript

import { dateToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
export const getLotNameWhereClause = (lotName, lotNameSearchType, lotsTableAlias = "l") => {
let sqlWhereClause = "";
const sqlParameters = [];
if (lotName) {
switch (lotNameSearchType) {
case "startsWith": {
sqlWhereClause += " and " + lotsTableAlias + ".lotName like ? || '%'";
sqlParameters.push(lotName);
break;
}
case "endsWith": {
sqlWhereClause += " and " + lotsTableAlias + ".lotName like '%' || ?";
sqlParameters.push(lotName);
break;
}
default: {
const lotNamePieces = lotName.toLowerCase().split(" ");
for (const lotNamePiece of lotNamePieces) {
sqlWhereClause += " and instr(lower(" + lotsTableAlias + ".lotName), ?)";
sqlParameters.push(lotNamePiece);
}
}
}
}
return {
sqlWhereClause,
sqlParameters
};
};
export const getOccupancyTimeWhereClause = (occupancyTime, lotOccupanciesTableAlias = "o") => {
let sqlWhereClause = "";
const sqlParameters = [];
if (occupancyTime) {
const currentDateString = dateToInteger(new Date());
switch (occupancyTime) {
case "current": {
sqlWhereClause +=
" and " +
lotOccupanciesTableAlias +
".occupancyStartDate <= ? and (" +
lotOccupanciesTableAlias +
".occupancyEndDate is null or " +
lotOccupanciesTableAlias +
".occupancyEndDate >= ?)";
sqlParameters.push(currentDateString, currentDateString);
break;
}
case "past": {
sqlWhereClause += " and " + lotOccupanciesTableAlias + ".occupancyEndDate < ?";
sqlParameters.push(currentDateString);
break;
}
case "future": {
sqlWhereClause += " and " + lotOccupanciesTableAlias + ".occupancyStartDate > ?";
sqlParameters.push(currentDateString);
break;
}
}
}
return {
sqlWhereClause,
sqlParameters
};
};
export const getOccupantNameWhereClause = (occupantName, tableAlias = "o") => {
let sqlWhereClause = "";
const sqlParameters = [];
if (occupantName) {
const occupantNamePieces = occupantName.toLowerCase().split(" ");
for (const occupantNamePiece of occupantNamePieces) {
sqlWhereClause +=
" and " +
tableAlias +
".lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants where recordDelete_timeMillis is null and instr(lower(occupantName), ?))";
sqlParameters.push(occupantNamePiece);
}
}
return {
sqlWhereClause,
sqlParameters
};
};