github.com/benoitkugler/goacve@v0.0.0-20201217100549-151ce6e55dc8/server/equipier/views.go (about) 1 package equipier 2 3 import ( 4 "github.com/benoitkugler/goACVE/server/core/apiserver" 5 "github.com/benoitkugler/goACVE/server/documents" 6 "github.com/benoitkugler/goACVE/server/shared" 7 "github.com/labstack/echo" 8 ) 9 10 // FormulaireEquipier renvoie la page statique 11 // du formulaire equipier. 12 func FormulaireEquipier(c echo.Context) error { 13 return c.File("server/static/bv/equipier.html") 14 } 15 16 // DatasEquipier renvoie les informations de l'équipier. 17 func (ct Controller) DatasEquipier(c echo.Context) error { 18 idEquipier, err := ct.identifie(c.Param("cryptedId")) 19 if err != nil { 20 return shared.FormatErr("L'identification a échoué. Es-tu sûr du lien utilisé ?", err) 21 } 22 params, err := ct.loadData(c.Request().Host, idEquipier) 23 if err != nil { 24 return shared.FormatErr("La lecture des informations a échouée.", err) 25 } 26 return c.JSON(200, params) 27 } 28 29 // DatasJoomeo renvoie le lien vers l'album du séjour, 30 // si l'équipier y est invité. 31 func (ct Controller) DatasJoomeo(c echo.Context) error { 32 idEquipier, err := ct.identifie(c.Param("cryptedId")) 33 if err != nil { 34 return shared.FormatErr("L'identification a échoué. Es-tu sûr du lien utilisé ?", err) 35 } 36 37 datas, err := ct.loadJoomeo(idEquipier) 38 if err != nil { 39 return err 40 } 41 return c.JSON(200, datas) 42 } 43 44 // UpdateEquipier met à jour l'équipier. 45 func (ct Controller) UpdateEquipier(c echo.Context) error { 46 idEquipier, err := ct.identifie(c.Param("cryptedId")) 47 if err != nil { 48 return shared.FormatErr("L'identification a échoué. Es-tu sûr du lien utilisé ?", err) 49 } 50 51 var args EquipierEquipier 52 if err := c.Bind(&args); err != nil { 53 return shared.FormatErr("Le profil transmis est invalide.", err) 54 } 55 56 updatedEquipier, err := ct.updateEquipier(args, idEquipier) 57 if err != nil { 58 return shared.FormatErr("La mise à jour des données a échouée.", err) 59 } 60 return c.JSON(200, updatedEquipier) 61 } 62 63 // UpdateCharte modifie uniquement la réponse de l'équipier à la charte. 64 func (ct Controller) UpdateCharte(c echo.Context) error { 65 idEquipier, err := ct.identifie(c.Param("cryptedId")) 66 if err != nil { 67 return shared.FormatErr("L'identification a échoué. Es-tu sûr du lien utilisé ?", err) 68 } 69 70 var args CharteIn 71 if err := c.Bind(&args); err != nil { 72 return shared.FormatErr("Les méta-données sont invalides.", err) 73 } 74 if err := args.Charte.Check(); err != nil { 75 return shared.FormatErr("Les méta-données sont invalides.", err) 76 } 77 err = ct.updateCharte(idEquipier, args.Charte) 78 if err != nil { 79 return err 80 } 81 return c.NoContent(200) 82 } 83 84 // AjouteDocumentEquipier créé les meta-données d'un document à upload, 85 // upload le contenu et renvoie le document publique. 86 func (ct Controller) AjouteDocumentEquipier(c echo.Context) error { 87 idEquipier, err := ct.identifie(c.Param("cryptedId")) 88 if err != nil { 89 return shared.FormatErr("L'identification a échoué. Es-tu sûr du lien utilisé ?", err) 90 } 91 92 var args AjouteDocumentIn 93 fileName, fileContent, err := documents.ReceiveUploadWithMeta(c, apiserver.DOCUMENT_MAX_SIZE, &args) 94 if err != nil { 95 return shared.FormatErr("Téléversement impossible.", err) 96 } 97 idContrainte, err := shared.DecodeID(ct.Signing, args.IdContrainteCrypted, shared.OrContrainte) 98 if err != nil { 99 return err 100 } 101 102 pub, err := documents.CreeDocumentEquipier(ct.Signing, ct.DB, c.Request().Host, idEquipier, documents.ParamsNewDocument{ 103 IdContrainte: idContrainte, 104 Description: "Ajouté depuis la page Equipier", 105 FileContent: fileContent, 106 FileName: fileName, 107 }) 108 if err != nil { 109 return err 110 } 111 return c.JSON(200, pub) 112 }