Dynamic display of activation status
This commit is contained in:
parent
934720b85a
commit
7d1e2ee4e7
|
|
@ -18,7 +18,7 @@ export default class extends Controller {
|
|||
orgId: Number
|
||||
}
|
||||
|
||||
static targets = ["select"];
|
||||
static targets = ["select", "statusButton"];
|
||||
|
||||
connect() {
|
||||
this.roleSelect();
|
||||
|
|
@ -875,71 +875,47 @@ export default class extends Controller {
|
|||
});
|
||||
};
|
||||
|
||||
async deactivateUser(event) {
|
||||
async toggleStatus(event) {
|
||||
event.preventDefault();
|
||||
const userId = this.idValue;
|
||||
|
||||
if (!userId) {
|
||||
console.error(`User ID not found!`);
|
||||
return;
|
||||
}
|
||||
const button = this.statusButtonTarget;
|
||||
const isActive = button.dataset.active === "true";
|
||||
const newStatus = isActive ? 'deactivate' : 'activate';
|
||||
const confirmMsg = isActive ? "Désactiver cet utilisateur ?" : "Réactiver cet utilisateur ?";
|
||||
|
||||
if (!confirm(confirmMsg)) return;
|
||||
|
||||
if (confirm(`Voulez-vous vraiment désactiver cet utilisateur ?`)) {
|
||||
try {
|
||||
const formData = new FormData();
|
||||
formData.append('status', 'deactivate');
|
||||
formData.append('status', newStatus);
|
||||
|
||||
const response = await fetch(`/user/activeStatus/${userId}`, {
|
||||
const response = await fetch(`/user/activeStatus/${this.idValue}`, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
headers: {'X-Requested-With': 'XMLHttpRequest'}
|
||||
});
|
||||
|
||||
if (response.ok) {
|
||||
alert('Utilisateur désactivé avec succès');
|
||||
// If you need to refresh the UI, do it here
|
||||
// e.g., window.location.reload();
|
||||
this.updateButtonUI(!isActive);
|
||||
} else {
|
||||
const text = await response.text();
|
||||
alert('Erreur: ' + text);
|
||||
alert('Erreur lors de la mise à jour');
|
||||
}
|
||||
} catch (err) {
|
||||
alert('Erreur lors de la communication avec le serveur');
|
||||
}
|
||||
alert('Erreur de connexion');
|
||||
}
|
||||
}
|
||||
|
||||
async activateUser(event) {
|
||||
event.preventDefault();
|
||||
const userId = this.idValue;
|
||||
updateButtonUI(nowActive) {
|
||||
const btn = this.statusButtonTarget;
|
||||
|
||||
if (!userId) {
|
||||
console.error(`User ID not found!`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (confirm(`Voulez-vous vraiment activer cet utilisateur ?`)) {
|
||||
try {
|
||||
const formData = new FormData();
|
||||
formData.append('status', 'activate');
|
||||
|
||||
const response = await fetch(`/user/activeStatus/${userId}`, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
headers: {'X-Requested-With': 'XMLHttpRequest'}
|
||||
});
|
||||
|
||||
if (response.ok) {
|
||||
alert('Utilisateur activé avec succès');
|
||||
// If you need to refresh the UI, do it here
|
||||
// e.g., window.location.reload();
|
||||
if (nowActive) {
|
||||
btn.textContent = "Désactiver";
|
||||
btn.classList.replace("btn-success", "btn-secondary");
|
||||
btn.dataset.active = "true";
|
||||
} else {
|
||||
const text = await response.text();
|
||||
alert('Erreur: ' + text);
|
||||
}
|
||||
} catch (err) {
|
||||
alert('Erreur lors de la communication avec le serveur');
|
||||
}
|
||||
btn.textContent = "Réactiver";
|
||||
btn.classList.replace("btn-secondary", "btn-success");
|
||||
btn.dataset.active = "false";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -12,22 +12,18 @@
|
|||
{% endfor %}
|
||||
{% endfor %}
|
||||
<div class="card-header border-0 d-flex justify-content-between align-items-center ">
|
||||
<div class="card-title">
|
||||
<h1>Gestion Utilisateur</h1>
|
||||
</div>
|
||||
<div class="card-title"><h1>Gestion Utilisateur</h1></div>
|
||||
<div class="d-flex gap-2">
|
||||
{% if is_granted("ROLE_ADMIN") %}
|
||||
{% if user.active %}
|
||||
<button class="btn btn-secondary" data-action="click->user#deactivateUser">Désactiver</button>
|
||||
{# <a href="{{ path('user_active_status', {'id': user.id, 'status':'deactivate'}) }}"#}
|
||||
{# class="btn btn-secondary">Désactiver</a>#}
|
||||
{% else %}
|
||||
<button class="btn btn-success" data-action="click->user#activateUser">Réactiver</button>
|
||||
{# <a href="{{ path('user_active_status', {'id': user.id, 'status':'activate'}) }}"#}
|
||||
{# class="btn btn-success">Réactiver</a>#}
|
||||
{% endif %}
|
||||
<a href="{{ path('user_delete', {'id': user.id}) }}"
|
||||
class="btn btn-warning">Supprimer</a>
|
||||
<button
|
||||
class="btn {{ user.active ? 'btn-secondary' : 'btn-success' }}"
|
||||
data-user-target="statusButton"
|
||||
data-action="click->user#toggleStatus"
|
||||
data-active="{{ user.active ? 'true' : 'false' }}">
|
||||
{{ user.active ? 'Désactiver' : 'Réactiver' }}
|
||||
</button>
|
||||
|
||||
<a href="{{ path('user_delete', {'id': user.id}) }}" class="btn btn-warning">Supprimer</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue