format('Y-m-d H:i:s');
// Insert invitation (role 'secretaire')
$ins = $pdo->prepare("INSERT INTO invitations (email, role, praticien_id, token, status, expires_at, invited_by)
VALUES (:email,'secretaire',:pid,:tk,'envoyee',:exp,:by)");
$ins->execute([
'email'=>$email,
'pid'=>$praticien_id,
'tk'=>$token,
'exp'=>$expires,
'by'=> (int)($_SESSION['compte_id'] ?? 0),
]);
// Stocker droits sélectionnés côté "mémo" (façon simple : dans token via table dédiée ?)
// Ici on ajoute un petit "mémo" côté invitations.meta_json si tu souhaites :
// Si tu veux, ajoute une colonne meta_json JSON dans invitations. Sinon, on appliquera des droits par défaut à l'acceptation, et on pourra basculer ensuite.
// Pour rester 100% compatible avec ta structure actuelle, on applique par défaut can_manage_rdv=1, can_edit_slots=0, puis on laisse l'UI permettre de modifier après acceptation.
// Envoi email (si tu as un mailer)
if (function_exists('uslugi_mail')) {
$acceptUrl = sprintf(
'%s/public/cabinet/accepter_invitation.php?token=%s',
rtrim((isset($_SERVER['REQUEST_SCHEME']) ? $_SERVER['REQUEST_SCHEME'].'://' : '').($_SERVER['HTTP_HOST']??''), '/'),
$token
);
$subject = $translations['inv_mail_sujet']
?? 'Invitation à rejoindre un cabinet sur uslugi.fr';
$body = '
'.h($translations['inv_mail_bonjour'] ?? 'Bonjour,').'
'.
h($translations['inv_mail_intro'] ??
'Vous avez été invité(e) à rejoindre le secrétariat d’un praticien sur uslugi.fr.
Grâce à cet accès, vous pourrez gérer les rendez-vous et organiser l’agenda du cabinet.').
'
'.h($translations['inv_mail_btn'] ?? 'Accepter l’invitation').'
'.
h($translations['inv_mail_validite'] ??
'Ce lien est valide pendant 10 jours. Passé ce délai, il expirera automatiquement.').
'
'.h($translations['inv_mail_ignore'] ??
'Si vous n’êtes pas concerné(e) par cette invitation, vous pouvez ignorer cet email.').'
'.h($translations['inv_mail_footer'] ?? ('© '.date('Y').' uslugi.fr – Tous droits réservés')).'
';
uslugi_mail($email, $subject, $body);
}
$msg = $translations['invitation_envoyee'] ?? 'Invitation envoyée.';
}
}
if (isset($_POST['action']) && $_POST['action']==='toggle_rights') {
$spid = (int)($_POST['spid'] ?? 0);
$field = ($_POST['field'] ?? '');
if ($spid>0 && in_array($field,['can_manage_rdv','can_edit_slots','is_active'],true)) {
// secure update scoped to this praticien
$upd = $pdo->prepare("UPDATE secretaire_praticien SET $field = 1 - $field WHERE id=:id AND praticien_id=:pid");
$upd->execute(['id'=>$spid,'pid'=>$praticien_id]);
$msg = $translations['droits_mis_a_jour'] ?? 'Droits mis à jour.';
}
}
}
// DATA: invitations + secretaire_praticien liés à CE praticien
$invitations = $pdo->prepare("SELECT id,email,status,expires_at,created_at FROM invitations WHERE praticien_id=:pid ORDER BY created_at DESC");
$invitations->execute(['pid'=>$praticien_id]);
$invRows = $invitations->fetchAll(PDO::FETCH_ASSOC);
// secrétaires liées
$secs = $pdo->prepare("
SELECT sp.id, sp.secretaire_user_id, sp.can_manage_rdv, sp.can_edit_slots, sp.is_active, sp.created_at,
c.email
FROM secretaire_praticien sp
JOIN compte c ON c.id = sp.secretaire_user_id
WHERE sp.praticien_id = :pid
ORDER BY sp.created_at DESC
");
$secs->execute(['pid'=>$praticien_id]);
$secRows = $secs->fetchAll(PDO::FETCH_ASSOC);
require_once __DIR__ . '/../includes/header.php';
?>
= h($translations['secretariat_titre'] ?? 'Secrétariat') ?>
= h($msg) ?>
= h($translations['secretariat_inviter_secretaire'] ?? 'Inviter une secrétaire') ?>
= h($translations['inv_invitations_envoyees'] ?? 'Invitations envoyées') ?>
| Email | = h($translations['inv_statut'] ?? 'Statut') ?> |
= h($translations['inv_expires'] ?? 'Expire le') ?> |
= h($translations['inv_envoyee_le'] ?? 'Envoyée le') ?> |
| = h($r['email']) ?> |
= h($r['status']) ?> |
= h($r['expires_at'] ?? '') ?> |
= h($r['created_at'] ?? '') ?> |
| = h($translations['inv_aucune'] ?? 'Aucune invitation pour le moment.') ?> |
= h($translations['inv_secretaires_liees'] ?? 'Secrétaires liées') ?>
| Email | = h($translations['droits_gestion_rdv'] ?? 'RDV') ?> | = h($translations['droits_dispos'] ?? 'Dispos') ?> | = h($translations['etat'] ?? 'État') ?> |
| = h($r['email']) ?> |
|
|
|
| = h($translations['inv_aucune_secretaire'] ?? 'Aucune secrétaire liée pour le moment.') ?> |