Files

216 lines
10 KiB
HTML
Executable File

{% extends "admin/base.html" %}
{% block title %}Kunde bearbeiten: {{ customer.display_name }}{% endblock %}
{% block content %}
{# Sprint 12: All customer data comes from custom_fields #}
{% set fields = customer.get_custom_fields() %}
{% set addr = customer.display_address %}
<div class="d-flex justify-content-between align-items-center mb-4">
<div>
<nav aria-label="breadcrumb">
<ol class="breadcrumb mb-2">
<li class="breadcrumb-item"><a href="{{ url_for('admin.customers') }}" class="text-info">Kunden</a></li>
<li class="breadcrumb-item"><a href="{{ url_for('admin.customer_detail', customer_id=customer.id) }}" class="text-info">{{ customer.display_name }}</a></li>
<li class="breadcrumb-item active">Bearbeiten</li>
</ol>
</nav>
<h1><i class="bi bi-pencil me-2"></i>Kunde bearbeiten</h1>
</div>
</div>
<form method="POST" action="{{ url_for('admin.customer_edit', customer_id=customer.id) }}">
<div class="row g-4">
<!-- Kontaktdaten -->
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">
<i class="bi bi-person-vcard me-2"></i>Kontaktdaten
</div>
<div class="card-body">
<div class="mb-3">
<label for="email" class="form-label">E-Mail</label>
<input type="email" class="form-control bg-dark border-secondary text-light"
id="email" value="{{ customer.email }}" disabled>
<div class="form-text">E-Mail kann nicht geaendert werden (Identifikator)</div>
</div>
<div class="mb-3">
<label for="name" class="form-label">Name <span class="text-danger">*</span></label>
<input type="text" class="form-control bg-dark border-secondary text-light"
id="name" name="name" value="{{ fields.get('name', '') }}" required>
</div>
<div class="mb-3">
<label for="phone" class="form-label">Telefon</label>
<input type="tel" class="form-control bg-dark border-secondary text-light"
id="phone" name="phone" value="{{ customer.display_phone }}"
placeholder="+43 ...">
</div>
</div>
</div>
</div>
<!-- Adresse -->
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">
<i class="bi bi-geo-alt me-2"></i>Adresse
</div>
<div class="card-body">
<div class="mb-3">
<label for="address_street" class="form-label">Strasse</label>
<input type="text" class="form-control bg-dark border-secondary text-light"
id="address_street" name="address_street"
value="{{ addr.street }}">
</div>
<div class="row">
<div class="col-4">
<div class="mb-3">
<label for="address_zip" class="form-label">PLZ</label>
<input type="text" class="form-control bg-dark border-secondary text-light"
id="address_zip" name="address_zip"
value="{{ addr.zip }}">
</div>
</div>
<div class="col-8">
<div class="mb-3">
<label for="address_city" class="form-label">Ort</label>
<input type="text" class="form-control bg-dark border-secondary text-light"
id="address_city" name="address_city"
value="{{ addr.city }}">
</div>
</div>
</div>
</div>
</div>
</div>
<!-- E-Mail-Einstellungen -->
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">
<i class="bi bi-envelope me-2"></i>E-Mail-Einstellungen
</div>
<div class="card-body">
<div class="form-check mb-3">
<input type="checkbox" class="form-check-input" id="email_notifications"
name="email_notifications"
{{ 'checked' if customer.email_notifications else '' }}>
<label class="form-check-label" for="email_notifications">
Buchungsbestaetigungen
</label>
<div class="form-text">Erhaelt E-Mails bei neuen Buchungen</div>
</div>
<div class="form-check mb-3">
<input type="checkbox" class="form-check-input" id="email_reminders"
name="email_reminders"
{{ 'checked' if customer.email_reminders else '' }}>
<label class="form-check-label" for="email_reminders">
Kurserinnerungen
</label>
<div class="form-text">Erhaelt Erinnerungen vor Kursbeginn</div>
</div>
<div class="form-check mb-3">
<input type="checkbox" class="form-check-input" id="email_invoices"
name="email_invoices"
{{ 'checked' if customer.email_invoices else '' }}>
<label class="form-check-label" for="email_invoices">
Rechnungen
</label>
<div class="form-text">Erhaelt Rechnungen per E-Mail</div>
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="email_marketing"
name="email_marketing"
{{ 'checked' if customer.email_marketing else '' }}>
<label class="form-check-label" for="email_marketing">
Newsletter & Marketing
</label>
<div class="form-text">Erhaelt Newsletter und Angebote</div>
</div>
</div>
</div>
</div>
<!-- Konto-Infos (nur Anzeige) -->
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">
<i class="bi bi-info-circle me-2"></i>Konto-Informationen
</div>
<div class="card-body">
<table class="table table-dark table-borderless table-sm mb-0">
<tr>
<td class="text-muted" style="width: 140px;">Kunden-ID</td>
<td>#{{ customer.id }}</td>
</tr>
<tr>
<td class="text-muted">WP User-ID</td>
<td>{{ customer.wp_user_id or '-' }}</td>
</tr>
<tr>
<td class="text-muted">Registriert</td>
<td>{{ customer.created_at.strftime('%d.%m.%Y um %H:%M') if customer.created_at else '-' }}</td>
</tr>
<tr>
<td class="text-muted">Letzter Login</td>
<td>
{% if customer.last_login_at %}
{{ customer.last_login_at.strftime('%d.%m.%Y um %H:%M') }}
{% else %}
<span class="text-muted">Noch nie eingeloggt</span>
{% endif %}
</td>
</tr>
</table>
</div>
</div>
</div>
<!-- Weitere Felder (aus custom_fields, ohne Kernfelder) -->
{% set skip_core = ['name', 'phone', 'address_street', 'address_zip', 'address_city', 'email'] %}
{% set extra_fields = {} %}
{% for key, value in fields.items() if key not in skip_core %}
{% set _ = extra_fields.update({key: value}) %}
{% endfor %}
{% if extra_fields %}
<div class="col-lg-6">
<div class="card h-100">
<div class="card-header">
<i class="bi bi-person-lines-fill me-2"></i>Weitere Felder
</div>
<div class="card-body">
{% for key, value in extra_fields.items() %}
{% set saved_field = field_config.wp_fields.get(key, {}) %}
{% set label = saved_field.get('label') or key %}
<div class="mb-3">
<label for="custom_{{ key }}" class="form-label">{{ label }}</label>
<input type="text" class="form-control bg-dark border-secondary text-light"
id="custom_{{ key }}" name="custom_{{ key }}"
value="{{ value }}">
</div>
{% endfor %}
</div>
</div>
</div>
{% endif %}
</div>
<!-- Aktionen -->
<div class="d-flex justify-content-between mt-4">
<a href="{{ url_for('admin.customer_detail', customer_id=customer.id) }}" class="btn btn-outline-secondary">
<i class="bi bi-x-lg me-1"></i>Abbrechen
</a>
<button type="submit" class="btn btn-primary">
<i class="bi bi-check-lg me-1"></i>Aenderungen speichern
</button>
</div>
</form>
{% endblock %}