Implement need-help feature
This commit is contained in:
parent
5803da3a05
commit
46535e5353
12
db.go
12
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
|
||||
}
|
||||
|
56
help.go
Normal file
56
help.go
Normal file
@ -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
|
||||
}
|
||||
}
|
@ -1,6 +1,27 @@
|
||||
<script>
|
||||
function needhelp() {
|
||||
import { user } from '../stores/user';
|
||||
import { ToastsStore } from '../stores/toasts';
|
||||
|
||||
function needhelp() {
|
||||
fetch('api/help', {
|
||||
method: 'POST',
|
||||
}).then((response) => {
|
||||
response.json().then((data) => {
|
||||
ToastsStore.addToast({
|
||||
color: "info",
|
||||
title: "Assistance",
|
||||
msg: data.comment,
|
||||
});
|
||||
})
|
||||
}, (response) => {
|
||||
pleaseWait = false;
|
||||
if (response.data)
|
||||
ToastsStore.addToast({
|
||||
color: "danger",
|
||||
title: "Une erreur s'est produite",
|
||||
msg: (response.data ? response.data.errmsg : "Impossible de contacter le serveur"),
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -22,19 +43,21 @@
|
||||
|
||||
<p>
|
||||
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 <a href="mailto:nemunaire@nemunai.re">par e-mail</a> ou bien <a href="https://matrix.to/#/@nemunaire:nemunai.re">sur Matrix</a> 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 <a href="mailto:nemunaire@nemunai.re">par e-mail</a> ou bien <a href="https://matrix.to/#/@nemunaire:nemunai.re">sur Matrix</a> ou Teams{/if}.
|
||||
</p>
|
||||
|
||||
<p class="mt-4">
|
||||
Si tu souhaites juste avoir un peu plus d'attention, soit parce que tu te sens à l'écart, en difficulté ou autre :
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-sm btn-primary"
|
||||
on:click={needhelp}
|
||||
>
|
||||
Clique ce bouton
|
||||
</button>
|
||||
</p>
|
||||
{#if $user}
|
||||
<p class="mt-4">
|
||||
Si tu souhaites juste avoir un peu plus d'attention, soit parce que tu te sens à l'écart, en difficulté ou autre :
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-sm btn-primary"
|
||||
on:click={needhelp}
|
||||
>
|
||||
Clique ce bouton
|
||||
</button>
|
||||
</p>
|
||||
{/if}
|
||||
|
||||
<div class="mb-5"></div>
|
||||
|
Reference in New Issue
Block a user