pebble-solutions / app-drh

GNU General Public License v3.0
0 stars 1 forks source link

Dev : utiliser objet générique -> faciliter la gestion des tables à champ unique #19

Open killiankopp opened 1 year ago

killiankopp commented 1 year ago

customer and user Pebble / dev

Scrum brief En tant que dev, je veux pouvoir utiliser un objet générique pour manipuler des tables à champ unique (contrat type, temps de travail, ...)

Brief Nous avons régulièrement besoin de table d'option. Nous utilisions pour cela les MLS. Pour les remplacer tout en optimisant le code, il est possible de créer un objet générique qui s'occupera de gérer les différents cas d'usage de ces options (qui sont toujours les mêmes).

Les options étant utilisées via leur id dans d'autres tables, il faut maintenir la cohérence des données et éviter d'en perdre.

Plusieurs cas de figures :

C'est l'archivage ou le non disponibilité permanente qui pose problème. Si une option est choisie admettons dans un contrat on choisi un type de contrat (intérim). N'ayant plus le droit de prendre des contrats en intérim, l'option devient inutile mais elle a été utilisée. Si je rouvre un contrat (en admettant que ce soit possible de le modifier), il ne faut pas que le select qui permet le choix de l'option intérim ne propose plus cette option sur le contrat qui l'utilisait jusque là... car sinon des données seront corrompues. Autre cas de figure, si nous avions créé une table d'option N+1 avec le nom des cadres présents à l'instant T et que dans notre organigramme nous avions utilisé cette option pour déterminé le N+1 sur une fiche salarié. Si le N+1 ne fait plus parti de l'entreprise aujourd'hui et que le salarié non plus mais que nous voulons modifié la fiche dudit salarié, la proposition de N+1 doit être faite en fonction des N+1 de l'époque et non des N+1 du jour de la modification. Bref... il faut réfléchir à tous les cas de figure possible et déterminer des modes d'utilisation.

Additional information Add any other context or screenshots about the issue here.

Roles

Code indication

Todo

Asset (objet de manipulation de table à champ unique + date)

Guillaume35 commented 1 year ago

Création de la classe AbstractAsset disposant des attributs suivants

Attribut Type Défaut Description
ds_publish ?string null Date de début de publication
de_publish ?string null Date de fin de publication

La méthode suivante permet de conaître l'état de disponibilité de la ressource

public function isAvailable(?DateTime $date = null): bool

La méthode suivante permet d'archiver la ressource à une date donnée

public function archive(?DateTime $date = null): self

Dans les deux méthodes précédentes, lorsque la date n'est pas indiquée, on prend la date du jour.

Guillaume35 commented 1 year ago

Il est nécessaire de créer une table mkg__sample_asset pour la création des tables héritant de AbstractAsset.

Champ Type de donnée Nullable Défaut Description
ds_publish DATETIME OUI NULL Date de début de publication
de_publish DATETIME OUI NULL Date de fin de publication
Guillaume35 commented 1 year ago

Usage de la classe :

<?php

class MaRessource extends AbstractAsset {
    // ...
}