ldc-mesbr-app/resources/views/maintenance/index.blade.php
2025-04-02 15:14:41 +00:00

295 lines
12 KiB
PHP

@extends('layouts.main')
@section('content')
<h2><i class="fas fa-cogs"></i> Maintenance </h2>
<div class="user-app">
<div class="heading">
<h5><i class="fas fa-users-cog"></i> Gestion des utilisateurs</h5>
<a class="add-button" href="{{ route('maintenance.user.create') }}"><i class="fas fa-plus-square"></i> Ajouter</a>
</div>
@if (isset($users) && count($users) > 0)
<table>
<thead>
<th>Nom</th>
<th>Email</th>
<th>Rôle</th>
<th>Site liés</th>
<th></th>
</thead>
@foreach ($users as $user)
<tr>
<td><a href="{{ route('maintenance.user.edit', $user) }}">{{ $user->name }}</a></td>
<td>{{ $user->email }}</td>
<td>{{ $user->roles }}</td>
<td class="sites">{!! $user->linkedSites !!}</td>
@if (Auth::user()->id == $user->id)
<td></td>
@else
<td><a href="{{ route('maintenance.user.destroy', $user) }}"><i class="fas fa-times delete-icon"></i></a></td>
@endif
</tr>
@endforeach
<tfoot>
<tr>
<td colspan="5">
</td>
</tr>
</tfoot>
</table>
{!! Form::open(['id' => 'delete-hidden']) !!}
@method('DELETE')
{!! Form::close() !!}
@endif
</div>
<div class="clean-app">
<h5><i class="fas fa-database"></i> Nettoyage de la base</h5>
<div class="clean-line">
<p>Nettoyer les murs <span>(datant de plus d'un an)</span></p>
<div class="btn-clean">
<div class="loader-mini">
<div class="lds-ripple">
<div></div>
<div></div>
</div>
</div>
<a class="add-button clean-walls" href="#"><i class="fas fa-broom"></i> Nettoyer</a>
</div>
</div>
<div class="clean-line">
<p>Nettoyer les paniers <span>(qui ont été imprimés et datant de plus de deux mois)</span></p>
<div class="btn-clean">
<div class="loader-mini">
<div class="lds-ripple">
<div></div>
<div></div>
</div>
</div>
<a class="add-button clean-baskets" href="#"><i class="fas fa-broom"></i> Nettoyer</a>
</div>
</div>
<div class="clean-line">
<p>Nettoyer les contacts <span>(qui n'ont pas de paniers ni de murs liés et datant de plus d'un mois)</span></p>
<div class="btn-clean">
<div class="loader-mini">
<div class="lds-ripple">
<div></div>
<div></div>
</div>
</div>
<a class="add-button clean-contacts" href="#"><i class="fas fa-broom"></i> Nettoyer</a>
</div>
</div>
<input id="csrf" name="csrf" type="hidden" value="<?php echo csrf_token(); ?>">
</div>
<div class="error-log">
<h5><i class="fas fa-file-alt"></i> Erreur d'appels :</h5>
<canvas id="myChart" height="300" width="200"></canvas>
</div>
@endsection
@section('scripts')
<script src="{{ mix('js/Chart.js', 'build') }}" charset="utf-8"></script>
<script>
var truc = {!! json_encode($logs, JSON_UNESCAPED_SLASHES) !!};
var labels = [];
var errorCount = [];
$.each(truc, function(index, value) {
labels.push(value[0]);
errorCount.push(value[1]);
})
labels = labels.reverse();
errorCount = errorCount.reverse();
//---- GRAPH ERRORS
var ctx = document.getElementById("myChart").getContext('2d');
ctx.height = 300;
var myChart = new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: 'Nombres d\'erreurs API',
data: errorCount,
backgroundColor: 'rgba(255, 0, 0, 0.2)',
borderColor: 'rgba(255,0,0,1)',
borderWidth: 1
}]
},
options: {
maintainAspectRatio: false,
scales: {
yAxes: [{
ticks: {
beginAtZero: true,
stepSize: 1,
}
}]
}
}
});
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('#csrf').val()
}
});
$('.clean-app').on('click', '.clean-contacts', function(event) {
event.preventDefault();
let loader = $(this).parent().find('.loader-mini');
loader.show();
$.fancyConfirm({
title: "<i class='fas fa-broom'></i> Nettoyage",
message: "Êtes-vous sûr de vouloir nettoyer la base des contacts qui n'ont pas de paniers ni de murs liés et datant de plus d'un mois ?",
okButton: 'Supprimer',
noButton: 'Annuler',
callback: function(value) {
if (value) {
$.ajax({
url: '/displayCleanContacts',
type: 'POST',
data: {},
dataType: 'JSON',
success: function(response) {
$.fancyConfirm({
title: "<i class='fas fa-broom'></i> Nettoyage",
message: "Vous allez supprimer " + response.contact_count +
" contacts qui ont plus d'un mois et qui n'ont pas de panier ni de murs en cours, Êtes-vous sûr ?",
okButton: 'Supprimer',
noButton: "Annuler",
callback: function(value) {
if (value) {
$.ajax({
url: '/cleanContacts',
type: 'POST',
data: {},
dataType: 'JSON',
success: function(response) {
$.fancyInfo({
title: "<i class='fas fa-info-circle'></i> Succès",
message: "Le nettoyage des contacts a bien été effectué.",
okButton: 'Valider',
noButton: "",
callback: function(
value) {
if (
value) {} else {
loader
.hide();
}
}
});
loader.hide();
},
error: function(e) {
console.log(e.responseText);
}
});
} else {
loader.hide();
}
}
});
loader.hide();
},
error: function(e) {
console.log(e.responseText);
}
});
} else {
loader.hide();
}
}
});
})
$('.clean-app').on('click', '.clean-walls', function(event) {
event.preventDefault();
let loader = $(this).parent().find('.loader-mini');
loader.show();
$.fancyConfirm({
title: "<i class='fas fa-broom'></i> Nettoyage",
message: "Êtes-vous sûr de vouloir nettoyer la base des mur imprimés ?",
okButton: 'Supprimer',
noButton: 'Annuler',
callback: function(value) {
if (value) {
$.ajax({
url: '/cleanWalls',
type: 'POST',
data: {},
dataType: 'JSON',
success: function(response) {
$.fancyInfo({
title: "<i class='fas fa-info-circle'></i> Succès",
message: "Le nettoyage des murs a bien été effectué.",
okButton: 'Valider',
noButton: "",
callback: function(value) {
}
});
loader.hide();
},
error: function(e) {
console.log(e.responseText);
}
});
} else {
loader.hide();
}
}
});
})
$('.clean-app').on('click', '.clean-baskets', function(event) {
event.preventDefault();
let loader = $(this).parent().find('.loader-mini');
loader.show();
$.fancyConfirm({
title: "<i class='fas fa-broom'></i> Nettoyage",
message: "Êtes-vous sûr de vouloir nettoyer la base des panier imprimés ?",
okButton: 'Supprimer',
noButton: 'Annuler',
callback: function(value) {
if (value) {
$.ajax({
url: '/cleanBaskets',
type: 'POST',
data: {},
dataType: 'JSON',
success: function(response) {
$.fancyInfo({
title: "<i class='fas fa-info-circle'></i> Succès",
message: "Le nettoyage des paniers a bien été effectué.",
okButton: 'Valider',
noButton: "",
callback: function(value) {
}
});
loader.hide();
},
error: function(e) {
console.log(e.responseText);
}
});
} else {
loader.hide();
}
}
});
})
</script>
@endsection