diff --git a/frontend/components/UserList.jsx b/frontend/components/UserList.jsx index bad19177..aaa6c727 100755 --- a/frontend/components/UserList.jsx +++ b/frontend/components/UserList.jsx @@ -4,8 +4,8 @@ import _ from "lodash"; const moment = require("moment"); require("moment/locale/fr"); -import { csrfToken } from "./utils"; -import { makeDebounce } from "../tools/inputs"; +import {csrfToken} from "./utils"; +import {makeDebounce} from "../tools/inputs"; import ReactTableFullScreen from "./ReactTableFullScreen"; import * as api from "../tools/api"; import swal from "sweetalert2"; @@ -72,7 +72,7 @@ class UserList extends React.Component { } fetchData(state, instance) { - this.setState({ loading: true, filter: state }); + this.setState({loading: true, filter: state}); debounce(() => { requestData( @@ -156,20 +156,16 @@ class UserList extends React.Component { }); } - sendConfirmationMail() - { + sendConfirmationMail() { api.set() .success((datas) => { - if(!datas || datas.length === 0) - { + if (!datas || datas.length === 0) { swal({ title: `Tous les utilisateurs ${this.state.selected.length > 0 ? "sélectionnés" : ""} ont déjà confirmé leur compte`, type: "warning", confirmButtonText: "Ok" }); - } - else - { + } else { swal({ title: `Les utilisateurs suivants ont reçu un mail de confirmation :`, html: "
Les utilisateurs associés seront détachés, et un email leur sera envoyé pour créer un mot de passe (si leur email est différent de celui de ce compte).
`, + type: "warning", + showCancelButton: true, + confirmButtonText: "Oui, supprimer", + cancelButtonText: "Annuler" + }).then((result) => { + if (result.value) { + Promise.all( + selectedUserIds.map((id) => + api.set() + .success(() => { successCount += 1; }) + .error(() => { errorCount += 1; }) + .del(`/destroy/User/${id}`) + ) + ).then(() => { + const successMessage = successCount === 1 ? + "1 utilisateur supprimé avec succès." : + `${successCount} utilisateurs supprimés avec succès.`; + const errorMessage = errorCount > 0 ? + `${errorCount} erreur(s) rencontrée(s).
` : + ""; + + swal({ + title: "Suppression terminée", + html: `${successMessage}
${errorMessage}`, + type: successCount > 0 ? "success" : "error", + confirmButtonText: "Ok" + }); + this.fetchData(this.state.filter); + this.setState({ selected: [] }); + }).catch(() => { + swal({ + title: "Erreur", + text: "Une erreur est survenue lors de la suppression de masse.", + type: "error", + confirmButtonText: "Ok" + }); + }); + } + }); +}; + + render() { - const { data, pages, loading } = this.state; + const {data, pages, loading} = this.state; const columns = [ { @@ -289,10 +337,10 @@ class UserList extends React.Component { }, sortable: false, filterable: !this.props.nofilter, - Filter: ({ filter, onChange }) => ( + Filter: ({filter, onChange}) => (