Cannot approve an inspection anymore
Closed this issue · 8 comments
Related to issue #265
Error code 500 from https://survipreventiontest.cauca.ca/api/Inspection/(*)/approve
Ouin, celui-là semble être un bug qui n'a pas été causé par la mise à jour des librairies qu'on utilise.
Je ne comprends pas trop ce qui se passe avec ça, mais je travaille là dessus.
Ok pour l'historique le problème est celui-ci
- Nous avons utilisés le property hiding dans l'héritage d'une des classes pour réussir à faire quelque chose de spécifique à l'importation.
- Nous utilisons également la "reflection" à quelques endroits dans le code de l'acceptation d'inspection pour avoir du code générique. La reflection retourne la propriété qui est cachée ET la propriété qui la cache au lieu de juste celle qui la cache.
- Comme le property hiding n'est pas exactement une très bonne pratique, je vais remplacer ça par une meilleure méthode (ie: contraintes de généricité via interface plutôt que par classe abstraite générique).
Pour le détail, c'est cette ligne de InspectionBuilding
qui est la cause du problème:
public new ICollection<InspectionBuildingLocalization> Localizations { get; set; }
Je crois bien que ça été ajouté comme un genre de workaround pour faciliter l'héritage dans l'importation. La solution exacte était d'enlever cette ligne pour ne plus cacher la vraie propriété et de changer les contraintes de généricités des BaseBuildingContact
, BaseBuildingHazardousMaterial
et compagnie de BaseBuilding
à IBaseBuilding
(que je viens de créer à partir de BaseBuilding
).
C'est définitivement un problème que je qualifierais de niveau avancé.
Ok, la correction est terminée et les techs m'ont dit que l'API serait mis à jour d'ici midi.
Ok, c'est fait, la correction est en ligne.
Il y a un workaround pour ça. Dans ton browser, tu peux aller dans la console et coller cette commande :
localStorage.setItem("column-visible-mode3", "[false,true,true,true,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,false,false,false,false,true]")
Ce site montre comment afficher la console dans Safari sur Mac :
https://www.wickedlysmart.com/hfjsconsole/
La commande devrait te retourner "Undefined" comme ceci :
Après ça tu peux faire un refresh du browser et la colonne va s'afficher.