diff --git a/db.go b/db.go index a8aafb9..d9c7194 100644 --- a/db.go +++ b/db.go @@ -168,6 +168,18 @@ CREATE TABLE IF NOT EXISTS survey_asks( FOREIGN KEY(id_user) REFERENCES users(id_user), FOREIGN KEY(id_survey) REFERENCES surveys(id_survey) ) DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin; +`); err != nil { + return err + } + if _, err := db.Exec(` +CREATE TABLE IF NOT EXISTS user_need_help( + id_need_help INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, + id_user INTEGER NOT NULL, + date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + comment TEXT NOT NULL, + date_treated TIMESTAMP NULL, + FOREIGN KEY(id_user) REFERENCES users(id_user) +) DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin; `); err != nil { return err } diff --git a/help.go b/help.go new file mode 100644 index 0000000..fd891af --- /dev/null +++ b/help.go @@ -0,0 +1,56 @@ +package main + +import ( + "time" + + "github.com/julienschmidt/httprouter" +) + +func init() { + router.POST("/api/help", apiAuthHandler(func(u *User, ps httprouter.Params, body []byte) HTTPResponse { + return formatApiResponse(u.NewNeedHelp()) + }, loggedUser)) +} + +type NeedHelp struct { + Id int64 `json:"id"` + IdUser int64 `json:"id_user"` + Date time.Time `json:"date"` + Comment string `json:"comment,omitempty"` + DateTreated *time.Time `json:"treated,omitempty"` +} + +func (u *User) NewNeedHelp() (NeedHelp, error) { + if res, err := DBExec("INSERT INTO user_need_help (id_user, comment) VALUES (?, ?)", u.Id, ""); err != nil { + return NeedHelp{}, err + } else if hid, err := res.LastInsertId(); err != nil { + return NeedHelp{}, err + } else { + return NeedHelp{hid, u.Id, time.Now(), "Ton appel a bien été entendu.", nil}, nil + } +} + +func (h *NeedHelp) Update() error { + _, err := DBExec("UPDATE user_need_help SET id_user = ?, date = ?, comment = ?, date_treated = ? WHERE id_need_help = ?", h.IdUser, h.Date, h.Comment, h.DateTreated, h.Id) + return err +} + +func (h *NeedHelp) Delete() (int64, error) { + if res, err := DBExec("DELETE FROM user_need_help WHERE id_need_help = ?", h.Id); err != nil { + return 0, err + } else if nb, err := res.RowsAffected(); err != nil { + return 0, err + } else { + return nb, err + } +} + +func ClearNeedHelp() (int64, error) { + if res, err := DBExec("DELETE FROM user_need_help"); err != nil { + return 0, err + } else if nb, err := res.RowsAffected(); err != nil { + return 0, err + } else { + return nb, err + } +} diff --git a/ui/src/routes/help.svelte b/ui/src/routes/help.svelte index ebd24c0..07c97ed 100644 --- a/ui/src/routes/help.svelte +++ b/ui/src/routes/help.svelte @@ -1,6 +1,27 @@ @@ -22,19 +43,21 @@

Si tu souhaites me parler d'une situation qui t'a troublé·e, d'un problème que tu rencontres ou me faire une remarque, - n'hésite pas à venir me voir lors d'un cours, par exemple à la pause ou à la fin ; - je suis aussi joignable par e-mail ou bien sur Matrix ou Teams. + n'hésite pas à venir me voir lors d'un cours, par exemple à la pause ou à la fin{#if $user} ; + je suis aussi joignable par e-mail ou bien sur Matrix ou Teams{/if}.

-

- Si tu souhaites juste avoir un peu plus d'attention, soit parce que tu te sens à l'écart, en difficulté ou autre : - -

+{#if $user} +

+ Si tu souhaites juste avoir un peu plus d'attention, soit parce que tu te sens à l'écart, en difficulté ou autre : + +

+{/if}