current occupancy report

deepsource-autofix-76c6eb20
Dan Gowans 2022-09-29 13:18:29 -04:00
parent 5df34264ae
commit 5726e80010
3 changed files with 184 additions and 46 deletions

View File

@ -12,6 +12,16 @@ const mapCityAlias = mapCamelCase + "City";
const mapProvinceAlias = mapCamelCase + "Province"; const mapProvinceAlias = mapCamelCase + "Province";
const mapPostalCodeAlias = mapCamelCase + "PostalCode"; const mapPostalCodeAlias = mapCamelCase + "PostalCode";
const mapPhoneNumberAlias = mapCamelCase + "PhoneNumber"; const mapPhoneNumberAlias = mapCamelCase + "PhoneNumber";
const lotCamelCase = camelCase(configFunctions.getProperty("aliases.lot"));
const lotIdAlias = lotCamelCase + "Id";
const lotNameAlias = lotCamelCase + "Name";
const lotTypeAlias = lotCamelCase + "Type";
const lotStatusAlias = lotCamelCase + "Status";
const occupancyCamelCase = camelCase(configFunctions.getProperty("aliases.occupancy"));
const lotOccupancyIdAlias = occupancyCamelCase + "Id";
const occupancyTypeAlias = occupancyCamelCase + "Type";
const occupancyStartDateAlias = occupancyCamelCase + "StartDate";
const occupancyEndDateAlias = occupancyCamelCase + "EndDate";
export const getReportData = (reportName, reportParameters) => { export const getReportData = (reportName, reportParameters) => {
let sql; let sql;
const sqlParameters = []; const sqlParameters = [];
@ -24,26 +34,19 @@ export const getReportData = (reportName, reportParameters) => {
"select mapName as " + "select mapName as " +
mapNameAlias + mapNameAlias +
"," + "," +
" mapDescription as " + (" mapDescription as " + mapDescriptionAlias) +
mapDescriptionAlias +
"," + "," +
" mapAddress1 as " + (" mapAddress1 as " + mapAddress1Alias) +
mapAddress1Alias +
"," + "," +
" mapAddress2 as " + (" mapAddress2 as " + mapAddress2Alias) +
mapAddress2Alias +
"," + "," +
" mapCity as " + (" mapCity as " + mapCityAlias) +
mapCityAlias +
"," + "," +
" mapProvince as " + (" mapProvince as " + mapProvinceAlias) +
mapProvinceAlias +
"," + "," +
" mapPostalCode as " + (" mapPostalCode as " + mapPostalCodeAlias) +
mapPostalCodeAlias +
"," + "," +
" mapPhoneNumber as " + (" mapPhoneNumber as " + mapPhoneNumberAlias) +
mapPhoneNumberAlias +
" from Maps" + " from Maps" +
" where recordDelete_timeMillis is null" + " where recordDelete_timeMillis is null" +
" order by mapName"; " order by mapName";
@ -53,9 +56,16 @@ export const getReportData = (reportName, reportParameters) => {
break; break;
case "lots-byLotTypeId": case "lots-byLotTypeId":
sql = sql =
"select l.lotId," + "select l.lotId as " +
" m.mapName, l.lotName," + lotIdAlias +
" t.lotType, s.lotStatus" + "," +
(" m.mapName as " + mapNameAlias) +
"," +
(" l.lotName as " + lotNameAlias) +
"," +
(" t.lotType as " + lotTypeAlias) +
"," +
(" s.lotStatus as " + lotStatusAlias) +
" from Lots l" + " from Lots l" +
" left join LotTypes t on l.lotTypeId = t.lotTypeId" + " left join LotTypes t on l.lotTypeId = t.lotTypeId" +
" left join LotStatuses s on l.lotStatusId = s.lotStatusId" + " left join LotStatuses s on l.lotStatusId = s.lotStatusId" +
@ -66,9 +76,16 @@ export const getReportData = (reportName, reportParameters) => {
break; break;
case "lots-byLotStatusId": case "lots-byLotStatusId":
sql = sql =
"select l.lotId," + "select l.lotId as " +
" m.mapName, l.lotName," + lotIdAlias +
" t.lotType, s.lotStatus" + "," +
(" m.mapName as " + mapNameAlias) +
"," +
(" l.lotName as " + lotNameAlias) +
"," +
(" t.lotType as " + lotTypeAlias) +
"," +
(" s.lotStatus as " + lotStatusAlias) +
" from Lots l" + " from Lots l" +
" left join LotTypes t on l.lotTypeId = t.lotTypeId" + " left join LotTypes t on l.lotTypeId = t.lotTypeId" +
" left join LotStatuses s on l.lotStatusId = s.lotStatusId" + " left join LotStatuses s on l.lotStatusId = s.lotStatusId" +
@ -79,9 +96,16 @@ export const getReportData = (reportName, reportParameters) => {
break; break;
case "lots-byMapId": case "lots-byMapId":
sql = sql =
"select l.lotId," + "select l.lotId as " +
" m.mapName, l.lotName," + lotIdAlias +
" t.lotType, s.lotStatus" + "," +
(" m.mapName as " + mapNameAlias) +
"," +
(" l.lotName as " + lotNameAlias) +
"," +
(" t.lotType as " + lotTypeAlias) +
"," +
(" s.lotStatus as " + lotStatusAlias) +
" from Lots l" + " from Lots l" +
" left join LotTypes t on l.lotTypeId = t.lotTypeId" + " left join LotTypes t on l.lotTypeId = t.lotTypeId" +
" left join LotStatuses s on l.lotStatusId = s.lotStatusId" + " left join LotStatuses s on l.lotStatusId = s.lotStatusId" +
@ -99,6 +123,29 @@ export const getReportData = (reportName, reportParameters) => {
case "lotOccupancies-all": case "lotOccupancies-all":
sql = "select * from LotOccupancies"; sql = "select * from LotOccupancies";
break; break;
case "lotOccupancies-current-byMapId":
sql =
"select o.lotOccupancyId as " +
lotOccupancyIdAlias +
"," +
(" l.lotName as " + lotNameAlias) +
"," +
(" m.mapName as " + mapNameAlias) +
"," +
(" ot.occupancyType as " + occupancyTypeAlias) +
"," +
(" o.occupancyStartDate as " + occupancyStartDateAlias) +
"," +
(" o.occupancyEndDate as " + occupancyEndDateAlias) +
" from LotOccupancies o" +
" left join OccupancyTypes ot on o.occupancyTypeId = ot.occupancyTypeId" +
" left join Lots l on o.lotId = l.lotId" +
" left join Maps m on l.mapId = m.mapId" +
" where o.recordDelete_timeMillis is null" +
" and (o.occupancyEndDate is null or o.occupancyEndDate >= ?)" +
" and l.mapId = ?";
sqlParameters.push(dateTimeFunctions.dateToInteger(new Date()), reportParameters.mapId);
break;
case "lotOccupancyComments-all": case "lotOccupancyComments-all":
sql = "select * from LotOccupancyComments"; sql = "select * from LotOccupancyComments";
break; break;
@ -121,6 +168,7 @@ export const getReportData = (reportName, reportParameters) => {
sql = sql =
"select w.workOrderId, w.workOrderNumber," + "select w.workOrderId, w.workOrderNumber," +
" t.workOrderType, w.workOrderDescription," + " t.workOrderType, w.workOrderDescription," +
" w.workOrderOpenDate," +
" m.workOrderMilestoneCount, m.workOrderMilestoneCompletionCount" + " m.workOrderMilestoneCount, m.workOrderMilestoneCompletionCount" +
" from WorkOrders w" + " from WorkOrders w" +
" left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" + " left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" +

View File

@ -23,6 +23,18 @@ const mapProvinceAlias = mapCamelCase + "Province";
const mapPostalCodeAlias = mapCamelCase + "PostalCode"; const mapPostalCodeAlias = mapCamelCase + "PostalCode";
const mapPhoneNumberAlias = mapCamelCase + "PhoneNumber"; const mapPhoneNumberAlias = mapCamelCase + "PhoneNumber";
const lotCamelCase = camelCase(configFunctions.getProperty("aliases.lot"));
const lotIdAlias = lotCamelCase + "Id";
const lotNameAlias = lotCamelCase + "Name";
const lotTypeAlias = lotCamelCase + "Type";
const lotStatusAlias = lotCamelCase + "Status";
const occupancyCamelCase = camelCase(configFunctions.getProperty("aliases.occupancy"));
const lotOccupancyIdAlias = occupancyCamelCase + "Id";
const occupancyTypeAlias = occupancyCamelCase + "Type";
const occupancyStartDateAlias = occupancyCamelCase + "StartDate";
const occupancyEndDateAlias = occupancyCamelCase + "EndDate";
export const getReportData = ( export const getReportData = (
reportName: string, reportName: string,
reportParameters?: ReportParameters reportParameters?: ReportParameters
@ -40,26 +52,19 @@ export const getReportData = (
"select mapName as " + "select mapName as " +
mapNameAlias + mapNameAlias +
"," + "," +
" mapDescription as " + (" mapDescription as " + mapDescriptionAlias) +
mapDescriptionAlias +
"," + "," +
" mapAddress1 as " + (" mapAddress1 as " + mapAddress1Alias) +
mapAddress1Alias +
"," + "," +
" mapAddress2 as " + (" mapAddress2 as " + mapAddress2Alias) +
mapAddress2Alias +
"," + "," +
" mapCity as " + (" mapCity as " + mapCityAlias) +
mapCityAlias +
"," + "," +
" mapProvince as " + (" mapProvince as " + mapProvinceAlias) +
mapProvinceAlias +
"," + "," +
" mapPostalCode as " + (" mapPostalCode as " + mapPostalCodeAlias) +
mapPostalCodeAlias +
"," + "," +
" mapPhoneNumber as " + (" mapPhoneNumber as " + mapPhoneNumberAlias) +
mapPhoneNumberAlias +
" from Maps" + " from Maps" +
" where recordDelete_timeMillis is null" + " where recordDelete_timeMillis is null" +
" order by mapName"; " order by mapName";
@ -72,9 +77,16 @@ export const getReportData = (
case "lots-byLotTypeId": case "lots-byLotTypeId":
sql = sql =
"select l.lotId," + "select l.lotId as " +
" m.mapName, l.lotName," + lotIdAlias +
" t.lotType, s.lotStatus" + "," +
(" m.mapName as " + mapNameAlias) +
"," +
(" l.lotName as " + lotNameAlias) +
"," +
(" t.lotType as " + lotTypeAlias) +
"," +
(" s.lotStatus as " + lotStatusAlias) +
" from Lots l" + " from Lots l" +
" left join LotTypes t on l.lotTypeId = t.lotTypeId" + " left join LotTypes t on l.lotTypeId = t.lotTypeId" +
" left join LotStatuses s on l.lotStatusId = s.lotStatusId" + " left join LotStatuses s on l.lotStatusId = s.lotStatusId" +
@ -88,9 +100,16 @@ export const getReportData = (
case "lots-byLotStatusId": case "lots-byLotStatusId":
sql = sql =
"select l.lotId," + "select l.lotId as " +
" m.mapName, l.lotName," + lotIdAlias +
" t.lotType, s.lotStatus" + "," +
(" m.mapName as " + mapNameAlias) +
"," +
(" l.lotName as " + lotNameAlias) +
"," +
(" t.lotType as " + lotTypeAlias) +
"," +
(" s.lotStatus as " + lotStatusAlias) +
" from Lots l" + " from Lots l" +
" left join LotTypes t on l.lotTypeId = t.lotTypeId" + " left join LotTypes t on l.lotTypeId = t.lotTypeId" +
" left join LotStatuses s on l.lotStatusId = s.lotStatusId" + " left join LotStatuses s on l.lotStatusId = s.lotStatusId" +
@ -104,9 +123,16 @@ export const getReportData = (
case "lots-byMapId": case "lots-byMapId":
sql = sql =
"select l.lotId," + "select l.lotId as " +
" m.mapName, l.lotName," + lotIdAlias +
" t.lotType, s.lotStatus" + "," +
(" m.mapName as " + mapNameAlias) +
"," +
(" l.lotName as " + lotNameAlias) +
"," +
(" t.lotType as " + lotTypeAlias) +
"," +
(" s.lotStatus as " + lotStatusAlias) +
" from Lots l" + " from Lots l" +
" left join LotTypes t on l.lotTypeId = t.lotTypeId" + " left join LotTypes t on l.lotTypeId = t.lotTypeId" +
" left join LotStatuses s on l.lotStatusId = s.lotStatusId" + " left join LotStatuses s on l.lotStatusId = s.lotStatusId" +
@ -130,6 +156,32 @@ export const getReportData = (
sql = "select * from LotOccupancies"; sql = "select * from LotOccupancies";
break; break;
case "lotOccupancies-current-byMapId":
sql =
"select o.lotOccupancyId as " +
lotOccupancyIdAlias +
"," +
(" l.lotName as " + lotNameAlias) +
"," +
(" m.mapName as " + mapNameAlias) +
"," +
(" ot.occupancyType as " + occupancyTypeAlias) +
"," +
(" o.occupancyStartDate as " + occupancyStartDateAlias) +
"," +
(" o.occupancyEndDate as " + occupancyEndDateAlias) +
" from LotOccupancies o" +
" left join OccupancyTypes ot on o.occupancyTypeId = ot.occupancyTypeId" +
" left join Lots l on o.lotId = l.lotId" +
" left join Maps m on l.mapId = m.mapId" +
" where o.recordDelete_timeMillis is null" +
" and (o.occupancyEndDate is null or o.occupancyEndDate >= ?)" +
" and l.mapId = ?";
sqlParameters.push(dateTimeFunctions.dateToInteger(new Date()), reportParameters.mapId);
break;
case "lotOccupancyComments-all": case "lotOccupancyComments-all":
sql = "select * from LotOccupancyComments"; sql = "select * from LotOccupancyComments";
break; break;
@ -158,6 +210,7 @@ export const getReportData = (
sql = sql =
"select w.workOrderId, w.workOrderNumber," + "select w.workOrderId, w.workOrderNumber," +
" t.workOrderType, w.workOrderDescription," + " t.workOrderType, w.workOrderDescription," +
" w.workOrderOpenDate," +
" m.workOrderMilestoneCount, m.workOrderMilestoneCompletionCount" + " m.workOrderMilestoneCount, m.workOrderMilestoneCompletionCount" +
" from WorkOrders w" + " from WorkOrders w" +
" left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" + " left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" +

View File

@ -111,6 +111,43 @@
<div class="is-hidden" id="tab--lotOccupancies"> <div class="is-hidden" id="tab--lotOccupancies">
<h1 class="title is-1"><%= configFunctions.getProperty("aliases.occupancy") %> Reports</h1> <h1 class="title is-1"><%= configFunctions.getProperty("aliases.occupancy") %> Reports</h1>
<div class="panel">
<form class="panel-block align-items-flex-start" method="get" action="<%= urlPrefix %>/reports/lotOccupancies-current-byMapId">
<div class="has-text-centered my-2 ml-2 mr-3">
<span class="icon has-text-info">
<i class="fas fa-2x fa-file" aria-hidden="true"></i>
</span><br />
<span class="tag is-info">CSV</span>
</div>
<div>
<h3 class="title is-5 is-marginless">Current <%= configFunctions.getProperty("aliases.occupancy") %> By <%= configFunctions.getProperty("aliases.map") %></h3>
<div class="field has-addons mt-2">
<div class="control">
<label class="button is-small is-static" for="lotOccupancies-current-byMapId--mapId">
<%= configFunctions.getProperty("aliases.map") %>
</label>
</div>
<div class="control is-expanded">
<div class="select is-small is-fullwidth">
<select id="lotOccupancies-current-byMapId--mapId" name="mapId">
<% for (const map of maps) { %>
<option value="<%= map.mapId %>">
<%= map.mapName || "(No Name)" %>
</option>
<% } %>
</select>
</div>
</div>
<div class="control">
<button class="button is-small is-primary" type="submit">
Export
</button>
</div>
</div>
</div>
</form>
</div>
</div> </div>
<div class="is-hidden" id="tab--lots"> <div class="is-hidden" id="tab--lots">
<h1 class="title is-1"><%= configFunctions.getProperty("aliases.lot") %> Reports</h1> <h1 class="title is-1"><%= configFunctions.getProperty("aliases.lot") %> Reports</h1>