chore(deps): update module github.com/coreos/go-oidc to v3 - autoclosed #17
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_user) REFERENCES users(id_user),
|
||||||
FOREIGN KEY(id_survey) REFERENCES surveys(id_survey)
|
FOREIGN KEY(id_survey) REFERENCES surveys(id_survey)
|
||||||
) DEFAULT CHARACTER SET = utf8 COLLATE = utf8_bin;
|
) 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 {
|
`); err != nil {
|
||||||
return err
|
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>
|
<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>
|
</script>
|
||||||
|
|
||||||
@ -22,19 +43,21 @@
|
|||||||
|
|
||||||
<p>
|
<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,
|
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 ;
|
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.
|
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>
|
||||||
|
|
||||||
<p class="mt-4">
|
{#if $user}
|
||||||
Si tu souhaites juste avoir un peu plus d'attention, soit parce que tu te sens à l'écart, en difficulté ou autre :
|
<p class="mt-4">
|
||||||
<button
|
Si tu souhaites juste avoir un peu plus d'attention, soit parce que tu te sens à l'écart, en difficulté ou autre :
|
||||||
type="button"
|
<button
|
||||||
class="btn btn-sm btn-primary"
|
type="button"
|
||||||
on:click={needhelp}
|
class="btn btn-sm btn-primary"
|
||||||
>
|
on:click={needhelp}
|
||||||
Clique ce bouton
|
>
|
||||||
</button>
|
Clique ce bouton
|
||||||
</p>
|
</button>
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<div class="mb-5"></div>
|
<div class="mb-5"></div>
|
||||||
|
Reference in New Issue
Block a user