Skip to content

Commit

Permalink
maj comptes admin + dr
Browse files Browse the repository at this point in the history
  • Loading branch information
AntonyKLINGER committed May 27, 2024
1 parent f36a8b2 commit 728c84d
Show file tree
Hide file tree
Showing 18 changed files with 631 additions and 110 deletions.
46 changes: 24 additions & 22 deletions components/AllSessions.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import AddSession from '@/components/AddSession'
import SessionsModule from '@/components/SessionsModule'
import styles from '@/styles/Admin.module.css'

export default function Modules({setPage, page}){
export default function Modules({setPage, page, user}){

const [open, setOpen] = useState(null)
const [alert, setAlert] = useState(null)
Expand Down Expand Up @@ -107,7 +107,6 @@ export default function Modules({setPage, page}){
getSessions(tri, status, region, codes);
}

console.log(sessions)

return (
<>
Expand Down Expand Up @@ -169,25 +168,28 @@ export default function Modules({setPage, page}){
<div className="mTop30">
{sessions.length > 0 ? (
sessions.map((session, index) => {
return (
<div key={index} className="w100 mBot10">
<SessionsBack
date={session.dateDebut}
code={session.module.code}
region={session.region}
dept={session.departement}
title={session.moduleName}
id={session.id}
moduleId={session.moduleId}
setOpen={setOpen}
setAlert={setAlert}
action={() => deleteSession(session.id)}
status={session.status}
setActions={setActions}
session={session}
/>
</div>
)
if(session.status == 'publish' || user.type == 'Administrateur' || user.id == 10){
return (
<div key={index} className="w100 mBot10">
<SessionsBack
date={session.dateDebut}
code={session.module.code}
region={session.region}
dept={session.departement}
title={session.moduleName}
id={session.id}
moduleId={session.moduleId}
setOpen={setOpen}
setAlert={setAlert}
action={() => deleteSession(session.id)}
status={session.status}
setActions={setActions}
session={session}
user={user}
/>
</div>
)
}
})
) : (
<>
Expand Down Expand Up @@ -229,7 +231,7 @@ export default function Modules({setPage, page}){
<div className="mBot30">
<span onClick={() => setOpen(null)} className={styles.Back}>Retour aux modules</span>
</div>
<SessionsModule setOpen={setOpen} id={open.id} nom={open.nom} />
<SessionsModule setOpen={setOpen} id={open.id} nom={open.nom} user={user} />
</>
)}
</>
Expand Down
155 changes: 155 additions & 0 deletions components/Comptes.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
import { useState, useEffect } from 'react'
import Alert from '@/components/Alert'
import { Notif } from '@/components/Notif'
import styles from '@/styles/Admin.module.css'

export default function Comptes(){

const [alert, setAlert] = useState(null)
const [notif, setNotif] = useState(null)
const [create, setCreate] = useState(false)
const [actions, setActions] = useState(1)
const [account, setAccount] = useState({})
const [listAccount, setListAccount] = useState([])

useEffect(() => {
const getAccounts = async () => {
const geter = await fetch(`/api/accounts/`)
const json = await geter.json()
setListAccount(json)
}
getAccounts()
}, [alert, actions])

const handleChange = (e) => {
const { name, type, value } = e.target
setAccount(prev => {
return {
...prev,
[name]: value
}
})
}

const createAccount = async () => {
const { email, type } = account
if(email && type){
const add = await fetch(`/api/accounts/create`, {
method: 'POST',
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
email: email,
type: type
})
})
const json = await add.json()
if(json.status == "success"){

//reset
setCreate(false)
setAccount({})
setActions(prev => prev+1)

setNotif({
text: 'Le compte a bien été créé !',
icon: 'done'
});
}
else{
setNotif({
text: 'Cette adresse e-mail admin ou DR existe déjà !',
icon: 'close'
});
}
}
else{
setNotif({
text: 'Une information est manquante.',
icon: 'close'
});
}
}

const preDeleteAccount = (id) => {
setAlert({
icon: 'warning',
text: 'Êtes-vous sûr de vouloir supprimer ce compte ?',
action: () => deleteAccount(id)
});
}

const deleteAccount = async (id) => {
const response = await fetch(`/api/accounts/delete/?id=${id}`, {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
});
if(response.ok){
setNotif({
text: 'Le compte a bien été supprimé.',
icon: 'done'
});
}
setAlert(null)
}

return (
<>
<div className="flex aligncenter space-between w100 gap40">
<span className={`${styles.Title} w65`}>Comptes administrateurs et DR</span>
<button onClick={() => setCreate(prev => !prev)} className="btn__normal btn__dark">{create ? 'X' : 'Créer un compte'}</button>
</div>
{create && (
<div>
<div className="flex gap15">
<div className="w50 wm100">
<span className={styles.Subtitle}>Adresse e-mail du compte</span>
<input type="mail" name="email" onChange={handleChange} value={account.email} className="input-text w100 wm100" placeholder="Adresse e-mail" />
</div>
<div className="w50 wm100">
<span className={styles.Subtitle}>Type de compte</span>
<div className="select w100">
<select onChange={handleChange} name="type" value={account.type} className="input-select">
<option value=''>Choisir un type de compte</option>
<option>Administrateur</option>
<option>DR</option>
</select>
<span className="material-icons">expand_more</span>
</div>
</div>
</div>
<button onClick={createAccount} className="btn__normal btn__dark mTop15">Créer le compte</button>
</div>
)}
{listAccount.length > 0 ? (
<>
{listAccount.map((acc, i) => {
return (
<div className={`flex aligncenter space-between gap15 mTop15 ${styles.acc}`}>
<p>{acc.email}</p>
<div className="flex gap10 aligncenter">
<span>{acc.type}</span>
<button onClick={() => preDeleteAccount(acc.id)}>Supprimer</button>
</div>
</div>
)
})}
</>
) : (
<>
<p>Aucun compte n'a été créé pour le moment.</p>
</>
)}

{alert != null && (
<Alert datas={alert} setAlert={setAlert} />
)}
{notif != null && (
<Notif datas={notif} setNotif={setNotif} />
)}
</>
)
}
2 changes: 1 addition & 1 deletion components/Header.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export default function Header(){
<li onClick={() => setActiveMenu(prev => !prev)}><Link href="/rencontres">Les Rencontres</Link></li>
{user?.id ? (
<>
{user.id == 10 ? (
{(user.id == 10 || user.type == 'Administrateur' || user.type == 'DR') ? (
<li onClick={() => setActiveMenu(prev => !prev)} className={styles.pf}><Link href="/admin">Administration</Link></li>
) : (
<li onClick={() => setActiveMenu(prev => !prev)} className={styles.pf}><Link href="/espace-personnel">Espace personnel</Link></li>
Expand Down
9 changes: 6 additions & 3 deletions components/Modules.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import AddSession from '@/components/AddSession'
import SessionsModule from '@/components/SessionsModule'
import styles from '@/styles/Admin.module.css'

export default function Modules(setPage){
export default function Modules({setPage, user}){

const [open, setOpen] = useState(null)
const [alert, setAlert] = useState(null)
Expand Down Expand Up @@ -115,7 +115,9 @@ export default function Modules(setPage){
<>
<div className="flex aligncenter space-between w100 gap40">
<span className={`${styles.Title} w65`}>Tous les modules</span>
<button onClick={() => setOpen({ type: 'add', model: 'module' })} className="btn__normal btn__dark">Ajouter un nouveau module</button>
{user.type != 'DR' && (
<button onClick={() => setOpen({ type: 'add', model: 'module' })} className="btn__normal btn__dark">Ajouter un nouveau module</button>
)}
</div>
<div className="flex gap20 mTop30">
<div className="select w30">
Expand Down Expand Up @@ -159,6 +161,7 @@ export default function Modules(setPage){
setAlert={setAlert}
sessions={module.sessions}
action={() => deleteModule(module.id)}
user={user}
/>
</div>
)
Expand Down Expand Up @@ -197,7 +200,7 @@ export default function Modules(setPage){
<div className="mBot30">
<span onClick={() => setOpen(null)} className={styles.Back}>Retour aux modules</span>
</div>
<SessionsModule setOpen={setOpen} id={open.id} nom={open.nom} />
<SessionsModule setOpen={setOpen} id={open.id} nom={open.nom} user={user} />
</>
)}
</>
Expand Down
28 changes: 16 additions & 12 deletions components/ModulesBack.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Link from 'next/link'
import { useState, useEffect } from 'react'
import styles from '@/styles/ModuleBack.module.css'

export default function ModulesBack({date, code, lastUpdate, category, title, id, setOpen, setAlert, action, sessions}){
export default function ModulesBack({date, code, lastUpdate, category, title, id, setOpen, setAlert, action, sessions, user}){

function formatDate(dateString) {
const date = new Date(dateString);
Expand Down Expand Up @@ -37,17 +37,21 @@ export default function ModulesBack({date, code, lastUpdate, category, title, id
<span className={styles.Title}><span>Module ({nbSession} session{nbSession > 1 ? 's' : ''} à venir) :</span>{title}</span>
</div>
<div className="w50 flex alignend flex-end gap5">
<button
onClick={() => setAlert({
icon: 'warning',
text: 'Êtes-vous sûr de vouloir supprimer ce module ?',
action: action,
setAlert: setAlert
})}
className={styles.Corb}>
<span className="material-icons">delete</span>
</button>
<button onClick={() => setOpen({ id: id, type: 'edit', model: 'module' })} className={styles.Register}>Modifier</button>
{user.type != 'DR' && (
<>
<button
onClick={() => setAlert({
icon: 'warning',
text: 'Êtes-vous sûr de vouloir supprimer ce module ?',
action: action,
setAlert: setAlert
})}
className={styles.Corb}>
<span className="material-icons">delete</span>
</button>
<button onClick={() => setOpen({ id: id, type: 'edit', model: 'module' })} className={styles.Register}>Modifier</button>
</>
)}
<button onClick={() => setOpen({ id: id, type: 'sessions', model: 'session', nom: title })} className={styles.Register}>Voir les sessions</button>
</div>
</div>
Expand Down
50 changes: 27 additions & 23 deletions components/SessionsBack.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Link from 'next/link'
import { useState, useEffect } from 'react'
import styles from '@/styles/SessionsBack.module.css'

export default function SessionsBack({isModule, date, session, code, region, title, id, setOpen, setAlert, setActions, action, status, moduleId, dept}){
export default function SessionsBack({isModule, date, session, code, region, title, id, setOpen, setAlert, setActions, action, status, moduleId, dept, user}){

function formatDate(dateString) {
const date = new Date(dateString);
Expand Down Expand Up @@ -70,28 +70,32 @@ export default function SessionsBack({isModule, date, session, code, region, tit
</div>
<div className="w50">
<div className="w100 flex aligncend flex-end gap5">
<button
onClick={() => setAlert({
icon: 'warning',
text: 'Êtes-vous sûr de vouloir supprimer cette session ?',
action: action,
setAlert: setAlert
})}
className={styles.Corb}>
<span className="material-icons">delete</span>
</button>
<button onClick={() => setOpen({ id: id, type: 'edit', model: 'session', nom: title, moduleId: moduleId })} className={styles.Register}>Modifier la session</button>
{status == 'brouillon' && (
<button
onClick={() => setAlert({
icon: 'warning',
text: 'Êtes-vous sûr de vouloir publier cette session ?',
action: publish,
setAlert: setAlert
})}
className={styles.Register}>
Publier
</button>
{user.type != 'DR' && (
<>
<button
onClick={() => setAlert({
icon: 'warning',
text: 'Êtes-vous sûr de vouloir supprimer cette session ?',
action: action,
setAlert: setAlert
})}
className={styles.Corb}>
<span className="material-icons">delete</span>
</button>
<button onClick={() => setOpen({ id: id, type: 'edit', model: 'session', nom: title, moduleId: moduleId })} className={styles.Register}>Modifier la session</button>
{status == 'brouillon' && (
<button
onClick={() => setAlert({
icon: 'warning',
text: 'Êtes-vous sûr de vouloir publier cette session ?',
action: publish,
setAlert: setAlert
})}
className={styles.Register}>
Publier
</button>
)}
</>
)}
</div>
{!isModule && (
Expand Down
Loading

0 comments on commit 728c84d

Please sign in to comment.