Produit minimal viable #1

Merged
vlbeaudoin merged 8 commits from victor/wip into main 2024-12-30 19:48:53 -05:00
3 changed files with 18 additions and 6 deletions
Showing only changes of commit 12f41c83b9 - Show all commits

12
db.go
View file

@ -59,6 +59,18 @@ VALUES (
); );
`, transaction.MembreID, transaction.IsPerpetual) `, transaction.MembreID, transaction.IsPerpetual)
if err != nil { if err != nil {
if err.Error() == `ERROR: duplicate key value violates unique constraint "transactions_pkey" (SQLSTATE 23505)` {
return fmt.Errorf("Membre '%s' a déjà reçu son agenda %s.",
transaction.MembreID,
func() string {
if transaction.IsPerpetual {
return "perpétuel"
} else {
return "non-perpétuel"
}
}(),
)
}
return err return err
} }

View file

@ -97,7 +97,7 @@ func UICreateTransaction(ctx context.Context, cfg Config, bottinClient *bottin.A
membreID := c.FormValue("membre_id") membreID := c.FormValue("membre_id")
if membreID == "" { if membreID == "" {
return fmt.Errorf("👎 Aucun numéro étudiant sélectionné. Assurez-vous de cliquer sur la case 'Numéro étudiant:' avant de scanner.") return fmt.Errorf("Aucun numéro étudiant sélectionné. Assurez-vous de cliquer sur la case 'Numéro étudiant:' avant de scanner.")
} }
//TODO check if membre already received before checking bottin //TODO check if membre already received before checking bottin
@ -106,13 +106,13 @@ func UICreateTransaction(ctx context.Context, cfg Config, bottinClient *bottin.A
membreResponse, err := bottinClient.ReadMembre(ctx, membreID) membreResponse, err := bottinClient.ReadMembre(ctx, membreID)
if err != nil { if err != nil {
if err.Error() == "400 no rows in result set" { if err.Error() == "400 no rows in result set" {
return fmt.Errorf("👎 Numéro étudiant introuvable %s", membreID) return fmt.Errorf("Numéro étudiant introuvable %s", membreID)
} }
return err return err
} }
if membreResponse.Data.Membre.ID != membreID { if membreResponse.Data.Membre.ID != membreID {
return fmt.Errorf("👎 Bottin a retourné '%s' en demandant '%s'", membreID, membreResponse.Data.Membre.ID) return fmt.Errorf("Bottin a retourné '%s' en demandant '%s'", membreID, membreResponse.Data.Membre.ID)
} }
// dbclient.CreateTransaction // dbclient.CreateTransaction
@ -124,7 +124,7 @@ func UICreateTransaction(ctx context.Context, cfg Config, bottinClient *bottin.A
} }
// Prepare result message // Prepare result message
d.Result = fmt.Sprintf("👍 Membre %s peut recevoir son agenda %s", d.Result = fmt.Sprintf("Membre %s peut recevoir son agenda %s",
membreID, membreID,
func() string { func() string {
if isPerpetual { if isPerpetual {

View file

@ -112,8 +112,8 @@ button {
</ul> </ul>
</form> </form>
{{ if .Error }}<p class="result">Erreur: {{ .Error }}</p>{{ end }} {{ if .Error }}<p class="result">👎 {{ .Error }}</p>{{ end }}
{{ if .Result }}<p class="result">{{ .Result }}</p>{{ end }} {{ if .Result }}<p class="result">👍 {{ .Result }}</p>{{ end }}
</body> </body>