feat: Créer automatiquement ope_users lors de la création d'un membre
PROBLÈME TÂCHE #15 : Quand un admin crée un nouveau membre, seul users.id était créé. Aucune entrée ope_users n'était créée automatiquement. Résultat : Le nouveau membre n'apparaissait pas dans Flutter car il n'était pas synchronisé avec l'opération active. SOLUTION IMPLÉMENTÉE : 1. Récupération de l'opération active de l'admin créateur (users.fk_operation) 2. Création automatique d'une entrée dans ope_users si opération active 3. Retour de ope_user_id dans la réponse API (en plus de users.id) NOUVELLE RÉPONSE API : { "status": "success", "message": "Utilisateur créé avec succès", "id": "10023668", // users.id (table centrale) "ope_user_id": "12345", // ope_users.id (table opérationnelle) "username": "pr.350-renn731" } COMPORTEMENT : - Si admin a une opération active → ope_users créé automatiquement - Si pas d'opération active → ope_user_id sera null (membre non affecté) LOGS : - Log INFO si affectation réussie - Log WARNING si pas d'opération active Travail sur tâche #15 (Nouveau membre non synchronisé) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -503,6 +503,50 @@ class UserController {
|
||||
]);
|
||||
$userId = $this->db->lastInsertId();
|
||||
|
||||
// Récupérer l'opération active courante de l'admin créateur
|
||||
$stmtActiveOpe = $this->db->prepare('
|
||||
SELECT fk_operation
|
||||
FROM users
|
||||
WHERE id = ? AND chk_active = 1
|
||||
');
|
||||
$stmtActiveOpe->execute([$currentUserId]);
|
||||
$activeOpeData = $stmtActiveOpe->fetch(PDO::FETCH_ASSOC);
|
||||
$activeOperationId = $activeOpeData ? (int)$activeOpeData['fk_operation'] : null;
|
||||
|
||||
$opeUserId = null;
|
||||
|
||||
// Si une opération active existe, créer automatiquement l'entrée ope_users
|
||||
if ($activeOperationId) {
|
||||
$stmtOpeUser = $this->db->prepare('
|
||||
INSERT INTO ope_users (fk_operation, fk_user, fk_role, first_name, encrypted_name, sect_name, fk_user_creat, chk_active)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, 1)
|
||||
');
|
||||
$stmtOpeUser->execute([
|
||||
$activeOperationId,
|
||||
$userId,
|
||||
$role,
|
||||
$firstName,
|
||||
$encryptedName,
|
||||
$sectName,
|
||||
$currentUserId
|
||||
]);
|
||||
$opeUserId = (int)$this->db->lastInsertId();
|
||||
|
||||
LogService::log('Membre automatiquement affecté à l\'opération active', [
|
||||
'level' => 'info',
|
||||
'userId' => $userId,
|
||||
'opeUserId' => $opeUserId,
|
||||
'activeOperationId' => $activeOperationId,
|
||||
'createdBy' => $currentUserId
|
||||
]);
|
||||
} else {
|
||||
LogService::log('Membre créé sans opération active - pas d\'entrée ope_users', [
|
||||
'level' => 'warning',
|
||||
'userId' => $userId,
|
||||
'createdBy' => $currentUserId
|
||||
]);
|
||||
}
|
||||
|
||||
// Envoi des emails séparés pour plus de sécurité (seulement si un email est fourni)
|
||||
if (!empty($email)) {
|
||||
// 1er email : Envoyer l'identifiant (username)
|
||||
@@ -545,6 +589,7 @@ class UserController {
|
||||
'status' => 'success',
|
||||
'message' => 'Utilisateur créé avec succès',
|
||||
'id' => $userId,
|
||||
'ope_user_id' => $opeUserId, // Peut être null si pas d'opération active
|
||||
'username' => $username
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user