Can mark need help as treated
This commit is contained in:
parent
bb7c4f32e4
commit
9c0e35b1e2
6
help.go
6
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()
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -1,10 +1,24 @@
|
||||
<script lang="ts">
|
||||
import { user } from '../stores/user';
|
||||
import { getUser, getUserNeedingHelp } from '../lib/users';
|
||||
import DateFormat from '../components/DateFormat.svelte';
|
||||
import SurveyList from '../components/SurveyList.svelte';
|
||||
import ValidateSubmissions from '../components/ValidateSubmissions.svelte';
|
||||
|
||||
let direct = null;
|
||||
|
||||
let users_needing_help = [];
|
||||
$: if ($user && $user.is_admin) {
|
||||
users_needing_help = getUserNeedingHelp();
|
||||
}
|
||||
|
||||
async function mark_needhelp_treated(unh) {
|
||||
unh.mark_treated();
|
||||
|
||||
unh.save().then(() => {
|
||||
users_needing_help = getUserNeedingHelp();
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="card bg-light">
|
||||
@ -29,7 +43,7 @@
|
||||
|
||||
{#if $user.is_admin}
|
||||
<p class="lead">Demande d'aide :</p>
|
||||
{#await getUserNeedingHelp()}
|
||||
{#await users_needing_help}
|
||||
<span class="spinner-border spinner-border" role="status" aria-hidden="true"></span>
|
||||
{:then nhs}
|
||||
<ul style="columns: 2">
|
||||
@ -40,7 +54,14 @@
|
||||
{:then u}
|
||||
<a href="users/{u.id}">{u.login}</a>
|
||||
{/await}
|
||||
({user.date})
|
||||
(<DateFormat date={user.date} dateStyle="medium" timeStyle="medium" />)
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-sm btn-info"
|
||||
on:click={e => {mark_needhelp_treated(user)}}
|
||||
>
|
||||
<i class="bi bi-check" title="Marquer la demande d'aide comme traîtée"></i>
|
||||
</button>
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
|
Reference in New Issue
Block a user