From 21206981925aedf815c58acbb1c78272089927e7 Mon Sep 17 00:00:00 2001 From: DanielS Date: Wed, 24 Jun 2026 23:39:33 +0200 Subject: [PATCH] Clean admin settings page, remove duplicate imports and partner code --- shop/app/admin/einstellungen/page.tsx | 423 -------------------------- 1 file changed, 423 deletions(-) diff --git a/shop/app/admin/einstellungen/page.tsx b/shop/app/admin/einstellungen/page.tsx index f6e607e..3ee2874 100644 --- a/shop/app/admin/einstellungen/page.tsx +++ b/shop/app/admin/einstellungen/page.tsx @@ -1,4 +1,3 @@ -/* Updated Admin Settings without Partner Management */ /* Admin Settings without Partner Management */ 'use client'; @@ -43,425 +42,3 @@ export default function AdminSettings() { ); } - - -import { useState, useEffect } from 'react'; -import { Switch } from '@/components/ui/switch'; -import { Button } from '@/components/ui/button'; -import { Input } from '@/components/ui/input'; -import { Label } from '@/components/ui/label'; -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, -} from '@/components/ui/dialog'; - -export default function AdminSettings() { - const [demoActive, setDemoActive] = useState(true); - - useEffect(() => { - const state = localStorage.getItem('demo_banner_disabled') !== 'true'; - setDemoActive(state); - }, []); - - const toggleDemo = (checked: boolean) => { - setDemoActive(checked); - localStorage.setItem('demo_banner_disabled', (!checked).toString()); - window.dispatchEvent(new Event('storage_demo_changed')); - }; - - return ( -
- {/* Page Header */} -
-

Admin Einstellungen

-

- Verwalten Sie globale Shopeinstellungen. -

-
- - {/* Allgemeine Einstellungen */} -
-

Allgemeine Einstellungen

-
-
-

Demo-Warnmeldungen

-

Schaltet gelbe Banner ein oder aus.

-
- -
-
-
- ); -} - - -import { useState, useEffect } from 'react'; -import { Switch } from '@/components/ui/switch'; -import { Button } from '@/components/ui/button'; -import { Input } from '@/components/ui/input'; -import { Label } from '@/components/ui/label'; -import { - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, -} from '@/components/ui/dialog'; -import { getPartners, createUser, updateUserRole } from '@/lib/actions/users'; -import { getPartnerEndCustomers } from '@/lib/actions/end-customers'; -import { Plus, Users, Mail, Eye, CheckCircle, ShieldAlert, Loader2, Ban, Unlock } from 'lucide-react'; - -export default function AdminSettings() { - const [demoActive, setDemoActive] = useState(true); - const [partners, setPartners] = useState([]); - const [loadingPartners, setLoadingPartners] = useState(true); - - // Modal States - const [isCreateOpen, setIsCreateOpen] = useState(false); - const [isCustomersOpen, setIsCustomersOpen] = useState(false); - - // Selected Partner / Customers State - const [selectedPartner, setSelectedPartner] = useState(null); - const [partnerCustomers, setPartnerCustomers] = useState([]); - const [loadingCustomers, setLoadingCustomers] = useState(false); - - // Lock/Unlock State - const [lockingId, setLockingId] = useState(null); - - // Create Partner Form States - const [email, setEmail] = useState(''); - const [password, setPassword] = useState(''); - const [createError, setCreateError] = useState(null); - const [creating, setCreating] = useState(false); - - useEffect(() => { - // 1. Demo Banner Status auslesen - const state = localStorage.getItem('demo_banner_disabled') !== 'true'; - setDemoActive(state); - - // 2. Partner laden - loadPartners(); - }, []); - - const loadPartners = async () => { - setLoadingPartners(true); - try { - const data = await getPartners(); - setPartners(data); - } catch (err) { - console.error('Fehler beim Laden der Partner:', err); - } finally { - setLoadingPartners(false); - } - }; - - const toggleDemo = (checked: boolean) => { - setDemoActive(checked); - localStorage.setItem('demo_banner_disabled', (!checked).toString()); - window.dispatchEvent(new Event('storage_demo_changed')); - }; - - const handleCreatePartner = async (e: React.FormEvent) => { - e.preventDefault(); - setCreating(true); - setCreateError(null); - - try { - await createUser({ - email, - password: password || undefined, - email_confirm: true, - }); - setIsCreateOpen(false); - setEmail(''); - setPassword(''); - loadPartners(); - } catch (err: any) { - console.error('Fehler beim Erstellen des Partners:', err); - setCreateError(err.message || 'Ein Fehler ist aufgetreten.'); - } finally { - setCreating(false); - } - }; - - const handleToggleLock = async (partner: any) => { - const newRole = partner.role === 'gesperrt' ? 'partner' : 'gesperrt'; - setLockingId(partner.id); - try { - await updateUserRole(partner.id, newRole); - await loadPartners(); - } catch (err) { - console.error('Fehler beim Sperren/Entsperren:', err); - } finally { - setLockingId(null); - } - }; - - const handleShowCustomers = async (partner: any) => { - setSelectedPartner(partner); - setPartnerCustomers([]); - setLoadingCustomers(true); - setIsCustomersOpen(true); - - try { - const customers = await getPartnerEndCustomers(partner.id); - setPartnerCustomers(customers); - } catch (err) { - console.error('Fehler beim Laden der Partner-Kunden:', err); - } finally { - setLoadingCustomers(false); - } - }; - - return ( -
- {/* Page Header */} -
-

Admin Einstellungen

-

- Verwalten Sie globale Shopeinstellungen, Partnerkonten und Kundenzuweisungen. -

-
- - {/* Allgemeine Einstellungen */} -
-

Allgemeine Einstellungen

-
-
-

Demo-Warnmeldungen

-

Schaltet gelbe Banner ein oder aus.

-
- -
-
- - {/* Partnerverwaltung */} -
-
-
- -

Partner-Management

-
- -
- - {/* Partner Liste */} - {loadingPartners ? ( -
- - Lade Partner... -
- ) : partners.length === 0 ? ( -
- Keine Partner registriert. -
- ) : ( -
- - - - - - - - - - - - {partners.map((partner) => { - const isGesperrt = partner.role === 'gesperrt'; - const isLocking = lockingId === partner.id; - return ( - - - - - - - - ); - })} - -
Partner E-MailFirmaStatusErstellt amAktionen
-
- - {partner.email} -
-
- {partner.company_name || '–'} - - {isGesperrt ? ( - - Gesperrt - - ) : ( - - Aktiv - - )} - - {partner.created_at ? new Date(partner.created_at).toLocaleDateString('de-DE') : '–'} - -
- - -
-
-
- )} -
- - {/* MODAL 1: Neuen Partner erstellen */} - - - - Neuen Partner anlegen - - Erstellt einen Partner-Zugang. Dieser kann sich mit den Daten im Shop einloggen. - - - -
-
- - setEmail(e.target.value)} - className="bg-slate-50 dark:bg-white/5 border-slate-200 dark:border-white/10" - /> -
-
- - setPassword(e.target.value)} - className="bg-slate-50 dark:bg-white/5 border-slate-200 dark:border-white/10" - /> -
- - {createError && ( -

- {createError} -

- )} - - - - - -
-
-
- - {/* MODAL 2: Kundenliste eines Partners anzeigen */} - - - - Kunden von {selectedPartner?.email} - - Liste aller angelegten Endkunden dieses Partners. - - - -
- {loadingCustomers ? ( -
- - Lade Kunden... -
- ) : partnerCustomers.length === 0 ? ( -
- Dieser Partner hat noch keine Kunden angelegt. -
- ) : ( -
- - - - - - - - - - - {partnerCustomers.map((customer) => ( - - - - - - - ))} - -
UnternehmenAnsprechpartnerOrtStatus
- {customer.company_name} - - {[customer.first_name, customer.last_name].filter(Boolean).join(' ') || '–'} - - {[customer.zip, customer.city].filter(Boolean).join(' ') || '–'} - - {customer.is_anonymized ? ( - - Anonymisiert - - ) : ( - - Aktiv - - )} -
-
- )} -
- - - - -
-
-
- ); -}