---
# System prepended metadata

title: ADM suppression documents

---

# Supprimé/Annulé une demande de pièces administratives par l'ADM [non terminé]

Descriptif de ce que l'on a actuellement:

## Gestion des documents administratifs

Les étudiants peuvent upload leurs documents de pièces administratives via l'intra student.

Les ADM gèrent un google sheet de liste concernant ces derniers.
Elle contient l'état des documents pour chaque étudiant. ["oui", "non"]. Oui signifie que le document existe dans nos outils et non qu'il n'y existe pas.

Un script du Blu va passer sur le google sheet de l'ADM et va s'occuper d'insérer les demandes de documents en BDD dans la table my_sap.student_requested_docs.

L'étudiant aperçoit alors un bandeau rouge sur son intra, qui lui annonce les documents manquants et le redirige sur un formulaire afin d'upload ses documents sur le link.

L'ADM accepte les documents.

## Mission
Fournir la possibilité pour l'ADM de pouvoir supprimer et annuler une demande de documents administratifs.

## Pourquoi cette mission ?
- L'ADM ne peut qu'accepter des demandes depuis la GUI
- L'ADM n'a pas d'éléments sur la GUI pour refuser/annulé une demande. C'est au Blu de le faire. 
- Notifier l'étudiant si c'est refusé afin qu'il puisse re-upload :warning:
  - Aujourd'hui, l'adm envoie directement un mail à l'étudiant, pas besoin pour le moment de coder
    quelque chose de spécifique pour ce besoin.
- Le même document ne peut pas être upload deux fois sur link


#### questions
- Peut-on remplacer le bouton annulé gris par un bouton retour gris ? -> Oui
- L'insertion en BDD d'une demande de documents se fait quand ? -> </br>Un script du Blu va analyser le tableau google sheet des ADM qui contient l'état des documents. Il va s'occuper en fonction de l'état du document d'insérer en base de données les demandes de documents dans la table student_requested_documents.
- Est-ce-que c'est à l'étudiant ou à l'ADM d'upload les fichiers ? pourquoi l'ADM peut upload ? -> Les deux, si l'étudiant rencontre un problème, alors l'ADM pourra upload pour lui via le hub sur report.html.
## User story

Point de vue ADM :

En tant qu'ADM, je souhaite pouvoir annuler ou supprimer une demande, afin de ne pas déranger le Blu.

## User flow

##### SCENARIO ajout de pièces administratives
```mermaid
flowchart TD
    A[Lors de l'inscription d'un étudiant: <br>L'ADM envoie un mail à l'étudiant demendant les documents administratifs. <br> L'ADM met à jour son google sheet, leur liste qui contient l'état des documents. </br> Cette liste permet de savoir quels document doivent être demandé ou non.] -->|Implique la bdd| B(Un script du Blu passent sur ce google sheet </br>Il se charge de créer les demandes de documents en BDD <br> Insertion dans my_sap->student_requested_documents)
    B -->|implique sur l'intranet de l'étudiant| C[Créer un bandeau rouge sur la page d'accueil de l'étudiant <br> Ce composant est chargé depuis hub/registration/student-alert-box <br> Contient une liste des documents administratifs manquants de l'étudiant <br> Le bouton compléter, si cliquer, va rediriger l'étudiant sur le hub/intra/registration]
    C -->|redirige l'étudiant sur hub/intra/registration| D[L'étudiant y voit la liste des documents avec un lien pour chacun d'entre eux <br> redirigeant chacun sur leurs propres formulaires d'upload <br> L'étudiant peut soit upload ses documents, soit revenir sur l'intra]
```

##### SCENARIO vérification de l'état des pièces administratives

```mermaid
flowchart TD
    A[L'ADM se rend sur hub/intra/registration/report <br> L'ADM peut voir  le tableau de l'états de tous les documents administratif d'un étudiant] --> |Manquant| D[Boite de dialogue pour uploader un document. <br>Actions possibles: <br> Parcourir un fichier, Envoyer, Annuler]
    A -->|Fournis| E[ Boite de dialogue pour valider un document </br> Actions possibles:<br> Valider le document fournit, Retour]
    A -->|Vide| F[Pas d'actions possibles :<br> Le document existe dans nos outils]
```

##### SCENARIO solution ajouter les boutons supprimer/annuler
```mermaid
flowchart TD
    A[L'ADM se rend sur hub/intra/registration/report <br> L'ADM peut voir  le tableau de l'états de tous les documents administratif d'un étudiant] --> |Manquant| D[Boîte de dialogue pour upload un fichier: </br>Actions possibles: <br> Parcourir, Envoyer, Annuler la demande, Retour]
    A -->|Fournis| E[Boite de dialogue pour valider un document </br> Actions possibles:<br> Valider, Refuser la demande, Retour ]
    A -->|Vide| F[Pas d'actions possibles:<br> Le document existe dans nos outils]
```

#### Maquette de la solution
###### état manquant avant
![](https://hackmd.io/_uploads/S1ai2P9n2.png)

###### état manquant après
![](https://hackmd.io/_uploads/B1RI3wq22.png)

![](https://hackmd.io/_uploads/SJFyL3j3n.png)

##### en cas d'erreur
![](https://hackmd.io/_uploads/H1FkiDi3h.png)

###### état fourni avant
![](https://hackmd.io/_uploads/SJ4M6Dcnn.png)

###### état fourni après

![](https://hackmd.io/_uploads/H15zD2on2.png)

![](https://hackmd.io/_uploads/rk_wU2o33.png)



##### en cas d'erreur
![](https://hackmd.io/_uploads/H1FkiDi3h.png)

# Architecture Backend-end 

Nous réaliserons une route sur le hub, dans la section intra de l'api.

|objectif        | annuler une demande     |
|--------------- |-------------------      |
|description     |Supprimer dans la table my_sap.student_requested_documents la ligne qui correspond à l'id de la demande envoyée en paramètre. </br> </br> Si il y a un problème renvoyer une erreur spécifique qui permettra d' afficher une popup dans le front.|
|url             |/intra/registration/student-request-documents/:id               |
| method         | DELETE                   |
| retour         | 204 ou 500              |
| modèle         | Aucun                   |
| sécurité       | contrôle de l'étudiant ? contrôle des autorisations (rôle ADM uniquement)        |


|objectif        | refuser une demande     |
|--------------- |-------------------      |
|description     | Supprimer le document correspondant à l'étudiant sur link. </br></br>(Dans l'objet student_requested_documents, on y récupère l'url de download soit par exemple etudiants/41964/Dossier Inscription/2029-03-03 - ID.pdf </br> Faire une requête DELETE a link-api sur link_api_url/delete/{download_url}. </br></br> Si le fichier ne se supprime pas, jeter une erreur spécifique afin de notifier dans le front l'ADM avec une pop-up d'erreur : le refus de la demande à rencontré un problème. Le fichier n'a pas pu être supprimé sur link. </br> </br> Editer la ligne de la table my_sap.student_requested_documents qui correspond a l'id de la demande envoyée en paramètre et y mettre les champs :  </br> </br>download_url, expiration_date, validated_by,validated_at, uploaded_at à nulle. Ne pas toucher à requested_at, ni deadline.      |
|url             |/intra/registration/student-request-documents/:id/refuse               |
| method         | POST                   |
| retour         | 204 ou 500              |
| modèle         | Aucun                   |
| sécurité       | contrôle de l'étudiant ? </br> contrôle des autorisations (rôle ADM uniquement)        |


#### Source utilisée pour réaliser cette documentation
- https://github.com/etna-alternance/wiki-dev/wiki/refuser-annuler-des-demandes-de-documents-administratif
- Une personne de l'ADM

#### Coquille
Il manque un S dans le titre de la page report.html