diff --git a/db.go b/db.go index b652d4b..b227c80 100644 --- a/db.go +++ b/db.go @@ -167,6 +167,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/components/Toaster.svelte b/ui/src/components/Toaster.svelte index 93c12ba..0399e88 100644 --- a/ui/src/components/Toaster.svelte +++ b/ui/src/components/Toaster.svelte @@ -2,7 +2,7 @@ import { ToastsStore } from '../stores/toasts'; -
+
{#each $ToastsStore.toasts as toast}