GithubHelp home page GithubHelp logo

cauca-9-1-1 / survip-webapi Goto Github PK

View Code? Open in Web Editor NEW
2.0 4.0 1.0 2.03 MB

SURVI-Prevention Web API

License: MIT License

C# 99.98% Shell 0.02%
asp-net-core entity-framework-core jwt-authentication dotnetcore-2-2 postgis

survip-webapi's Introduction

survip-webapi

Installing WKHTMLTOPDF

Linux (Ubuntu)

From root directory run :

sh install.sh

Windows

Download and run the wkhtmltopdf.exe file. Set the destination folder to "C:\Program Files\wkhtmltopdf"

https://wkhtmltopdf.org/downloads.html

You will probably need to add wkhtmltopdf.exe to your Windows System Environmental Settings Path (this is a little different for each Windows version).

Right click on your "My Computers" icon, click Advanced Settings, under Environmental Settings edit the PATH and add the directory path for the wkhtmltopdf.exe file to your PATH.

Mac

curl -O http://wkhtmltopdf.googlecode.com/files/wkhtmltopdf-0.9.9-OS-X.i368
mv wkhtmltopdf-0.9.9-OS-X.i368 /usr/local/bin/wkhtmltopdf
chmod +x /usr/local/bin/wkhtmltopdf

survip-webapi's People

Contributors

audreylr avatar iamkinetic avatar julandry avatar mickjol avatar philipperobertgh avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

dhamotharang

survip-webapi's Issues

Ajout de l'importation des Provinces

Créer la méthode d'import dans le controller ainsi que dans le service(basé sur une liste de provinces)
Création des services de validation et d'import.
Création des Units tests.

Add imported fields to entities which will be used in importation process

Ajouter une classe abstraite BaseImportedModel qui héritera de BaseModel et qui aura ces champs supplémentaires :
o IdExtern : string
o ImportedOn : dateTime?
o HasBeenModified : bool
Tous les modèles qui seront importés hériteront désormais de cette nouvelle classe abstraite plutôt que de BaseModel.

Créer la migration.

Et on modifie tous les services pour que l'ajout, la suppression et la modification renseignent HasBeenModified).

Améliorer les données initiales

Lorsque l'on execute la migration de données suite à un reset de la BD les permission sont déactiver pour l'usager admin.
Il faudrait valider que cet usager et voire même le groupe Administration ai accès à pratiquement tout.

Également hardcoder tous les ids plutôt que d'utiliser l'incrémentation des guid tel qu'on le fait actuellement.

Migration setup

Setup la migration au lieu de la in house méthode utilisée pour générer la BD

Error on approving inspection

Error when approving inspection on the building detail.
If the building detail is not the same of the inspection_buidling_detail one we got an error of foreignkey that blocked the approvment.

Reproduce only on one inspection -> put more validation when copying data from the inspection

Refonte de la structure du questionnaire afin de rendre tout ça plus flexible

Idée:

  • Avoir un champ qui indique qu'une question permet le multiple?
  • Avoir un champ qui indique le nombre maximum d’occurrence?
  • Etc.

On pourrait avoir un type de question qui serait "réponses enfants". Ce type de question aurait alors une série de question enfant.

Mais quand on regarde la configuration actuelle, même les questions qui ont rapport à un détecteur de fumée ont de l'influence sur les suivantes. Si on répond oui à "Est-il alimenté a un pile", on a pas la même question suivante que si on répond non.

la désactivation du questionnaire ne désactive pas ses collections enfant.

Ce point ne cause aucune erreur dans l'affichage car un questionnaire n'est pas réactivable.
Lorsque l'on supprime un questionnaire celui-ci est desactivé par le CrudService, cependant ce dernier ne descends pas en récursive dans les enfants de l'entité.
Modifications:

  • Surcharger la fonction remove dans le service SurveyService
    -> Désactiver les entités suivantes:
    - survey_localization
    - survey_question
    - survey_question_localization
    - survey_question_choice
    - survey_question_choice_localization

Mise à jour des information de modifications: Localization

Comment gérer la mise à jour de localization:

  • Pas de service distinct sous collection
  • On ne sait pas si la localization a changé réellement, doit-on changer ces informations à chaque fois ?
  • Doit-on gérer cela dans l'application au lieu de l'API ?

Import de table n'étant pas dans la RAO

Les entités ci-dessous n'ont pas de model d'import car la plupart sont différentes ou non existantes dans la RAO(pour le moment)
Building's picture.
BuildingSprinkler + sprinkler type.
BuildingAnomaly, BuildingAnomalyPicture + Picture
BuildingDetails + detail's types (ConstructionType, ConstructionFireResistanceType, RoofType, RoofMaterialType, SidingType, BuildingType) + implantation plan
BuildingParticularRisk + pictures

Ajouter une date de dernière modification et un usager aux tables

Dans BaseModel on ajoute:

  • LastModifiedOn : DateTime?
  • IdWebuserLastModifiedBy: Guid?

Créer la nouvelle migration.

Et on modifie tous les services pour que la suppression et la modification renseignent ces trois champs (LastModifiedOn, IdWebuserLastModifiedBy ).

IdWebuserLastModifiedBy seront aussi mis à jour sur la création.

When doing an inspection, the user should work on a copy of the inspection's buildings data.

So we need to copy the parent and its children when creating the inspection :

  • BuildingDetail
  • PNAPS, contacts, haz mat
  • particular risks
  • fire protection
  • fire hydrants
  • implantation's plan
  • Etc.

There's no need to change anything on the mobile application for this as all of the controller are already correctly named (like InspectionBuildingPnapController), but we need to change all of these queries so they use the copied data or something.

Requête de liste pour les voies pour les lookup

Il faut créer une qrequête spécifique pour les voies pour les controles de type lookup sans limitation. Les lookup gère le chargement des données et sont donc plus optimisé au nombreux résultats.

Préparer la base de données de TEST

Pays, Provinces, Régions

Importer les SSI/MRC suivants:

  • MRC Coaticook au complet;
  • MRC Vaudreuil-Soulanges au complet;
  • SSI Sutton / Lac Brôme;
  • SSI Sainte-Anne-Des-Lacs.

On importe:

  • Pays;
  • Provinces;
  • Régions;
  • Les MRCS;
  • SSI;
  • Types de villes;
  • Villes;
  • Liens villes/SSIs;
  • Rues;
  • Batîments (+ alias principal dans building_localization).

Créer les classes intermédiaires pour l'importation

Pour tous nos modèles pour lesquels on permettra l'importation.

image.png

Les classes intermédiaires seront à peu près identiques aux modèles, sauf sans les relations et les clefs étrangères seront des string qui correspondront aux IdExtern.

Sécurité lors du login

Il faudrait favoriser l’envoie du nom d’usager et de son mot de passe dans le « POST body » au lieu de l’url afin d’éviter que le mot de passe ne soit enregistré dans la cache.

Inspection course lanes validation in inspection review

Modify request of inspection building course lanes to return only active course lanes in getCompleteCourses, or create a new method to return the active.
When deleting a courseLane -> the course lane is removed from db instead of deactivated
-> InspectionBuildingCourseService -> SaveCompleteCourses

Valider le token d'accès avec la BD pour être sûr qu'il existe en BD même s'il est valide

Lorsqu'on valide le token, on ne valide aucunement via la BD si le token est encore valide, ce qui fait qu'on pourrait créer un token via un autre API qui utilise la même clef d'encodage et que ça passerait comme valide.

Il faudrait voir pour permettre la validation en BD du token. Je n'ai pas la moindre idée de comment intégrer ça dans le processus d'authentification par token d'ASP.net.

Enlever les méthodes non implémentées de l'API

Plusieurs méthodes sont non implémentées dans l'API, souvent à cause des méthode abstraite du BaseCrudService (Get(id), GetList()). Même si ces méthodes ne sont appelées que dans l'API test, il faut y apporter des validations pour que celle-ci ne causent pas d'erreur.
Modification:

  • Ajouter un autre service BaseCrudServiceWithGet avec ces méthodes abstraite et modifier l'existant pour les enlever

Add country importation

  • Ajouter un controller ou utiliser le controller existant.
  • Ajouter un service ou utiliser le service existant.

Bref, on prend l'objet intermédiaire et on le transforme en objet "prévention" et fait l'insert, update ou delete approprié.

Robustesse du serveur et gestion d'exceptions

Il y a peu de contrôle d’exception dans les différents services. Ceci implique qu’un accès au « Context » mal formulé, ou bien une donnée absente dans la base de données fait planter l’application à tout coups, et ce, avec très peu de verbosité.

Exemple : Dans la méthode « GetListActive » du fichier « WebuserService », le nom de famille est obtenu dynamiquement à l’aide de « lastname = users.Attributes.Where(a => a.AttributeName=="last_name") ». Par la suite, il n’y a pas de vérification afin de valider que « lastname » n’est pas nulle avant d’accéder à « lastname.AttributeValue ». Bien que tous les utilisateurs aient les attributs de bases (first_name, last_name, reset_password) associés, la requête retourne des valeurs nulles et l’absence de vérification lance une exception qui n’est pas attrapée.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.