93 lines
5.2 KiB
PHP
93 lines
5.2 KiB
PHP
@extends('layouts.app')
|
|
@section('title', 'Affectations — Signatures')
|
|
@section('content')
|
|
<header class="page-head">
|
|
<div>
|
|
<h1>Affectations</h1>
|
|
<p class="lead">
|
|
Un agent membre de plusieurs groupes reçoit le template de l'affectation dont la <strong>priorité est la plus haute</strong>
|
|
(à égalité : la plus ancienne). Sans groupe affecté, il reçoit le template par défaut.
|
|
</p>
|
|
</div>
|
|
</header>
|
|
|
|
<form method="post" action="{{ route('admin.assignments.store') }}" class="card">
|
|
@csrf
|
|
<h2>Ajouter une affectation</h2>
|
|
<div class="field-row" style="align-items:flex-end">
|
|
<div style="flex:2">
|
|
<label for="directory_group_id" style="margin-top:0">Groupe AD</label>
|
|
<select id="directory_group_id" name="directory_group_id" required>
|
|
<option value="">Choisir un groupe</option>
|
|
@if ($groups->isEmpty())
|
|
<option value="" disabled>Aucun groupe synchronisé : lancez une synchronisation complète</option>
|
|
@endif
|
|
@foreach ($groups as $g)
|
|
<option value="{{ $g->id }}" @selected(old('directory_group_id') == $g->id)>{{ $g->display_name }} ({{ $g->members_count }})</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div style="flex:2">
|
|
<label for="template_id" style="margin-top:0">Template</label>
|
|
<select id="template_id" name="template_id" required>
|
|
<option value="">Choisir un template</option>
|
|
@foreach ($templates as $t)
|
|
<option value="{{ $t->id }}" @selected(old('template_id') == $t->id)>{{ $t->name }}{{ $t->html_full ? '' : ' (non publié)' }}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div style="flex:0 0 96px;min-width:96px">
|
|
<label for="priority" style="margin-top:0">Priorité</label>
|
|
<input type="number" id="priority" name="priority" min="0" max="1000" value="{{ old('priority', 10) }}" required>
|
|
</div>
|
|
<div style="flex:0 0 auto;min-width:0">
|
|
<button class="btn" type="submit"><x-icon name="plus" />Ajouter</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
|
|
<div class="card card--flush">
|
|
<div class="card-head"><h2>Affectations, par ordre de priorité</h2></div>
|
|
<div class="table-wrap">
|
|
<table class="list">
|
|
<thead><tr><th>Priorité</th><th>Groupe AD</th><th>Membres</th><th>Template</th><th></th></tr></thead>
|
|
<tbody>
|
|
@forelse ($assignments as $a)
|
|
<tr>
|
|
<td>
|
|
<form class="row" method="post" action="{{ route('admin.assignments.update', $a) }}" style="flex-wrap:nowrap">
|
|
@csrf @method('PUT')
|
|
<input class="small" type="number" name="priority" min="0" max="1000" value="{{ $a->priority }}" aria-label="Priorité de {{ $a->group?->display_name }}">
|
|
<button class="btn secondary small" type="submit" title="Enregistrer la priorité" aria-label="Enregistrer la priorité"><x-icon name="check" :size="15" /></button>
|
|
</form>
|
|
</td>
|
|
<td>{{ $a->group?->display_name }}</td>
|
|
<td class="num">{{ $a->group?->members_count }}</td>
|
|
<td>
|
|
<a class="cell-title" href="{{ route('admin.templates.edit', $a->template_id) }}">{{ $a->template?->name }}</a>
|
|
@unless ($a->template?->html_full) <span class="badge warn">non publié : ignoré</span> @endunless
|
|
</td>
|
|
<td class="cell-actions">
|
|
<form class="inline" method="post" action="{{ route('admin.assignments.destroy', $a) }}"
|
|
data-confirm="Supprimer cette affectation ? Les agents du groupe recevront le template suivant dans l'ordre de priorité, ou le template par défaut."
|
|
data-confirm-label="Supprimer" data-confirm-danger>
|
|
@csrf @method('DELETE')
|
|
<button class="btn danger small" type="submit"><x-icon name="trash-2" :size="15" />Supprimer</button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr><td colspan="5">
|
|
<div class="empty">
|
|
<x-icon name="users" :size="32" />
|
|
<p><strong>Aucune affectation</strong>Tous les agents reçoivent le template par défaut.</p>
|
|
</div>
|
|
</td></tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="card-foot muted">Vérifiez le résultat agent par agent dans l'écran <a href="{{ route('admin.agents.index') }}">Agents</a>.</div>
|
|
</div>
|
|
@endsection
|