gestion addin
This commit is contained in:
@@ -4,22 +4,53 @@ namespace App\Http\Controllers\Portal;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\DirectoryUser;
|
||||
use App\Signature\ProfileService;
|
||||
use App\Signature\SignatureBuilder;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\View\View;
|
||||
|
||||
/** Portail agent : aperçu de la signature. Champs modifiables et préférences arrivent au lot 2. */
|
||||
/** Portail agent : aperçu de la signature et modification des champs ouverts par l'admin. */
|
||||
class PortalController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request, SignatureBuilder $builder): View
|
||||
public function show(Request $request, SignatureBuilder $builder, ProfileService $profiles): View
|
||||
{
|
||||
$user = $request->user();
|
||||
$agent = DirectoryUser::where('tenant_id', $user->tenant_id)->where('entra_oid', $user->entra_oid)->firstOrFail();
|
||||
$agent = $this->agent($request);
|
||||
|
||||
return view('portal.home', [
|
||||
'agent' => $agent,
|
||||
'profile' => $profiles->profile($agent),
|
||||
'full' => $builder->build($agent, 'new'),
|
||||
'reply' => $builder->build($agent, 'reply'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(Request $request, ProfileService $profiles): RedirectResponse
|
||||
{
|
||||
$agent = $this->agent($request);
|
||||
$values = [];
|
||||
foreach ((array) $request->input('fields', []) as $key => $row) {
|
||||
$mode = $row['mode'] ?? 'directory';
|
||||
$values[$key] = match ($mode) {
|
||||
'custom' => (string) ($row['value'] ?? ''),
|
||||
'hidden' => '',
|
||||
default => null,
|
||||
};
|
||||
if ($mode === 'custom' && trim((string) ($row['value'] ?? '')) === '') {
|
||||
$values[$key] = null; // valeur perso vide : on revient à l'annuaire
|
||||
}
|
||||
}
|
||||
$reply = $request->input('reply_variant');
|
||||
|
||||
$profiles->update($agent, $values, $reply === 'default' ? null : $reply, $request->has('reply_variant'), (string) $agent->mail);
|
||||
|
||||
return back()->with('status', 'Vos informations sont enregistrées : elles s\'appliquent à vos prochains messages.');
|
||||
}
|
||||
|
||||
private function agent(Request $request): DirectoryUser
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
return DirectoryUser::where('tenant_id', $user->tenant_id)->where('entra_oid', $user->entra_oid)->firstOrFail();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user