|{{:connexe.jpg?40|}} **Sujets connexes**|[[:technique]]\\ [[technique:descendanceclasses]]\\ [[technique:champsauto]] | ====== Fonction REST "fw_CRUD" ====== ===== Les tables concernées ===== ==== Les tables de type "Fichier" ==== ^Nom de la table^Clef sur l'index à utiliser^Champs complémentaires^Nom de l'unité^Plus d'information^ |Famille|ID|ListeCerfa\\ MontantTotalCerfa\\ |RecordFamille|[[https://logeas.wiki.logeas.fr/doku.php?id=certif:technique:famille|Structure de la table]]| |Personne|ID| |RecordPersonne|[[https://logeas.wiki.logeas.fr/doku.php?id=certif:technique:personne|Structure de la table]]| === Privacy by design des tables "Famille" & "Personne" === La fonction assure le filtrage à la source coté serveur c'est à dire : * que seul les données que l'utilisateur peut consulter sont envoyé à l'interface client * que les données qui sont reçu de l'interface client sont filtrées avant d'être enregistré afin d'éviter tout risque ^Fonction^Droit générique^Droit complémentaire pour certains champs^^Géré par^ ^ ::: ^ ::: ^Nom du champ^Droit nécessaire^^ |Voir|dfLecture|||TSQLLoGeAsRecord.IsAutorisetable| | ::: | |Cerfa*|dfLectureComptable ou dcLecture ou dfVoirEstDonateur|TSQLLoGeAsRecord.GetListeChamp| | ::: | |ListeCerfa\\ MontantTotalCerfa|dfLectureComptable ou dcLecture|TSQLLoGeAsRecord.CRUD_Read| | ::: | |MemoPerso|dfLectureConfidentielle|TSQLLoGeAsRecord.GetListeChamp| | ::: | |Champs perso "comptable"|dfLectureComptable ou dcLectur|TSQLLoGeAsRecord.GetListeChamp| |si archivé en plus|dfVoirArchive| | | | |pour Modifier|dfEdition| | |Interface & TSQLLoGeAsRecord.CRUD_Update| |pour Créer|dfAjout| | |Interface & TSQLLoGeAsRecord.CRUD_Create| |pour Supprimer|dfSuppression| | |Interface & TSQLLoGeAsRecord.CRUD_Delete| ==== Les tables de type "Comptable" ==== ^Nom de la table^Clef sur l'index à utiliser^Champs complémentaires^Nom de l'unité^Plus d'information^ ==== Les autres tables ==== ^Nom de la table^Clef sur l'index à utiliser^Champs complémentaires^Nom de l'unité^Plus d'information^ |Config|NomFichier| |RecordConfig|[[https://logeas.wiki.logeas.fr/doku.php?id=certif:technique:Config|Structure de la table]]\\ [[technique:ConfigDetail|Détail du contenu]]| |FichierTexte|NomFichier| |RecordFichierTexte|[[https://logeas.wiki.logeas.fr/doku.php?id=certif:technique:FichierTexte|Structure de la table]]\\ [[technique:FichietTexteDetail|Détail du contenu]]| ===== Paramètres d'entrée ===== NB : **Pour accéder à cette fonction le demandeur doit au préalable être identifié** \\ ^Nom du paramètres^Attendu^ |**Fonction**|Indique le type d'action attendu du serveur (seul la première lettre est significative).| |**Record**|Json correspondant à une classe descendante de "TSQLLoGeAsRecord"| |**SQLTableName**|Nom de la table à "travailler"| |**Info**|Information sur le demandeur sous forme d'un Json\\ '{"SUIDBase":"31ADD2E180378001", "Exercice":2019,"Secteur":1, "LogonName":"jetest@pgi.logeas.fr"}'\\ peut être vide dans certains cas mais doit être quand même présent| ==== Contenu de record suivant la fonction ==== ^Fonction^Explication^Contenu de **Record**^Droits à vérifier^Actions spécifiques^ |**C**reate|Création/ajout d'un nouvel enregistrement dans la table|Le champ **ID** doit être inférieur ou égal à 0\\ Les autres champs contenir les valeurs attendus ([[technique:champsauto|hors champs automatiques]])\\ [[https://logeas.wiki.logeas.fr/doku.php?id=certif:technique:famille|Voir dans la doc les champs obligatoires]]|dfAjout| * Mise à jour des champs automatique| |**R**ead|Lecture d'un enregistrement de la table|Le champ **Key** de la table doit contenir la valeur attendu|dfLecture| | | ::: |Lecture de la table entiére|Le champ **Key** de la table doit contenir la valeur **0** ou **' '**|dfLecture| | |**U**pdate|Modification d'un enregistrement de la table|Le champ **ID** doit contenir le numéro de l'enregistrement\\ \\ Les autres champs contenir les valeurs attendus ([[technique:champsauto|hors champs automatiques]])|dfEdition| * Mise à jour des champs automatique | |**D**elete|Effacement d'un enregistrement de la table|Le champ **ID** doit contenir le numéro de l'enregistrement à dfSuppression|dfLecture| | **NB:** * L'archivage d'un enregistrement passe par un update (Champ "archive') * Chaque modification est pisté dans le piste d'audit ==== Appel de la fonction CRUD depuis Angular ==== === Appel "Simple" === Ce mode d'appel est à utiliser par exemple pour récupérer une liste de paramétrage\\ constructor( private REST:MormotClientService ) {}; L'appel nécessite la bibliothèque **MormotClientService** qui elle même utilise la bibliothèque **mORMotClient.js** ngOnInit(): void { this.REST.CRUD('Read','FichierTexte',{NomFichier:"/PersonneTitre.Txt"}).subscribe({ next: (res:any) => {this.PersonneTitre=res}, error: (error) => {this.SuiteValidation(false,error)} }); } On demande l'initialisation de la liste via un observable.\\ A sa réalisation celui-ci initialisera la variable PersonneTitre sinon il appellera la fonction SuiteValidation en indiquant l'erreur === Appel via un "Service" === Ce mode d'appel est à utiliser quand la ressource est utilisé par plusieurs composant\\ == Unité "service" == private InfoEcranFamille = new TInfoFamille; infoEcranFamille = new BehaviorSubject(this.InfoEcranFamille); On déclare "BehaviorSubject" constructor(private REST:MormotClientService){ this.REST.CRUD('Read','Famille','').subscribe((res:any) => { this.InfoEcranFamille.chargeData(JSON.parse(res.result)); this.emitInfofamille(); }); } Dans cette version quand la data est accessible la fonction emitInfofamille est appelé, c'est elle qui va propager la data chez les client.. private emitInfofamille() { console.log('EMIT INFO'); if (this.InfoEcranFamille.charge()) {this.infoEcranFamille.next(this.InfoEcranFamille);} }; == Dans l'unité cliente == constructor( private restFamille:FamilleService ) {}; On déclare le service ngOnInit(): void { this.restFamille.infoEcranFamille.subscribe((value) => this.onChangeTableFamille(value)); } On souscrit à la variable du service, lors de la dispo on peut initialiser une variable ou appeler une fonction qui fera un traitement onChangeTableFamille(value:TInfoFamille){ if (value.charge()) { console.log('ONCHANGEFAMILLE ',value) this.TableFamille=value.data; this.columnsFamille=value.format; this.FamilleCourante=this.TableFamille[0]; if (value.marker.length>0) { this.TableMakers = []; value.marker.forEach((e) => { console.log('e.id '+e.ID); let mark:TMarkers = {"id":e.ID, "location" : e.location, "tooltip" : {"isShown" : false, "text":e.tooltip}}; this.TableMakers.push(mark); }); console.log('onChangeTableFamille '+JSON.stringify(this.TableMakers)) } } } ===== Sortie ===== ==== Exécution correcte ==== Dans le cas ou l'exécution c'est bien passé le serveur retourne un json contenant le TSQLFamille tel qu'enregistré dans la base. ==== Erreur lors de l'exécution ==== ^Code erreur^Explication possible^ |400|Il manque des paramètres à la fonction| |Autres codes|Voir le texte d'explication|