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  }