diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..339a829 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +*/node_modules/ +**/node_modules/ +*/build/ +**/build/ +.DS_Store +.env \ No newline at end of file diff --git a/app-shell/src/_schema.json b/app-shell/src/_schema.json index fa20939..7c869e5 100644 --- a/app-shell/src/_schema.json +++ b/app-shell/src/_schema.json @@ -1,5 +1,4 @@ - - { - "Initial version": "{\"iv\":\"ghKFq+2bC7Fw3pws\",\"encryptedData\":\"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\"}" -} + "Initial version": "{\"iv\":\"ghKFq+2bC7Fw3pws\",\"encryptedData\":\"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\"}", + "": "{\"iv\":\"Y0Ps2iAxPfbc/Lnb\",\"encryptedData\":\"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\"}" +} \ No newline at end of file diff --git a/backend/src/db/api/installations.js b/backend/src/db/api/installations.js index b669cdc..eb90f5b 100644 --- a/backend/src/db/api/installations.js +++ b/backend/src/db/api/installations.js @@ -38,6 +38,16 @@ module.exports = class InstallationsDBApi { controller: data.controller || + null + , + + customer_name: data.customer_name + || + null + , + + place: data.place + || null , @@ -82,6 +92,16 @@ module.exports = class InstallationsDBApi { controller: item.controller || null + , + + customer_name: item.customer_name + || + null + , + + place: item.place + || + null , importHash: item.importHash || null, @@ -114,6 +134,10 @@ module.exports = class InstallationsDBApi { if (data.controller !== undefined) updatePayload.controller = data.controller; + if (data.customer_name !== undefined) updatePayload.customer_name = data.customer_name; + + if (data.place !== undefined) updatePayload.place = data.place; + updatePayload.updatedById = currentUser.id; await installations.update(updatePayload, {transaction}); @@ -231,6 +255,28 @@ module.exports = class InstallationsDBApi { }; } + if (filter.customer_name) { + where = { + ...where, + [Op.and]: Utils.ilike( + 'installations', + 'customer_name', + filter.customer_name, + ), + }; + } + + if (filter.place) { + where = { + ...where, + [Op.and]: Utils.ilike( + 'installations', + 'place', + filter.place, + ), + }; + } + if (filter.installation_dateRange) { const [start, end] = filter.installation_dateRange; @@ -339,7 +385,7 @@ module.exports = class InstallationsDBApi { { ['id']: Utils.uuid(query) }, Utils.ilike( 'installations', - 'email', + 'place', query, ), ], @@ -347,16 +393,16 @@ module.exports = class InstallationsDBApi { } const records = await db.installations.findAll({ - attributes: [ 'id', 'email' ], + attributes: [ 'id', 'place' ], where, limit: limit ? Number(limit) : undefined, offset: offset ? Number(offset) : undefined, - orderBy: [['email', 'ASC']], + orderBy: [['place', 'ASC']], }); return records.map((record) => ({ id: record.id, - label: record.email, + label: record.place, })); } diff --git a/backend/src/db/migrations/1760530098426.js b/backend/src/db/migrations/1760530098426.js new file mode 100644 index 0000000..850a348 --- /dev/null +++ b/backend/src/db/migrations/1760530098426.js @@ -0,0 +1,54 @@ +module.exports = { + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async up(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + + await queryInterface.addColumn( + 'installations', + 'customer_name', + { + type: Sequelize.DataTypes.TEXT, + + }, + { transaction } + ); + + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async down(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + + await queryInterface.removeColumn( + 'installations', + 'customer_name', + { transaction } + ); + + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + } +}; diff --git a/backend/src/db/migrations/1760530104335.js b/backend/src/db/migrations/1760530104335.js new file mode 100644 index 0000000..24e1358 --- /dev/null +++ b/backend/src/db/migrations/1760530104335.js @@ -0,0 +1,54 @@ +module.exports = { + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async up(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + + await queryInterface.addColumn( + 'installations', + 'place', + { + type: Sequelize.DataTypes.TEXT, + + }, + { transaction } + ); + + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + }, + /** + * @param {QueryInterface} queryInterface + * @param {Sequelize} Sequelize + * @returns {Promise} + */ + async down(queryInterface, Sequelize) { + /** + * @type {Transaction} + */ + const transaction = await queryInterface.sequelize.transaction(); + try { + + await queryInterface.removeColumn( + 'installations', + 'place', + { transaction } + ); + + await transaction.commit(); + } catch (err) { + await transaction.rollback(); + throw err; + } + } +}; diff --git a/backend/src/db/models/installations.js b/backend/src/db/models/installations.js index 888e941..87ac776 100644 --- a/backend/src/db/models/installations.js +++ b/backend/src/db/models/installations.js @@ -67,6 +67,16 @@ controller: { }, +customer_name: { + type: DataTypes.TEXT, + + }, + +place: { + type: DataTypes.TEXT, + + }, + importHash: { type: DataTypes.STRING(255), allowNull: true, diff --git a/backend/src/routes/installations.js b/backend/src/routes/installations.js index 274764a..0cfacea 100644 --- a/backend/src/routes/installations.js +++ b/backend/src/routes/installations.js @@ -23,6 +23,12 @@ const { parse } = require('json2csv'); * customer_details: * type: string * default: customer_details + * customer_name: + * type: string + * default: customer_name + * place: + * type: string + * default: place * * @@ -281,7 +287,7 @@ router.get('/', wrapAsync(async (req, res) => { req.query, { currentUser } ); if (filetype && filetype === 'csv') { - const fields = ['id','email','customer_details', + const fields = ['id','email','customer_details','customer_name','place', 'installation_date', ]; diff --git a/backend/src/services/search.js b/backend/src/services/search.js index f5e8a4b..a9e3e8b 100644 --- a/backend/src/services/search.js +++ b/backend/src/services/search.js @@ -61,6 +61,10 @@ module.exports = class SearchService { "customer_details", + "customer_name", + + "place", + ], }; diff --git a/cloudbuild.yaml b/cloudbuild.yaml new file mode 100644 index 0000000..def6972 --- /dev/null +++ b/cloudbuild.yaml @@ -0,0 +1,14 @@ +steps: + - name: 'gcr.io/cloud-builders/docker' + entrypoint: 'bash' + args: ['-c', 'docker pull gcr.io/fldemo-315215/employee-portal-34976-dev:latest || exit 0'] + - name: 'gcr.io/cloud-builders/docker' + args: [ + 'build', + '-t', 'gcr.io/fldemo-315215/employee-portal-34976-dev:latest', + '--file', 'Dockerfile.dev', + '--cache-from', 'gcr.io/fldemo-315215/employee-portal-34976-dev:latest', + '.' + ] +images: ['gcr.io/fldemo-315215/employee-portal-34976-dev:latest'] +logsBucket: 'gs://fldemo-315215-cloudbuild-logs' \ No newline at end of file diff --git a/frontend/json/runtimeError.json b/frontend/json/runtimeError.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/frontend/json/runtimeError.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/frontend/src/components/Installations/CardInstallations.tsx b/frontend/src/components/Installations/CardInstallations.tsx index 269a556..15fb4ec 100644 --- a/frontend/src/components/Installations/CardInstallations.tsx +++ b/frontend/src/components/Installations/CardInstallations.tsx @@ -46,7 +46,7 @@ const CardInstallations = ({ }`} > - {item.email} + {item.place}
@@ -115,6 +115,24 @@ const CardInstallations = ({
+
+
Customer name
+
+
+ { item.customer_name } +
+
+
+ +
+
Place
+
+
+ { item.place } +
+
+
+ ))} diff --git a/frontend/src/components/Installations/ListInstallations.tsx b/frontend/src/components/Installations/ListInstallations.tsx index 944f390..60076c6 100644 --- a/frontend/src/components/Installations/ListInstallations.tsx +++ b/frontend/src/components/Installations/ListInstallations.tsx @@ -65,6 +65,16 @@ const ListInstallations = ({ installations, loading, onDelete, currentPage, numP

{ dataFormatter.usersOneListFormatter(item.manager) }

+
+

Customer name

+

{ item.customer_name }

+
+ +
+

Place

+

{ item.place }

+
+ { manager: null, + 'customer_name': '', + + 'place': '', + } const [initialValues, setInitialValues] = useState(initVals) @@ -167,6 +171,24 @@ const EditInstallations = () => { > + + + + + + + + diff --git a/frontend/src/pages/installations/installations-edit.tsx b/frontend/src/pages/installations/installations-edit.tsx index b67783e..b58ac22 100644 --- a/frontend/src/pages/installations/installations-edit.tsx +++ b/frontend/src/pages/installations/installations-edit.tsx @@ -45,6 +45,10 @@ const EditInstallationsPage = () => { manager: null, + 'customer_name': '', + + 'place': '', + } const [initialValues, setInitialValues] = useState(initVals) @@ -165,6 +169,24 @@ const EditInstallationsPage = () => { > + + + + + + + + diff --git a/frontend/src/pages/installations/installations-list.tsx b/frontend/src/pages/installations/installations-list.tsx index de41084..d94c02f 100644 --- a/frontend/src/pages/installations/installations-list.tsx +++ b/frontend/src/pages/installations/installations-list.tsx @@ -22,7 +22,7 @@ const InstallationsTablesPage = () => { const dispatch = useAppDispatch(); - const [filters] = useState([{label: 'Email', title: 'email'},{label: 'CustomerDetails', title: 'customer_details'}, + const [filters] = useState([{label: 'Email', title: 'email'},{label: 'CustomerDetails', title: 'customer_details'},{label: 'Customer name', title: 'customer_name'},{label: 'Place', title: 'place'}, {label: 'InstallationDate', title: 'installation_date', date: 'true'}, diff --git a/frontend/src/pages/installations/installations-new.tsx b/frontend/src/pages/installations/installations-new.tsx index e34184e..7061402 100644 --- a/frontend/src/pages/installations/installations-new.tsx +++ b/frontend/src/pages/installations/installations-new.tsx @@ -37,6 +37,10 @@ const initialValues = { manager: '', + customer_name: '', + + place: '', + } const InstallationsNew = () => { @@ -124,6 +128,24 @@ const InstallationsNew = () => { + + + + + + + + diff --git a/frontend/src/pages/installations/installations-table.tsx b/frontend/src/pages/installations/installations-table.tsx index 65a9182..3ad7d7c 100644 --- a/frontend/src/pages/installations/installations-table.tsx +++ b/frontend/src/pages/installations/installations-table.tsx @@ -22,7 +22,7 @@ const InstallationsTablesPage = () => { const dispatch = useAppDispatch(); - const [filters] = useState([{label: 'Email', title: 'email'},{label: 'CustomerDetails', title: 'customer_details'}, + const [filters] = useState([{label: 'Email', title: 'email'},{label: 'CustomerDetails', title: 'customer_details'},{label: 'Customer name', title: 'customer_name'},{label: 'Place', title: 'place'}, {label: 'InstallationDate', title: 'installation_date', date: 'true'}, diff --git a/frontend/src/pages/installations/installations-view.tsx b/frontend/src/pages/installations/installations-view.tsx index 116e634..26eb23e 100644 --- a/frontend/src/pages/installations/installations-view.tsx +++ b/frontend/src/pages/installations/installations-view.tsx @@ -88,6 +88,16 @@ const InstallationsView = () => { +
+

Customer name

+

{installations?.customer_name}

+
+ +
+

Place

+

{installations?.place}

+
+ { Controller + Customer name + + Place + @@ -125,6 +129,14 @@ const UsersView = () => { { item.controller } + + { item.customer_name } + + + + { item.place } + + ))} diff --git a/pids/backend.pid b/pids/backend.pid new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/pids/backend.pid @@ -0,0 +1 @@ +4 diff --git a/pids/frontend.pid b/pids/frontend.pid new file mode 100644 index 0000000..00750ed --- /dev/null +++ b/pids/frontend.pid @@ -0,0 +1 @@ +3