diff --git a/help.go b/help.go index 39f24dc..181ae7e 100644 --- a/help.go +++ b/help.go @@ -12,7 +12,7 @@ import ( func declareAPIAdminHelpRoutes(router *gin.RouterGroup) { router.GET("/help", func(c *gin.Context) { - nhs, err := getNeedHelps() + nhs, err := getNeedHelps("WHERE date_treated IS NULL") if err != nil { log.Println("Unable to getNeedHelps:", err) c.AbortWithStatusJSON(http.StatusInternalServerError, gin.H{"errmsg": "An error occurs during need helps retrieval. Please retry."}) @@ -82,8 +82,8 @@ type NeedHelp struct { DateTreated *time.Time `json:"treated,omitempty"` } -func getNeedHelps() (nh []NeedHelp, err error) { - if rows, errr := DBQuery("SELECT id_need_help, id_user, date, comment, date_treated FROM user_need_help"); errr != nil { +func getNeedHelps(cond string) (nh []NeedHelp, err error) { + if rows, errr := DBQuery("SELECT id_need_help, id_user, date, comment, date_treated FROM user_need_help " + cond); errr != nil { return nil, errr } else { defer rows.Close() diff --git a/ui/src/lib/users.js b/ui/src/lib/users.js index 70deb9d..b70104c 100644 --- a/ui/src/lib/users.js +++ b/ui/src/lib/users.js @@ -51,10 +51,51 @@ export async function getUserScore(uid, survey) { } } +export class UserNeedingHelp { + constructor(res) { + if (res) { + this.update(res); + } + } + + update({ id, id_user, date, comment, treated }) { + this.id = id; + this.id_user = id_user; + this.date = new Date(date); + this.comment = comment; + if (treated) { + this.treated = new Date(treated); + } else { + this.treated = null; + } + } + + mark_treated() { + this.treated = new Date(); + } + + async save() { + const res = await fetch(this.id?`api/help/${this.id}`:'api/help', { + method: this.id?'PUT':'POST', + headers: {'Accept': 'application/json'}, + body: JSON.stringify(this), + }); + if (res.status == 200) { + const data = await res.json() + this.update(data); + return data; + } else { + throw new Error((await res.json()).errmsg); + } + } +} + export async function getUserNeedingHelp() { const res = await fetch(`api/help`, {headers: {'Accept': 'application/json'}}) if (res.status == 200) { - return await res.json(); + return (await res.json()).map((nh) => { + return new UserNeedingHelp(nh) + }); } else { throw new Error((await res.json()).errmsg); } diff --git a/ui/src/routes/index.svelte b/ui/src/routes/index.svelte index de5e9aa..1da957e 100644 --- a/ui/src/routes/index.svelte +++ b/ui/src/routes/index.svelte @@ -1,10 +1,24 @@
@@ -29,7 +43,7 @@ {#if $user.is_admin}

Demande d'aide :

- {#await getUserNeedingHelp()} + {#await users_needing_help} {:then nhs}