deepsource-autofix-76c6eb20
Dan Gowans 2023-01-12 12:14:19 -05:00
parent 33c62a4a62
commit 87a74d3570
60 changed files with 23969 additions and 23924 deletions

View File

@ -1,16 +1,16 @@
{ {
"ignorePaths": [ "ignorePaths": [
"**/node_modules/**", "**/node_modules/**",
"**/vscode-extension/**", "**/vscode-extension/**",
"**/.git/**", "**/.git/**",
"**/.pnpm-lock.json", "**/.pnpm-lock.json",
".vscode", ".vscode",
"megalinter", "megalinter",
"package-lock.json", "package-lock.json",
"report" "report"
], ],
"language": "en", "language": "en",
"noConfigSearch": true, "noConfigSearch": true,
"words": ["megalinter", "oxsecurity"], "words": ["megalinter", "oxsecurity"],
"version": "0.2" "version": "0.2"
} }

View File

@ -1,15 +1,15 @@
{ {
"threshold": 0, "threshold": 0,
"reporters": ["html", "markdown"], "reporters": ["html", "markdown"],
"ignore": [ "ignore": [
"**/node_modules/**", "**/node_modules/**",
"**/.git/**", "**/.git/**",
"**/.rbenv/**", "**/.rbenv/**",
"**/.venv/**", "**/.venv/**",
"**/*cache*/**", "**/*cache*/**",
"**/.github/**", "**/.github/**",
"**/.idea/**", "**/.idea/**",
"**/report/**", "**/report/**",
"**/*.svg" "**/*.svg"
] ]
} }

View File

@ -1,23 +1,25 @@
import { testAdmin } from "../../../test/_globals.js"; import { testAdmin } from '../../../test/_globals.js';
import { logout, login, ajaxDelayMillis } from "../../support/index.js"; import { logout, login, ajaxDelayMillis } from '../../support/index.js';
describe("Admin - Cleanup Database", () => { describe('Admin - Cleanup Database', () => {
beforeEach("Loads page", () => { beforeEach('Loads page', () => {
logout(); logout();
login(testAdmin); login(testAdmin);
cy.visit("/admin/cleanup"); cy.visit('/admin/cleanup');
cy.location("pathname").should("equal", "/admin/cleanup"); cy.location('pathname').should('equal', '/admin/cleanup');
}); });
afterEach(logout); afterEach(logout);
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();
}); });
it("Cleans up the database", () => { it('Cleans up the database', () => {
cy.get("button[data-cy='cleanup']").click(); cy.get("button[data-cy='cleanup']").click();
cy.get(".modal").should("be.visible").should("contain.text", "Cleanup"); cy.get('.modal').should('be.visible').should('contain.text', 'Cleanup');
cy.get(".modal button[data-cy='ok']").click(); cy.get(".modal button[data-cy='ok']").click();
cy.wait(ajaxDelayMillis); cy.wait(ajaxDelayMillis);
cy.get(".modal").should("contain.text", "Cleaned Up").should("contain.text", "Success"); cy.get('.modal')
.should('contain.text', 'Cleaned Up')
.should('contain.text', 'Success');
cy.get(".modal button[data-cy='ok']").click(); cy.get(".modal button[data-cy='ok']").click();
}); });
}); });

View File

@ -1,36 +1,37 @@
/* eslint-disable unicorn/filename-case, promise/catch-or-return, promise/always-return */ /* eslint-disable unicorn/filename-case, promise/catch-or-return, promise/always-return */
import { testAdmin } from "../../../test/_globals.js"; import { testAdmin } from '../../../test/_globals.js'
import { logout, login, ajaxDelayMillis } from "../../support/index.js"; import { logout, login, ajaxDelayMillis } from '../../support/index.js'
describe("Admin - Cleanup Database", () => { describe('Admin - Cleanup Database', () => {
beforeEach('Loads page', () => {
logout()
login(testAdmin)
cy.visit('/admin/cleanup')
cy.location('pathname').should('equal', '/admin/cleanup')
})
beforeEach("Loads page", () => { afterEach(logout)
logout();
login(testAdmin);
cy.visit("/admin/cleanup");
cy.location("pathname").should("equal", "/admin/cleanup");
});
afterEach(logout);
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.injectAxe(); cy.injectAxe()
cy.checkA11y(); cy.checkA11y()
}); })
it("Cleans up the database", () => { it('Cleans up the database', () => {
cy.get("button[data-cy='cleanup']").click(); cy.get("button[data-cy='cleanup']").click()
cy.get(".modal").should("be.visible").should("contain.text", "Cleanup"); cy.get('.modal').should('be.visible').should('contain.text', 'Cleanup')
cy.get(".modal button[data-cy='ok']").click(); cy.get(".modal button[data-cy='ok']").click()
cy.wait(ajaxDelayMillis); cy.wait(ajaxDelayMillis)
cy.get(".modal").should("contain.text", "Cleaned Up").should("contain.text", "Success"); cy.get('.modal')
.should('contain.text', 'Cleaned Up')
.should('contain.text', 'Success')
cy.get(".modal button[data-cy='ok']").click(); cy.get(".modal button[data-cy='ok']").click()
}); })
}); })

View File

@ -1,15 +1,15 @@
import { testAdmin } from "../../../test/_globals.js"; import { testAdmin } from '../../../test/_globals.js';
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js';
describe("Admin - Config Table Management", () => { describe('Admin - Config Table Management', () => {
beforeEach("Loads page", () => { beforeEach('Loads page', () => {
logout(); logout();
login(testAdmin); login(testAdmin);
cy.visit("/admin/tables"); cy.visit('/admin/tables');
cy.location("pathname").should("equal", "/admin/tables"); cy.location('pathname').should('equal', '/admin/tables');
}); });
afterEach(logout); afterEach(logout);
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.get(".tabs a").each(($tab) => { cy.get('.tabs a').each(($tab) => {
cy.wrap($tab).click({ force: true }); cy.wrap($tab).click({ force: true });
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();

View File

@ -1,25 +1,24 @@
/* eslint-disable unicorn/filename-case, promise/catch-or-return, promise/always-return */ /* eslint-disable unicorn/filename-case, promise/catch-or-return, promise/always-return */
import { testAdmin } from "../../../test/_globals.js"; import { testAdmin } from '../../../test/_globals.js'
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js'
describe("Admin - Config Table Management", () => { describe('Admin - Config Table Management', () => {
beforeEach('Loads page', () => {
beforeEach("Loads page", () => { logout()
logout(); login(testAdmin)
login(testAdmin); cy.visit('/admin/tables')
cy.visit("/admin/tables"); cy.location('pathname').should('equal', '/admin/tables')
cy.location("pathname").should("equal", "/admin/tables"); })
});
afterEach(logout);
it("Has no detectable accessibility issues", () => { afterEach(logout)
cy.get(".tabs a").each(($tab) => {
cy.wrap($tab).click({ force: true }); it('Has no detectable accessibility issues', () => {
cy.injectAxe(); cy.get('.tabs a').each(($tab) => {
cy.checkA11y(); cy.wrap($tab).click({ force: true })
}); cy.injectAxe()
}); cy.checkA11y()
}); })
})
})

View File

@ -1,14 +1,14 @@
import { testAdmin } from "../../../test/_globals.js"; import { testAdmin } from '../../../test/_globals.js';
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js';
describe("Admin - Lot Type Management", () => { describe('Admin - Lot Type Management', () => {
beforeEach("Loads page", () => { beforeEach('Loads page', () => {
logout(); logout();
login(testAdmin); login(testAdmin);
cy.visit("/admin/lotTypes"); cy.visit('/admin/lotTypes');
cy.location("pathname").should("equal", "/admin/lotTypes"); cy.location('pathname').should('equal', '/admin/lotTypes');
}); });
afterEach(logout); afterEach(logout);
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();
}); });

View File

@ -1,22 +1,21 @@
/* eslint-disable unicorn/filename-case, promise/catch-or-return, promise/always-return */ /* eslint-disable unicorn/filename-case, promise/catch-or-return, promise/always-return */
import { testAdmin } from "../../../test/_globals.js"; import { testAdmin } from '../../../test/_globals.js'
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js'
describe("Admin - Lot Type Management", () => { describe('Admin - Lot Type Management', () => {
beforeEach('Loads page', () => {
beforeEach("Loads page", () => { logout()
logout(); login(testAdmin)
login(testAdmin); cy.visit('/admin/lotTypes')
cy.visit("/admin/lotTypes"); cy.location('pathname').should('equal', '/admin/lotTypes')
cy.location("pathname").should("equal", "/admin/lotTypes"); })
});
afterEach(logout);
it("Has no detectable accessibility issues", () => { afterEach(logout)
cy.injectAxe();
cy.checkA11y(); it('Has no detectable accessibility issues', () => {
}); cy.injectAxe()
}); cy.checkA11y()
})
})

View File

@ -1,14 +1,14 @@
import { testAdmin } from "../../../test/_globals.js"; import { testAdmin } from '../../../test/_globals.js';
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js';
describe("Admin - Occupancy Type Management", () => { describe('Admin - Occupancy Type Management', () => {
beforeEach("Loads page", () => { beforeEach('Loads page', () => {
logout(); logout();
login(testAdmin); login(testAdmin);
cy.visit("/admin/occupancyTypes"); cy.visit('/admin/occupancyTypes');
cy.location("pathname").should("equal", "/admin/occupancyTypes"); cy.location('pathname').should('equal', '/admin/occupancyTypes');
}); });
afterEach(logout); afterEach(logout);
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();
}); });

View File

@ -1,22 +1,21 @@
/* eslint-disable unicorn/filename-case, promise/catch-or-return, promise/always-return */ /* eslint-disable unicorn/filename-case, promise/catch-or-return, promise/always-return */
import { testAdmin } from "../../../test/_globals.js"; import { testAdmin } from '../../../test/_globals.js'
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js'
describe("Admin - Occupancy Type Management", () => { describe('Admin - Occupancy Type Management', () => {
beforeEach('Loads page', () => {
beforeEach("Loads page", () => { logout()
logout(); login(testAdmin)
login(testAdmin); cy.visit('/admin/occupancyTypes')
cy.visit("/admin/occupancyTypes"); cy.location('pathname').should('equal', '/admin/occupancyTypes')
cy.location("pathname").should("equal", "/admin/occupancyTypes"); })
});
afterEach(logout);
it("Has no detectable accessibility issues", () => { afterEach(logout)
cy.injectAxe();
cy.checkA11y(); it('Has no detectable accessibility issues', () => {
}); cy.injectAxe()
}); cy.checkA11y()
})
})

View File

@ -1,19 +1,19 @@
import { testUpdate } from "../../../test/_globals.js"; import { testUpdate } from '../../../test/_globals.js';
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js';
describe("Update - Lot Occupancies", () => { describe('Update - Lot Occupancies', () => {
beforeEach(() => { beforeEach(() => {
logout(); logout();
login(testUpdate); login(testUpdate);
}); });
afterEach(logout); afterEach(logout);
it('Has a "Create" link on the Lot Occupancy Search', () => { it('Has a "Create" link on the Lot Occupancy Search', () => {
cy.visit("/lotOccupancies"); cy.visit('/lotOccupancies');
cy.location("pathname").should("equal", "/lotOccupancies"); cy.location('pathname').should('equal', '/lotOccupancies');
cy.get("a[href$='/lotOccupancies/new']").should("exist"); cy.get("a[href$='/lotOccupancies/new']").should('exist');
}); });
describe("Update a New Lot Occupancy", () => { describe('Update a New Lot Occupancy', () => {
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.visit("/lotOccupancies/new"); cy.visit('/lotOccupancies/new');
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();
}); });

View File

@ -1,26 +1,26 @@
import { testUpdate } from "../../../test/_globals.js"; import { testUpdate } from '../../../test/_globals.js'
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js'
describe("Update - Lot Occupancies", () => { describe('Update - Lot Occupancies', () => {
beforeEach(() => { beforeEach(() => {
logout(); logout()
login(testUpdate); login(testUpdate)
}); })
afterEach(logout); afterEach(logout)
it('Has a "Create" link on the Lot Occupancy Search', () => { it('Has a "Create" link on the Lot Occupancy Search', () => {
cy.visit("/lotOccupancies"); cy.visit('/lotOccupancies')
cy.location("pathname").should("equal", "/lotOccupancies"); cy.location('pathname').should('equal', '/lotOccupancies')
cy.get("a[href$='/lotOccupancies/new']").should("exist"); cy.get("a[href$='/lotOccupancies/new']").should('exist')
}); })
describe("Update a New Lot Occupancy", () => { describe('Update a New Lot Occupancy', () => {
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.visit("/lotOccupancies/new"); cy.visit('/lotOccupancies/new')
cy.injectAxe(); cy.injectAxe()
cy.checkA11y(); cy.checkA11y()
}); })
}); })
}); })

View File

@ -1,19 +1,19 @@
import { testUpdate } from "../../../test/_globals.js"; import { testUpdate } from '../../../test/_globals.js';
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js';
describe("Update - Lots", () => { describe('Update - Lots', () => {
beforeEach("Loads page", () => { beforeEach('Loads page', () => {
logout(); logout();
login(testUpdate); login(testUpdate);
}); });
afterEach(logout); afterEach(logout);
it('Has a "Create" link on the Lot Search', () => { it('Has a "Create" link on the Lot Search', () => {
cy.visit("/lots"); cy.visit('/lots');
cy.location("pathname").should("equal", "/lots"); cy.location('pathname').should('equal', '/lots');
cy.get("a[href$='/lots/new']").should("exist"); cy.get("a[href$='/lots/new']").should('exist');
}); });
describe("Update a New Lot", () => { describe('Update a New Lot', () => {
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.visit("/lots/new"); cy.visit('/lots/new');
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();
}); });

View File

@ -1,26 +1,26 @@
import { testUpdate } from "../../../test/_globals.js"; import { testUpdate } from '../../../test/_globals.js'
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js'
describe("Update - Lots", () => { describe('Update - Lots', () => {
beforeEach("Loads page", () => { beforeEach('Loads page', () => {
logout(); logout()
login(testUpdate); login(testUpdate)
}); })
afterEach(logout); afterEach(logout)
it('Has a "Create" link on the Lot Search', () => { it('Has a "Create" link on the Lot Search', () => {
cy.visit("/lots"); cy.visit('/lots')
cy.location("pathname").should("equal", "/lots"); cy.location('pathname').should('equal', '/lots')
cy.get("a[href$='/lots/new']").should("exist"); cy.get("a[href$='/lots/new']").should('exist')
}); })
describe("Update a New Lot", () => { describe('Update a New Lot', () => {
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.visit("/lots/new"); cy.visit('/lots/new')
cy.injectAxe(); cy.injectAxe()
cy.checkA11y(); cy.checkA11y()
}); })
}); })
}); })

View File

@ -1,22 +1,22 @@
import { testUpdate } from "../../../test/_globals.js"; import { testUpdate } from '../../../test/_globals.js';
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js';
describe("Update User", () => { describe('Update User', () => {
beforeEach("Loads page", () => { beforeEach('Loads page', () => {
logout(); logout();
login(testUpdate); login(testUpdate);
}); });
afterEach(logout); afterEach(logout);
it("Has an Update User dashboard", () => { it('Has an Update User dashboard', () => {
cy.visit("/dashboard"); cy.visit('/dashboard');
cy.log("Has no detectable accessibility issues"); cy.log('Has no detectable accessibility issues');
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();
cy.log("Has no links to admin areas"); cy.log('Has no links to admin areas');
cy.get("a[href*='/admin']").should("not.exist"); cy.get("a[href*='/admin']").should('not.exist');
}); });
it("Redirects to Dashboard when attempting to access admin area", () => { it('Redirects to Dashboard when attempting to access admin area', () => {
cy.visit("/admin/cleanup"); cy.visit('/admin/cleanup');
cy.wait(200); cy.wait(200);
cy.location("pathname").should("equal", "/dashboard/"); cy.location('pathname').should('equal', '/dashboard/');
}); });
}); });

View File

@ -1,31 +1,31 @@
import { testUpdate } from "../../../test/_globals.js"; import { testUpdate } from '../../../test/_globals.js'
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js'
describe("Update User", () => { describe('Update User', () => {
beforeEach("Loads page", () => { beforeEach('Loads page', () => {
logout(); logout()
login(testUpdate); login(testUpdate)
}); })
afterEach(logout); afterEach(logout)
it("Has an Update User dashboard", () => { it('Has an Update User dashboard', () => {
cy.visit("/dashboard"); cy.visit('/dashboard')
cy.log("Has no detectable accessibility issues"); cy.log('Has no detectable accessibility issues')
cy.injectAxe(); cy.injectAxe()
cy.checkA11y(); cy.checkA11y()
cy.log("Has no links to admin areas"); cy.log('Has no links to admin areas')
cy.get("a[href*='/admin']").should("not.exist"); cy.get("a[href*='/admin']").should('not.exist')
}); })
it("Redirects to Dashboard when attempting to access admin area", () => { it('Redirects to Dashboard when attempting to access admin area', () => {
cy.visit("/admin/cleanup"); cy.visit('/admin/cleanup')
cy.wait(200); cy.wait(200)
cy.location("pathname").should("equal", "/dashboard/"); cy.location('pathname').should('equal', '/dashboard/')
}); })
}); })

View File

@ -1,45 +1,45 @@
import { testView } from "../../../test/_globals.js"; import { testView } from '../../../test/_globals.js';
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js';
describe("Read Only User", () => { describe('Read Only User', () => {
beforeEach(() => { beforeEach(() => {
logout(); logout();
login(testView); login(testView);
}); });
afterEach(logout); afterEach(logout);
it("Has a Read Only User dashboard", () => { it('Has a Read Only User dashboard', () => {
cy.visit("/dashboard"); cy.visit('/dashboard');
cy.log("Has no detectable accessibility issues"); cy.log('Has no detectable accessibility issues');
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();
cy.log("Has no links to new areas"); cy.log('Has no links to new areas');
cy.get("a[href*='/new']").should("not.exist"); cy.get("a[href*='/new']").should('not.exist');
cy.log("Has no links to admin areas"); cy.log('Has no links to admin areas');
cy.get("a[href*='/admin']").should("not.exist"); cy.get("a[href*='/admin']").should('not.exist');
}); });
it("Has no link to create maps on Map Search", () => { it('Has no link to create maps on Map Search', () => {
cy.visit("/maps"); cy.visit('/maps');
cy.get("a[href*='/new']").should("not.exist"); cy.get("a[href*='/new']").should('not.exist');
}); });
it("Has no link to create lots on Lot Search", () => { it('Has no link to create lots on Lot Search', () => {
cy.visit("/lots"); cy.visit('/lots');
cy.get("a[href*='/new']").should("not.exist"); cy.get("a[href*='/new']").should('not.exist');
}); });
it("Has no link to create occupancies on Occupancy Search", () => { it('Has no link to create occupancies on Occupancy Search', () => {
cy.visit("/lotOccupancies"); cy.visit('/lotOccupancies');
cy.get("a[href*='/new']").should("not.exist"); cy.get("a[href*='/new']").should('not.exist');
}); });
it("Has no link to create work orders on Work Order Search", () => { it('Has no link to create work orders on Work Order Search', () => {
cy.visit("/workOrders"); cy.visit('/workOrders');
cy.get("a[href*='/new']").should("not.exist"); cy.get("a[href*='/new']").should('not.exist');
}); });
it("Redirects to Dashboard when attempting to create a work order", () => { it('Redirects to Dashboard when attempting to create a work order', () => {
cy.visit("/workOrders/new"); cy.visit('/workOrders/new');
cy.wait(200); cy.wait(200);
cy.location("pathname").should("equal", "/dashboard/"); cy.location('pathname').should('equal', '/dashboard/');
}); });
it("Redirects to Dashboard when attempting to alter fees", () => { it('Redirects to Dashboard when attempting to alter fees', () => {
cy.visit("/admin/fees"); cy.visit('/admin/fees');
cy.wait(200); cy.wait(200);
cy.location("pathname").should("not.contain", "/admin"); cy.location('pathname').should('not.contain', '/admin');
}); });
}); });

View File

@ -1,62 +1,60 @@
import { testView } from "../../../test/_globals.js"; import { testView } from '../../../test/_globals.js'
import { logout, login } from "../../support/index.js"; import { logout, login } from '../../support/index.js'
describe("Read Only User", () => { describe('Read Only User', () => {
beforeEach(() => {
beforeEach(() => { logout()
logout(); login(testView)
login(testView); })
});
afterEach(logout);
it("Has a Read Only User dashboard", () => { afterEach(logout)
cy.visit("/dashboard");
cy.log("Has no detectable accessibility issues"); it('Has a Read Only User dashboard', () => {
cy.injectAxe(); cy.visit('/dashboard')
cy.checkA11y();
cy.log("Has no links to new areas"); cy.log('Has no detectable accessibility issues')
cy.injectAxe()
cy.get("a[href*='/new']").should("not.exist"); cy.checkA11y()
cy.log("Has no links to admin areas");
cy.get("a[href*='/admin']").should("not.exist");
});
it("Has no link to create maps on Map Search", () => { cy.log('Has no links to new areas')
cy.visit("/maps");
cy.get("a[href*='/new']").should("not.exist");
});
it("Has no link to create lots on Lot Search", () => { cy.get("a[href*='/new']").should('not.exist')
cy.visit("/lots");
cy.get("a[href*='/new']").should("not.exist");
});
it("Has no link to create occupancies on Occupancy Search", () => { cy.log('Has no links to admin areas')
cy.visit("/lotOccupancies");
cy.get("a[href*='/new']").should("not.exist");
});
it("Has no link to create work orders on Work Order Search", () => { cy.get("a[href*='/admin']").should('not.exist')
cy.visit("/workOrders"); })
cy.get("a[href*='/new']").should("not.exist");
});
it("Redirects to Dashboard when attempting to create a work order", () => { it('Has no link to create maps on Map Search', () => {
cy.visit("/workOrders/new"); cy.visit('/maps')
cy.wait(200); cy.get("a[href*='/new']").should('not.exist')
cy.location("pathname").should("equal", "/dashboard/"); })
});
it("Redirects to Dashboard when attempting to alter fees", () => { it('Has no link to create lots on Lot Search', () => {
cy.visit("/admin/fees"); cy.visit('/lots')
cy.wait(200); cy.get("a[href*='/new']").should('not.exist')
cy.location("pathname").should("not.contain", "/admin"); })
});
}); it('Has no link to create occupancies on Occupancy Search', () => {
cy.visit('/lotOccupancies')
cy.get("a[href*='/new']").should('not.exist')
})
it('Has no link to create work orders on Work Order Search', () => {
cy.visit('/workOrders')
cy.get("a[href*='/new']").should('not.exist')
})
it('Redirects to Dashboard when attempting to create a work order', () => {
cy.visit('/workOrders/new')
cy.wait(200)
cy.location('pathname').should('equal', '/dashboard/')
})
it('Redirects to Dashboard when attempting to alter fees', () => {
cy.visit('/admin/fees')
cy.wait(200)
cy.location('pathname').should('not.contain', '/admin')
})
})

View File

@ -1,27 +1,27 @@
import { logout } from "../../support/index.js"; import { logout } from '../../support/index.js';
describe("Login Page", () => { describe('Login Page', () => {
beforeEach(logout); beforeEach(logout);
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.injectAxe(); cy.injectAxe();
cy.checkA11y(); cy.checkA11y();
}); });
it("Contains a login form", () => { it('Contains a login form', () => {
cy.get("form").should("have.length", 1); cy.get('form').should('have.length', 1);
}); });
it("Contains a _csrf field", () => { it('Contains a _csrf field', () => {
cy.get("form [name='_csrf']").should("exist"); cy.get("form [name='_csrf']").should('exist');
}); });
it("Contains a userName field", () => { it('Contains a userName field', () => {
cy.get("form [name='userName']").should("exist"); cy.get("form [name='userName']").should('exist');
}); });
it("Contains a password field", () => { it('Contains a password field', () => {
cy.get("form [name='password']") cy.get("form [name='password']")
.should("have.length", 1) .should('have.length', 1)
.invoke("attr", "type") .invoke('attr', 'type')
.should("equal", "password"); .should('equal', 'password');
}); });
it("Contains a help link", () => { it('Contains a help link', () => {
cy.get("a").contains("help", { cy.get('a').contains('help', {
matchCase: false matchCase: false
}); });
}); });

View File

@ -1,35 +1,35 @@
import { logout } from "../../support/index.js"; import { logout } from '../../support/index.js'
describe("Login Page", () => { describe('Login Page', () => {
beforeEach(logout); beforeEach(logout)
it("Has no detectable accessibility issues", () => { it('Has no detectable accessibility issues', () => {
cy.injectAxe(); cy.injectAxe()
cy.checkA11y(); cy.checkA11y()
}); })
it("Contains a login form", () => { it('Contains a login form', () => {
cy.get("form").should("have.length", 1); cy.get('form').should('have.length', 1)
}); })
it("Contains a _csrf field", () => { it('Contains a _csrf field', () => {
cy.get("form [name='_csrf']").should("exist"); cy.get("form [name='_csrf']").should('exist')
}); })
it("Contains a userName field", () => { it('Contains a userName field', () => {
cy.get("form [name='userName']").should("exist"); cy.get("form [name='userName']").should('exist')
}); })
it("Contains a password field", () => { it('Contains a password field', () => {
cy.get("form [name='password']") cy.get("form [name='password']")
.should("have.length", 1) .should('have.length', 1)
.invoke("attr", "type") .invoke('attr', 'type')
.should("equal", "password"); .should('equal', 'password')
}); })
it("Contains a help link", () => { it('Contains a help link', () => {
cy.get("a").contains("help", { cy.get('a').contains('help', {
matchCase: false matchCase: false
}); })
}); })
}); })

View File

@ -1,4 +1,4 @@
import "cypress-axe"; import 'cypress-axe';
export declare const logout: () => void; export declare const logout: () => void;
export declare const login: (userName: string) => void; export declare const login: (userName: string) => void;
export declare const ajaxDelayMillis = 800; export declare const ajaxDelayMillis = 800;

View File

@ -1,16 +1,16 @@
import "cypress-axe"; import 'cypress-axe';
export const logout = () => { export const logout = () => {
cy.visit("/logout"); cy.visit('/logout');
}; };
export const login = (userName) => { export const login = (userName) => {
cy.visit("/login"); cy.visit('/login');
cy.get(".message").contains("Testing", { cy.get('.message').contains('Testing', {
matchCase: false matchCase: false
}); });
cy.get("form [name='userName']").type(userName); cy.get("form [name='userName']").type(userName);
cy.get("form [name='password']").type(userName); cy.get("form [name='password']").type(userName);
cy.get("form").submit(); cy.get('form').submit();
cy.location("pathname").should("not.contain", "/login"); cy.location('pathname').should('not.contain', '/login');
cy.get(".navbar").should("have.length", 1); cy.get('.navbar').should('have.length', 1);
}; };
export const ajaxDelayMillis = 800; export const ajaxDelayMillis = 800;

View File

@ -1,27 +1,27 @@
/* eslint-disable node/no-unpublished-import */ /* eslint-disable node/no-unpublished-import */
import "cypress-axe"; import 'cypress-axe'
export const logout = (): void => { export const logout = (): void => {
cy.visit("/logout"); cy.visit('/logout')
}; }
export const login = (userName: string): void => { export const login = (userName: string): void => {
cy.visit("/login"); cy.visit('/login')
cy.get(".message").contains("Testing", { cy.get('.message').contains('Testing', {
matchCase: false matchCase: false
}); })
cy.get("form [name='userName']").type(userName); cy.get("form [name='userName']").type(userName)
cy.get("form [name='password']").type(userName); cy.get("form [name='password']").type(userName)
cy.get("form").submit(); cy.get('form').submit()
cy.location("pathname").should("not.contain", "/login"); cy.location('pathname').should('not.contain', '/login')
// Logged in pages have a navbar // Logged in pages have a navbar
cy.get(".navbar").should("have.length", 1); cy.get('.navbar').should('have.length', 1)
}; }
export const ajaxDelayMillis = 800; export const ajaxDelayMillis = 800

View File

@ -1,3 +1,8 @@
{ {
"ignore": ["cypress/*", "data/sessions/*", "public/javascripts/*", "public-typescript/*"] "ignore": [
"cypress/*",
"data/sessions/*",
"public/javascripts/*",
"public-typescript/*"
]
} }

44930
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,125 +1,125 @@
import { Router } from "express"; import { Router } from 'express';
import handler_fees from "../handlers/admin-get/fees.js"; import handler_fees from '../handlers/admin-get/fees.js';
import handler_doAddFeeCategory from "../handlers/admin-post/doAddFeeCategory.js"; import handler_doAddFeeCategory from '../handlers/admin-post/doAddFeeCategory.js';
import handler_doUpdateFeeCategory from "../handlers/admin-post/doUpdateFeeCategory.js"; import handler_doUpdateFeeCategory from '../handlers/admin-post/doUpdateFeeCategory.js';
import handler_doMoveFeeCategoryUp from "../handlers/admin-post/doMoveFeeCategoryUp.js"; import handler_doMoveFeeCategoryUp from '../handlers/admin-post/doMoveFeeCategoryUp.js';
import handler_doMoveFeeCategoryDown from "../handlers/admin-post/doMoveFeeCategoryDown.js"; import handler_doMoveFeeCategoryDown from '../handlers/admin-post/doMoveFeeCategoryDown.js';
import handler_doDeleteFeeCategory from "../handlers/admin-post/doDeleteFeeCategory.js"; import handler_doDeleteFeeCategory from '../handlers/admin-post/doDeleteFeeCategory.js';
import handler_doAddFee from "../handlers/admin-post/doAddFee.js"; import handler_doAddFee from '../handlers/admin-post/doAddFee.js';
import handler_doUpdateFee from "../handlers/admin-post/doUpdateFee.js"; import handler_doUpdateFee from '../handlers/admin-post/doUpdateFee.js';
import handler_doMoveFeeUp from "../handlers/admin-post/doMoveFeeUp.js"; import handler_doMoveFeeUp from '../handlers/admin-post/doMoveFeeUp.js';
import handler_doMoveFeeDown from "../handlers/admin-post/doMoveFeeDown.js"; import handler_doMoveFeeDown from '../handlers/admin-post/doMoveFeeDown.js';
import handler_doDeleteFee from "../handlers/admin-post/doDeleteFee.js"; import handler_doDeleteFee from '../handlers/admin-post/doDeleteFee.js';
import handler_occupancyTypes from "../handlers/admin-get/occupancyTypes.js"; import handler_occupancyTypes from '../handlers/admin-get/occupancyTypes.js';
import handler_doAddOccupancyType from "../handlers/admin-post/doAddOccupancyType.js"; import handler_doAddOccupancyType from '../handlers/admin-post/doAddOccupancyType.js';
import handler_doUpdateOccupancyType from "../handlers/admin-post/doUpdateOccupancyType.js"; import handler_doUpdateOccupancyType from '../handlers/admin-post/doUpdateOccupancyType.js';
import handler_doMoveOccupancyTypeUp from "../handlers/admin-post/doMoveOccupancyTypeUp.js"; import handler_doMoveOccupancyTypeUp from '../handlers/admin-post/doMoveOccupancyTypeUp.js';
import handler_doMoveOccupancyTypeDown from "../handlers/admin-post/doMoveOccupancyTypeDown.js"; import handler_doMoveOccupancyTypeDown from '../handlers/admin-post/doMoveOccupancyTypeDown.js';
import handler_doDeleteOccupancyType from "../handlers/admin-post/doDeleteOccupancyType.js"; import handler_doDeleteOccupancyType from '../handlers/admin-post/doDeleteOccupancyType.js';
import handler_doAddOccupancyTypeField from "../handlers/admin-post/doAddOccupancyTypeField.js"; import handler_doAddOccupancyTypeField from '../handlers/admin-post/doAddOccupancyTypeField.js';
import handler_doUpdateOccupancyTypeField from "../handlers/admin-post/doUpdateOccupancyTypeField.js"; import handler_doUpdateOccupancyTypeField from '../handlers/admin-post/doUpdateOccupancyTypeField.js';
import handler_doMoveOccupancyTypeFieldUp from "../handlers/admin-post/doMoveOccupancyTypeFieldUp.js"; import handler_doMoveOccupancyTypeFieldUp from '../handlers/admin-post/doMoveOccupancyTypeFieldUp.js';
import handler_doMoveOccupancyTypeFieldDown from "../handlers/admin-post/doMoveOccupancyTypeFieldDown.js"; import handler_doMoveOccupancyTypeFieldDown from '../handlers/admin-post/doMoveOccupancyTypeFieldDown.js';
import handler_doDeleteOccupancyTypeField from "../handlers/admin-post/doDeleteOccupancyTypeField.js"; import handler_doDeleteOccupancyTypeField from '../handlers/admin-post/doDeleteOccupancyTypeField.js';
import handler_doAddOccupancyTypePrint from "../handlers/admin-post/doAddOccupancyTypePrint.js"; import handler_doAddOccupancyTypePrint from '../handlers/admin-post/doAddOccupancyTypePrint.js';
import handler_doMoveOccupancyTypePrintUp from "../handlers/admin-post/doMoveOccupancyTypePrintUp.js"; import handler_doMoveOccupancyTypePrintUp from '../handlers/admin-post/doMoveOccupancyTypePrintUp.js';
import handler_doMoveOccupancyTypePrintDown from "../handlers/admin-post/doMoveOccupancyTypePrintDown.js"; import handler_doMoveOccupancyTypePrintDown from '../handlers/admin-post/doMoveOccupancyTypePrintDown.js';
import handler_doDeleteOccupancyTypePrint from "../handlers/admin-post/doDeleteOccupancyTypePrint.js"; import handler_doDeleteOccupancyTypePrint from '../handlers/admin-post/doDeleteOccupancyTypePrint.js';
import handler_lotTypes from "../handlers/admin-get/lotTypes.js"; import handler_lotTypes from '../handlers/admin-get/lotTypes.js';
import handler_doAddLotType from "../handlers/admin-post/doAddLotType.js"; import handler_doAddLotType from '../handlers/admin-post/doAddLotType.js';
import handler_doUpdateLotType from "../handlers/admin-post/doUpdateLotType.js"; import handler_doUpdateLotType from '../handlers/admin-post/doUpdateLotType.js';
import handler_doMoveLotTypeUp from "../handlers/admin-post/doMoveLotTypeUp.js"; import handler_doMoveLotTypeUp from '../handlers/admin-post/doMoveLotTypeUp.js';
import handler_doMoveLotTypeDown from "../handlers/admin-post/doMoveLotTypeDown.js"; import handler_doMoveLotTypeDown from '../handlers/admin-post/doMoveLotTypeDown.js';
import handler_doDeleteLotType from "../handlers/admin-post/doDeleteLotType.js"; import handler_doDeleteLotType from '../handlers/admin-post/doDeleteLotType.js';
import handler_doAddLotTypeField from "../handlers/admin-post/doAddLotTypeField.js"; import handler_doAddLotTypeField from '../handlers/admin-post/doAddLotTypeField.js';
import handler_doUpdateLotTypeField from "../handlers/admin-post/doUpdateLotTypeField.js"; import handler_doUpdateLotTypeField from '../handlers/admin-post/doUpdateLotTypeField.js';
import handler_doMoveLotTypeFieldUp from "../handlers/admin-post/doMoveLotTypeFieldUp.js"; import handler_doMoveLotTypeFieldUp from '../handlers/admin-post/doMoveLotTypeFieldUp.js';
import handler_doMoveLotTypeFieldDown from "../handlers/admin-post/doMoveLotTypeFieldDown.js"; import handler_doMoveLotTypeFieldDown from '../handlers/admin-post/doMoveLotTypeFieldDown.js';
import handler_doDeleteLotTypeField from "../handlers/admin-post/doDeleteLotTypeField.js"; import handler_doDeleteLotTypeField from '../handlers/admin-post/doDeleteLotTypeField.js';
import handler_tables from "../handlers/admin-get/tables.js"; import handler_tables from '../handlers/admin-get/tables.js';
import handler_doAddWorkOrderType from "../handlers/admin-post/doAddWorkOrderType.js"; import handler_doAddWorkOrderType from '../handlers/admin-post/doAddWorkOrderType.js';
import handler_doUpdateWorkOrderType from "../handlers/admin-post/doUpdateWorkOrderType.js"; import handler_doUpdateWorkOrderType from '../handlers/admin-post/doUpdateWorkOrderType.js';
import handler_doMoveWorkOrderTypeUp from "../handlers/admin-post/doMoveWorkOrderTypeUp.js"; import handler_doMoveWorkOrderTypeUp from '../handlers/admin-post/doMoveWorkOrderTypeUp.js';
import handler_doMoveWorkOrderTypeDown from "../handlers/admin-post/doMoveWorkOrderTypeDown.js"; import handler_doMoveWorkOrderTypeDown from '../handlers/admin-post/doMoveWorkOrderTypeDown.js';
import handler_doDeleteWorkOrderType from "../handlers/admin-post/doDeleteWorkOrderType.js"; import handler_doDeleteWorkOrderType from '../handlers/admin-post/doDeleteWorkOrderType.js';
import handler_doAddWorkOrderMilestoneType from "../handlers/admin-post/doAddWorkOrderMilestoneType.js"; import handler_doAddWorkOrderMilestoneType from '../handlers/admin-post/doAddWorkOrderMilestoneType.js';
import handler_doUpdateWorkOrderMilestoneType from "../handlers/admin-post/doUpdateWorkOrderMilestoneType.js"; import handler_doUpdateWorkOrderMilestoneType from '../handlers/admin-post/doUpdateWorkOrderMilestoneType.js';
import handler_doMoveWorkOrderMilestoneTypeUp from "../handlers/admin-post/doMoveWorkOrderMilestoneTypeUp.js"; import handler_doMoveWorkOrderMilestoneTypeUp from '../handlers/admin-post/doMoveWorkOrderMilestoneTypeUp.js';
import handler_doMoveWorkOrderMilestoneTypeDown from "../handlers/admin-post/doMoveWorkOrderMilestoneTypeDown.js"; import handler_doMoveWorkOrderMilestoneTypeDown from '../handlers/admin-post/doMoveWorkOrderMilestoneTypeDown.js';
import handler_doDeleteWorkOrderMilestoneType from "../handlers/admin-post/doDeleteWorkOrderMilestoneType.js"; import handler_doDeleteWorkOrderMilestoneType from '../handlers/admin-post/doDeleteWorkOrderMilestoneType.js';
import handler_doAddLotStatus from "../handlers/admin-post/doAddLotStatus.js"; import handler_doAddLotStatus from '../handlers/admin-post/doAddLotStatus.js';
import handler_doUpdateLotStatus from "../handlers/admin-post/doUpdateLotStatus.js"; import handler_doUpdateLotStatus from '../handlers/admin-post/doUpdateLotStatus.js';
import handler_doMoveLotStatusUp from "../handlers/admin-post/doMoveLotStatusUp.js"; import handler_doMoveLotStatusUp from '../handlers/admin-post/doMoveLotStatusUp.js';
import handler_doMoveLotStatusDown from "../handlers/admin-post/doMoveLotStatusDown.js"; import handler_doMoveLotStatusDown from '../handlers/admin-post/doMoveLotStatusDown.js';
import handler_doDeleteLotStatus from "../handlers/admin-post/doDeleteLotStatus.js"; import handler_doDeleteLotStatus from '../handlers/admin-post/doDeleteLotStatus.js';
import handler_doAddLotOccupantType from "../handlers/admin-post/doAddLotOccupantType.js"; import handler_doAddLotOccupantType from '../handlers/admin-post/doAddLotOccupantType.js';
import handler_doUpdateLotOccupantType from "../handlers/admin-post/doUpdateLotOccupantType.js"; import handler_doUpdateLotOccupantType from '../handlers/admin-post/doUpdateLotOccupantType.js';
import handler_doMoveLotOccupantTypeUp from "../handlers/admin-post/doMoveLotOccupantTypeUp.js"; import handler_doMoveLotOccupantTypeUp from '../handlers/admin-post/doMoveLotOccupantTypeUp.js';
import handler_doMoveLotOccupantTypeDown from "../handlers/admin-post/doMoveLotOccupantTypeDown.js"; import handler_doMoveLotOccupantTypeDown from '../handlers/admin-post/doMoveLotOccupantTypeDown.js';
import handler_doDeleteLotOccupantType from "../handlers/admin-post/doDeleteLotOccupantType.js"; import handler_doDeleteLotOccupantType from '../handlers/admin-post/doDeleteLotOccupantType.js';
import handler_cleanup from "../handlers/admin-get/cleanup.js"; import handler_cleanup from '../handlers/admin-get/cleanup.js';
import handler_doCleanupDatabase from "../handlers/admin-post/doCleanupDatabase.js"; import handler_doCleanupDatabase from '../handlers/admin-post/doCleanupDatabase.js';
import handler_ntfyStartup from "../handlers/admin-get/ntfyStartup.js"; import handler_ntfyStartup from '../handlers/admin-get/ntfyStartup.js';
export const router = Router(); export const router = Router();
router.get("/fees", handler_fees); router.get('/fees', handler_fees);
router.post("/doAddFeeCategory", handler_doAddFeeCategory); router.post('/doAddFeeCategory', handler_doAddFeeCategory);
router.post("/doUpdateFeeCategory", handler_doUpdateFeeCategory); router.post('/doUpdateFeeCategory', handler_doUpdateFeeCategory);
router.post("/doMoveFeeCategoryUp", handler_doMoveFeeCategoryUp); router.post('/doMoveFeeCategoryUp', handler_doMoveFeeCategoryUp);
router.post("/doMoveFeeCategoryDown", handler_doMoveFeeCategoryDown); router.post('/doMoveFeeCategoryDown', handler_doMoveFeeCategoryDown);
router.post("/doDeleteFeeCategory", handler_doDeleteFeeCategory); router.post('/doDeleteFeeCategory', handler_doDeleteFeeCategory);
router.post("/doAddFee", handler_doAddFee); router.post('/doAddFee', handler_doAddFee);
router.post("/doUpdateFee", handler_doUpdateFee); router.post('/doUpdateFee', handler_doUpdateFee);
router.post("/doMoveFeeUp", handler_doMoveFeeUp); router.post('/doMoveFeeUp', handler_doMoveFeeUp);
router.post("/doMoveFeeDown", handler_doMoveFeeDown); router.post('/doMoveFeeDown', handler_doMoveFeeDown);
router.post("/doDeleteFee", handler_doDeleteFee); router.post('/doDeleteFee', handler_doDeleteFee);
router.get("/occupancyTypes", handler_occupancyTypes); router.get('/occupancyTypes', handler_occupancyTypes);
router.post("/doAddOccupancyType", handler_doAddOccupancyType); router.post('/doAddOccupancyType', handler_doAddOccupancyType);
router.post("/doUpdateOccupancyType", handler_doUpdateOccupancyType); router.post('/doUpdateOccupancyType', handler_doUpdateOccupancyType);
router.post("/doMoveOccupancyTypeUp", handler_doMoveOccupancyTypeUp); router.post('/doMoveOccupancyTypeUp', handler_doMoveOccupancyTypeUp);
router.post("/doMoveOccupancyTypeDown", handler_doMoveOccupancyTypeDown); router.post('/doMoveOccupancyTypeDown', handler_doMoveOccupancyTypeDown);
router.post("/doDeleteOccupancyType", handler_doDeleteOccupancyType); router.post('/doDeleteOccupancyType', handler_doDeleteOccupancyType);
router.post("/doAddOccupancyTypeField", handler_doAddOccupancyTypeField); router.post('/doAddOccupancyTypeField', handler_doAddOccupancyTypeField);
router.post("/doUpdateOccupancyTypeField", handler_doUpdateOccupancyTypeField); router.post('/doUpdateOccupancyTypeField', handler_doUpdateOccupancyTypeField);
router.post("/doMoveOccupancyTypeFieldUp", handler_doMoveOccupancyTypeFieldUp); router.post('/doMoveOccupancyTypeFieldUp', handler_doMoveOccupancyTypeFieldUp);
router.post("/doMoveOccupancyTypeFieldDown", handler_doMoveOccupancyTypeFieldDown); router.post('/doMoveOccupancyTypeFieldDown', handler_doMoveOccupancyTypeFieldDown);
router.post("/doDeleteOccupancyTypeField", handler_doDeleteOccupancyTypeField); router.post('/doDeleteOccupancyTypeField', handler_doDeleteOccupancyTypeField);
router.post("/doAddOccupancyTypePrint", handler_doAddOccupancyTypePrint); router.post('/doAddOccupancyTypePrint', handler_doAddOccupancyTypePrint);
router.post("/doMoveOccupancyTypePrintUp", handler_doMoveOccupancyTypePrintUp); router.post('/doMoveOccupancyTypePrintUp', handler_doMoveOccupancyTypePrintUp);
router.post("/doMoveOccupancyTypePrintDown", handler_doMoveOccupancyTypePrintDown); router.post('/doMoveOccupancyTypePrintDown', handler_doMoveOccupancyTypePrintDown);
router.post("/doDeleteOccupancyTypePrint", handler_doDeleteOccupancyTypePrint); router.post('/doDeleteOccupancyTypePrint', handler_doDeleteOccupancyTypePrint);
router.get("/lotTypes", handler_lotTypes); router.get('/lotTypes', handler_lotTypes);
router.post("/doAddLotType", handler_doAddLotType); router.post('/doAddLotType', handler_doAddLotType);
router.post("/doUpdateLotType", handler_doUpdateLotType); router.post('/doUpdateLotType', handler_doUpdateLotType);
router.post("/doMoveLotTypeUp", handler_doMoveLotTypeUp); router.post('/doMoveLotTypeUp', handler_doMoveLotTypeUp);
router.post("/doMoveLotTypeDown", handler_doMoveLotTypeDown); router.post('/doMoveLotTypeDown', handler_doMoveLotTypeDown);
router.post("/doDeleteLotType", handler_doDeleteLotType); router.post('/doDeleteLotType', handler_doDeleteLotType);
router.post("/doAddLotTypeField", handler_doAddLotTypeField); router.post('/doAddLotTypeField', handler_doAddLotTypeField);
router.post("/doUpdateLotTypeField", handler_doUpdateLotTypeField); router.post('/doUpdateLotTypeField', handler_doUpdateLotTypeField);
router.post("/doMoveLotTypeFieldUp", handler_doMoveLotTypeFieldUp); router.post('/doMoveLotTypeFieldUp', handler_doMoveLotTypeFieldUp);
router.post("/doMoveLotTypeFieldDown", handler_doMoveLotTypeFieldDown); router.post('/doMoveLotTypeFieldDown', handler_doMoveLotTypeFieldDown);
router.post("/doDeleteLotTypeField", handler_doDeleteLotTypeField); router.post('/doDeleteLotTypeField', handler_doDeleteLotTypeField);
router.get("/tables", handler_tables); router.get('/tables', handler_tables);
router.post("/doAddWorkOrderType", handler_doAddWorkOrderType); router.post('/doAddWorkOrderType', handler_doAddWorkOrderType);
router.post("/doUpdateWorkOrderType", handler_doUpdateWorkOrderType); router.post('/doUpdateWorkOrderType', handler_doUpdateWorkOrderType);
router.post("/doMoveWorkOrderTypeUp", handler_doMoveWorkOrderTypeUp); router.post('/doMoveWorkOrderTypeUp', handler_doMoveWorkOrderTypeUp);
router.post("/doMoveWorkOrderTypeDown", handler_doMoveWorkOrderTypeDown); router.post('/doMoveWorkOrderTypeDown', handler_doMoveWorkOrderTypeDown);
router.post("/doDeleteWorkOrderType", handler_doDeleteWorkOrderType); router.post('/doDeleteWorkOrderType', handler_doDeleteWorkOrderType);
router.post("/doAddWorkOrderMilestoneType", handler_doAddWorkOrderMilestoneType); router.post('/doAddWorkOrderMilestoneType', handler_doAddWorkOrderMilestoneType);
router.post("/doUpdateWorkOrderMilestoneType", handler_doUpdateWorkOrderMilestoneType); router.post('/doUpdateWorkOrderMilestoneType', handler_doUpdateWorkOrderMilestoneType);
router.post("/doMoveWorkOrderMilestoneTypeUp", handler_doMoveWorkOrderMilestoneTypeUp); router.post('/doMoveWorkOrderMilestoneTypeUp', handler_doMoveWorkOrderMilestoneTypeUp);
router.post("/doMoveWorkOrderMilestoneTypeDown", handler_doMoveWorkOrderMilestoneTypeDown); router.post('/doMoveWorkOrderMilestoneTypeDown', handler_doMoveWorkOrderMilestoneTypeDown);
router.post("/doDeleteWorkOrderMilestoneType", handler_doDeleteWorkOrderMilestoneType); router.post('/doDeleteWorkOrderMilestoneType', handler_doDeleteWorkOrderMilestoneType);
router.post("/doAddLotStatus", handler_doAddLotStatus); router.post('/doAddLotStatus', handler_doAddLotStatus);
router.post("/doUpdateLotStatus", handler_doUpdateLotStatus); router.post('/doUpdateLotStatus', handler_doUpdateLotStatus);
router.post("/doMoveLotStatusUp", handler_doMoveLotStatusUp); router.post('/doMoveLotStatusUp', handler_doMoveLotStatusUp);
router.post("/doMoveLotStatusDown", handler_doMoveLotStatusDown); router.post('/doMoveLotStatusDown', handler_doMoveLotStatusDown);
router.post("/doDeleteLotStatus", handler_doDeleteLotStatus); router.post('/doDeleteLotStatus', handler_doDeleteLotStatus);
router.post("/doAddLotOccupantType", handler_doAddLotOccupantType); router.post('/doAddLotOccupantType', handler_doAddLotOccupantType);
router.post("/doUpdateLotOccupantType", handler_doUpdateLotOccupantType); router.post('/doUpdateLotOccupantType', handler_doUpdateLotOccupantType);
router.post("/doMoveLotOccupantTypeUp", handler_doMoveLotOccupantTypeUp); router.post('/doMoveLotOccupantTypeUp', handler_doMoveLotOccupantTypeUp);
router.post("/doMoveLotOccupantTypeDown", handler_doMoveLotOccupantTypeDown); router.post('/doMoveLotOccupantTypeDown', handler_doMoveLotOccupantTypeDown);
router.post("/doDeleteLotOccupantType", handler_doDeleteLotOccupantType); router.post('/doDeleteLotOccupantType', handler_doDeleteLotOccupantType);
router.get("/cleanup", handler_cleanup); router.get('/cleanup', handler_cleanup);
router.post("/doCleanupDatabase", handler_doCleanupDatabase); router.post('/doCleanupDatabase', handler_doCleanupDatabase);
router.get("/ntfyStartup", handler_ntfyStartup); router.get('/ntfyStartup', handler_ntfyStartup);
export default router; export default router;

View File

@ -1,254 +1,272 @@
import { Router } from "express"; import { Router } from 'express'
// Fee Management // Fee Management
import handler_fees from "../handlers/admin-get/fees.js"; import handler_fees from '../handlers/admin-get/fees.js'
import handler_doAddFeeCategory from "../handlers/admin-post/doAddFeeCategory.js"; import handler_doAddFeeCategory from '../handlers/admin-post/doAddFeeCategory.js'
import handler_doUpdateFeeCategory from "../handlers/admin-post/doUpdateFeeCategory.js"; import handler_doUpdateFeeCategory from '../handlers/admin-post/doUpdateFeeCategory.js'
import handler_doMoveFeeCategoryUp from "../handlers/admin-post/doMoveFeeCategoryUp.js"; import handler_doMoveFeeCategoryUp from '../handlers/admin-post/doMoveFeeCategoryUp.js'
import handler_doMoveFeeCategoryDown from "../handlers/admin-post/doMoveFeeCategoryDown.js"; import handler_doMoveFeeCategoryDown from '../handlers/admin-post/doMoveFeeCategoryDown.js'
import handler_doDeleteFeeCategory from "../handlers/admin-post/doDeleteFeeCategory.js"; import handler_doDeleteFeeCategory from '../handlers/admin-post/doDeleteFeeCategory.js'
import handler_doAddFee from "../handlers/admin-post/doAddFee.js"; import handler_doAddFee from '../handlers/admin-post/doAddFee.js'
import handler_doUpdateFee from "../handlers/admin-post/doUpdateFee.js"; import handler_doUpdateFee from '../handlers/admin-post/doUpdateFee.js'
import handler_doMoveFeeUp from "../handlers/admin-post/doMoveFeeUp.js"; import handler_doMoveFeeUp from '../handlers/admin-post/doMoveFeeUp.js'
import handler_doMoveFeeDown from "../handlers/admin-post/doMoveFeeDown.js"; import handler_doMoveFeeDown from '../handlers/admin-post/doMoveFeeDown.js'
import handler_doDeleteFee from "../handlers/admin-post/doDeleteFee.js"; import handler_doDeleteFee from '../handlers/admin-post/doDeleteFee.js'
// Occupancy Type Management // Occupancy Type Management
import handler_occupancyTypes from "../handlers/admin-get/occupancyTypes.js"; import handler_occupancyTypes from '../handlers/admin-get/occupancyTypes.js'
import handler_doAddOccupancyType from "../handlers/admin-post/doAddOccupancyType.js"; import handler_doAddOccupancyType from '../handlers/admin-post/doAddOccupancyType.js'
import handler_doUpdateOccupancyType from "../handlers/admin-post/doUpdateOccupancyType.js"; import handler_doUpdateOccupancyType from '../handlers/admin-post/doUpdateOccupancyType.js'
import handler_doMoveOccupancyTypeUp from "../handlers/admin-post/doMoveOccupancyTypeUp.js"; import handler_doMoveOccupancyTypeUp from '../handlers/admin-post/doMoveOccupancyTypeUp.js'
import handler_doMoveOccupancyTypeDown from "../handlers/admin-post/doMoveOccupancyTypeDown.js"; import handler_doMoveOccupancyTypeDown from '../handlers/admin-post/doMoveOccupancyTypeDown.js'
import handler_doDeleteOccupancyType from "../handlers/admin-post/doDeleteOccupancyType.js"; import handler_doDeleteOccupancyType from '../handlers/admin-post/doDeleteOccupancyType.js'
import handler_doAddOccupancyTypeField from "../handlers/admin-post/doAddOccupancyTypeField.js"; import handler_doAddOccupancyTypeField from '../handlers/admin-post/doAddOccupancyTypeField.js'
import handler_doUpdateOccupancyTypeField from "../handlers/admin-post/doUpdateOccupancyTypeField.js"; import handler_doUpdateOccupancyTypeField from '../handlers/admin-post/doUpdateOccupancyTypeField.js'
import handler_doMoveOccupancyTypeFieldUp from "../handlers/admin-post/doMoveOccupancyTypeFieldUp.js"; import handler_doMoveOccupancyTypeFieldUp from '../handlers/admin-post/doMoveOccupancyTypeFieldUp.js'
import handler_doMoveOccupancyTypeFieldDown from "../handlers/admin-post/doMoveOccupancyTypeFieldDown.js"; import handler_doMoveOccupancyTypeFieldDown from '../handlers/admin-post/doMoveOccupancyTypeFieldDown.js'
import handler_doDeleteOccupancyTypeField from "../handlers/admin-post/doDeleteOccupancyTypeField.js"; import handler_doDeleteOccupancyTypeField from '../handlers/admin-post/doDeleteOccupancyTypeField.js'
import handler_doAddOccupancyTypePrint from "../handlers/admin-post/doAddOccupancyTypePrint.js"; import handler_doAddOccupancyTypePrint from '../handlers/admin-post/doAddOccupancyTypePrint.js'
import handler_doMoveOccupancyTypePrintUp from "../handlers/admin-post/doMoveOccupancyTypePrintUp.js"; import handler_doMoveOccupancyTypePrintUp from '../handlers/admin-post/doMoveOccupancyTypePrintUp.js'
import handler_doMoveOccupancyTypePrintDown from "../handlers/admin-post/doMoveOccupancyTypePrintDown.js"; import handler_doMoveOccupancyTypePrintDown from '../handlers/admin-post/doMoveOccupancyTypePrintDown.js'
import handler_doDeleteOccupancyTypePrint from "../handlers/admin-post/doDeleteOccupancyTypePrint.js"; import handler_doDeleteOccupancyTypePrint from '../handlers/admin-post/doDeleteOccupancyTypePrint.js'
// Lot Type Management // Lot Type Management
import handler_lotTypes from "../handlers/admin-get/lotTypes.js"; import handler_lotTypes from '../handlers/admin-get/lotTypes.js'
import handler_doAddLotType from "../handlers/admin-post/doAddLotType.js"; import handler_doAddLotType from '../handlers/admin-post/doAddLotType.js'
import handler_doUpdateLotType from "../handlers/admin-post/doUpdateLotType.js"; import handler_doUpdateLotType from '../handlers/admin-post/doUpdateLotType.js'
import handler_doMoveLotTypeUp from "../handlers/admin-post/doMoveLotTypeUp.js"; import handler_doMoveLotTypeUp from '../handlers/admin-post/doMoveLotTypeUp.js'
import handler_doMoveLotTypeDown from "../handlers/admin-post/doMoveLotTypeDown.js"; import handler_doMoveLotTypeDown from '../handlers/admin-post/doMoveLotTypeDown.js'
import handler_doDeleteLotType from "../handlers/admin-post/doDeleteLotType.js"; import handler_doDeleteLotType from '../handlers/admin-post/doDeleteLotType.js'
import handler_doAddLotTypeField from "../handlers/admin-post/doAddLotTypeField.js"; import handler_doAddLotTypeField from '../handlers/admin-post/doAddLotTypeField.js'
import handler_doUpdateLotTypeField from "../handlers/admin-post/doUpdateLotTypeField.js"; import handler_doUpdateLotTypeField from '../handlers/admin-post/doUpdateLotTypeField.js'
import handler_doMoveLotTypeFieldUp from "../handlers/admin-post/doMoveLotTypeFieldUp.js"; import handler_doMoveLotTypeFieldUp from '../handlers/admin-post/doMoveLotTypeFieldUp.js'
import handler_doMoveLotTypeFieldDown from "../handlers/admin-post/doMoveLotTypeFieldDown.js"; import handler_doMoveLotTypeFieldDown from '../handlers/admin-post/doMoveLotTypeFieldDown.js'
import handler_doDeleteLotTypeField from "../handlers/admin-post/doDeleteLotTypeField.js"; import handler_doDeleteLotTypeField from '../handlers/admin-post/doDeleteLotTypeField.js'
// Config Table Management // Config Table Management
import handler_tables from "../handlers/admin-get/tables.js"; import handler_tables from '../handlers/admin-get/tables.js'
import handler_doAddWorkOrderType from "../handlers/admin-post/doAddWorkOrderType.js"; import handler_doAddWorkOrderType from '../handlers/admin-post/doAddWorkOrderType.js'
import handler_doUpdateWorkOrderType from "../handlers/admin-post/doUpdateWorkOrderType.js"; import handler_doUpdateWorkOrderType from '../handlers/admin-post/doUpdateWorkOrderType.js'
import handler_doMoveWorkOrderTypeUp from "../handlers/admin-post/doMoveWorkOrderTypeUp.js"; import handler_doMoveWorkOrderTypeUp from '../handlers/admin-post/doMoveWorkOrderTypeUp.js'
import handler_doMoveWorkOrderTypeDown from "../handlers/admin-post/doMoveWorkOrderTypeDown.js"; import handler_doMoveWorkOrderTypeDown from '../handlers/admin-post/doMoveWorkOrderTypeDown.js'
import handler_doDeleteWorkOrderType from "../handlers/admin-post/doDeleteWorkOrderType.js"; import handler_doDeleteWorkOrderType from '../handlers/admin-post/doDeleteWorkOrderType.js'
import handler_doAddWorkOrderMilestoneType from "../handlers/admin-post/doAddWorkOrderMilestoneType.js"; import handler_doAddWorkOrderMilestoneType from '../handlers/admin-post/doAddWorkOrderMilestoneType.js'
import handler_doUpdateWorkOrderMilestoneType from "../handlers/admin-post/doUpdateWorkOrderMilestoneType.js"; import handler_doUpdateWorkOrderMilestoneType from '../handlers/admin-post/doUpdateWorkOrderMilestoneType.js'
import handler_doMoveWorkOrderMilestoneTypeUp from "../handlers/admin-post/doMoveWorkOrderMilestoneTypeUp.js"; import handler_doMoveWorkOrderMilestoneTypeUp from '../handlers/admin-post/doMoveWorkOrderMilestoneTypeUp.js'
import handler_doMoveWorkOrderMilestoneTypeDown from "../handlers/admin-post/doMoveWorkOrderMilestoneTypeDown.js"; import handler_doMoveWorkOrderMilestoneTypeDown from '../handlers/admin-post/doMoveWorkOrderMilestoneTypeDown.js'
import handler_doDeleteWorkOrderMilestoneType from "../handlers/admin-post/doDeleteWorkOrderMilestoneType.js"; import handler_doDeleteWorkOrderMilestoneType from '../handlers/admin-post/doDeleteWorkOrderMilestoneType.js'
import handler_doAddLotStatus from "../handlers/admin-post/doAddLotStatus.js"; import handler_doAddLotStatus from '../handlers/admin-post/doAddLotStatus.js'
import handler_doUpdateLotStatus from "../handlers/admin-post/doUpdateLotStatus.js"; import handler_doUpdateLotStatus from '../handlers/admin-post/doUpdateLotStatus.js'
import handler_doMoveLotStatusUp from "../handlers/admin-post/doMoveLotStatusUp.js"; import handler_doMoveLotStatusUp from '../handlers/admin-post/doMoveLotStatusUp.js'
import handler_doMoveLotStatusDown from "../handlers/admin-post/doMoveLotStatusDown.js"; import handler_doMoveLotStatusDown from '../handlers/admin-post/doMoveLotStatusDown.js'
import handler_doDeleteLotStatus from "../handlers/admin-post/doDeleteLotStatus.js"; import handler_doDeleteLotStatus from '../handlers/admin-post/doDeleteLotStatus.js'
import handler_doAddLotOccupantType from "../handlers/admin-post/doAddLotOccupantType.js"; import handler_doAddLotOccupantType from '../handlers/admin-post/doAddLotOccupantType.js'
import handler_doUpdateLotOccupantType from "../handlers/admin-post/doUpdateLotOccupantType.js"; import handler_doUpdateLotOccupantType from '../handlers/admin-post/doUpdateLotOccupantType.js'
import handler_doMoveLotOccupantTypeUp from "../handlers/admin-post/doMoveLotOccupantTypeUp.js"; import handler_doMoveLotOccupantTypeUp from '../handlers/admin-post/doMoveLotOccupantTypeUp.js'
import handler_doMoveLotOccupantTypeDown from "../handlers/admin-post/doMoveLotOccupantTypeDown.js"; import handler_doMoveLotOccupantTypeDown from '../handlers/admin-post/doMoveLotOccupantTypeDown.js'
import handler_doDeleteLotOccupantType from "../handlers/admin-post/doDeleteLotOccupantType.js"; import handler_doDeleteLotOccupantType from '../handlers/admin-post/doDeleteLotOccupantType.js'
// Cleanup // Cleanup
import handler_cleanup from "../handlers/admin-get/cleanup.js"; import handler_cleanup from '../handlers/admin-get/cleanup.js'
import handler_doCleanupDatabase from "../handlers/admin-post/doCleanupDatabase.js"; import handler_doCleanupDatabase from '../handlers/admin-post/doCleanupDatabase.js'
// Ntfy Startup // Ntfy Startup
import handler_ntfyStartup from "../handlers/admin-get/ntfyStartup.js"; import handler_ntfyStartup from '../handlers/admin-get/ntfyStartup.js'
export const router = Router(); export const router = Router()
/* /*
* Fees * Fees
*/ */
router.get("/fees", handler_fees); router.get('/fees', handler_fees)
router.post("/doAddFeeCategory", handler_doAddFeeCategory); router.post('/doAddFeeCategory', handler_doAddFeeCategory)
router.post("/doUpdateFeeCategory", handler_doUpdateFeeCategory); router.post('/doUpdateFeeCategory', handler_doUpdateFeeCategory)
router.post("/doMoveFeeCategoryUp", handler_doMoveFeeCategoryUp); router.post('/doMoveFeeCategoryUp', handler_doMoveFeeCategoryUp)
router.post("/doMoveFeeCategoryDown", handler_doMoveFeeCategoryDown); router.post('/doMoveFeeCategoryDown', handler_doMoveFeeCategoryDown)
router.post("/doDeleteFeeCategory", handler_doDeleteFeeCategory); router.post('/doDeleteFeeCategory', handler_doDeleteFeeCategory)
router.post("/doAddFee", handler_doAddFee); router.post('/doAddFee', handler_doAddFee)
router.post("/doUpdateFee", handler_doUpdateFee); router.post('/doUpdateFee', handler_doUpdateFee)
router.post("/doMoveFeeUp", handler_doMoveFeeUp); router.post('/doMoveFeeUp', handler_doMoveFeeUp)
router.post("/doMoveFeeDown", handler_doMoveFeeDown); router.post('/doMoveFeeDown', handler_doMoveFeeDown)
router.post("/doDeleteFee", handler_doDeleteFee); router.post('/doDeleteFee', handler_doDeleteFee)
/* /*
* Occupancy Type Management * Occupancy Type Management
*/ */
router.get("/occupancyTypes", handler_occupancyTypes); router.get('/occupancyTypes', handler_occupancyTypes)
router.post("/doAddOccupancyType", handler_doAddOccupancyType); router.post('/doAddOccupancyType', handler_doAddOccupancyType)
router.post("/doUpdateOccupancyType", handler_doUpdateOccupancyType); router.post('/doUpdateOccupancyType', handler_doUpdateOccupancyType)
router.post("/doMoveOccupancyTypeUp", handler_doMoveOccupancyTypeUp); router.post('/doMoveOccupancyTypeUp', handler_doMoveOccupancyTypeUp)
router.post("/doMoveOccupancyTypeDown", handler_doMoveOccupancyTypeDown); router.post('/doMoveOccupancyTypeDown', handler_doMoveOccupancyTypeDown)
router.post("/doDeleteOccupancyType", handler_doDeleteOccupancyType); router.post('/doDeleteOccupancyType', handler_doDeleteOccupancyType)
// Occupancy Type Fields // Occupancy Type Fields
router.post("/doAddOccupancyTypeField", handler_doAddOccupancyTypeField); router.post('/doAddOccupancyTypeField', handler_doAddOccupancyTypeField)
router.post("/doUpdateOccupancyTypeField", handler_doUpdateOccupancyTypeField); router.post('/doUpdateOccupancyTypeField', handler_doUpdateOccupancyTypeField)
router.post("/doMoveOccupancyTypeFieldUp", handler_doMoveOccupancyTypeFieldUp); router.post('/doMoveOccupancyTypeFieldUp', handler_doMoveOccupancyTypeFieldUp)
router.post("/doMoveOccupancyTypeFieldDown", handler_doMoveOccupancyTypeFieldDown); router.post(
'/doMoveOccupancyTypeFieldDown',
handler_doMoveOccupancyTypeFieldDown
)
router.post("/doDeleteOccupancyTypeField", handler_doDeleteOccupancyTypeField); router.post('/doDeleteOccupancyTypeField', handler_doDeleteOccupancyTypeField)
// Occupancy Type Prints // Occupancy Type Prints
router.post("/doAddOccupancyTypePrint", handler_doAddOccupancyTypePrint); router.post('/doAddOccupancyTypePrint', handler_doAddOccupancyTypePrint)
router.post("/doMoveOccupancyTypePrintUp", handler_doMoveOccupancyTypePrintUp); router.post('/doMoveOccupancyTypePrintUp', handler_doMoveOccupancyTypePrintUp)
router.post("/doMoveOccupancyTypePrintDown", handler_doMoveOccupancyTypePrintDown); router.post(
'/doMoveOccupancyTypePrintDown',
handler_doMoveOccupancyTypePrintDown
)
router.post("/doDeleteOccupancyTypePrint", handler_doDeleteOccupancyTypePrint); router.post('/doDeleteOccupancyTypePrint', handler_doDeleteOccupancyTypePrint)
/* /*
* Lot Type Management * Lot Type Management
*/ */
router.get("/lotTypes", handler_lotTypes); router.get('/lotTypes', handler_lotTypes)
router.post("/doAddLotType", handler_doAddLotType); router.post('/doAddLotType', handler_doAddLotType)
router.post("/doUpdateLotType", handler_doUpdateLotType); router.post('/doUpdateLotType', handler_doUpdateLotType)
router.post("/doMoveLotTypeUp", handler_doMoveLotTypeUp); router.post('/doMoveLotTypeUp', handler_doMoveLotTypeUp)
router.post("/doMoveLotTypeDown", handler_doMoveLotTypeDown); router.post('/doMoveLotTypeDown', handler_doMoveLotTypeDown)
router.post("/doDeleteLotType", handler_doDeleteLotType); router.post('/doDeleteLotType', handler_doDeleteLotType)
// Lot Type Fields // Lot Type Fields
router.post("/doAddLotTypeField", handler_doAddLotTypeField); router.post('/doAddLotTypeField', handler_doAddLotTypeField)
router.post("/doUpdateLotTypeField", handler_doUpdateLotTypeField); router.post('/doUpdateLotTypeField', handler_doUpdateLotTypeField)
router.post("/doMoveLotTypeFieldUp", handler_doMoveLotTypeFieldUp); router.post('/doMoveLotTypeFieldUp', handler_doMoveLotTypeFieldUp)
router.post("/doMoveLotTypeFieldDown", handler_doMoveLotTypeFieldDown); router.post('/doMoveLotTypeFieldDown', handler_doMoveLotTypeFieldDown)
router.post("/doDeleteLotTypeField", handler_doDeleteLotTypeField); router.post('/doDeleteLotTypeField', handler_doDeleteLotTypeField)
/* /*
* Config Tables * Config Tables
*/ */
router.get("/tables", handler_tables); router.get('/tables', handler_tables)
// Config Tables - Work Order Types // Config Tables - Work Order Types
router.post("/doAddWorkOrderType", handler_doAddWorkOrderType); router.post('/doAddWorkOrderType', handler_doAddWorkOrderType)
router.post("/doUpdateWorkOrderType", handler_doUpdateWorkOrderType); router.post('/doUpdateWorkOrderType', handler_doUpdateWorkOrderType)
router.post("/doMoveWorkOrderTypeUp", handler_doMoveWorkOrderTypeUp); router.post('/doMoveWorkOrderTypeUp', handler_doMoveWorkOrderTypeUp)
router.post("/doMoveWorkOrderTypeDown", handler_doMoveWorkOrderTypeDown); router.post('/doMoveWorkOrderTypeDown', handler_doMoveWorkOrderTypeDown)
router.post("/doDeleteWorkOrderType", handler_doDeleteWorkOrderType); router.post('/doDeleteWorkOrderType', handler_doDeleteWorkOrderType)
// Config Tables - Work Order Milestone Types // Config Tables - Work Order Milestone Types
router.post( router.post(
"/doAddWorkOrderMilestoneType", '/doAddWorkOrderMilestoneType',
handler_doAddWorkOrderMilestoneType handler_doAddWorkOrderMilestoneType
); )
router.post("/doUpdateWorkOrderMilestoneType", handler_doUpdateWorkOrderMilestoneType); router.post(
'/doUpdateWorkOrderMilestoneType',
handler_doUpdateWorkOrderMilestoneType
)
router.post("/doMoveWorkOrderMilestoneTypeUp", handler_doMoveWorkOrderMilestoneTypeUp); router.post(
'/doMoveWorkOrderMilestoneTypeUp',
handler_doMoveWorkOrderMilestoneTypeUp
)
router.post("/doMoveWorkOrderMilestoneTypeDown", handler_doMoveWorkOrderMilestoneTypeDown); router.post(
'/doMoveWorkOrderMilestoneTypeDown',
handler_doMoveWorkOrderMilestoneTypeDown
)
router.post("/doDeleteWorkOrderMilestoneType", handler_doDeleteWorkOrderMilestoneType); router.post(
'/doDeleteWorkOrderMilestoneType',
handler_doDeleteWorkOrderMilestoneType
)
// Config Tables - Lot Statuses // Config Tables - Lot Statuses
router.post("/doAddLotStatus", handler_doAddLotStatus); router.post('/doAddLotStatus', handler_doAddLotStatus)
router.post("/doUpdateLotStatus", handler_doUpdateLotStatus); router.post('/doUpdateLotStatus', handler_doUpdateLotStatus)
router.post("/doMoveLotStatusUp", handler_doMoveLotStatusUp); router.post('/doMoveLotStatusUp', handler_doMoveLotStatusUp)
router.post("/doMoveLotStatusDown", handler_doMoveLotStatusDown); router.post('/doMoveLotStatusDown', handler_doMoveLotStatusDown)
router.post("/doDeleteLotStatus", handler_doDeleteLotStatus); router.post('/doDeleteLotStatus', handler_doDeleteLotStatus)
// Config Tables - Lot Occupant Types // Config Tables - Lot Occupant Types
router.post("/doAddLotOccupantType", handler_doAddLotOccupantType); router.post('/doAddLotOccupantType', handler_doAddLotOccupantType)
router.post("/doUpdateLotOccupantType", handler_doUpdateLotOccupantType); router.post('/doUpdateLotOccupantType', handler_doUpdateLotOccupantType)
router.post("/doMoveLotOccupantTypeUp", handler_doMoveLotOccupantTypeUp); router.post('/doMoveLotOccupantTypeUp', handler_doMoveLotOccupantTypeUp)
router.post("/doMoveLotOccupantTypeDown", handler_doMoveLotOccupantTypeDown); router.post('/doMoveLotOccupantTypeDown', handler_doMoveLotOccupantTypeDown)
router.post("/doDeleteLotOccupantType", handler_doDeleteLotOccupantType); router.post('/doDeleteLotOccupantType', handler_doDeleteLotOccupantType)
// Cleanup // Cleanup
router.get("/cleanup", handler_cleanup); router.get('/cleanup', handler_cleanup)
router.post("/doCleanupDatabase", handler_doCleanupDatabase); router.post('/doCleanupDatabase', handler_doCleanupDatabase)
// Ntfy Startup // Ntfy Startup
router.get("/ntfyStartup", handler_ntfyStartup); router.get('/ntfyStartup', handler_ntfyStartup)
export default router; export default router

View File

@ -1,5 +1,5 @@
import { Router } from "express"; import { Router } from 'express';
import handler_milestoneICS from "../handlers/api-get/milestoneICS.js"; import handler_milestoneICS from '../handlers/api-get/milestoneICS.js';
export const router = Router(); export const router = Router();
router.get("/milestoneICS", handler_milestoneICS); router.get('/milestoneICS', handler_milestoneICS);
export default router; export default router;

View File

@ -1,9 +1,9 @@
import { Router } from "express"; import { Router } from 'express'
import handler_milestoneICS from "../handlers/api-get/milestoneICS.js"; import handler_milestoneICS from '../handlers/api-get/milestoneICS.js'
export const router = Router(); export const router = Router()
router.get("/milestoneICS", handler_milestoneICS); router.get('/milestoneICS', handler_milestoneICS)
export default router; export default router

View File

@ -1,5 +1,5 @@
import { Router } from "express"; import { Router } from 'express';
import handler_dashboard from "../handlers/dashboard-get/dashboard.js"; import handler_dashboard from '../handlers/dashboard-get/dashboard.js';
export const router = Router(); export const router = Router();
router.get("/", handler_dashboard); router.get('/', handler_dashboard);
export default router; export default router;

View File

@ -1,9 +1,9 @@
import { Router } from "express"; import { Router } from 'express'
import handler_dashboard from "../handlers/dashboard-get/dashboard.js"; import handler_dashboard from '../handlers/dashboard-get/dashboard.js'
export const router = Router(); export const router = Router()
router.get("/", handler_dashboard); router.get('/', handler_dashboard)
export default router; export default router

View File

@ -1,61 +1,63 @@
import { Router } from "express"; import { Router } from 'express';
import * as configFunctions from "../helpers/functions.config.js"; import * as configFunctions from '../helpers/functions.config.js';
import * as authenticationFunctions from "../helpers/functions.authentication.js"; import * as authenticationFunctions from '../helpers/functions.authentication.js';
import { useTestDatabases } from "../data/databasePaths.js"; import { useTestDatabases } from '../data/databasePaths.js';
import { getApiKey } from "../helpers/functions.api.js"; import { getApiKey } from '../helpers/functions.api.js';
import Debug from "debug"; import Debug from 'debug';
const debug = Debug("lot-occupancy-system:login"); const debug = Debug('lot-occupancy-system:login');
export const router = Router(); export const router = Router();
router router
.route("/") .route('/')
.get((request, response) => { .get((request, response) => {
const sessionCookieName = configFunctions.getProperty("session.cookieName"); const sessionCookieName = configFunctions.getProperty('session.cookieName');
if (request.session.user && request.cookies[sessionCookieName]) { if (request.session.user && request.cookies[sessionCookieName]) {
const redirectURL = authenticationFunctions.getSafeRedirectURL((request.query.redirect || "")); const redirectURL = authenticationFunctions.getSafeRedirectURL((request.query.redirect ?? ''));
response.redirect(redirectURL); response.redirect(redirectURL);
} }
else { else {
response.render("login", { response.render('login', {
userName: "", userName: '',
message: "", message: '',
redirect: request.query.redirect, redirect: request.query.redirect,
useTestDatabases useTestDatabases
}); });
} }
}) })
.post(async (request, response) => { .post(async (request, response) => {
const userName = (typeof request.body.userName === "string" ? request.body.userName : ""); const userName = (typeof request.body.userName === 'string' ? request.body.userName : '');
const passwordPlain = (typeof request.body.password === "string" ? request.body.password : ""); const passwordPlain = (typeof request.body.password === 'string' ? request.body.password : '');
const unsafeRedirectURL = request.body.redirect; const unsafeRedirectURL = request.body.redirect;
const redirectURL = authenticationFunctions.getSafeRedirectURL(typeof unsafeRedirectURL === "string" ? unsafeRedirectURL : ""); const redirectURL = authenticationFunctions.getSafeRedirectURL(typeof unsafeRedirectURL === 'string' ? unsafeRedirectURL : '');
let isAuthenticated = false; let isAuthenticated = false;
if (userName.charAt(0) === "*") { if (userName.charAt(0) === '*') {
if (useTestDatabases && userName === passwordPlain) { if (useTestDatabases && userName === passwordPlain) {
isAuthenticated = configFunctions.getProperty("users.testing").includes(userName); isAuthenticated = configFunctions
.getProperty('users.testing')
.includes(userName);
if (isAuthenticated) { if (isAuthenticated) {
debug("Authenticated testing user: " + userName); debug('Authenticated testing user: ' + userName);
} }
} }
} }
else if (userName !== "" && passwordPlain !== "") { else if (userName !== '' && passwordPlain !== '') {
isAuthenticated = await authenticationFunctions.authenticate(userName, passwordPlain); isAuthenticated = await authenticationFunctions.authenticate(userName, passwordPlain);
} }
let userObject; let userObject;
if (isAuthenticated) { if (isAuthenticated) {
const userNameLowerCase = userName.toLowerCase(); const userNameLowerCase = userName.toLowerCase();
const canLogin = configFunctions const canLogin = configFunctions
.getProperty("users.canLogin") .getProperty('users.canLogin')
.some((currentUserName) => { .some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase(); return userNameLowerCase === currentUserName.toLowerCase();
}); });
if (canLogin) { if (canLogin) {
const canUpdate = configFunctions const canUpdate = configFunctions
.getProperty("users.canUpdate") .getProperty('users.canUpdate')
.some((currentUserName) => { .some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase(); return userNameLowerCase === currentUserName.toLowerCase();
}); });
const isAdmin = configFunctions const isAdmin = configFunctions
.getProperty("users.isAdmin") .getProperty('users.isAdmin')
.some((currentUserName) => { .some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase(); return userNameLowerCase === currentUserName.toLowerCase();
}); });
@ -75,9 +77,9 @@ router
response.redirect(redirectURL); response.redirect(redirectURL);
} }
else { else {
response.render("login", { response.render('login', {
userName, userName,
message: "Login Failed", message: 'Login Failed',
redirect: redirectURL, redirect: redirectURL,
useTestDatabases useTestDatabases
}); });

View File

@ -1,119 +1,124 @@
import { Router } from "express"; import { Router } from 'express'
import * as configFunctions from "../helpers/functions.config.js"; import * as configFunctions from '../helpers/functions.config.js'
import * as authenticationFunctions from "../helpers/functions.authentication.js"; import * as authenticationFunctions from '../helpers/functions.authentication.js'
import { useTestDatabases } from "../data/databasePaths.js"; import { useTestDatabases } from '../data/databasePaths.js'
import { getApiKey } from "../helpers/functions.api.js"; import { getApiKey } from '../helpers/functions.api.js'
import Debug from "debug"; import Debug from 'debug'
import type * as recordTypes from "../types/recordTypes"; import type * as recordTypes from '../types/recordTypes'
const debug = Debug("lot-occupancy-system:login"); const debug = Debug('lot-occupancy-system:login')
export const router = Router(); export const router = Router()
router router
.route("/") .route('/')
.get((request, response) => { .get((request, response) => {
const sessionCookieName = configFunctions.getProperty("session.cookieName"); const sessionCookieName = configFunctions.getProperty('session.cookieName')
if (request.session.user && request.cookies[sessionCookieName]) { if (request.session.user && request.cookies[sessionCookieName]) {
const redirectURL = authenticationFunctions.getSafeRedirectURL( const redirectURL = authenticationFunctions.getSafeRedirectURL(
(request.query.redirect || "") as string (request.query.redirect ?? '') as string
); )
response.redirect(redirectURL); response.redirect(redirectURL)
} else { } else {
response.render("login", { response.render('login', {
userName: "", userName: '',
message: "", message: '',
redirect: request.query.redirect, redirect: request.query.redirect,
useTestDatabases useTestDatabases
}); })
} }
}) })
.post(async (request, response) => { .post(async (request, response) => {
const userName = ( const userName = (
typeof request.body.userName === "string" ? request.body.userName : "" typeof request.body.userName === 'string' ? request.body.userName : ''
) as string; ) as string
const passwordPlain = ( const passwordPlain = (
typeof request.body.password === "string" ? request.body.password : "" typeof request.body.password === 'string' ? request.body.password : ''
) as string; ) as string
const unsafeRedirectURL = request.body.redirect; const unsafeRedirectURL = request.body.redirect
const redirectURL = authenticationFunctions.getSafeRedirectURL( const redirectURL = authenticationFunctions.getSafeRedirectURL(
typeof unsafeRedirectURL === "string" ? unsafeRedirectURL : "" typeof unsafeRedirectURL === 'string' ? unsafeRedirectURL : ''
); )
let isAuthenticated = false; let isAuthenticated = false
if (userName.charAt(0) === "*") { if (userName.charAt(0) === '*') {
if (useTestDatabases && userName === passwordPlain) { if (useTestDatabases && userName === passwordPlain) {
isAuthenticated = configFunctions.getProperty("users.testing").includes(userName); isAuthenticated = configFunctions
.getProperty('users.testing')
if (isAuthenticated) { .includes(userName)
debug("Authenticated testing user: " + userName);
}
}
} else if (userName !== "" && passwordPlain !== "") {
isAuthenticated = await authenticationFunctions.authenticate(userName, passwordPlain);
}
let userObject: recordTypes.User | undefined;
if (isAuthenticated) { if (isAuthenticated) {
const userNameLowerCase = userName.toLowerCase(); debug('Authenticated testing user: ' + userName)
const canLogin = configFunctions
.getProperty("users.canLogin")
.some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase();
});
if (canLogin) {
const canUpdate = configFunctions
.getProperty("users.canUpdate")
.some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase();
});
const isAdmin = configFunctions
.getProperty("users.isAdmin")
.some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase();
});
const apiKey = await getApiKey(userNameLowerCase);
userObject = {
userName: userNameLowerCase,
userProperties: {
canUpdate,
isAdmin,
apiKey
}
};
}
} }
}
} else if (userName !== '' && passwordPlain !== '') {
isAuthenticated = await authenticationFunctions.authenticate(
userName,
passwordPlain
)
}
if (isAuthenticated && userObject) { let userObject: recordTypes.User | undefined
request.session.user = userObject;
response.redirect(redirectURL); if (isAuthenticated) {
} else { const userNameLowerCase = userName.toLowerCase()
response.render("login", {
userName, const canLogin = configFunctions
message: "Login Failed", .getProperty('users.canLogin')
redirect: redirectURL, .some((currentUserName) => {
useTestDatabases return userNameLowerCase === currentUserName.toLowerCase()
}); })
if (canLogin) {
const canUpdate = configFunctions
.getProperty('users.canUpdate')
.some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase()
})
const isAdmin = configFunctions
.getProperty('users.isAdmin')
.some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase()
})
const apiKey = await getApiKey(userNameLowerCase)
userObject = {
userName: userNameLowerCase,
userProperties: {
canUpdate,
isAdmin,
apiKey
}
} }
}); }
}
export default router; if (isAuthenticated && userObject) {
request.session.user = userObject
response.redirect(redirectURL)
} else {
response.render('login', {
userName,
message: 'Login Failed',
redirect: redirectURL,
useTestDatabases
})
}
})
export default router

View File

@ -1,48 +1,48 @@
import { Router } from "express"; import { Router } from 'express';
import handler_search from "../handlers/lotOccupancies-get/search.js"; import handler_search from '../handlers/lotOccupancies-get/search.js';
import handler_doSearchLotOccupancies from "../handlers/lotOccupancies-post/doSearchLotOccupancies.js"; import handler_doSearchLotOccupancies from '../handlers/lotOccupancies-post/doSearchLotOccupancies.js';
import handler_view from "../handlers/lotOccupancies-get/view.js"; import handler_view from '../handlers/lotOccupancies-get/view.js';
import handler_new from "../handlers/lotOccupancies-get/new.js"; import handler_new from '../handlers/lotOccupancies-get/new.js';
import handler_doGetOccupancyTypeFields from "../handlers/lotOccupancies-post/doGetOccupancyTypeFields.js"; import handler_doGetOccupancyTypeFields from '../handlers/lotOccupancies-post/doGetOccupancyTypeFields.js';
import handler_doCreateLotOccupancy from "../handlers/lotOccupancies-post/doCreateLotOccupancy.js"; import handler_doCreateLotOccupancy from '../handlers/lotOccupancies-post/doCreateLotOccupancy.js';
import handler_edit from "../handlers/lotOccupancies-get/edit.js"; import handler_edit from '../handlers/lotOccupancies-get/edit.js';
import handler_doUpdateLotOccupancy from "../handlers/lotOccupancies-post/doUpdateLotOccupancy.js"; import handler_doUpdateLotOccupancy from '../handlers/lotOccupancies-post/doUpdateLotOccupancy.js';
import handler_doCopyLotOccupancy from "../handlers/lotOccupancies-post/doCopyLotOccupancy.js"; import handler_doCopyLotOccupancy from '../handlers/lotOccupancies-post/doCopyLotOccupancy.js';
import handler_doDeleteLotOccupancy from "../handlers/lotOccupancies-post/doDeleteLotOccupancy.js"; import handler_doDeleteLotOccupancy from '../handlers/lotOccupancies-post/doDeleteLotOccupancy.js';
import handler_doSearchPastOccupants from "../handlers/lotOccupancies-post/doSearchPastOccupants.js"; import handler_doSearchPastOccupants from '../handlers/lotOccupancies-post/doSearchPastOccupants.js';
import handler_doAddLotOccupancyOccupant from "../handlers/lotOccupancies-post/doAddLotOccupancyOccupant.js"; import handler_doAddLotOccupancyOccupant from '../handlers/lotOccupancies-post/doAddLotOccupancyOccupant.js';
import handler_doUpdateLotOccupancyOccupant from "../handlers/lotOccupancies-post/doUpdateLotOccupancyOccupant.js"; import handler_doUpdateLotOccupancyOccupant from '../handlers/lotOccupancies-post/doUpdateLotOccupancyOccupant.js';
import handler_doDeleteLotOccupancyOccupant from "../handlers/lotOccupancies-post/doDeleteLotOccupancyOccupant.js"; import handler_doDeleteLotOccupancyOccupant from '../handlers/lotOccupancies-post/doDeleteLotOccupancyOccupant.js';
import handler_doAddLotOccupancyComment from "../handlers/lotOccupancies-post/doAddLotOccupancyComment.js"; import handler_doAddLotOccupancyComment from '../handlers/lotOccupancies-post/doAddLotOccupancyComment.js';
import handler_doUpdateLotOccupancyComment from "../handlers/lotOccupancies-post/doUpdateLotOccupancyComment.js"; import handler_doUpdateLotOccupancyComment from '../handlers/lotOccupancies-post/doUpdateLotOccupancyComment.js';
import handler_doDeleteLotOccupancyComment from "../handlers/lotOccupancies-post/doDeleteLotOccupancyComment.js"; import handler_doDeleteLotOccupancyComment from '../handlers/lotOccupancies-post/doDeleteLotOccupancyComment.js';
import handler_doGetFees from "../handlers/lotOccupancies-post/doGetFees.js"; import handler_doGetFees from '../handlers/lotOccupancies-post/doGetFees.js';
import handler_doAddLotOccupancyFee from "../handlers/lotOccupancies-post/doAddLotOccupancyFee.js"; import handler_doAddLotOccupancyFee from '../handlers/lotOccupancies-post/doAddLotOccupancyFee.js';
import handler_doDeleteLotOccupancyFee from "../handlers/lotOccupancies-post/doDeleteLotOccupancyFee.js"; import handler_doDeleteLotOccupancyFee from '../handlers/lotOccupancies-post/doDeleteLotOccupancyFee.js';
import handler_doAddLotOccupancyTransaction from "../handlers/lotOccupancies-post/doAddLotOccupancyTransaction.js"; import handler_doAddLotOccupancyTransaction from '../handlers/lotOccupancies-post/doAddLotOccupancyTransaction.js';
import handler_doDeleteLotOccupancyTransaction from "../handlers/lotOccupancies-post/doDeleteLotOccupancyTransaction.js"; import handler_doDeleteLotOccupancyTransaction from '../handlers/lotOccupancies-post/doDeleteLotOccupancyTransaction.js';
import * as permissionHandlers from "../handlers/permissions.js"; import * as permissionHandlers from '../handlers/permissions.js';
export const router = Router(); export const router = Router();
router.get("/", handler_search); router.get('/', handler_search);
router.post("/doSearchLotOccupancies", handler_doSearchLotOccupancies); router.post('/doSearchLotOccupancies', handler_doSearchLotOccupancies);
router.get("/new", permissionHandlers.updateGetHandler, handler_new); router.get('/new', permissionHandlers.updateGetHandler, handler_new);
router.post("/doGetOccupancyTypeFields", permissionHandlers.updatePostHandler, handler_doGetOccupancyTypeFields); router.post('/doGetOccupancyTypeFields', permissionHandlers.updatePostHandler, handler_doGetOccupancyTypeFields);
router.post("/doCreateLotOccupancy", permissionHandlers.updatePostHandler, handler_doCreateLotOccupancy); router.post('/doCreateLotOccupancy', permissionHandlers.updatePostHandler, handler_doCreateLotOccupancy);
router.get("/:lotOccupancyId", handler_view); router.get('/:lotOccupancyId', handler_view);
router.get("/:lotOccupancyId/edit", permissionHandlers.updateGetHandler, handler_edit); router.get('/:lotOccupancyId/edit', permissionHandlers.updateGetHandler, handler_edit);
router.post("/doUpdateLotOccupancy", permissionHandlers.updatePostHandler, handler_doUpdateLotOccupancy); router.post('/doUpdateLotOccupancy', permissionHandlers.updatePostHandler, handler_doUpdateLotOccupancy);
router.post("/doCopyLotOccupancy", permissionHandlers.updatePostHandler, handler_doCopyLotOccupancy); router.post('/doCopyLotOccupancy', permissionHandlers.updatePostHandler, handler_doCopyLotOccupancy);
router.post("/doDeleteLotOccupancy", permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancy); router.post('/doDeleteLotOccupancy', permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancy);
router.post("/doSearchPastOccupants", permissionHandlers.updatePostHandler, handler_doSearchPastOccupants); router.post('/doSearchPastOccupants', permissionHandlers.updatePostHandler, handler_doSearchPastOccupants);
router.post("/doAddLotOccupancyOccupant", permissionHandlers.updatePostHandler, handler_doAddLotOccupancyOccupant); router.post('/doAddLotOccupancyOccupant', permissionHandlers.updatePostHandler, handler_doAddLotOccupancyOccupant);
router.post("/doUpdateLotOccupancyOccupant", permissionHandlers.updatePostHandler, handler_doUpdateLotOccupancyOccupant); router.post('/doUpdateLotOccupancyOccupant', permissionHandlers.updatePostHandler, handler_doUpdateLotOccupancyOccupant);
router.post("/doDeleteLotOccupancyOccupant", permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancyOccupant); router.post('/doDeleteLotOccupancyOccupant', permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancyOccupant);
router.post("/doAddLotOccupancyComment", permissionHandlers.updatePostHandler, handler_doAddLotOccupancyComment); router.post('/doAddLotOccupancyComment', permissionHandlers.updatePostHandler, handler_doAddLotOccupancyComment);
router.post("/doUpdateLotOccupancyComment", permissionHandlers.updatePostHandler, handler_doUpdateLotOccupancyComment); router.post('/doUpdateLotOccupancyComment', permissionHandlers.updatePostHandler, handler_doUpdateLotOccupancyComment);
router.post("/doDeleteLotOccupancyComment", permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancyComment); router.post('/doDeleteLotOccupancyComment', permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancyComment);
router.post("/doGetFees", permissionHandlers.updatePostHandler, handler_doGetFees); router.post('/doGetFees', permissionHandlers.updatePostHandler, handler_doGetFees);
router.post("/doAddLotOccupancyFee", permissionHandlers.updatePostHandler, handler_doAddLotOccupancyFee); router.post('/doAddLotOccupancyFee', permissionHandlers.updatePostHandler, handler_doAddLotOccupancyFee);
router.post("/doDeleteLotOccupancyFee", permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancyFee); router.post('/doDeleteLotOccupancyFee', permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancyFee);
router.post("/doAddLotOccupancyTransaction", permissionHandlers.updatePostHandler, handler_doAddLotOccupancyTransaction); router.post('/doAddLotOccupancyTransaction', permissionHandlers.updatePostHandler, handler_doAddLotOccupancyTransaction);
router.post("/doDeleteLotOccupancyTransaction", permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancyTransaction); router.post('/doDeleteLotOccupancyTransaction', permissionHandlers.updatePostHandler, handler_doDeleteLotOccupancyTransaction);
export default router; export default router;

View File

@ -1,169 +1,169 @@
import { Router } from "express"; import { Router } from 'express'
import handler_search from "../handlers/lotOccupancies-get/search.js"; import handler_search from '../handlers/lotOccupancies-get/search.js'
import handler_doSearchLotOccupancies from "../handlers/lotOccupancies-post/doSearchLotOccupancies.js"; import handler_doSearchLotOccupancies from '../handlers/lotOccupancies-post/doSearchLotOccupancies.js'
import handler_view from "../handlers/lotOccupancies-get/view.js"; import handler_view from '../handlers/lotOccupancies-get/view.js'
import handler_new from "../handlers/lotOccupancies-get/new.js"; import handler_new from '../handlers/lotOccupancies-get/new.js'
import handler_doGetOccupancyTypeFields from "../handlers/lotOccupancies-post/doGetOccupancyTypeFields.js"; import handler_doGetOccupancyTypeFields from '../handlers/lotOccupancies-post/doGetOccupancyTypeFields.js'
import handler_doCreateLotOccupancy from "../handlers/lotOccupancies-post/doCreateLotOccupancy.js"; import handler_doCreateLotOccupancy from '../handlers/lotOccupancies-post/doCreateLotOccupancy.js'
import handler_edit from "../handlers/lotOccupancies-get/edit.js"; import handler_edit from '../handlers/lotOccupancies-get/edit.js'
import handler_doUpdateLotOccupancy from "../handlers/lotOccupancies-post/doUpdateLotOccupancy.js"; import handler_doUpdateLotOccupancy from '../handlers/lotOccupancies-post/doUpdateLotOccupancy.js'
import handler_doCopyLotOccupancy from "../handlers/lotOccupancies-post/doCopyLotOccupancy.js"; import handler_doCopyLotOccupancy from '../handlers/lotOccupancies-post/doCopyLotOccupancy.js'
import handler_doDeleteLotOccupancy from "../handlers/lotOccupancies-post/doDeleteLotOccupancy.js"; import handler_doDeleteLotOccupancy from '../handlers/lotOccupancies-post/doDeleteLotOccupancy.js'
import handler_doSearchPastOccupants from "../handlers/lotOccupancies-post/doSearchPastOccupants.js"; import handler_doSearchPastOccupants from '../handlers/lotOccupancies-post/doSearchPastOccupants.js'
import handler_doAddLotOccupancyOccupant from "../handlers/lotOccupancies-post/doAddLotOccupancyOccupant.js"; import handler_doAddLotOccupancyOccupant from '../handlers/lotOccupancies-post/doAddLotOccupancyOccupant.js'
import handler_doUpdateLotOccupancyOccupant from "../handlers/lotOccupancies-post/doUpdateLotOccupancyOccupant.js"; import handler_doUpdateLotOccupancyOccupant from '../handlers/lotOccupancies-post/doUpdateLotOccupancyOccupant.js'
import handler_doDeleteLotOccupancyOccupant from "../handlers/lotOccupancies-post/doDeleteLotOccupancyOccupant.js"; import handler_doDeleteLotOccupancyOccupant from '../handlers/lotOccupancies-post/doDeleteLotOccupancyOccupant.js'
import handler_doAddLotOccupancyComment from "../handlers/lotOccupancies-post/doAddLotOccupancyComment.js"; import handler_doAddLotOccupancyComment from '../handlers/lotOccupancies-post/doAddLotOccupancyComment.js'
import handler_doUpdateLotOccupancyComment from "../handlers/lotOccupancies-post/doUpdateLotOccupancyComment.js"; import handler_doUpdateLotOccupancyComment from '../handlers/lotOccupancies-post/doUpdateLotOccupancyComment.js'
import handler_doDeleteLotOccupancyComment from "../handlers/lotOccupancies-post/doDeleteLotOccupancyComment.js"; import handler_doDeleteLotOccupancyComment from '../handlers/lotOccupancies-post/doDeleteLotOccupancyComment.js'
import handler_doGetFees from "../handlers/lotOccupancies-post/doGetFees.js"; import handler_doGetFees from '../handlers/lotOccupancies-post/doGetFees.js'
import handler_doAddLotOccupancyFee from "../handlers/lotOccupancies-post/doAddLotOccupancyFee.js"; import handler_doAddLotOccupancyFee from '../handlers/lotOccupancies-post/doAddLotOccupancyFee.js'
import handler_doDeleteLotOccupancyFee from "../handlers/lotOccupancies-post/doDeleteLotOccupancyFee.js"; import handler_doDeleteLotOccupancyFee from '../handlers/lotOccupancies-post/doDeleteLotOccupancyFee.js'
import handler_doAddLotOccupancyTransaction from "../handlers/lotOccupancies-post/doAddLotOccupancyTransaction.js"; import handler_doAddLotOccupancyTransaction from '../handlers/lotOccupancies-post/doAddLotOccupancyTransaction.js'
import handler_doDeleteLotOccupancyTransaction from "../handlers/lotOccupancies-post/doDeleteLotOccupancyTransaction.js"; import handler_doDeleteLotOccupancyTransaction from '../handlers/lotOccupancies-post/doDeleteLotOccupancyTransaction.js'
import * as permissionHandlers from "../handlers/permissions.js"; import * as permissionHandlers from '../handlers/permissions.js'
export const router = Router(); export const router = Router()
// Search // Search
router.get("/", handler_search); router.get('/', handler_search)
router.post("/doSearchLotOccupancies", handler_doSearchLotOccupancies); router.post('/doSearchLotOccupancies', handler_doSearchLotOccupancies)
// Create // Create
router.get("/new", permissionHandlers.updateGetHandler, handler_new); router.get('/new', permissionHandlers.updateGetHandler, handler_new)
router.post( router.post(
"/doGetOccupancyTypeFields", '/doGetOccupancyTypeFields',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doGetOccupancyTypeFields handler_doGetOccupancyTypeFields
); )
router.post( router.post(
"/doCreateLotOccupancy", '/doCreateLotOccupancy',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doCreateLotOccupancy handler_doCreateLotOccupancy
); )
// View // View
router.get("/:lotOccupancyId", handler_view); router.get('/:lotOccupancyId', handler_view)
// Edit // Edit
router.get( router.get(
"/:lotOccupancyId/edit", '/:lotOccupancyId/edit',
permissionHandlers.updateGetHandler, permissionHandlers.updateGetHandler,
handler_edit handler_edit
); )
router.post( router.post(
"/doUpdateLotOccupancy", '/doUpdateLotOccupancy',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateLotOccupancy handler_doUpdateLotOccupancy
); )
router.post( router.post(
"/doCopyLotOccupancy", '/doCopyLotOccupancy',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doCopyLotOccupancy handler_doCopyLotOccupancy
); )
router.post( router.post(
"/doDeleteLotOccupancy", '/doDeleteLotOccupancy',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteLotOccupancy handler_doDeleteLotOccupancy
); )
// Occupants // Occupants
router.post( router.post(
"/doSearchPastOccupants", '/doSearchPastOccupants',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doSearchPastOccupants handler_doSearchPastOccupants
); )
router.post( router.post(
"/doAddLotOccupancyOccupant", '/doAddLotOccupancyOccupant',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doAddLotOccupancyOccupant handler_doAddLotOccupancyOccupant
); )
router.post( router.post(
"/doUpdateLotOccupancyOccupant", '/doUpdateLotOccupancyOccupant',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateLotOccupancyOccupant handler_doUpdateLotOccupancyOccupant
); )
router.post( router.post(
"/doDeleteLotOccupancyOccupant", '/doDeleteLotOccupancyOccupant',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteLotOccupancyOccupant handler_doDeleteLotOccupancyOccupant
); )
// Comments // Comments
router.post( router.post(
"/doAddLotOccupancyComment", '/doAddLotOccupancyComment',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doAddLotOccupancyComment handler_doAddLotOccupancyComment
); )
router.post( router.post(
"/doUpdateLotOccupancyComment", '/doUpdateLotOccupancyComment',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateLotOccupancyComment handler_doUpdateLotOccupancyComment
); )
router.post( router.post(
"/doDeleteLotOccupancyComment", '/doDeleteLotOccupancyComment',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteLotOccupancyComment handler_doDeleteLotOccupancyComment
); )
// Fees // Fees
router.post( router.post(
"/doGetFees", '/doGetFees',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doGetFees handler_doGetFees
); )
router.post( router.post(
"/doAddLotOccupancyFee", '/doAddLotOccupancyFee',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doAddLotOccupancyFee handler_doAddLotOccupancyFee
); )
router.post( router.post(
"/doDeleteLotOccupancyFee", '/doDeleteLotOccupancyFee',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteLotOccupancyFee handler_doDeleteLotOccupancyFee
); )
// Transactions // Transactions
router.post( router.post(
"/doAddLotOccupancyTransaction", '/doAddLotOccupancyTransaction',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doAddLotOccupancyTransaction handler_doAddLotOccupancyTransaction
); )
router.post( router.post(
"/doDeleteLotOccupancyTransaction", '/doDeleteLotOccupancyTransaction',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteLotOccupancyTransaction handler_doDeleteLotOccupancyTransaction
); )
export default router; export default router

View File

@ -1,32 +1,32 @@
import { Router } from "express"; import { Router } from 'express';
import * as permissionHandlers from "../handlers/permissions.js"; import * as permissionHandlers from '../handlers/permissions.js';
import handler_search from "../handlers/lots-get/search.js"; import handler_search from '../handlers/lots-get/search.js';
import handler_doSearchLots from "../handlers/lots-post/doSearchLots.js"; import handler_doSearchLots from '../handlers/lots-post/doSearchLots.js';
import handler_view from "../handlers/lots-get/view.js"; import handler_view from '../handlers/lots-get/view.js';
import handler_next from "../handlers/lots-get/next.js"; import handler_next from '../handlers/lots-get/next.js';
import handler_previous from "../handlers/lots-get/previous.js"; import handler_previous from '../handlers/lots-get/previous.js';
import handler_new from "../handlers/lots-get/new.js"; import handler_new from '../handlers/lots-get/new.js';
import handler_edit from "../handlers/lots-get/edit.js"; import handler_edit from '../handlers/lots-get/edit.js';
import handler_doGetLotTypeFields from "../handlers/lots-post/doGetLotTypeFields.js"; import handler_doGetLotTypeFields from '../handlers/lots-post/doGetLotTypeFields.js';
import handler_doCreateLot from "../handlers/lots-post/doCreateLot.js"; import handler_doCreateLot from '../handlers/lots-post/doCreateLot.js';
import handler_doUpdateLot from "../handlers/lots-post/doUpdateLot.js"; import handler_doUpdateLot from '../handlers/lots-post/doUpdateLot.js';
import handler_doDeleteLot from "../handlers/lots-post/doDeleteLot.js"; import handler_doDeleteLot from '../handlers/lots-post/doDeleteLot.js';
import handler_doAddLotComment from "../handlers/lots-post/doAddLotComment.js"; import handler_doAddLotComment from '../handlers/lots-post/doAddLotComment.js';
import handler_doUpdateLotComment from "../handlers/lots-post/doUpdateLotComment.js"; import handler_doUpdateLotComment from '../handlers/lots-post/doUpdateLotComment.js';
import handler_doDeleteLotComment from "../handlers/lots-post/doDeleteLotComment.js"; import handler_doDeleteLotComment from '../handlers/lots-post/doDeleteLotComment.js';
export const router = Router(); export const router = Router();
router.get("/", handler_search); router.get('/', handler_search);
router.post("/doSearchLots", handler_doSearchLots); router.post('/doSearchLots', handler_doSearchLots);
router.get("/new", permissionHandlers.updateGetHandler, handler_new); router.get('/new', permissionHandlers.updateGetHandler, handler_new);
router.get("/:lotId", handler_view); router.get('/:lotId', handler_view);
router.get("/:lotId/next", handler_next); router.get('/:lotId/next', handler_next);
router.get("/:lotId/previous", handler_previous); router.get('/:lotId/previous', handler_previous);
router.get("/:lotId/edit", permissionHandlers.updateGetHandler, handler_edit); router.get('/:lotId/edit', permissionHandlers.updateGetHandler, handler_edit);
router.post("/doGetLotTypeFields", permissionHandlers.updatePostHandler, handler_doGetLotTypeFields); router.post('/doGetLotTypeFields', permissionHandlers.updatePostHandler, handler_doGetLotTypeFields);
router.post("/doCreateLot", permissionHandlers.updatePostHandler, handler_doCreateLot); router.post('/doCreateLot', permissionHandlers.updatePostHandler, handler_doCreateLot);
router.post("/doUpdateLot", permissionHandlers.updatePostHandler, handler_doUpdateLot); router.post('/doUpdateLot', permissionHandlers.updatePostHandler, handler_doUpdateLot);
router.post("/doDeleteLot", permissionHandlers.updatePostHandler, handler_doDeleteLot); router.post('/doDeleteLot', permissionHandlers.updatePostHandler, handler_doDeleteLot);
router.post("/doAddLotComment", permissionHandlers.updatePostHandler, handler_doAddLotComment); router.post('/doAddLotComment', permissionHandlers.updatePostHandler, handler_doAddLotComment);
router.post("/doUpdateLotComment", permissionHandlers.updatePostHandler, handler_doUpdateLotComment); router.post('/doUpdateLotComment', permissionHandlers.updatePostHandler, handler_doUpdateLotComment);
router.post("/doDeleteLotComment", permissionHandlers.updatePostHandler, handler_doDeleteLotComment); router.post('/doDeleteLotComment', permissionHandlers.updatePostHandler, handler_doDeleteLotComment);
export default router; export default router;

View File

@ -1,71 +1,91 @@
import { Router } from "express"; import { Router } from 'express'
import * as permissionHandlers from "../handlers/permissions.js"; import * as permissionHandlers from '../handlers/permissions.js'
import handler_search from "../handlers/lots-get/search.js"; import handler_search from '../handlers/lots-get/search.js'
import handler_doSearchLots from "../handlers/lots-post/doSearchLots.js"; import handler_doSearchLots from '../handlers/lots-post/doSearchLots.js'
import handler_view from "../handlers/lots-get/view.js"; import handler_view from '../handlers/lots-get/view.js'
import handler_next from "../handlers/lots-get/next.js"; import handler_next from '../handlers/lots-get/next.js'
import handler_previous from "../handlers/lots-get/previous.js"; import handler_previous from '../handlers/lots-get/previous.js'
import handler_new from "../handlers/lots-get/new.js"; import handler_new from '../handlers/lots-get/new.js'
import handler_edit from "../handlers/lots-get/edit.js"; import handler_edit from '../handlers/lots-get/edit.js'
import handler_doGetLotTypeFields from "../handlers/lots-post/doGetLotTypeFields.js"; import handler_doGetLotTypeFields from '../handlers/lots-post/doGetLotTypeFields.js'
import handler_doCreateLot from "../handlers/lots-post/doCreateLot.js"; import handler_doCreateLot from '../handlers/lots-post/doCreateLot.js'
import handler_doUpdateLot from "../handlers/lots-post/doUpdateLot.js"; import handler_doUpdateLot from '../handlers/lots-post/doUpdateLot.js'
import handler_doDeleteLot from "../handlers/lots-post/doDeleteLot.js"; import handler_doDeleteLot from '../handlers/lots-post/doDeleteLot.js'
import handler_doAddLotComment from "../handlers/lots-post/doAddLotComment.js"; import handler_doAddLotComment from '../handlers/lots-post/doAddLotComment.js'
import handler_doUpdateLotComment from "../handlers/lots-post/doUpdateLotComment.js"; import handler_doUpdateLotComment from '../handlers/lots-post/doUpdateLotComment.js'
import handler_doDeleteLotComment from "../handlers/lots-post/doDeleteLotComment.js"; import handler_doDeleteLotComment from '../handlers/lots-post/doDeleteLotComment.js'
export const router = Router(); export const router = Router()
/* /*
* Lot Search * Lot Search
*/ */
router.get("/", handler_search); router.get('/', handler_search)
router.post("/doSearchLots", handler_doSearchLots); router.post('/doSearchLots', handler_doSearchLots)
/* /*
* Lot View / Edit * Lot View / Edit
*/ */
router.get("/new", permissionHandlers.updateGetHandler, handler_new); router.get('/new', permissionHandlers.updateGetHandler, handler_new)
router.get("/:lotId", handler_view); router.get('/:lotId', handler_view)
router.get("/:lotId/next", handler_next); router.get('/:lotId/next', handler_next)
router.get("/:lotId/previous", handler_previous); router.get('/:lotId/previous', handler_previous)
router.get("/:lotId/edit", permissionHandlers.updateGetHandler, handler_edit); router.get('/:lotId/edit', permissionHandlers.updateGetHandler, handler_edit)
router.post("/doGetLotTypeFields", permissionHandlers.updatePostHandler, handler_doGetLotTypeFields);
router.post("/doCreateLot", permissionHandlers.updatePostHandler, handler_doCreateLot);
router.post("/doUpdateLot", permissionHandlers.updatePostHandler, handler_doUpdateLot);
router.post("/doDeleteLot", permissionHandlers.updatePostHandler, handler_doDeleteLot);
router.post("/doAddLotComment", permissionHandlers.updatePostHandler, handler_doAddLotComment);
router.post( router.post(
"/doUpdateLotComment", '/doGetLotTypeFields',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateLotComment handler_doGetLotTypeFields
); )
router.post( router.post(
"/doDeleteLotComment", '/doCreateLot',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteLotComment handler_doCreateLot
); )
export default router; router.post(
'/doUpdateLot',
permissionHandlers.updatePostHandler,
handler_doUpdateLot
)
router.post(
'/doDeleteLot',
permissionHandlers.updatePostHandler,
handler_doDeleteLot
)
router.post(
'/doAddLotComment',
permissionHandlers.updatePostHandler,
handler_doAddLotComment
)
router.post(
'/doUpdateLotComment',
permissionHandlers.updatePostHandler,
handler_doUpdateLotComment
)
router.post(
'/doDeleteLotComment',
permissionHandlers.updatePostHandler,
handler_doDeleteLotComment
)
export default router

View File

@ -1,18 +1,18 @@
import { Router } from "express"; import { Router } from 'express';
import * as permissionHandlers from "../handlers/permissions.js"; import * as permissionHandlers from '../handlers/permissions.js';
import handler_search from "../handlers/maps-get/search.js"; import handler_search from '../handlers/maps-get/search.js';
import handler_view from "../handlers/maps-get/view.js"; import handler_view from '../handlers/maps-get/view.js';
import handler_new from "../handlers/maps-get/new.js"; import handler_new from '../handlers/maps-get/new.js';
import handler_edit from "../handlers/maps-get/edit.js"; import handler_edit from '../handlers/maps-get/edit.js';
import handler_doCreateMap from "../handlers/maps-post/doCreateMap.js"; import handler_doCreateMap from '../handlers/maps-post/doCreateMap.js';
import handler_doUpdateMap from "../handlers/maps-post/doUpdateMap.js"; import handler_doUpdateMap from '../handlers/maps-post/doUpdateMap.js';
import handler_doDeleteMap from "../handlers/maps-post/doDeleteMap.js"; import handler_doDeleteMap from '../handlers/maps-post/doDeleteMap.js';
export const router = Router(); export const router = Router();
router.get("/", handler_search); router.get('/', handler_search);
router.get("/new", permissionHandlers.updateGetHandler, handler_new); router.get('/new', permissionHandlers.updateGetHandler, handler_new);
router.get("/:mapId", handler_view); router.get('/:mapId', handler_view);
router.get("/:mapId/edit", permissionHandlers.updateGetHandler, handler_edit); router.get('/:mapId/edit', permissionHandlers.updateGetHandler, handler_edit);
router.post("/doCreateMap", permissionHandlers.updatePostHandler, handler_doCreateMap); router.post('/doCreateMap', permissionHandlers.updatePostHandler, handler_doCreateMap);
router.post("/doUpdateMap", permissionHandlers.updatePostHandler, handler_doUpdateMap); router.post('/doUpdateMap', permissionHandlers.updatePostHandler, handler_doUpdateMap);
router.post("/doDeleteMap", permissionHandlers.updatePostHandler, handler_doDeleteMap); router.post('/doDeleteMap', permissionHandlers.updatePostHandler, handler_doDeleteMap);
export default router; export default router;

View File

@ -1,43 +1,43 @@
import { Router } from "express"; import { Router } from 'express'
import * as permissionHandlers from "../handlers/permissions.js"; import * as permissionHandlers from '../handlers/permissions.js'
import handler_search from "../handlers/maps-get/search.js"; import handler_search from '../handlers/maps-get/search.js'
import handler_view from "../handlers/maps-get/view.js"; import handler_view from '../handlers/maps-get/view.js'
import handler_new from "../handlers/maps-get/new.js"; import handler_new from '../handlers/maps-get/new.js'
import handler_edit from "../handlers/maps-get/edit.js"; import handler_edit from '../handlers/maps-get/edit.js'
import handler_doCreateMap from "../handlers/maps-post/doCreateMap.js"; import handler_doCreateMap from '../handlers/maps-post/doCreateMap.js'
import handler_doUpdateMap from "../handlers/maps-post/doUpdateMap.js"; import handler_doUpdateMap from '../handlers/maps-post/doUpdateMap.js'
import handler_doDeleteMap from "../handlers/maps-post/doDeleteMap.js"; import handler_doDeleteMap from '../handlers/maps-post/doDeleteMap.js'
export const router = Router(); export const router = Router()
router.get("/", handler_search); router.get('/', handler_search)
router.get("/new", permissionHandlers.updateGetHandler, handler_new); router.get('/new', permissionHandlers.updateGetHandler, handler_new)
router.get("/:mapId", handler_view); router.get('/:mapId', handler_view)
router.get("/:mapId/edit", permissionHandlers.updateGetHandler, handler_edit); router.get('/:mapId/edit', permissionHandlers.updateGetHandler, handler_edit)
router.post( router.post(
"/doCreateMap", '/doCreateMap',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doCreateMap handler_doCreateMap
); )
router.post( router.post(
"/doUpdateMap", '/doUpdateMap',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateMap handler_doUpdateMap
); )
router.post( router.post(
"/doDeleteMap", '/doDeleteMap',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteMap handler_doDeleteMap
); )
export default router; export default router

View File

@ -1,7 +1,7 @@
import { Router } from "express"; import { Router } from 'express';
import handler_screen from "../handlers/print-get/screen.js"; import handler_screen from '../handlers/print-get/screen.js';
import handler_pdf from "../handlers/print-get/pdf.js"; import handler_pdf from '../handlers/print-get/pdf.js';
export const router = Router(); export const router = Router();
router.get("/screen/:printName", handler_screen); router.get('/screen/:printName', handler_screen);
router.get("/pdf/:printName", handler_pdf); router.get('/pdf/:printName', handler_pdf);
export default router; export default router;

View File

@ -1,12 +1,12 @@
import { Router } from "express"; import { Router } from 'express'
import handler_screen from "../handlers/print-get/screen.js"; import handler_screen from '../handlers/print-get/screen.js'
import handler_pdf from "../handlers/print-get/pdf.js"; import handler_pdf from '../handlers/print-get/pdf.js'
export const router = Router(); export const router = Router()
router.get("/screen/:printName", handler_screen); router.get('/screen/:printName', handler_screen)
router.get("/pdf/:printName", handler_pdf); router.get('/pdf/:printName', handler_pdf)
export default router; export default router

View File

@ -1,7 +1,7 @@
import { Router } from "express"; import { Router } from 'express';
import handler_search from "../handlers/reports-get/search.js"; import handler_search from '../handlers/reports-get/search.js';
import handler_reportName from "../handlers/reports-get/reportName.js"; import handler_reportName from '../handlers/reports-get/reportName.js';
export const router = Router(); export const router = Router();
router.get("/", handler_search); router.get('/', handler_search);
router.all("/:reportName", handler_reportName); router.all('/:reportName', handler_reportName);
export default router; export default router;

View File

@ -1,12 +1,12 @@
import { Router } from "express"; import { Router } from 'express'
import handler_search from "../handlers/reports-get/search.js"; import handler_search from '../handlers/reports-get/search.js'
import handler_reportName from "../handlers/reports-get/reportName.js"; import handler_reportName from '../handlers/reports-get/reportName.js'
export const router = Router(); export const router = Router()
router.get("/", handler_search); router.get('/', handler_search)
router.all("/:reportName", handler_reportName); router.all('/:reportName', handler_reportName)
export default router; export default router

View File

@ -1,56 +1,56 @@
import { Router } from "express"; import { Router } from 'express';
import * as permissionHandlers from "../handlers/permissions.js"; import * as permissionHandlers from '../handlers/permissions.js';
import handler_search from "../handlers/workOrders-get/search.js"; import handler_search from '../handlers/workOrders-get/search.js';
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js"; import handler_doSearchWorkOrders from '../handlers/workOrders-post/doSearchWorkOrders.js';
import handler_milestoneCalendar from "../handlers/workOrders-get/milestoneCalendar.js"; import handler_milestoneCalendar from '../handlers/workOrders-get/milestoneCalendar.js';
import handler_doGetWorkOrderMilestones from "../handlers/workOrders-post/doGetWorkOrderMilestones.js"; import handler_doGetWorkOrderMilestones from '../handlers/workOrders-post/doGetWorkOrderMilestones.js';
import handler_outlook from "../handlers/workOrders-get/outlook.js"; import handler_outlook from '../handlers/workOrders-get/outlook.js';
import handler_view from "../handlers/workOrders-get/view.js"; import handler_view from '../handlers/workOrders-get/view.js';
import handler_doReopenWorkOrder from "../handlers/workOrders-post/doReopenWorkOrder.js"; import handler_doReopenWorkOrder from '../handlers/workOrders-post/doReopenWorkOrder.js';
import handler_new from "../handlers/workOrders-get/new.js"; import handler_new from '../handlers/workOrders-get/new.js';
import handler_doCreateWorkOrder from "../handlers/workOrders-post/doCreateWorkOrder.js"; import handler_doCreateWorkOrder from '../handlers/workOrders-post/doCreateWorkOrder.js';
import handler_edit from "../handlers/workOrders-get/edit.js"; import handler_edit from '../handlers/workOrders-get/edit.js';
import handler_doUpdateWorkOrder from "../handlers/workOrders-post/doUpdateWorkOrder.js"; import handler_doUpdateWorkOrder from '../handlers/workOrders-post/doUpdateWorkOrder.js';
import handler_doCloseWorkOrder from "../handlers/workOrders-post/doCloseWorkOrder.js"; import handler_doCloseWorkOrder from '../handlers/workOrders-post/doCloseWorkOrder.js';
import handler_doDeleteWorkOrder from "../handlers/workOrders-post/doDeleteWorkOrder.js"; import handler_doDeleteWorkOrder from '../handlers/workOrders-post/doDeleteWorkOrder.js';
import handler_doAddWorkOrderLotOccupancy from "../handlers/workOrders-post/doAddWorkOrderLotOccupancy.js"; import handler_doAddWorkOrderLotOccupancy from '../handlers/workOrders-post/doAddWorkOrderLotOccupancy.js';
import handler_doDeleteWorkOrderLotOccupancy from "../handlers/workOrders-post/doDeleteWorkOrderLotOccupancy.js"; import handler_doDeleteWorkOrderLotOccupancy from '../handlers/workOrders-post/doDeleteWorkOrderLotOccupancy.js';
import handler_doAddWorkOrderLot from "../handlers/workOrders-post/doAddWorkOrderLot.js"; import handler_doAddWorkOrderLot from '../handlers/workOrders-post/doAddWorkOrderLot.js';
import handler_doUpdateLotStatus from "../handlers/workOrders-post/doUpdateLotStatus.js"; import handler_doUpdateLotStatus from '../handlers/workOrders-post/doUpdateLotStatus.js';
import handler_doDeleteWorkOrderLot from "../handlers/workOrders-post/doDeleteWorkOrderLot.js"; import handler_doDeleteWorkOrderLot from '../handlers/workOrders-post/doDeleteWorkOrderLot.js';
import handler_doAddWorkOrderComment from "../handlers/workOrders-post/doAddWorkOrderComment.js"; import handler_doAddWorkOrderComment from '../handlers/workOrders-post/doAddWorkOrderComment.js';
import handler_doUpdateWorkOrderComment from "../handlers/workOrders-post/doUpdateWorkOrderComment.js"; import handler_doUpdateWorkOrderComment from '../handlers/workOrders-post/doUpdateWorkOrderComment.js';
import handler_doDeleteWorkOrderComment from "../handlers/workOrders-post/doDeleteWorkOrderComment.js"; import handler_doDeleteWorkOrderComment from '../handlers/workOrders-post/doDeleteWorkOrderComment.js';
import handler_doAddWorkOrderMilestone from "../handlers/workOrders-post/doAddWorkOrderMilestone.js"; import handler_doAddWorkOrderMilestone from '../handlers/workOrders-post/doAddWorkOrderMilestone.js';
import handler_doUpdateWorkOrderMilestone from "../handlers/workOrders-post/doUpdateWorkOrderMilestone.js"; import handler_doUpdateWorkOrderMilestone from '../handlers/workOrders-post/doUpdateWorkOrderMilestone.js';
import handler_doCompleteWorkOrderMilestone from "../handlers/workOrders-post/doCompleteWorkOrderMilestone.js"; import handler_doCompleteWorkOrderMilestone from '../handlers/workOrders-post/doCompleteWorkOrderMilestone.js';
import handler_doReopenWorkOrderMilestone from "../handlers/workOrders-post/doReopenWorkOrderMilestone.js"; import handler_doReopenWorkOrderMilestone from '../handlers/workOrders-post/doReopenWorkOrderMilestone.js';
import handler_doDeleteWorkOrderMilestone from "../handlers/workOrders-post/doDeleteWorkOrderMilestone.js"; import handler_doDeleteWorkOrderMilestone from '../handlers/workOrders-post/doDeleteWorkOrderMilestone.js';
export const router = Router(); export const router = Router();
router.get("/", handler_search); router.get('/', handler_search);
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders); router.post('/doSearchWorkOrders', handler_doSearchWorkOrders);
router.get("/milestoneCalendar", handler_milestoneCalendar); router.get('/milestoneCalendar', handler_milestoneCalendar);
router.post("/doGetWorkOrderMilestones", handler_doGetWorkOrderMilestones); router.post('/doGetWorkOrderMilestones', handler_doGetWorkOrderMilestones);
router.get("/outlook", handler_outlook); router.get('/outlook', handler_outlook);
router.get("/new", permissionHandlers.adminGetHandler, handler_new); router.get('/new', permissionHandlers.adminGetHandler, handler_new);
router.post("/doCreateWorkOrder", permissionHandlers.updatePostHandler, handler_doCreateWorkOrder); router.post('/doCreateWorkOrder', permissionHandlers.updatePostHandler, handler_doCreateWorkOrder);
router.get("/:workOrderId", handler_view); router.get('/:workOrderId', handler_view);
router.post("/doReopenWorkOrder", permissionHandlers.updatePostHandler, handler_doReopenWorkOrder); router.post('/doReopenWorkOrder', permissionHandlers.updatePostHandler, handler_doReopenWorkOrder);
router.get("/:workOrderId/edit", permissionHandlers.updateGetHandler, handler_edit); router.get('/:workOrderId/edit', permissionHandlers.updateGetHandler, handler_edit);
router.post("/doUpdateWorkOrder", permissionHandlers.updatePostHandler, handler_doUpdateWorkOrder); router.post('/doUpdateWorkOrder', permissionHandlers.updatePostHandler, handler_doUpdateWorkOrder);
router.post("/doCloseWorkOrder", permissionHandlers.updatePostHandler, handler_doCloseWorkOrder); router.post('/doCloseWorkOrder', permissionHandlers.updatePostHandler, handler_doCloseWorkOrder);
router.post("/doDeleteWorkOrder", permissionHandlers.updatePostHandler, handler_doDeleteWorkOrder); router.post('/doDeleteWorkOrder', permissionHandlers.updatePostHandler, handler_doDeleteWorkOrder);
router.post("/doAddWorkOrderLotOccupancy", permissionHandlers.updatePostHandler, handler_doAddWorkOrderLotOccupancy); router.post('/doAddWorkOrderLotOccupancy', permissionHandlers.updatePostHandler, handler_doAddWorkOrderLotOccupancy);
router.post("/doDeleteWorkOrderLotOccupancy", permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderLotOccupancy); router.post('/doDeleteWorkOrderLotOccupancy', permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderLotOccupancy);
router.post("/doAddWorkOrderLot", permissionHandlers.updatePostHandler, handler_doAddWorkOrderLot); router.post('/doAddWorkOrderLot', permissionHandlers.updatePostHandler, handler_doAddWorkOrderLot);
router.post("/doUpdateLotStatus", permissionHandlers.updatePostHandler, handler_doUpdateLotStatus); router.post('/doUpdateLotStatus', permissionHandlers.updatePostHandler, handler_doUpdateLotStatus);
router.post("/doDeleteWorkOrderLot", permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderLot); router.post('/doDeleteWorkOrderLot', permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderLot);
router.post("/doAddWorkOrderComment", permissionHandlers.updatePostHandler, handler_doAddWorkOrderComment); router.post('/doAddWorkOrderComment', permissionHandlers.updatePostHandler, handler_doAddWorkOrderComment);
router.post("/doUpdateWorkOrderComment", permissionHandlers.updatePostHandler, handler_doUpdateWorkOrderComment); router.post('/doUpdateWorkOrderComment', permissionHandlers.updatePostHandler, handler_doUpdateWorkOrderComment);
router.post("/doDeleteWorkOrderComment", permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderComment); router.post('/doDeleteWorkOrderComment', permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderComment);
router.post("/doAddWorkOrderMilestone", permissionHandlers.updatePostHandler, handler_doAddWorkOrderMilestone); router.post('/doAddWorkOrderMilestone', permissionHandlers.updatePostHandler, handler_doAddWorkOrderMilestone);
router.post("/doUpdateWorkOrderMilestone", permissionHandlers.updatePostHandler, handler_doUpdateWorkOrderMilestone); router.post('/doUpdateWorkOrderMilestone', permissionHandlers.updatePostHandler, handler_doUpdateWorkOrderMilestone);
router.post("/doCompleteWorkOrderMilestone", permissionHandlers.updatePostHandler, handler_doCompleteWorkOrderMilestone); router.post('/doCompleteWorkOrderMilestone', permissionHandlers.updatePostHandler, handler_doCompleteWorkOrderMilestone);
router.post("/doReopenWorkOrderMilestone", permissionHandlers.updatePostHandler, handler_doReopenWorkOrderMilestone); router.post('/doReopenWorkOrderMilestone', permissionHandlers.updatePostHandler, handler_doReopenWorkOrderMilestone);
router.post("/doDeleteWorkOrderMilestone", permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderMilestone); router.post('/doDeleteWorkOrderMilestone', permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderMilestone);
export default router; export default router;

View File

@ -1,189 +1,189 @@
import { Router } from "express"; import { Router } from 'express'
import * as permissionHandlers from "../handlers/permissions.js"; import * as permissionHandlers from '../handlers/permissions.js'
import handler_search from "../handlers/workOrders-get/search.js"; import handler_search from '../handlers/workOrders-get/search.js'
import handler_doSearchWorkOrders from "../handlers/workOrders-post/doSearchWorkOrders.js"; import handler_doSearchWorkOrders from '../handlers/workOrders-post/doSearchWorkOrders.js'
import handler_milestoneCalendar from "../handlers/workOrders-get/milestoneCalendar.js"; import handler_milestoneCalendar from '../handlers/workOrders-get/milestoneCalendar.js'
import handler_doGetWorkOrderMilestones from "../handlers/workOrders-post/doGetWorkOrderMilestones.js"; import handler_doGetWorkOrderMilestones from '../handlers/workOrders-post/doGetWorkOrderMilestones.js'
import handler_outlook from "../handlers/workOrders-get/outlook.js"; import handler_outlook from '../handlers/workOrders-get/outlook.js'
import handler_view from "../handlers/workOrders-get/view.js"; import handler_view from '../handlers/workOrders-get/view.js'
import handler_doReopenWorkOrder from "../handlers/workOrders-post/doReopenWorkOrder.js"; import handler_doReopenWorkOrder from '../handlers/workOrders-post/doReopenWorkOrder.js'
import handler_new from "../handlers/workOrders-get/new.js"; import handler_new from '../handlers/workOrders-get/new.js'
import handler_doCreateWorkOrder from "../handlers/workOrders-post/doCreateWorkOrder.js"; import handler_doCreateWorkOrder from '../handlers/workOrders-post/doCreateWorkOrder.js'
import handler_edit from "../handlers/workOrders-get/edit.js"; import handler_edit from '../handlers/workOrders-get/edit.js'
import handler_doUpdateWorkOrder from "../handlers/workOrders-post/doUpdateWorkOrder.js"; import handler_doUpdateWorkOrder from '../handlers/workOrders-post/doUpdateWorkOrder.js'
import handler_doCloseWorkOrder from "../handlers/workOrders-post/doCloseWorkOrder.js"; import handler_doCloseWorkOrder from '../handlers/workOrders-post/doCloseWorkOrder.js'
import handler_doDeleteWorkOrder from "../handlers/workOrders-post/doDeleteWorkOrder.js"; import handler_doDeleteWorkOrder from '../handlers/workOrders-post/doDeleteWorkOrder.js'
import handler_doAddWorkOrderLotOccupancy from "../handlers/workOrders-post/doAddWorkOrderLotOccupancy.js"; import handler_doAddWorkOrderLotOccupancy from '../handlers/workOrders-post/doAddWorkOrderLotOccupancy.js'
import handler_doDeleteWorkOrderLotOccupancy from "../handlers/workOrders-post/doDeleteWorkOrderLotOccupancy.js"; import handler_doDeleteWorkOrderLotOccupancy from '../handlers/workOrders-post/doDeleteWorkOrderLotOccupancy.js'
import handler_doAddWorkOrderLot from "../handlers/workOrders-post/doAddWorkOrderLot.js"; import handler_doAddWorkOrderLot from '../handlers/workOrders-post/doAddWorkOrderLot.js'
import handler_doUpdateLotStatus from "../handlers/workOrders-post/doUpdateLotStatus.js"; import handler_doUpdateLotStatus from '../handlers/workOrders-post/doUpdateLotStatus.js'
import handler_doDeleteWorkOrderLot from "../handlers/workOrders-post/doDeleteWorkOrderLot.js"; import handler_doDeleteWorkOrderLot from '../handlers/workOrders-post/doDeleteWorkOrderLot.js'
import handler_doAddWorkOrderComment from "../handlers/workOrders-post/doAddWorkOrderComment.js"; import handler_doAddWorkOrderComment from '../handlers/workOrders-post/doAddWorkOrderComment.js'
import handler_doUpdateWorkOrderComment from "../handlers/workOrders-post/doUpdateWorkOrderComment.js"; import handler_doUpdateWorkOrderComment from '../handlers/workOrders-post/doUpdateWorkOrderComment.js'
import handler_doDeleteWorkOrderComment from "../handlers/workOrders-post/doDeleteWorkOrderComment.js"; import handler_doDeleteWorkOrderComment from '../handlers/workOrders-post/doDeleteWorkOrderComment.js'
import handler_doAddWorkOrderMilestone from "../handlers/workOrders-post/doAddWorkOrderMilestone.js"; import handler_doAddWorkOrderMilestone from '../handlers/workOrders-post/doAddWorkOrderMilestone.js'
import handler_doUpdateWorkOrderMilestone from "../handlers/workOrders-post/doUpdateWorkOrderMilestone.js"; import handler_doUpdateWorkOrderMilestone from '../handlers/workOrders-post/doUpdateWorkOrderMilestone.js'
import handler_doCompleteWorkOrderMilestone from "../handlers/workOrders-post/doCompleteWorkOrderMilestone.js"; import handler_doCompleteWorkOrderMilestone from '../handlers/workOrders-post/doCompleteWorkOrderMilestone.js'
import handler_doReopenWorkOrderMilestone from "../handlers/workOrders-post/doReopenWorkOrderMilestone.js"; import handler_doReopenWorkOrderMilestone from '../handlers/workOrders-post/doReopenWorkOrderMilestone.js'
import handler_doDeleteWorkOrderMilestone from "../handlers/workOrders-post/doDeleteWorkOrderMilestone.js"; import handler_doDeleteWorkOrderMilestone from '../handlers/workOrders-post/doDeleteWorkOrderMilestone.js'
export const router = Router(); export const router = Router()
// Search // Search
router.get("/", handler_search); router.get('/', handler_search)
router.post("/doSearchWorkOrders", handler_doSearchWorkOrders); router.post('/doSearchWorkOrders', handler_doSearchWorkOrders)
// Milestone Calendar // Milestone Calendar
router.get("/milestoneCalendar", handler_milestoneCalendar); router.get('/milestoneCalendar', handler_milestoneCalendar)
router.post("/doGetWorkOrderMilestones", handler_doGetWorkOrderMilestones); router.post('/doGetWorkOrderMilestones', handler_doGetWorkOrderMilestones)
// Outlook Integration // Outlook Integration
router.get("/outlook", handler_outlook); router.get('/outlook', handler_outlook)
// New // New
router.get("/new", permissionHandlers.adminGetHandler, handler_new); router.get('/new', permissionHandlers.adminGetHandler, handler_new)
router.post( router.post(
"/doCreateWorkOrder", '/doCreateWorkOrder',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doCreateWorkOrder handler_doCreateWorkOrder
); )
// View // View
router.get("/:workOrderId", handler_view); router.get('/:workOrderId', handler_view)
router.post( router.post(
"/doReopenWorkOrder", '/doReopenWorkOrder',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doReopenWorkOrder handler_doReopenWorkOrder
); )
// Edit // Edit
router.get( router.get(
"/:workOrderId/edit", '/:workOrderId/edit',
permissionHandlers.updateGetHandler, permissionHandlers.updateGetHandler,
handler_edit handler_edit
); )
router.post( router.post(
"/doUpdateWorkOrder", '/doUpdateWorkOrder',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateWorkOrder handler_doUpdateWorkOrder
); )
router.post( router.post(
"/doCloseWorkOrder", '/doCloseWorkOrder',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doCloseWorkOrder handler_doCloseWorkOrder
); )
router.post( router.post(
"/doDeleteWorkOrder", '/doDeleteWorkOrder',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteWorkOrder handler_doDeleteWorkOrder
); )
// Lot Occupancy // Lot Occupancy
router.post( router.post(
"/doAddWorkOrderLotOccupancy", '/doAddWorkOrderLotOccupancy',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doAddWorkOrderLotOccupancy handler_doAddWorkOrderLotOccupancy
); )
router.post( router.post(
"/doDeleteWorkOrderLotOccupancy", '/doDeleteWorkOrderLotOccupancy',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteWorkOrderLotOccupancy handler_doDeleteWorkOrderLotOccupancy
); )
router.post( router.post(
"/doAddWorkOrderLot", '/doAddWorkOrderLot',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doAddWorkOrderLot handler_doAddWorkOrderLot
); )
router.post( router.post(
"/doUpdateLotStatus", '/doUpdateLotStatus',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateLotStatus handler_doUpdateLotStatus
); )
router.post( router.post(
"/doDeleteWorkOrderLot", '/doDeleteWorkOrderLot',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteWorkOrderLot handler_doDeleteWorkOrderLot
); )
// Comments // Comments
router.post( router.post(
"/doAddWorkOrderComment", '/doAddWorkOrderComment',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doAddWorkOrderComment handler_doAddWorkOrderComment
); )
router.post( router.post(
"/doUpdateWorkOrderComment", '/doUpdateWorkOrderComment',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateWorkOrderComment handler_doUpdateWorkOrderComment
); )
router.post( router.post(
"/doDeleteWorkOrderComment", '/doDeleteWorkOrderComment',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteWorkOrderComment handler_doDeleteWorkOrderComment
); )
// Milestones // Milestones
router.post( router.post(
"/doAddWorkOrderMilestone", '/doAddWorkOrderMilestone',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doAddWorkOrderMilestone handler_doAddWorkOrderMilestone
); )
router.post( router.post(
"/doUpdateWorkOrderMilestone", '/doUpdateWorkOrderMilestone',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doUpdateWorkOrderMilestone handler_doUpdateWorkOrderMilestone
); )
router.post( router.post(
"/doCompleteWorkOrderMilestone", '/doCompleteWorkOrderMilestone',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doCompleteWorkOrderMilestone handler_doCompleteWorkOrderMilestone
); )
router.post( router.post(
"/doReopenWorkOrderMilestone", '/doReopenWorkOrderMilestone',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doReopenWorkOrderMilestone handler_doReopenWorkOrderMilestone
); )
router.post( router.post(
"/doDeleteWorkOrderMilestone", '/doDeleteWorkOrderMilestone',
permissionHandlers.updatePostHandler, permissionHandlers.updatePostHandler,
handler_doDeleteWorkOrderMilestone handler_doDeleteWorkOrderMilestone
); )
export default router; export default router

View File

@ -1,25 +1,18 @@
import fs from "node:fs"; import fs from 'node:fs';
import * as sql from "@cityssm/mssql-multi-pool"; import * as sql from '@cityssm/mssql-multi-pool';
import { soMSSQL } from "./config.js"; import { soMSSQL } from './config.js';
async function importMaps() { async function importMaps() {
let pool; let pool;
try { try {
pool = await sql.connect(soMSSQL); pool = await sql.connect(soMSSQL);
const result = await pool.query("select m.ID as mapId, m.Name as mapName," + const result = await pool.query('select m.ID as mapId, m.Name as mapName,' +
" l.ID as layerId, l.Name as layerName, l.Image as layerImage" + ' l.ID as layerId, l.Name as layerName, l.Image as layerImage' +
" from Legacy_Maps m" + ' from Legacy_Maps m' +
" left join Legacy_Layers l on m.ID = l.Map_ID"); ' left join Legacy_Layers l on m.ID = l.Map_ID');
for (const layer of result.recordset) { for (const layer of result.recordset) {
const imageBuffer = layer.layerImage; const imageBuffer = layer.layerImage;
const fileName = layer.mapName + const fileName = `${layer.mapName} - ${layer.layerName} (${layer.mapId}, ${layer.layerId}).wmf`;
" - " + fs.writeFile('./temp/wmf/' + fileName, imageBuffer, (error) => {
layer.layerName +
" (" +
layer.mapId +
", " +
layer.layerId +
").wmf";
fs.writeFile("./temp/wmf/" + fileName, imageBuffer, (error) => {
if (error) { if (error) {
console.log(error); console.log(error);
} }

View File

@ -1,51 +1,43 @@
/* eslint-disable node/no-extraneous-import, node/no-unpublished-import */ /* eslint-disable node/no-extraneous-import, node/no-unpublished-import */
import fs from "node:fs"; import fs from 'node:fs'
import * as sql from "@cityssm/mssql-multi-pool"; import * as sql from '@cityssm/mssql-multi-pool'
import { soMSSQL } from "./config.js"; import { soMSSQL } from './config.js'
import type * as sqlTypes from "mssql"; import type * as sqlTypes from 'mssql'
async function importMaps() { async function importMaps(): Promise<void> {
let pool: sqlTypes.ConnectionPool; let pool: sqlTypes.ConnectionPool
try { try {
pool = await sql.connect(soMSSQL); pool = await sql.connect(soMSSQL)
const result = await pool.query( const result = await pool.query(
"select m.ID as mapId, m.Name as mapName," + 'select m.ID as mapId, m.Name as mapName,' +
" l.ID as layerId, l.Name as layerName, l.Image as layerImage" + ' l.ID as layerId, l.Name as layerName, l.Image as layerImage' +
" from Legacy_Maps m" + ' from Legacy_Maps m' +
" left join Legacy_Layers l on m.ID = l.Map_ID" ' left join Legacy_Layers l on m.ID = l.Map_ID'
); )
for (const layer of result.recordset) { for (const layer of result.recordset) {
const imageBuffer: Buffer = layer.layerImage; const imageBuffer: Buffer = layer.layerImage
const fileName = const fileName = `${layer.mapName} - ${layer.layerName} (${layer.mapId}, ${layer.layerId}).wmf`
layer.mapName +
" - " +
layer.layerName +
" (" +
layer.mapId +
", " +
layer.layerId +
").wmf";
fs.writeFile("./temp/wmf/" + fileName, imageBuffer, (error) => { fs.writeFile('./temp/wmf/' + fileName, imageBuffer, (error) => {
if (error) { if (error) {
console.log(error); console.log(error)
}
});
}
} catch {
// ignore
} finally {
try {
pool.close();
} catch {
// ignore
} }
})
} }
} catch {
// ignore
} finally {
try {
pool.close()
} catch {
// ignore
}
}
} }
await importMaps(); await importMaps()

View File

@ -1,9 +1,9 @@
import * as assert from "assert"; import * as assert from 'node:assert';
import fs from "node:fs"; import fs from 'node:fs';
import { version } from "../version.js"; import { version } from '../version.js';
describe("version", () => { describe('version', () => {
it("has a version that matches the package.json", () => { it('has a version that matches the package.json', () => {
const packageJSON = JSON.parse(fs.readFileSync("package.json", "utf8")); const packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf8'));
assert.strictEqual(version, packageJSON.version); assert.strictEqual(version, packageJSON.version);
}); });
}); });

View File

@ -1,12 +1,12 @@
import * as assert from "assert"; import * as assert from 'node:assert'
import fs from "node:fs"; import fs from 'node:fs'
import { version } from "../version.js"; import { version } from '../version.js'
describe("version", () => { describe('version', () => {
it("has a version that matches the package.json", () => { it('has a version that matches the package.json', () => {
const packageJSON = JSON.parse(fs.readFileSync("package.json", "utf8")); const packageJSON = JSON.parse(fs.readFileSync('package.json', 'utf8'))
assert.strictEqual(version, packageJSON.version); assert.strictEqual(version, packageJSON.version)
}); })
}); })

View File

@ -58,7 +58,7 @@ export interface Config {
recordDeleteAgeDays?: number; recordDeleteAgeDays?: number;
}; };
printPdf: { printPdf: {
contentDisposition?: "attachment" | "inline"; contentDisposition?: 'attachment' | 'inline';
}; };
}; };
} }

View File

@ -1,93 +1,93 @@
export interface Config { export interface Config {
application: ConfigApplication; application: ConfigApplication
session: ConfigSession; session: ConfigSession
reverseProxy: { reverseProxy: {
disableCompression?: boolean; disableCompression?: boolean
disableEtag?: boolean; disableEtag?: boolean
urlPrefix?: string; urlPrefix?: string
}; }
activeDirectory?: ConfigActiveDirectory; activeDirectory?: ConfigActiveDirectory
users: { users: {
testing?: string[]; testing?: string[]
canLogin?: string[]; canLogin?: string[]
canUpdate?: string[]; canUpdate?: string[]
isAdmin?: string[]; isAdmin?: string[]
}; }
aliases: { aliases: {
lot?: string; lot?: string
lots?: string; lots?: string
map?: string; map?: string
maps?: string; maps?: string
occupancy?: string; occupancy?: string
occupancies?: string; occupancies?: string
occupancyStartDate?: string; occupancyStartDate?: string
occupant?: string; occupant?: string
occupants?: string; occupants?: string
externalReceiptNumber?: string; externalReceiptNumber?: string
workOrderOpenDate?: string; workOrderOpenDate?: string
workOrderCloseDate?: string; workOrderCloseDate?: string
}; }
settings: { settings: {
fees: { fees: {
taxPercentageDefault?: number; taxPercentageDefault?: number
}; }
map: { map: {
mapCityDefault?: string; mapCityDefault?: string
mapProvinceDefault?: string; mapProvinceDefault?: string
}; }
lot: { lot: {
lotNamePattern?: RegExp; lotNamePattern?: RegExp
lotNameHelpText?: string; lotNameHelpText?: string
lotNameSortNameFunction?: (lotName: string) => string; lotNameSortNameFunction?: (lotName: string) => string
}; }
lotOccupancy: { lotOccupancy: {
lotIdIsRequired?: boolean; lotIdIsRequired?: boolean
occupancyEndDateIsRequired?: boolean; occupancyEndDateIsRequired?: boolean
occupantCityDefault?: string; occupantCityDefault?: string
occupantProvinceDefault?: string; occupantProvinceDefault?: string
prints?: string[]; prints?: string[]
}; }
workOrders: { workOrders: {
workOrderNumberLength?: number; workOrderNumberLength?: number
workOrderMilestoneDateRecentBeforeDays?: number; workOrderMilestoneDateRecentBeforeDays?: number
workOrderMilestoneDateRecentAfterDays?: number; workOrderMilestoneDateRecentAfterDays?: number
calendarEmailAddress?: string; calendarEmailAddress?: string
prints?: string[]; prints?: string[]
}; }
adminCleanup: { adminCleanup: {
recordDeleteAgeDays?: number; recordDeleteAgeDays?: number
}; }
printPdf: { printPdf: {
contentDisposition?: "attachment" | "inline"; contentDisposition?: 'attachment' | 'inline'
} }
}; }
} }
interface ConfigApplication { interface ConfigApplication {
applicationName?: string; applicationName?: string
backgroundURL?: string; backgroundURL?: string
logoURL?: string; logoURL?: string
httpPort?: number; httpPort?: number
userDomain?: string; userDomain?: string
useTestDatabases?: boolean; useTestDatabases?: boolean
ntfyStartup?: ConfigNtfyStartup; ntfyStartup?: ConfigNtfyStartup
} }
export interface ConfigNtfyStartup { export interface ConfigNtfyStartup {
topic: string; topic: string
server?: string; server?: string
} }
interface ConfigSession { interface ConfigSession {
cookieName?: string; cookieName?: string
secret?: string; secret?: string
maxAgeMillis?: number; maxAgeMillis?: number
doKeepAlive?: boolean; doKeepAlive?: boolean
} }
export interface ConfigActiveDirectory { export interface ConfigActiveDirectory {
url: string; url: string
baseDN: string; baseDN: string
username: string; username: string
password: string; password: string
} }

View File

@ -1,7 +1,7 @@
export interface LOS { export interface LOS {
urlPrefix: string; urlPrefix: string;
apiKey: string; apiKey: string;
highlightMap: (mapContainerElement: HTMLElement, mapKey: string, contextualClass: "success" | "danger") => void; highlightMap: (mapContainerElement: HTMLElement, mapKey: string, contextualClass: 'success' | 'danger') => void;
initializeDatePickers: (containerElement: HTMLElement) => void; initializeDatePickers: (containerElement: HTMLElement) => void;
initializeUnlockFieldButtons: (containerElement: HTMLElement) => void; initializeUnlockFieldButtons: (containerElement: HTMLElement) => void;
populateAliases: (containerElement: HTMLElement) => void; populateAliases: (containerElement: HTMLElement) => void;

View File

@ -1,63 +1,75 @@
export interface LOS { export interface LOS {
urlPrefix: string; urlPrefix: string
apiKey: string; apiKey: string
highlightMap: ( highlightMap: (
mapContainerElement: HTMLElement, mapContainerElement: HTMLElement,
mapKey: string, mapKey: string,
contextualClass: "success" | "danger" contextualClass: 'success' | 'danger'
) => void; ) => void
initializeDatePickers: (containerElement: HTMLElement) => void; initializeDatePickers: (containerElement: HTMLElement) => void
// initializeTimePickers: (containerElement: HTMLElement) => void; // initializeTimePickers: (containerElement: HTMLElement) => void;
initializeUnlockFieldButtons: (containerElement: HTMLElement) => void; initializeUnlockFieldButtons: (containerElement: HTMLElement) => void
populateAliases: (containerElement: HTMLElement) => void; populateAliases: (containerElement: HTMLElement) => void
escapedAliases: { escapedAliases: {
Map: string; Map: string
map: string; map: string
Maps: string; Maps: string
maps: string; maps: string
Lot: string; Lot: string
lot: string; lot: string
Lots: string; Lots: string
lots: string; lots: string
Occupancy: string; Occupancy: string
occupancy: string; occupancy: string
Occupancies: string; Occupancies: string
occupancies: string; occupancies: string
Occupant: string; Occupant: string
occupant: string; occupant: string
Occupants: string; Occupants: string
occupants: string; occupants: string
ExternalReceiptNumber: string; ExternalReceiptNumber: string
externalReceiptNumber: string; externalReceiptNumber: string
OccupancyStartDate: string; OccupancyStartDate: string
occupancyStartDate: string; occupancyStartDate: string
WorkOrderOpenDate: string; WorkOrderOpenDate: string
workOrderOpenDate: string; workOrderOpenDate: string
WorkOrderCloseDate: string; WorkOrderCloseDate: string
workOrderCloseDate: string; workOrderCloseDate: string
}; }
getRandomColor: (seedString: string) => string; getRandomColor: (seedString: string) => string
setUnsavedChanges: () => void; setUnsavedChanges: () => void
clearUnsavedChanges: () => void; clearUnsavedChanges: () => void
hasUnsavedChanges: () => boolean; hasUnsavedChanges: () => boolean
getMoveUpDownButtonFieldHTML: ( getMoveUpDownButtonFieldHTML: (
upButtonClassNames: string, upButtonClassNames: string,
downButtonClassNames: string, downButtonClassNames: string,
isSmall?: boolean isSmall?: boolean
) => string; ) => string
getLoadingParagraphHTML: (captionText?: string) => string; getLoadingParagraphHTML: (captionText?: string) => string
getSearchResultsPagerHTML: (limit: number, offset: number, count: number) => string; getSearchResultsPagerHTML: (
limit: number,
offset: number,
count: number
) => string
getMapURL: (mapId?: number | string, edit?: boolean, time?: boolean) => string; getMapURL: (mapId?: number | string, edit?: boolean, time?: boolean) => string
getLotURL: (lotId?: number | string, edit?: boolean, time?: boolean) => string; getLotURL: (lotId?: number | string, edit?: boolean, time?: boolean) => string
getLotOccupancyURL: (lotOccupancyId?: number | string, edit?: boolean, time?: boolean) => string; getLotOccupancyURL: (
getWorkOrderURL: (workOrderId?: number | string, edit?: boolean, time?: boolean) => string; lotOccupancyId?: number | string,
edit?: boolean,
time?: boolean
) => string
getWorkOrderURL: (
workOrderId?: number | string,
edit?: boolean,
time?: boolean
) => string
} }

View File

@ -1,7 +1,7 @@
import { Service } from "node-windows"; import { Service } from 'node-windows';
import { serviceConfig } from "./windowsService.js"; import { serviceConfig } from './windowsService.js';
const svc = new Service(serviceConfig); const svc = new Service(serviceConfig);
svc.on("install", () => { svc.on('install', () => {
svc.start(); svc.start();
}); });
svc.install(); svc.install();

View File

@ -1,13 +1,13 @@
import { Service } from "node-windows"; import { Service } from 'node-windows'
import { serviceConfig } from "./windowsService.js"; import { serviceConfig } from './windowsService.js'
// Create a new service object // Create a new service object
const svc = new Service(serviceConfig); const svc = new Service(serviceConfig)
// Listen for the "install" event, which indicates the // Listen for the "install" event, which indicates the
// process is available as a service. // process is available as a service.
svc.on("install", () => { svc.on('install', () => {
svc.start(); svc.start()
}); })
svc.install(); svc.install()

View File

@ -1,8 +1,8 @@
import { Service } from "node-windows"; import { Service } from 'node-windows';
import { serviceConfig } from "./windowsService.js"; import { serviceConfig } from './windowsService.js';
const svc = new Service(serviceConfig); const svc = new Service(serviceConfig);
svc.on("uninstall", function () { svc.on('uninstall', function () {
console.log("Uninstall complete."); console.log('Uninstall complete.');
console.log("The service exists:", svc.exists); console.log('The service exists:', svc.exists);
}); });
svc.uninstall(); svc.uninstall();

View File

@ -1,14 +1,14 @@
import { Service } from "node-windows"; import { Service } from 'node-windows'
import { serviceConfig } from "./windowsService.js"; import { serviceConfig } from './windowsService.js'
// Create a new service object // Create a new service object
const svc = new Service(serviceConfig); const svc = new Service(serviceConfig)
// Listen for the "uninstall" event so we know when it's done. // Listen for the "uninstall" event so we know when it's done.
svc.on("uninstall", function () { svc.on('uninstall', function () {
console.log("Uninstall complete."); console.log('Uninstall complete.')
console.log("The service exists:", svc.exists); console.log('The service exists:', svc.exists)
}); })
// Uninstall the service. // Uninstall the service.
svc.uninstall(); svc.uninstall()

2
windowsService.d.ts vendored
View File

@ -1,2 +1,2 @@
import type { ServiceConfig } from "node-windows"; import type { ServiceConfig } from 'node-windows';
export declare const serviceConfig: ServiceConfig; export declare const serviceConfig: ServiceConfig;

View File

@ -1,7 +1,7 @@
import path from "path"; import path from 'node:path';
const __dirname = "."; const _dirname = '.';
export const serviceConfig = { export const serviceConfig = {
name: "Lot Occupancy Manager", name: 'Lot Occupancy Manager',
description: "A system for managing the occupancy of lots. (i.e. Cemetery management)", description: 'A system for managing the occupancy of lots. (i.e. Cemetery management)',
script: path.join(__dirname, "bin", "www.js") script: path.join(_dirname, 'bin', 'www.js')
}; };

View File

@ -1,11 +1,11 @@
import path from "path"; import path from 'node:path'
import type { ServiceConfig } from "node-windows"; import type { ServiceConfig } from 'node-windows'
const __dirname = "."; const _dirname = '.'
export const serviceConfig: ServiceConfig = { export const serviceConfig: ServiceConfig = {
name: "Lot Occupancy Manager", name: 'Lot Occupancy Manager',
description: description:
"A system for managing the occupancy of lots. (i.e. Cemetery management)", 'A system for managing the occupancy of lots. (i.e. Cemetery management)',
script: path.join(__dirname, "bin", "www.js") script: path.join(_dirname, 'bin', 'www.js')
}; }