Files
SIRH/migrations/Version20260304173000.php
tristan f493ea237b
Some checks failed
Auto Tag Develop / tag (push) Has been cancelled
Ajout des notification + page employé (#6)
| Numéro du ticket | Titre du ticket |
|------------------|-----------------|
|                  |                 |

## Description de la PR

## Modification du .env

## Check list

- [ ] Pas de régression
- [ ] TU/TI/TF rédigée
- [ ] TU/TI/TF OK
- [ ] CHANGELOG modifié

Reviewed-on: #6
Co-authored-by: tristan <tristan@yuno.malio.fr>
Co-committed-by: tristan <tristan@yuno.malio.fr>
2026-03-10 12:35:17 +00:00

251 lines
16 KiB
PHP

<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
final class Version20260304173000 extends AbstractMigration
{
public function getDescription(): string
{
return 'Add comments on all database tables and columns';
}
public function up(Schema $schema): void
{
// absence_types
$this->addSql("COMMENT ON TABLE absence_types IS 'Catalogue des types d absence (CP, RTT, maladie, etc.).'");
$this->addSql("COMMENT ON COLUMN absence_types.id IS 'Identifiant technique du type d absence.'");
$this->addSql("COMMENT ON COLUMN absence_types.code IS 'Code metier court du type d absence.'");
$this->addSql("COMMENT ON COLUMN absence_types.label IS 'Libelle metier du type d absence.'");
$this->addSql("COMMENT ON COLUMN absence_types.color IS 'Couleur d affichage du type d absence.'");
$this->addSql("COMMENT ON COLUMN absence_types.count_as_worked_hours IS 'Indique si l absence est comptee comme temps travaille.'");
// absences
$this->addSql("COMMENT ON TABLE absences IS 'Absences employees enregistrees par jour et demi journee.'");
$this->addSql("COMMENT ON COLUMN absences.id IS 'Identifiant technique de l absence.'");
$this->addSql("COMMENT ON COLUMN absences.employee_id IS 'Employe concerne par l absence.'");
$this->addSql("COMMENT ON COLUMN absences.type_id IS 'Type d absence applique.'");
$this->addSql("COMMENT ON COLUMN absences.comment IS 'Commentaire libre de l absence.'");
$this->addSql("COMMENT ON COLUMN absences.start_date IS 'Date de debut de l absence.'");
$this->addSql("COMMENT ON COLUMN absences.end_date IS 'Date de fin de l absence.'");
$this->addSql("COMMENT ON COLUMN absences.start_half IS 'Demi journee de debut (AM ou PM).'");
$this->addSql("COMMENT ON COLUMN absences.end_half IS 'Demi journee de fin (AM ou PM).'");
// contracts
$this->addSql("COMMENT ON TABLE contracts IS 'Referentiel des contrats de travail utilisables.'");
$this->addSql("COMMENT ON COLUMN contracts.id IS 'Identifiant technique du contrat.'");
$this->addSql("COMMENT ON COLUMN contracts.name IS 'Nom metier du contrat (35h, 39h, Forfait, etc.).'");
$this->addSql("COMMENT ON COLUMN contracts.tracking_mode IS 'Mode de suivi du contrat (TIME ou PRESENCE).'");
$this->addSql("COMMENT ON COLUMN contracts.weekly_hours IS 'Volume horaire hebdomadaire contractuel, si applicable.'");
$this->addSql("COMMENT ON COLUMN contracts.is_active IS 'Indique si le contrat est actif dans le referentiel.'");
// doctrine_migration_versions
$this->addSql("COMMENT ON TABLE doctrine_migration_versions IS 'Historique technique des migrations Doctrine appliquees.'");
$this->addSql("COMMENT ON COLUMN doctrine_migration_versions.version IS 'Version unique de migration appliquee.'");
$this->addSql("COMMENT ON COLUMN doctrine_migration_versions.executed_at IS 'Date et heure d execution de la migration.'");
$this->addSql("COMMENT ON COLUMN doctrine_migration_versions.execution_time IS 'Duree d execution de la migration en millisecondes.'");
// employee_contract_periods
$this->addSql("COMMENT ON TABLE employee_contract_periods IS 'Historique des periodes de contrat par employe.'");
$this->addSql("COMMENT ON COLUMN employee_contract_periods.id IS 'Identifiant technique de la periode contrat.'");
$this->addSql("COMMENT ON COLUMN employee_contract_periods.employee_id IS 'Employe concerne par la periode contrat.'");
$this->addSql("COMMENT ON COLUMN employee_contract_periods.contract_id IS 'Contrat applique sur la periode.'");
$this->addSql("COMMENT ON COLUMN employee_contract_periods.start_date IS 'Date de debut de la periode contrat.'");
$this->addSql("COMMENT ON COLUMN employee_contract_periods.end_date IS 'Date de fin de la periode contrat, null si en cours.'");
$this->addSql("COMMENT ON COLUMN employee_contract_periods.created_at IS 'Date de creation technique de la periode contrat.'");
$this->addSql("COMMENT ON COLUMN employee_contract_periods.contract_nature IS 'Nature du contrat (CDI, CDD, INTERIM).'");
$this->addSql("COMMENT ON COLUMN employee_contract_periods.paid_leave_settled IS 'Indique si les conges ont ete soldes a la cloture de cette periode.'");
// employee_leave_balances
$this->addSql("COMMENT ON TABLE employee_leave_balances IS 'Soldes de conges par employe et exercice (ouverture, mouvements, cloture).'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.id IS 'Identifiant technique du solde annuel.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.employee_id IS 'Employe concerne par le solde annuel.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.rule_code IS 'Code de regle de calcul des conges (CDI_CDD_NON_FORFAIT, FORFAIT_218, ...).'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.year IS 'Annee d exercice de reference (ex: 2026).'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.opening_days IS 'Report N-1 en jours a l ouverture de l exercice.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.opening_saturdays IS 'Report N-1 en samedis a l ouverture (0 pour forfait).'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.accrued_days IS 'Droits jours acquis sur l exercice courant.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.accrued_saturdays IS 'Droits samedis acquis sur l exercice courant.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.taken_days IS 'Jours de conges consommes sur l exercice.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.taken_saturdays IS 'Samedis consommes sur l exercice.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.closing_days IS 'Solde de cloture jours sur l exercice.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.closing_saturdays IS 'Solde de cloture samedis sur l exercice.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.is_locked IS 'Indique si le solde de l exercice est fige (verrouille RH).'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.created_at IS 'Date de creation technique du solde.'");
$this->addSql("COMMENT ON COLUMN employee_leave_balances.updated_at IS 'Date de derniere mise a jour du solde.'");
// employees
$this->addSql("COMMENT ON TABLE employees IS 'Referentiel des employes.'");
$this->addSql("COMMENT ON COLUMN employees.id IS 'Identifiant technique de l employe.'");
$this->addSql("COMMENT ON COLUMN employees.first_name IS 'Prenom de l employe.'");
$this->addSql("COMMENT ON COLUMN employees.last_name IS 'Nom de l employe.'");
$this->addSql("COMMENT ON COLUMN employees.created_at IS 'Date de creation technique de l employe.'");
$this->addSql("COMMENT ON COLUMN employees.site_id IS 'Site principal de rattachement de l employe.'");
$this->addSql("COMMENT ON COLUMN employees.display_order IS 'Ordre d affichage de l employe dans les listes UI.'");
$this->addSql("COMMENT ON COLUMN employees.contract_id IS 'Contrat courant reference sur la fiche employe.'");
// notifications
$this->addSql("COMMENT ON TABLE notifications IS 'Notifications applicatives envoyees aux utilisateurs.'");
$this->addSql("COMMENT ON COLUMN notifications.id IS 'Identifiant technique de la notification.'");
$this->addSql("COMMENT ON COLUMN notifications.recipient_id IS 'Utilisateur destinataire de la notification.'");
$this->addSql("COMMENT ON COLUMN notifications.title IS 'Titre court de la notification.'");
$this->addSql("COMMENT ON COLUMN notifications.message IS 'Message detaille de la notification.'");
$this->addSql("COMMENT ON COLUMN notifications.is_read IS 'Indique si la notification a ete lue.'");
$this->addSql("COMMENT ON COLUMN notifications.created_at IS 'Date de creation de la notification.'");
// sites
$this->addSql("COMMENT ON TABLE sites IS 'Referentiel des sites de l entreprise.'");
$this->addSql("COMMENT ON COLUMN sites.id IS 'Identifiant technique du site.'");
$this->addSql("COMMENT ON COLUMN sites.name IS 'Nom du site.'");
$this->addSql("COMMENT ON COLUMN sites.color IS 'Couleur associee au site pour affichage UI.'");
$this->addSql("COMMENT ON COLUMN sites.display_order IS 'Ordre d affichage du site dans les listes UI.'");
// user_site_roles
$this->addSql("COMMENT ON TABLE user_site_roles IS 'Roles attribues aux utilisateurs sur des sites donnes.'");
$this->addSql("COMMENT ON COLUMN user_site_roles.id IS 'Identifiant technique de l attribution de role site.'");
$this->addSql("COMMENT ON COLUMN user_site_roles.user_id IS 'Utilisateur concerne par l attribution.'");
$this->addSql("COMMENT ON COLUMN user_site_roles.site_id IS 'Site concerne par l attribution.'");
$this->addSql("COMMENT ON COLUMN user_site_roles.role IS 'Role attribue sur le site (ex: ROLE_SITE_MANAGER).'");
// users
$this->addSql("COMMENT ON TABLE users IS 'Comptes utilisateurs de l application.'");
$this->addSql("COMMENT ON COLUMN users.id IS 'Identifiant technique du compte utilisateur.'");
$this->addSql("COMMENT ON COLUMN users.username IS 'Identifiant de connexion de l utilisateur.'");
$this->addSql("COMMENT ON COLUMN users.roles IS 'Liste des roles globaux de securite du compte.'");
$this->addSql("COMMENT ON COLUMN users.password IS 'Hash du mot de passe utilisateur.'");
$this->addSql("COMMENT ON COLUMN users.employee_id IS 'Lien optionnel vers la fiche employe associee.'");
// work_hours
$this->addSql("COMMENT ON TABLE work_hours IS 'Saisie des heures de travail et presences par employe et par jour.'");
$this->addSql("COMMENT ON COLUMN work_hours.id IS 'Identifiant technique de la ligne de saisie.'");
$this->addSql("COMMENT ON COLUMN work_hours.employee_id IS 'Employe concerne par la saisie horaire.'");
$this->addSql("COMMENT ON COLUMN work_hours.work_date IS 'Date de travail de la ligne de saisie.'");
$this->addSql("COMMENT ON COLUMN work_hours.morning_from IS 'Heure de debut du matin.'");
$this->addSql("COMMENT ON COLUMN work_hours.morning_to IS 'Heure de fin du matin.'");
$this->addSql("COMMENT ON COLUMN work_hours.afternoon_from IS 'Heure de debut de l apres midi.'");
$this->addSql("COMMENT ON COLUMN work_hours.afternoon_to IS 'Heure de fin de l apres midi.'");
$this->addSql("COMMENT ON COLUMN work_hours.evening_from IS 'Heure de debut du soir.'");
$this->addSql("COMMENT ON COLUMN work_hours.evening_to IS 'Heure de fin du soir.'");
$this->addSql("COMMENT ON COLUMN work_hours.is_valid IS 'Validation RH de la ligne horaire.'");
$this->addSql("COMMENT ON COLUMN work_hours.is_present_morning IS 'Presence declarative du matin (mode PRESENCE).'");
$this->addSql("COMMENT ON COLUMN work_hours.is_present_afternoon IS 'Presence declarative de l apres midi (mode PRESENCE).'");
$this->addSql("COMMENT ON COLUMN work_hours.is_site_valid IS 'Validation site (chef de site) de la ligne horaire.'");
}
public function down(Schema $schema): void
{
$tables = [
'absence_types',
'absences',
'contracts',
'doctrine_migration_versions',
'employee_contract_periods',
'employee_leave_balances',
'employees',
'notifications',
'sites',
'user_site_roles',
'users',
'work_hours',
];
foreach ($tables as $table) {
$this->addSql(sprintf('COMMENT ON TABLE %s IS NULL', $table));
}
$columns = [
['absence_types', 'id'],
['absence_types', 'code'],
['absence_types', 'label'],
['absence_types', 'color'],
['absence_types', 'count_as_worked_hours'],
['absences', 'id'],
['absences', 'employee_id'],
['absences', 'type_id'],
['absences', 'comment'],
['absences', 'start_date'],
['absences', 'end_date'],
['absences', 'start_half'],
['absences', 'end_half'],
['contracts', 'id'],
['contracts', 'name'],
['contracts', 'tracking_mode'],
['contracts', 'weekly_hours'],
['contracts', 'is_active'],
['doctrine_migration_versions', 'version'],
['doctrine_migration_versions', 'executed_at'],
['doctrine_migration_versions', 'execution_time'],
['employee_contract_periods', 'id'],
['employee_contract_periods', 'employee_id'],
['employee_contract_periods', 'contract_id'],
['employee_contract_periods', 'start_date'],
['employee_contract_periods', 'end_date'],
['employee_contract_periods', 'created_at'],
['employee_contract_periods', 'contract_nature'],
['employee_contract_periods', 'paid_leave_settled'],
['employee_leave_balances', 'id'],
['employee_leave_balances', 'employee_id'],
['employee_leave_balances', 'rule_code'],
['employee_leave_balances', 'year'],
['employee_leave_balances', 'opening_days'],
['employee_leave_balances', 'opening_saturdays'],
['employee_leave_balances', 'accrued_days'],
['employee_leave_balances', 'accrued_saturdays'],
['employee_leave_balances', 'taken_days'],
['employee_leave_balances', 'taken_saturdays'],
['employee_leave_balances', 'closing_days'],
['employee_leave_balances', 'closing_saturdays'],
['employee_leave_balances', 'is_locked'],
['employee_leave_balances', 'created_at'],
['employee_leave_balances', 'updated_at'],
['employees', 'id'],
['employees', 'first_name'],
['employees', 'last_name'],
['employees', 'created_at'],
['employees', 'site_id'],
['employees', 'display_order'],
['employees', 'contract_id'],
['notifications', 'id'],
['notifications', 'recipient_id'],
['notifications', 'title'],
['notifications', 'message'],
['notifications', 'is_read'],
['notifications', 'created_at'],
['sites', 'id'],
['sites', 'name'],
['sites', 'color'],
['sites', 'display_order'],
['user_site_roles', 'id'],
['user_site_roles', 'user_id'],
['user_site_roles', 'site_id'],
['user_site_roles', 'role'],
['users', 'id'],
['users', 'username'],
['users', 'roles'],
['users', 'password'],
['users', 'employee_id'],
['work_hours', 'id'],
['work_hours', 'employee_id'],
['work_hours', 'work_date'],
['work_hours', 'morning_from'],
['work_hours', 'morning_to'],
['work_hours', 'afternoon_from'],
['work_hours', 'afternoon_to'],
['work_hours', 'evening_from'],
['work_hours', 'evening_to'],
['work_hours', 'is_valid'],
['work_hours', 'is_present_morning'],
['work_hours', 'is_present_afternoon'],
['work_hours', 'is_site_valid'],
];
foreach ($columns as [$table, $column]) {
$this->addSql(sprintf('COMMENT ON COLUMN %s.%s IS NULL', $table, $column));
}
}
}