<?php
require_once __DIR__.'/../app/bootstrap.php';
require_once __DIR__.'/_layout.php';
$user=require_login($pdo); csrf_check(); $error=''; $ok='';
if($_SERVER['REQUEST_METHOD']==='POST'){
    require_post(); $action=$_POST['action']??'';
    if($action==='create'){
        $name=trim($_POST['name']??'');
        if($name==='' || mb_strlen($name)>120) $error='Bitte einen gültigen Gruppennamen erfassen.';
        else { try { $stmt=$pdo->prepare('INSERT INTO '.qtbl('qr_groups').'(user_id,name) VALUES(?,?)'); $stmt->execute([$user['id'],$name]); $ok='Gruppe wurde erstellt.'; } catch(PDOException $e){ $error='Diese Gruppe existiert bereits.'; } }
    }
    if($action==='rename'){
        $id=(int)($_POST['id']??0); $own=selected_group_id($pdo,(int)$user['id'],$id); $name=trim($_POST['name']??'');
        if(!$own || $name==='' || mb_strlen($name)>120) $error='Bitte einen gültigen Gruppennamen erfassen.';
        else { try { $stmt=$pdo->prepare('UPDATE '.qtbl('qr_groups').' SET name=? WHERE id=? AND user_id=?'); $stmt->execute([$name,$id,$user['id']]); $ok='Gruppe wurde umbenannt.'; } catch(PDOException $e){ $error='Diese Gruppe existiert bereits.'; } }
    }
    if($action==='delete'){
        $id=(int)($_POST['id']??0); $own=selected_group_id($pdo,(int)$user['id'],$id);
        if(!$own) $error='Gruppe nicht gefunden.';
        else { $pdo->beginTransaction(); $u=$pdo->prepare('UPDATE '.qtbl('qr_codes').' SET group_id=NULL WHERE group_id=?'); $u->execute([$id]); $d=$pdo->prepare('DELETE FROM '.qtbl('qr_groups').' WHERE id=? AND user_id=?'); $d->execute([$id,$user['id']]); $pdo->commit(); $ok='Gruppe wurde gelöscht. Die QR-Codes bleiben erhalten.'; }
    }
    if($action==='share'){
        $id=(int)($_POST['id']??0); $own=selected_group_id($pdo,(int)$user['id'],$id); $email=strtolower(trim($_POST['email']??'')); $role=($_POST['access_role']??'view')==='edit'?'edit':'view';
        if(!$own) $error='Gruppe nicht gefunden.';
        elseif(!filter_var($email,FILTER_VALIDATE_EMAIL)) $error='Bitte eine gültige E-Mail-Adresse erfassen.';
        elseif($email===strtolower($user['email'])) $error='Du kannst eine eigene Gruppe nicht mit dir selbst teilen.';
        else {
            $u=$pdo->prepare('SELECT id FROM '.qtbl('users').' WHERE email=?'); $u->execute([$email]); $shareUserId=(int)$u->fetchColumn();
            if(!$shareUserId) $error='Es gibt keinen Benutzer mit dieser E-Mail-Adresse.';
            else { $stmt=$pdo->prepare('INSERT INTO '.qtbl('qr_group_shares').'(group_id,user_id,access_role) VALUES(?,?,?) ON DUPLICATE KEY UPDATE access_role=VALUES(access_role), updated_at=CURRENT_TIMESTAMP'); $stmt->execute([$id,$shareUserId,$role]); $ok='Gruppe wurde geteilt.'; }
        }
    }
    if($action==='unshare'){
        $id=(int)($_POST['id']??0); $shareId=(int)($_POST['share_id']??0); $own=selected_group_id($pdo,(int)$user['id'],$id);
        if(!$own) $error='Gruppe nicht gefunden.';
        else { $d=$pdo->prepare('DELETE FROM '.qtbl('qr_group_shares').' WHERE id=? AND group_id=?'); $d->execute([$shareId,$id]); $ok='Freigabe wurde entfernt.'; }
    }
}
$groups=user_groups($pdo,(int)$user['id']);
$sharedWithMe=$pdo->prepare('SELECT g.name,u.email AS owner_email,s.access_role FROM '.qtbl('qr_group_shares').' s INNER JOIN '.qtbl('qr_groups').' g ON g.id=s.group_id INNER JOIN '.qtbl('users').' u ON u.id=g.user_id WHERE s.user_id=? ORDER BY u.email,g.name');
$sharedWithMe->execute([$user['id']]);
page_header('Gruppen verwalten'); if($error) echo '<p class="notice">'.e($error).'</p>'; if($ok) echo '<p class="notice ok">'.e($ok).'</p>'; ?>
<section class="card"><h2>Neue Gruppe</h2><form method="post" class="formgrid"><input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>"><input type="hidden" name="action" value="create"><label>Name<input name="name" required maxlength="120" placeholder="z.B. Kampagnen, Kunden, Printprodukte"></label><button class="btn" type="submit">Gruppe erstellen</button></form></section>
<section class="card"><h2>Eigene Gruppen</h2><table class="table"><thead><tr><th>Name</th><th>QR-Codes</th><th>Freigeben</th><th>Aktionen</th></tr></thead><tbody><?php foreach($groups as $g): $c=$pdo->prepare('SELECT COUNT(*) FROM '.qtbl('qr_codes').' WHERE group_id=?'); $c->execute([$g['id']]); $shares=$pdo->prepare('SELECT s.id,s.access_role,u.email FROM '.qtbl('qr_group_shares').' s INNER JOIN '.qtbl('users').' u ON u.id=s.user_id WHERE s.group_id=? ORDER BY u.email'); $shares->execute([$g['id']]); ?><tr><td><form method="post" class="inlineform"><input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>"><input type="hidden" name="action" value="rename"><input type="hidden" name="id" value="<?= (int)$g['id'] ?>"><input name="name" value="<?= e($g['name']) ?>" maxlength="120" required><button class="btn small" type="submit">Umbenennen</button></form></td><td><?= (int)$c->fetchColumn() ?></td><td><form method="post" class="inlineform"><input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>"><input type="hidden" name="action" value="share"><input type="hidden" name="id" value="<?= (int)$g['id'] ?>"><input name="email" type="email" placeholder="user@example.ch" required><select name="access_role"><option value="view">Nur anzeigen</option><option value="edit">Bearbeiten</option></select><button class="btn small" type="submit">Teilen</button></form><?php foreach($shares->fetchAll() as $s): ?><form method="post" class="inlineform muted"><input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>"><input type="hidden" name="action" value="unshare"><input type="hidden" name="id" value="<?= (int)$g['id'] ?>"><input type="hidden" name="share_id" value="<?= (int)$s['id'] ?>"><span><?= e($s['email']) ?> · <?= $s['access_role']==='edit'?'Bearbeiten':'Nur anzeigen' ?></span><button class="btn small secondary" type="submit">Entfernen</button></form><?php endforeach; ?></td><td><form method="post" onsubmit="return confirm('Diese Gruppe löschen? Die QR-Codes bleiben erhalten und werden auf Keine Gruppe gesetzt.')"><input type="hidden" name="csrf" value="<?= e(csrf_token()) ?>"><input type="hidden" name="action" value="delete"><input type="hidden" name="id" value="<?= (int)$g['id'] ?>"><button class="btn danger small" type="submit">Löschen</button></form></td></tr><?php endforeach; if(!$groups): ?><tr><td colspan="4">Noch keine Gruppen vorhanden.</td></tr><?php endif; ?></tbody></table></section>
<section class="card"><h2>Mit mir geteilte Gruppen</h2><table class="table compact"><thead><tr><th>Gruppe</th><th>Eigentümer</th><th>Rechte</th></tr></thead><tbody><?php foreach($sharedWithMe->fetchAll() as $s): ?><tr><td><?= e($s['name']) ?></td><td><?= e($s['owner_email']) ?></td><td><?= $s['access_role']==='edit'?'Bearbeiten':'Nur anzeigen' ?></td></tr><?php endforeach; ?></tbody></table></section>
<?php page_footer(); ?>
