From 65dc763357e7cf783663558a467c7c45fb73a77a Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Sun, 29 Mar 2026 05:29:23 +0000 Subject: [PATCH] Autosave: 20260329-052922 --- .perm_test_apache | 0 .perm_test_exec | 0 assets/pasted-20260329-051144-5bfe6900.png | Bin 0 -> 172397 bytes backend/src/db/api/quartiers.js | 211 ++++++++++++++++ backend/src/db/api/type_usages.js | 207 ++++++++++++++++ backend/src/db/api/villages.js | 226 ++++++++++++++++++ .../20260329060000-gforage-reference-data.js | 214 +++++++++++++++++ backend/src/db/models/quartiers.js | 50 ++++ backend/src/db/models/type_usages.js | 51 ++++ backend/src/db/models/villages.js | 62 +++++ ...329061000-gforage-reference-permissions.js | 115 +++++++++ backend/src/index.js | 6 + backend/src/routes/quartiers.js | 78 ++++++ backend/src/routes/type_usages.js | 78 ++++++ backend/src/routes/villages.js | 78 ++++++ backend/src/services/quartiers.js | 111 +++++++++ backend/src/services/type_usages.js | 111 +++++++++ backend/src/services/villages.js | 111 +++++++++ .../vm-shot-2026-03-29T05-06-17-032Z.jpg | Bin 0 -> 51535 bytes frontend/src/components/NavBarItem.tsx | 3 +- frontend/src/layouts/Authenticated.tsx | 3 +- frontend/src/menuAside.ts | 8 + frontend/src/pages/g-forage/referentials.tsx | 191 +++++++++++++++ 23 files changed, 1910 insertions(+), 4 deletions(-) create mode 100644 .perm_test_apache create mode 100644 .perm_test_exec create mode 100644 assets/pasted-20260329-051144-5bfe6900.png create mode 100644 backend/src/db/api/quartiers.js create mode 100644 backend/src/db/api/type_usages.js create mode 100644 backend/src/db/api/villages.js create mode 100644 backend/src/db/migrations/20260329060000-gforage-reference-data.js create mode 100644 backend/src/db/models/quartiers.js create mode 100644 backend/src/db/models/type_usages.js create mode 100644 backend/src/db/models/villages.js create mode 100644 backend/src/db/seeders/20260329061000-gforage-reference-permissions.js create mode 100644 backend/src/routes/quartiers.js create mode 100644 backend/src/routes/type_usages.js create mode 100644 backend/src/routes/villages.js create mode 100644 backend/src/services/quartiers.js create mode 100644 backend/src/services/type_usages.js create mode 100644 backend/src/services/villages.js create mode 100644 frontend/public/assets/vm-shot-2026-03-29T05-06-17-032Z.jpg create mode 100644 frontend/src/pages/g-forage/referentials.tsx diff --git a/.perm_test_apache b/.perm_test_apache new file mode 100644 index 0000000..e69de29 diff --git a/.perm_test_exec b/.perm_test_exec new file mode 100644 index 0000000..e69de29 diff --git a/assets/pasted-20260329-051144-5bfe6900.png b/assets/pasted-20260329-051144-5bfe6900.png new file mode 100644 index 0000000000000000000000000000000000000000..c278ee2ee3becfe12be9043d3e20ca89c0ea2d79 GIT binary patch literal 172397 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%0AA>mMYHZ#Zh#KXysI`Px)wb*N6x@`R~D41c=3C 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 lr04&he+SL~yO_nHu;Lz ({ + id: item.id || undefined, + nom: item.nom || null, + notes: item.notes || null, + villageId: item.villageId || item.village || null, + importHash: item.importHash || null, + createdById: currentUser.id, + updatedById: currentUser.id, + createdAt: new Date(Date.now() + index * 1000), + })); + + return db.quartiers.bulkCreate(rows, { transaction }); + } + + static async update(id, data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + const record = await db.quartiers.findByPk(id, { transaction }); + + const payload = { + updatedById: currentUser.id, + }; + + if (data.nom !== undefined) payload.nom = data.nom; + if (data.notes !== undefined) payload.notes = data.notes; + + await record.update(payload, { transaction }); + + if (data.village !== undefined || data.villageId !== undefined) { + await record.setVillage(data.village || data.villageId || null, { transaction }); + } + + return record; + } + + static async deleteByIds(ids, options) { + const transaction = (options && options.transaction) || undefined; + + const records = await db.quartiers.findAll({ + where: { + id: { + [Op.in]: ids, + }, + }, + transaction, + }); + + for (const record of records) { + await record.destroy({ transaction }); + } + + return records; + } + + static async remove(id, options) { + const transaction = (options && options.transaction) || undefined; + const record = await db.quartiers.findByPk(id, { transaction }); + + await record.destroy({ transaction }); + + return record; + } + + static async findBy(where, options) { + const transaction = (options && options.transaction) || undefined; + const record = await db.quartiers.findOne({ + where, + include: [ + { + model: db.villages, + as: 'village', + attributes: ['id', 'nom'], + }, + ], + transaction, + }); + + if (!record) { + return record; + } + + return record.get({ plain: true }); + } + + static async findAll(filter, options) { + const limit = filter.limit || 0; + const currentPage = +filter.page || 0; + const offset = currentPage * limit; + let where = {}; + + if (filter.id) { + where.id = Utils.uuid(filter.id); + } + + if (filter.nom) { + where = { + ...where, + [Op.and]: Utils.ilike('quartiers', 'nom', filter.nom), + }; + } + + if (filter.notes) { + where = { + ...where, + [Op.and]: Utils.ilike('quartiers', 'notes', filter.notes), + }; + } + + if (filter.villageId || filter.village) { + where.villageId = filter.villageId || filter.village; + } + + const include = [ + { + model: db.villages, + as: 'village', + attributes: ['id', 'nom'], + required: false, + }, + ]; + + const queryOptions = { + where, + include, + distinct: true, + order: filter.field && filter.sort + ? [[filter.field, filter.sort]] + : [['nom', 'asc']], + transaction: options?.transaction, + logging: console.log, + }; + + if (!options?.countOnly) { + queryOptions.limit = limit ? Number(limit) : undefined; + queryOptions.offset = offset ? Number(offset) : undefined; + } + + const { rows, count } = await db.quartiers.findAndCountAll(queryOptions); + + return { + rows: options?.countOnly ? [] : rows, + count, + }; + } + + static async findAllAutocomplete(query, limit, offset) { + let where = {}; + + if (query) { + where = { + [Op.or]: [ + { id: Utils.uuid(query) }, + Utils.ilike('quartiers', 'nom', query), + ], + }; + } + + const records = await db.quartiers.findAll({ + attributes: ['id', 'nom'], + include: [ + { + model: db.villages, + as: 'village', + attributes: ['nom'], + required: false, + }, + ], + where, + limit: limit ? Number(limit) : undefined, + offset: offset ? Number(offset) : undefined, + order: [['nom', 'ASC']], + }); + + return records.map((record) => ({ + id: record.id, + label: record.village?.nom ? `${record.nom} (${record.village.nom})` : record.nom, + })); + } +}; diff --git a/backend/src/db/api/type_usages.js b/backend/src/db/api/type_usages.js new file mode 100644 index 0000000..ddcf76b --- /dev/null +++ b/backend/src/db/api/type_usages.js @@ -0,0 +1,207 @@ +const db = require('../models'); +const Utils = require('../utils'); + +const Sequelize = db.Sequelize; +const Op = Sequelize.Op; + +module.exports = class Type_usagesDBApi { + static async create(data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + + const type_usages = await db.type_usages.create( + { + id: data.id || undefined, + nom: data.nom || null, + tarif: data.tarif ?? 0, + actif: data.actif ?? true, + description: data.description || null, + importHash: data.importHash || null, + createdById: currentUser.id, + updatedById: currentUser.id, + }, + { transaction }, + ); + + return type_usages; + } + + static async bulkImport(data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + + const rows = data.map((item, index) => ({ + id: item.id || undefined, + nom: item.nom || null, + tarif: item.tarif ?? 0, + actif: item.actif === undefined ? true : item.actif, + description: item.description || null, + importHash: item.importHash || null, + createdById: currentUser.id, + updatedById: currentUser.id, + createdAt: new Date(Date.now() + index * 1000), + })); + + return db.type_usages.bulkCreate(rows, { transaction }); + } + + static async update(id, data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + const type_usages = await db.type_usages.findByPk(id, { transaction }); + + const payload = { + updatedById: currentUser.id, + }; + + if (data.nom !== undefined) payload.nom = data.nom; + if (data.tarif !== undefined) payload.tarif = data.tarif; + if (data.actif !== undefined) payload.actif = data.actif; + if (data.description !== undefined) payload.description = data.description; + + await type_usages.update(payload, { transaction }); + + return type_usages; + } + + static async deleteByIds(ids, options) { + const transaction = (options && options.transaction) || undefined; + + const records = await db.type_usages.findAll({ + where: { + id: { + [Op.in]: ids, + }, + }, + transaction, + }); + + for (const record of records) { + await record.destroy({ transaction }); + } + + return records; + } + + static async remove(id, options) { + const transaction = (options && options.transaction) || undefined; + const record = await db.type_usages.findByPk(id, { transaction }); + + await record.destroy({ transaction }); + + return record; + } + + static async findBy(where, options) { + const transaction = (options && options.transaction) || undefined; + + const record = await db.type_usages.findOne({ + where, + transaction, + }); + + if (!record) { + return record; + } + + return record.get({ plain: true }); + } + + static async findAll(filter, options) { + const limit = filter.limit || 0; + const currentPage = +filter.page || 0; + const offset = currentPage * limit; + let where = {}; + + if (filter.id) { + where.id = Utils.uuid(filter.id); + } + + if (filter.nom) { + where = { + ...where, + [Op.and]: Utils.ilike('type_usages', 'nom', filter.nom), + }; + } + + if (filter.description) { + where = { + ...where, + [Op.and]: Utils.ilike('type_usages', 'description', filter.description), + }; + } + + if (filter.actif !== undefined) { + where.actif = filter.actif === true || filter.actif === 'true'; + } + + if (filter.tarifRange) { + const values = Array.isArray(filter.tarifRange) + ? filter.tarifRange + : [filter.tarifRange]; + const [start, end] = values; + + if (start !== undefined && start !== '') { + where.tarif = { + ...where.tarif, + [Op.gte]: start, + }; + } + + if (end !== undefined && end !== '') { + where.tarif = { + ...where.tarif, + [Op.lte]: end, + }; + } + } + + const queryOptions = { + where, + distinct: true, + order: filter.field && filter.sort + ? [[filter.field, filter.sort]] + : [['nom', 'asc']], + transaction: options?.transaction, + logging: console.log, + }; + + if (!options?.countOnly) { + queryOptions.limit = limit ? Number(limit) : undefined; + queryOptions.offset = offset ? Number(offset) : undefined; + } + + const { rows, count } = await db.type_usages.findAndCountAll(queryOptions); + + return { + rows: options?.countOnly ? [] : rows, + count, + }; + } + + static async findAllAutocomplete(query, limit, offset) { + let where = {}; + + if (query) { + where = { + [Op.or]: [ + { id: Utils.uuid(query) }, + Utils.ilike('type_usages', 'nom', query), + ], + }; + } + + const records = await db.type_usages.findAll({ + attributes: ['id', 'nom'], + where, + limit: limit ? Number(limit) : undefined, + offset: offset ? Number(offset) : undefined, + order: [['nom', 'ASC']], + }); + + return records.map((record) => ({ + id: record.id, + label: record.nom, + })); + } +}; diff --git a/backend/src/db/api/villages.js b/backend/src/db/api/villages.js new file mode 100644 index 0000000..7dc71b3 --- /dev/null +++ b/backend/src/db/api/villages.js @@ -0,0 +1,226 @@ +const db = require('../models'); +const Utils = require('../utils'); + +const Sequelize = db.Sequelize; +const Op = Sequelize.Op; + +module.exports = class VillagesDBApi { + static async create(data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + + return db.villages.create( + { + id: data.id || undefined, + nom: data.nom || null, + commune: data.commune || null, + arrondissement: data.arrondissement || null, + departement: data.departement || null, + region: data.region || null, + duree_periode_jours: data.duree_periode_jours || null, + notes: data.notes || null, + importHash: data.importHash || null, + createdById: currentUser.id, + updatedById: currentUser.id, + }, + { transaction }, + ); + } + + static async bulkImport(data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + + const rows = data.map((item, index) => ({ + id: item.id || undefined, + nom: item.nom || null, + commune: item.commune || null, + arrondissement: item.arrondissement || null, + departement: item.departement || null, + region: item.region || null, + duree_periode_jours: item.duree_periode_jours || null, + notes: item.notes || null, + importHash: item.importHash || null, + createdById: currentUser.id, + updatedById: currentUser.id, + createdAt: new Date(Date.now() + index * 1000), + })); + + return db.villages.bulkCreate(rows, { transaction }); + } + + static async update(id, data, options) { + const currentUser = (options && options.currentUser) || { id: null }; + const transaction = (options && options.transaction) || undefined; + const record = await db.villages.findByPk(id, { transaction }); + + const payload = { + updatedById: currentUser.id, + }; + + if (data.nom !== undefined) payload.nom = data.nom; + if (data.commune !== undefined) payload.commune = data.commune; + if (data.arrondissement !== undefined) payload.arrondissement = data.arrondissement; + if (data.departement !== undefined) payload.departement = data.departement; + if (data.region !== undefined) payload.region = data.region; + if (data.duree_periode_jours !== undefined) payload.duree_periode_jours = data.duree_periode_jours; + if (data.notes !== undefined) payload.notes = data.notes; + + await record.update(payload, { transaction }); + + return record; + } + + static async deleteByIds(ids, options) { + const transaction = (options && options.transaction) || undefined; + + const records = await db.villages.findAll({ + where: { + id: { + [Op.in]: ids, + }, + }, + transaction, + }); + + for (const record of records) { + await record.destroy({ transaction }); + } + + return records; + } + + static async remove(id, options) { + const transaction = (options && options.transaction) || undefined; + const record = await db.villages.findByPk(id, { transaction }); + + await record.destroy({ transaction }); + + return record; + } + + static async findBy(where, options) { + const transaction = (options && options.transaction) || undefined; + const record = await db.villages.findOne({ + where, + include: [ + { + model: db.quartiers, + as: 'quartiers', + attributes: ['id', 'nom'], + }, + ], + transaction, + }); + + if (!record) { + return record; + } + + return record.get({ plain: true }); + } + + static async findAll(filter, options) { + const limit = filter.limit || 0; + const currentPage = +filter.page || 0; + const offset = currentPage * limit; + let where = {}; + + if (filter.id) { + where.id = Utils.uuid(filter.id); + } + + if (filter.nom) { + where = { + ...where, + [Op.and]: Utils.ilike('villages', 'nom', filter.nom), + }; + } + + for (const field of ['commune', 'arrondissement', 'departement', 'region', 'notes']) { + if (filter[field]) { + where = { + ...where, + [Op.and]: Utils.ilike('villages', field, filter[field]), + }; + } + } + + if (filter.duree_periode_joursRange) { + const values = Array.isArray(filter.duree_periode_joursRange) + ? filter.duree_periode_joursRange + : [filter.duree_periode_joursRange]; + const [start, end] = values; + + if (start !== undefined && start !== '') { + where.duree_periode_jours = { + ...where.duree_periode_jours, + [Op.gte]: start, + }; + } + + if (end !== undefined && end !== '') { + where.duree_periode_jours = { + ...where.duree_periode_jours, + [Op.lte]: end, + }; + } + } + + const queryOptions = { + where, + include: [ + { + model: db.quartiers, + as: 'quartiers', + attributes: ['id', 'nom'], + required: false, + }, + ], + distinct: true, + order: filter.field && filter.sort + ? [[filter.field, filter.sort]] + : [['nom', 'asc']], + transaction: options?.transaction, + logging: console.log, + }; + + if (!options?.countOnly) { + queryOptions.limit = limit ? Number(limit) : undefined; + queryOptions.offset = offset ? Number(offset) : undefined; + } + + const { rows, count } = await db.villages.findAndCountAll(queryOptions); + + return { + rows: options?.countOnly ? [] : rows, + count, + }; + } + + static async findAllAutocomplete(query, limit, offset) { + let where = {}; + + if (query) { + where = { + [Op.or]: [ + { id: Utils.uuid(query) }, + Utils.ilike('villages', 'nom', query), + ], + }; + } + + const records = await db.villages.findAll({ + attributes: ['id', 'nom'], + where, + limit: limit ? Number(limit) : undefined, + offset: offset ? Number(offset) : undefined, + order: [['nom', 'ASC']], + }); + + return records.map((record) => ({ + id: record.id, + label: record.nom, + })); + } +}; diff --git a/backend/src/db/migrations/20260329060000-gforage-reference-data.js b/backend/src/db/migrations/20260329060000-gforage-reference-data.js new file mode 100644 index 0000000..8ba8552 --- /dev/null +++ b/backend/src/db/migrations/20260329060000-gforage-reference-data.js @@ -0,0 +1,214 @@ +module.exports = { + async up(queryInterface, Sequelize) { + const transaction = await queryInterface.sequelize.transaction(); + + try { + const villageTable = await queryInterface.sequelize.query( + "SELECT to_regclass('public.villages') AS table_name;", + { transaction, type: Sequelize.QueryTypes.SELECT }, + ); + + if (!villageTable[0]?.table_name) { + await queryInterface.createTable( + 'type_usages', + { + id: { + type: Sequelize.DataTypes.UUID, + defaultValue: Sequelize.DataTypes.UUIDV4, + primaryKey: true, + }, + nom: { + type: Sequelize.DataTypes.STRING(50), + allowNull: false, + unique: true, + }, + tarif: { + type: Sequelize.DataTypes.DECIMAL(10, 2), + allowNull: false, + defaultValue: 0, + }, + actif: { + type: Sequelize.DataTypes.BOOLEAN, + allowNull: false, + defaultValue: true, + }, + description: { + type: Sequelize.DataTypes.TEXT, + }, + createdById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + updatedById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + createdAt: { type: Sequelize.DataTypes.DATE }, + updatedAt: { type: Sequelize.DataTypes.DATE }, + deletedAt: { type: Sequelize.DataTypes.DATE }, + importHash: { + type: Sequelize.DataTypes.STRING(255), + allowNull: true, + unique: true, + }, + }, + { transaction }, + ); + + await queryInterface.addIndex('type_usages', ['actif'], { + name: 'type_usages_actif_idx', + transaction, + }); + + await queryInterface.createTable( + 'villages', + { + id: { + type: Sequelize.DataTypes.UUID, + defaultValue: Sequelize.DataTypes.UUIDV4, + primaryKey: true, + }, + nom: { + type: Sequelize.DataTypes.STRING(100), + allowNull: false, + unique: true, + }, + commune: { + type: Sequelize.DataTypes.STRING(100), + }, + arrondissement: { + type: Sequelize.DataTypes.STRING(100), + }, + departement: { + type: Sequelize.DataTypes.STRING(100), + }, + region: { + type: Sequelize.DataTypes.STRING(100), + }, + duree_periode_jours: { + type: Sequelize.DataTypes.INTEGER, + }, + notes: { + type: Sequelize.DataTypes.TEXT, + }, + createdById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + updatedById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + createdAt: { type: Sequelize.DataTypes.DATE }, + updatedAt: { type: Sequelize.DataTypes.DATE }, + deletedAt: { type: Sequelize.DataTypes.DATE }, + importHash: { + type: Sequelize.DataTypes.STRING(255), + allowNull: true, + unique: true, + }, + }, + { transaction }, + ); + + await queryInterface.createTable( + 'quartiers', + { + id: { + type: Sequelize.DataTypes.UUID, + defaultValue: Sequelize.DataTypes.UUIDV4, + primaryKey: true, + }, + nom: { + type: Sequelize.DataTypes.STRING(100), + allowNull: false, + }, + notes: { + type: Sequelize.DataTypes.TEXT, + }, + villageId: { + type: Sequelize.DataTypes.UUID, + allowNull: false, + references: { + key: 'id', + model: 'villages', + }, + onDelete: 'RESTRICT', + }, + createdById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + updatedById: { + type: Sequelize.DataTypes.UUID, + references: { + key: 'id', + model: 'users', + }, + }, + createdAt: { type: Sequelize.DataTypes.DATE }, + updatedAt: { type: Sequelize.DataTypes.DATE }, + deletedAt: { type: Sequelize.DataTypes.DATE }, + importHash: { + type: Sequelize.DataTypes.STRING(255), + allowNull: true, + unique: true, + }, + }, + { transaction }, + ); + + await queryInterface.addConstraint('quartiers', { + fields: ['nom', 'villageId'], + type: 'unique', + name: 'quartiers_nom_village_unique', + transaction, + }); + } + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + }, + + async down(queryInterface, Sequelize) { + const transaction = await queryInterface.sequelize.transaction(); + + try { + const villageTable = await queryInterface.sequelize.query( + "SELECT to_regclass('public.villages') AS table_name;", + { transaction, type: Sequelize.QueryTypes.SELECT }, + ); + + if (!villageTable[0]?.table_name) { + await transaction.commit(); + return; + } + + await queryInterface.dropTable('quartiers', { transaction }); + await queryInterface.dropTable('villages', { transaction }); + await queryInterface.dropTable('type_usages', { transaction }); + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + }, +}; diff --git a/backend/src/db/models/quartiers.js b/backend/src/db/models/quartiers.js new file mode 100644 index 0000000..2cc9048 --- /dev/null +++ b/backend/src/db/models/quartiers.js @@ -0,0 +1,50 @@ +module.exports = function(sequelize, DataTypes) { + const quartiers = sequelize.define( + 'quartiers', + { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true, + }, + nom: { + type: DataTypes.STRING(100), + allowNull: false, + }, + notes: { + type: DataTypes.TEXT, + }, + importHash: { + type: DataTypes.STRING(255), + allowNull: true, + unique: true, + }, + }, + { + timestamps: true, + paranoid: true, + freezeTableName: true, + }, + ); + + quartiers.associate = (db) => { + db.quartiers.belongsTo(db.villages, { + as: 'village', + foreignKey: { + name: 'villageId', + allowNull: false, + }, + constraints: false, + }); + + db.quartiers.belongsTo(db.users, { + as: 'createdBy', + }); + + db.quartiers.belongsTo(db.users, { + as: 'updatedBy', + }); + }; + + return quartiers; +}; diff --git a/backend/src/db/models/type_usages.js b/backend/src/db/models/type_usages.js new file mode 100644 index 0000000..b1006da --- /dev/null +++ b/backend/src/db/models/type_usages.js @@ -0,0 +1,51 @@ +module.exports = function(sequelize, DataTypes) { + const type_usages = sequelize.define( + 'type_usages', + { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true, + }, + nom: { + type: DataTypes.STRING(50), + allowNull: false, + }, + tarif: { + type: DataTypes.DECIMAL(10, 2), + allowNull: false, + defaultValue: 0, + }, + actif: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: true, + }, + description: { + type: DataTypes.TEXT, + }, + importHash: { + type: DataTypes.STRING(255), + allowNull: true, + unique: true, + }, + }, + { + timestamps: true, + paranoid: true, + freezeTableName: true, + }, + ); + + type_usages.associate = (db) => { + db.type_usages.belongsTo(db.users, { + as: 'createdBy', + }); + + db.type_usages.belongsTo(db.users, { + as: 'updatedBy', + }); + }; + + return type_usages; +}; diff --git a/backend/src/db/models/villages.js b/backend/src/db/models/villages.js new file mode 100644 index 0000000..07c409f --- /dev/null +++ b/backend/src/db/models/villages.js @@ -0,0 +1,62 @@ +module.exports = function(sequelize, DataTypes) { + const villages = sequelize.define( + 'villages', + { + id: { + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4, + primaryKey: true, + }, + nom: { + type: DataTypes.STRING(100), + allowNull: false, + }, + commune: { + type: DataTypes.STRING(100), + }, + arrondissement: { + type: DataTypes.STRING(100), + }, + departement: { + type: DataTypes.STRING(100), + }, + region: { + type: DataTypes.STRING(100), + }, + duree_periode_jours: { + type: DataTypes.INTEGER, + }, + notes: { + type: DataTypes.TEXT, + }, + importHash: { + type: DataTypes.STRING(255), + allowNull: true, + unique: true, + }, + }, + { + timestamps: true, + paranoid: true, + freezeTableName: true, + }, + ); + + villages.associate = (db) => { + db.villages.hasMany(db.quartiers, { + as: 'quartiers', + foreignKey: 'villageId', + constraints: false, + }); + + db.villages.belongsTo(db.users, { + as: 'createdBy', + }); + + db.villages.belongsTo(db.users, { + as: 'updatedBy', + }); + }; + + return villages; +}; diff --git a/backend/src/db/seeders/20260329061000-gforage-reference-permissions.js b/backend/src/db/seeders/20260329061000-gforage-reference-permissions.js new file mode 100644 index 0000000..107a7ac --- /dev/null +++ b/backend/src/db/seeders/20260329061000-gforage-reference-permissions.js @@ -0,0 +1,115 @@ +const { QueryTypes } = require('sequelize'); +const { v4: uuid } = require('uuid'); + +module.exports = { + async up(queryInterface) { + const transaction = await queryInterface.sequelize.transaction(); + + try { + const createdAt = new Date(); + const updatedAt = new Date(); + const entities = ['type_usages', 'villages', 'quartiers']; + const actions = ['CREATE', 'READ', 'UPDATE', 'DELETE']; + + const roles = await queryInterface.sequelize.query( + 'SELECT id, name FROM roles WHERE name IN (:roles);', + { + replacements: { roles: ['Administrator', 'Platform Owner', 'Product Manager'] }, + type: QueryTypes.SELECT, + transaction, + }, + ); + + for (const entity of entities) { + for (const action of actions) { + const name = `${action}_${entity.toUpperCase()}`; + const existing = await queryInterface.sequelize.query( + 'SELECT id FROM permissions WHERE name = :name LIMIT 1;', + { + replacements: { name }, + type: QueryTypes.SELECT, + transaction, + }, + ); + + let permissionId = existing[0]?.id; + + if (!permissionId) { + permissionId = uuid(); + await queryInterface.bulkInsert( + 'permissions', + [{ id: permissionId, name, createdAt, updatedAt }], + { transaction }, + ); + } + + for (const role of roles) { + const link = await queryInterface.sequelize.query( + 'SELECT 1 FROM "rolesPermissionsPermissions" WHERE "roles_permissionsId" = :roleId AND "permissionId" = :permissionId LIMIT 1;', + { + replacements: { roleId: role.id, permissionId }, + type: QueryTypes.SELECT, + transaction, + }, + ); + + if (!link.length) { + await queryInterface.bulkInsert( + 'rolesPermissionsPermissions', + [{ + createdAt, + updatedAt, + roles_permissionsId: role.id, + permissionId, + }], + { transaction }, + ); + } + } + } + } + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + }, + + async down(queryInterface) { + const transaction = await queryInterface.sequelize.transaction(); + + try { + const permissions = await queryInterface.sequelize.query( + 'SELECT id FROM permissions WHERE name LIKE ANY (ARRAY[:patterns]);', + { + replacements: { + patterns: ['%TYPE_USAGES', '%VILLAGES', '%QUARTIERS'], + }, + type: QueryTypes.SELECT, + transaction, + }, + ); + + const ids = permissions.map((item) => item.id); + + if (ids.length) { + await queryInterface.bulkDelete( + 'rolesPermissionsPermissions', + { permissionId: ids }, + { transaction }, + ); + await queryInterface.bulkDelete( + 'permissions', + { id: ids }, + { transaction }, + ); + } + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + }, +}; diff --git a/backend/src/index.js b/backend/src/index.js index 347d98d..ef32319 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -36,6 +36,9 @@ const messagesRoutes = require('./routes/messages'); const audit_logsRoutes = require('./routes/audit_logs'); const app_settingsRoutes = require('./routes/app_settings'); +const villagesRoutes = require('./routes/villages'); +const quartiersRoutes = require('./routes/quartiers'); +const type_usagesRoutes = require('./routes/type_usages'); const getBaseUrl = (url) => { @@ -110,6 +113,9 @@ app.use('/api/messages', passport.authenticate('jwt', {session: false}), message app.use('/api/audit_logs', passport.authenticate('jwt', {session: false}), audit_logsRoutes); app.use('/api/app_settings', passport.authenticate('jwt', {session: false}), app_settingsRoutes); +app.use('/api/villages', passport.authenticate('jwt', {session: false}), villagesRoutes); +app.use('/api/quartiers', passport.authenticate('jwt', {session: false}), quartiersRoutes); +app.use('/api/type_usages', passport.authenticate('jwt', {session: false}), type_usagesRoutes); app.use( '/api/openai', diff --git a/backend/src/routes/quartiers.js b/backend/src/routes/quartiers.js new file mode 100644 index 0000000..f2db511 --- /dev/null +++ b/backend/src/routes/quartiers.js @@ -0,0 +1,78 @@ +const express = require('express'); +const QuartiersService = require('../services/quartiers'); +const QuartiersDBApi = require('../db/api/quartiers'); +const wrapAsync = require('../helpers').wrapAsync; +const { parse } = require('json2csv'); +const { checkCrudPermissions } = require('../middlewares/check-permissions'); + +const router = express.Router(); + +router.use(checkCrudPermissions('quartiers')); + +router.post('/', wrapAsync(async (req, res) => { + await QuartiersService.create(req.body.data, req.currentUser); + res.status(200).send(true); +})); + +router.post('/bulk-import', wrapAsync(async (req, res) => { + await QuartiersService.bulkImport(req, res); + res.status(200).send(true); +})); + +router.put('/:id', wrapAsync(async (req, res) => { + await QuartiersService.update(req.body.data, req.params.id, req.currentUser); + res.status(200).send(true); +})); + +router.delete('/:id', wrapAsync(async (req, res) => { + await QuartiersService.remove(req.params.id, req.currentUser); + res.status(200).send(true); +})); + +router.post('/deleteByIds', wrapAsync(async (req, res) => { + await QuartiersService.deleteByIds(req.body.data, req.currentUser); + res.status(200).send(true); +})); + +router.get('/', wrapAsync(async (req, res) => { + const filetype = req.query.filetype; + const payload = await QuartiersDBApi.findAll(req.query, { currentUser: req.currentUser }); + + if (filetype === 'csv') { + const fields = ['id', 'nom', 'notes', 'villageId']; + const csv = parse(payload.rows, { fields }); + res.status(200).attachment(csv); + res.send(csv); + return; + } + + res.status(200).send(payload); +})); + +router.get('/count', wrapAsync(async (req, res) => { + const payload = await QuartiersDBApi.findAll(req.query, { + countOnly: true, + currentUser: req.currentUser, + }); + + res.status(200).send(payload); +})); + +router.get('/autocomplete', wrapAsync(async (req, res) => { + const payload = await QuartiersDBApi.findAllAutocomplete( + req.query.query, + req.query.limit, + req.query.offset, + ); + + res.status(200).send(payload); +})); + +router.get('/:id', wrapAsync(async (req, res) => { + const payload = await QuartiersDBApi.findBy({ id: req.params.id }); + res.status(200).send(payload); +})); + +router.use('/', require('../helpers').commonErrorHandler); + +module.exports = router; diff --git a/backend/src/routes/type_usages.js b/backend/src/routes/type_usages.js new file mode 100644 index 0000000..d9c7f43 --- /dev/null +++ b/backend/src/routes/type_usages.js @@ -0,0 +1,78 @@ +const express = require('express'); +const Type_usagesService = require('../services/type_usages'); +const Type_usagesDBApi = require('../db/api/type_usages'); +const wrapAsync = require('../helpers').wrapAsync; +const { parse } = require('json2csv'); +const { checkCrudPermissions } = require('../middlewares/check-permissions'); + +const router = express.Router(); + +router.use(checkCrudPermissions('type_usages')); + +router.post('/', wrapAsync(async (req, res) => { + await Type_usagesService.create(req.body.data, req.currentUser); + res.status(200).send(true); +})); + +router.post('/bulk-import', wrapAsync(async (req, res) => { + await Type_usagesService.bulkImport(req, res); + res.status(200).send(true); +})); + +router.put('/:id', wrapAsync(async (req, res) => { + await Type_usagesService.update(req.body.data, req.params.id, req.currentUser); + res.status(200).send(true); +})); + +router.delete('/:id', wrapAsync(async (req, res) => { + await Type_usagesService.remove(req.params.id, req.currentUser); + res.status(200).send(true); +})); + +router.post('/deleteByIds', wrapAsync(async (req, res) => { + await Type_usagesService.deleteByIds(req.body.data, req.currentUser); + res.status(200).send(true); +})); + +router.get('/', wrapAsync(async (req, res) => { + const filetype = req.query.filetype; + const payload = await Type_usagesDBApi.findAll(req.query, { currentUser: req.currentUser }); + + if (filetype === 'csv') { + const fields = ['id', 'nom', 'tarif', 'actif', 'description']; + const csv = parse(payload.rows, { fields }); + res.status(200).attachment(csv); + res.send(csv); + return; + } + + res.status(200).send(payload); +})); + +router.get('/count', wrapAsync(async (req, res) => { + const payload = await Type_usagesDBApi.findAll(req.query, { + countOnly: true, + currentUser: req.currentUser, + }); + + res.status(200).send(payload); +})); + +router.get('/autocomplete', wrapAsync(async (req, res) => { + const payload = await Type_usagesDBApi.findAllAutocomplete( + req.query.query, + req.query.limit, + req.query.offset, + ); + + res.status(200).send(payload); +})); + +router.get('/:id', wrapAsync(async (req, res) => { + const payload = await Type_usagesDBApi.findBy({ id: req.params.id }); + res.status(200).send(payload); +})); + +router.use('/', require('../helpers').commonErrorHandler); + +module.exports = router; diff --git a/backend/src/routes/villages.js b/backend/src/routes/villages.js new file mode 100644 index 0000000..f58d917 --- /dev/null +++ b/backend/src/routes/villages.js @@ -0,0 +1,78 @@ +const express = require('express'); +const VillagesService = require('../services/villages'); +const VillagesDBApi = require('../db/api/villages'); +const wrapAsync = require('../helpers').wrapAsync; +const { parse } = require('json2csv'); +const { checkCrudPermissions } = require('../middlewares/check-permissions'); + +const router = express.Router(); + +router.use(checkCrudPermissions('villages')); + +router.post('/', wrapAsync(async (req, res) => { + await VillagesService.create(req.body.data, req.currentUser); + res.status(200).send(true); +})); + +router.post('/bulk-import', wrapAsync(async (req, res) => { + await VillagesService.bulkImport(req, res); + res.status(200).send(true); +})); + +router.put('/:id', wrapAsync(async (req, res) => { + await VillagesService.update(req.body.data, req.params.id, req.currentUser); + res.status(200).send(true); +})); + +router.delete('/:id', wrapAsync(async (req, res) => { + await VillagesService.remove(req.params.id, req.currentUser); + res.status(200).send(true); +})); + +router.post('/deleteByIds', wrapAsync(async (req, res) => { + await VillagesService.deleteByIds(req.body.data, req.currentUser); + res.status(200).send(true); +})); + +router.get('/', wrapAsync(async (req, res) => { + const filetype = req.query.filetype; + const payload = await VillagesDBApi.findAll(req.query, { currentUser: req.currentUser }); + + if (filetype === 'csv') { + const fields = ['id', 'nom', 'commune', 'arrondissement', 'departement', 'region', 'duree_periode_jours', 'notes']; + const csv = parse(payload.rows, { fields }); + res.status(200).attachment(csv); + res.send(csv); + return; + } + + res.status(200).send(payload); +})); + +router.get('/count', wrapAsync(async (req, res) => { + const payload = await VillagesDBApi.findAll(req.query, { + countOnly: true, + currentUser: req.currentUser, + }); + + res.status(200).send(payload); +})); + +router.get('/autocomplete', wrapAsync(async (req, res) => { + const payload = await VillagesDBApi.findAllAutocomplete( + req.query.query, + req.query.limit, + req.query.offset, + ); + + res.status(200).send(payload); +})); + +router.get('/:id', wrapAsync(async (req, res) => { + const payload = await VillagesDBApi.findBy({ id: req.params.id }); + res.status(200).send(payload); +})); + +router.use('/', require('../helpers').commonErrorHandler); + +module.exports = router; diff --git a/backend/src/services/quartiers.js b/backend/src/services/quartiers.js new file mode 100644 index 0000000..3a31b4c --- /dev/null +++ b/backend/src/services/quartiers.js @@ -0,0 +1,111 @@ +const db = require('../db/models'); +const QuartiersDBApi = require('../db/api/quartiers'); +const processFile = require('../middlewares/upload'); +const ValidationError = require('./notifications/errors/validation'); +const csv = require('csv-parser'); +const stream = require('stream'); + +module.exports = class QuartiersService { + static async create(data, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await QuartiersDBApi.create(data, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async bulkImport(req, res) { + const transaction = await db.sequelize.transaction(); + + try { + await processFile(req, res); + const bufferStream = new stream.PassThrough(); + const results = []; + + await bufferStream.end(Buffer.from(req.file.buffer, 'utf-8')); + + await new Promise((resolve, reject) => { + bufferStream + .pipe(csv()) + .on('data', (data) => results.push(data)) + .on('end', async () => resolve()) + .on('error', (error) => reject(error)); + }); + + await QuartiersDBApi.bulkImport(results, { + transaction, + ignoreDuplicates: true, + validate: true, + currentUser: req.currentUser, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async update(data, id, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + const existing = await QuartiersDBApi.findBy({ id }, { transaction }); + + if (!existing) { + throw new ValidationError('quartiersNotFound'); + } + + const updated = await QuartiersDBApi.update(id, data, { + currentUser, + transaction, + }); + + await transaction.commit(); + return updated; + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async deleteByIds(ids, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await QuartiersDBApi.deleteByIds(ids, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async remove(id, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await QuartiersDBApi.remove(id, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } +}; diff --git a/backend/src/services/type_usages.js b/backend/src/services/type_usages.js new file mode 100644 index 0000000..81db7a2 --- /dev/null +++ b/backend/src/services/type_usages.js @@ -0,0 +1,111 @@ +const db = require('../db/models'); +const Type_usagesDBApi = require('../db/api/type_usages'); +const processFile = require('../middlewares/upload'); +const ValidationError = require('./notifications/errors/validation'); +const csv = require('csv-parser'); +const stream = require('stream'); + +module.exports = class Type_usagesService { + static async create(data, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await Type_usagesDBApi.create(data, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async bulkImport(req, res) { + const transaction = await db.sequelize.transaction(); + + try { + await processFile(req, res); + const bufferStream = new stream.PassThrough(); + const results = []; + + await bufferStream.end(Buffer.from(req.file.buffer, 'utf-8')); + + await new Promise((resolve, reject) => { + bufferStream + .pipe(csv()) + .on('data', (data) => results.push(data)) + .on('end', async () => resolve()) + .on('error', (error) => reject(error)); + }); + + await Type_usagesDBApi.bulkImport(results, { + transaction, + ignoreDuplicates: true, + validate: true, + currentUser: req.currentUser, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async update(data, id, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + const existing = await Type_usagesDBApi.findBy({ id }, { transaction }); + + if (!existing) { + throw new ValidationError('type_usagesNotFound'); + } + + const updated = await Type_usagesDBApi.update(id, data, { + currentUser, + transaction, + }); + + await transaction.commit(); + return updated; + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async deleteByIds(ids, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await Type_usagesDBApi.deleteByIds(ids, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async remove(id, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await Type_usagesDBApi.remove(id, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } +}; diff --git a/backend/src/services/villages.js b/backend/src/services/villages.js new file mode 100644 index 0000000..4504c03 --- /dev/null +++ b/backend/src/services/villages.js @@ -0,0 +1,111 @@ +const db = require('../db/models'); +const VillagesDBApi = require('../db/api/villages'); +const processFile = require('../middlewares/upload'); +const ValidationError = require('./notifications/errors/validation'); +const csv = require('csv-parser'); +const stream = require('stream'); + +module.exports = class VillagesService { + static async create(data, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await VillagesDBApi.create(data, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async bulkImport(req, res) { + const transaction = await db.sequelize.transaction(); + + try { + await processFile(req, res); + const bufferStream = new stream.PassThrough(); + const results = []; + + await bufferStream.end(Buffer.from(req.file.buffer, 'utf-8')); + + await new Promise((resolve, reject) => { + bufferStream + .pipe(csv()) + .on('data', (data) => results.push(data)) + .on('end', async () => resolve()) + .on('error', (error) => reject(error)); + }); + + await VillagesDBApi.bulkImport(results, { + transaction, + ignoreDuplicates: true, + validate: true, + currentUser: req.currentUser, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async update(data, id, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + const existing = await VillagesDBApi.findBy({ id }, { transaction }); + + if (!existing) { + throw new ValidationError('villagesNotFound'); + } + + const updated = await VillagesDBApi.update(id, data, { + currentUser, + transaction, + }); + + await transaction.commit(); + return updated; + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async deleteByIds(ids, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await VillagesDBApi.deleteByIds(ids, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } + + static async remove(id, currentUser) { + const transaction = await db.sequelize.transaction(); + + try { + await VillagesDBApi.remove(id, { + currentUser, + transaction, + }); + + await transaction.commit(); + } catch (error) { + await transaction.rollback(); + throw error; + } + } +}; diff --git a/frontend/public/assets/vm-shot-2026-03-29T05-06-17-032Z.jpg b/frontend/public/assets/vm-shot-2026-03-29T05-06-17-032Z.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a80c88f0580cd07c277ebd8d7a3e093ff80bd965 GIT binary patch literal 51535 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

`d`4Z1PrhmcN+}Fg3)rjj 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 literal 0 HcmV?d00001 diff --git a/frontend/src/components/NavBarItem.tsx b/frontend/src/components/NavBarItem.tsx index 72935e6..fcbd9b9 100644 --- a/frontend/src/components/NavBarItem.tsx +++ b/frontend/src/components/NavBarItem.tsx @@ -1,6 +1,5 @@ -import React, {useEffect, useRef} from 'react' +import React, { useEffect, useRef, useState } from 'react' import Link from 'next/link' -import { useState } from 'react' import { mdiChevronUp, mdiChevronDown } from '@mdi/js' import BaseDivider from './BaseDivider' import BaseIcon from './BaseIcon' diff --git a/frontend/src/layouts/Authenticated.tsx b/frontend/src/layouts/Authenticated.tsx index 1b9907d..73d8391 100644 --- a/frontend/src/layouts/Authenticated.tsx +++ b/frontend/src/layouts/Authenticated.tsx @@ -1,5 +1,4 @@ -import React, { ReactNode, useEffect } from 'react' -import { useState } from 'react' +import React, { ReactNode, useEffect, useState } from 'react' import jwt from 'jsonwebtoken'; import { mdiForwardburger, mdiBackburger, mdiMenu } from '@mdi/js' import menuAside from '../menuAside' diff --git a/frontend/src/menuAside.ts b/frontend/src/menuAside.ts index 52fda01..8726131 100644 --- a/frontend/src/menuAside.ts +++ b/frontend/src/menuAside.ts @@ -72,6 +72,14 @@ const menuAside: MenuAsideItem[] = [ icon: 'mdiCogOutline' in icon ? icon['mdiCogOutline' as keyof typeof icon] : icon.mdiTable ?? icon.mdiTable, permissions: 'READ_APP_SETTINGS' }, + { + href: '/g-forage/referentials', + label: 'Référentiels forage', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + icon: 'mdiDatabaseCogOutline' in icon ? icon['mdiDatabaseCogOutline' as keyof typeof icon] : icon.mdiTable, + permissions: 'READ_VILLAGES' + }, { href: '/profile', label: 'Profile', diff --git a/frontend/src/pages/g-forage/referentials.tsx b/frontend/src/pages/g-forage/referentials.tsx new file mode 100644 index 0000000..3348c16 --- /dev/null +++ b/frontend/src/pages/g-forage/referentials.tsx @@ -0,0 +1,191 @@ +import { mdiTable } from '@mdi/js'; +import Head from 'next/head'; +import React, { ReactElement, useEffect, useState } from 'react'; +import axios from 'axios'; + +import CardBox from '../../components/CardBox'; +import LayoutAuthenticated from '../../layouts/Authenticated'; +import SectionMain from '../../components/SectionMain'; +import SectionTitleLineWithButton from '../../components/SectionTitleLineWithButton'; +import { getPageTitle } from '../../config'; +import { useAppSelector } from '../../stores/hooks'; + +type ItemRow = { + id: string; + nom: string; + commune?: string; + tarif?: number | string; + actif?: boolean; + village?: { nom?: string }; +}; + +const ReferentialsPage = () => { + const { currentUser } = useAppSelector((state) => state.auth); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(''); + const [stats, setStats] = useState({ villages: 0, quartiers: 0, typeUsages: 0 }); + const [villages, setVillages] = useState([]); + const [quartiers, setQuartiers] = useState([]); + const [typeUsages, setTypeUsages] = useState([]); + + useEffect(() => { + if (!currentUser) return; + + const loadData = async () => { + try { + setLoading(true); + setError(''); + + const [villagesCount, quartiersCount, typeUsagesCount, villagesRows, quartiersRows, typeUsagesRows] = await Promise.all([ + axios.get('/villages/count'), + axios.get('/quartiers/count'), + axios.get('/type_usages/count'), + axios.get('/villages', { params: { page: 0, limit: 5 } }), + axios.get('/quartiers', { params: { page: 0, limit: 5 } }), + axios.get('/type_usages', { params: { page: 0, limit: 5 } }), + ]); + + setStats({ + villages: villagesCount.data.count ?? 0, + quartiers: quartiersCount.data.count ?? 0, + typeUsages: typeUsagesCount.data.count ?? 0, + }); + setVillages(villagesRows.data.rows ?? []); + setQuartiers(quartiersRows.data.rows ?? []); + setTypeUsages(typeUsagesRows.data.rows ?? []); + } catch (err) { + console.error('Failed to load G-Forage referentials:', err); + setError('Impossible de charger les référentiels G-Forage pour le moment.'); + } finally { + setLoading(false); + } + }; + + loadData(); + }, [currentUser]); + + return ( + <> + + {getPageTitle('Référentiels G-Forage')} + + + + {''} + + +

+ +
Villages
+
{loading ? '…' : stats.villages}
+
+ +
Quartiers
+
{loading ? '…' : stats.quartiers}
+
+ +
Types d’usage
+
{loading ? '…' : stats.typeUsages}
+
+
+ + {error && ( + +

{error}

+
+ )} + +
+ +

Derniers villages

+ + + + + + + + + {villages.map((item) => ( + + + + + ))} + {!loading && villages.length === 0 && ( + + + + )} + +
NomCommune
{item.nom}{item.commune || '—'}
Aucun village pour le moment.
+
+ + +

Derniers quartiers

+ + + + + + + + + {quartiers.map((item) => ( + + + + + ))} + {!loading && quartiers.length === 0 && ( + + + + )} + +
NomVillage
{item.nom}{item.village?.nom || '—'}
Aucun quartier pour le moment.
+
+ + +

Types d’usage

+ + + + + + + + + {typeUsages.map((item) => ( + + + + + ))} + {!loading && typeUsages.length === 0 && ( + + + + )} + +
NomTarif
{item.nom}{item.tarif ?? 0} F
Aucun type d’usage pour le moment.
+
+
+ + + ); +}; + +ReferentialsPage.getLayout = function getLayout(page: ReactElement) { + return ( + + {page} + + ); +}; + +export default ReferentialsPage;