import { useState } from "react"; import { useMutation, useQuery } from "@tanstack/react-query"; import { queryClient } from "@/client/rpc-client"; export function AdminTreatments() { const [showForm, setShowForm] = useState(false); const [editingTreatment, setEditingTreatment] = useState(null); const [formData, setFormData] = useState({ name: "", description: "", duration: 60, price: 5000, // 50,00 € in Cent category: "Maniküre", }); const { data: treatments } = useQuery( queryClient.treatments.live.list.experimental_liveOptions() ); const { mutate: createTreatment, isPending: isCreating } = useMutation( queryClient.treatments.create.mutationOptions() ); const { mutate: updateTreatment, isPending: isUpdating } = useMutation( queryClient.treatments.update.mutationOptions() ); const { mutate: deleteTreatment } = useMutation( queryClient.treatments.remove.mutationOptions() ); const categories = ["Maniküre", "Pediküre", "Nageldesign", "Verlängerungen", "Sonstiges"]; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (editingTreatment) { updateTreatment({ id: editingTreatment.id, ...formData, }, { onSuccess: () => { setEditingTreatment(null); setShowForm(false); resetForm(); } }); } else { createTreatment(formData, { onSuccess: () => { setShowForm(false); resetForm(); } }); } }; const resetForm = () => { setFormData({ name: "", description: "", duration: 60, price: 5000, category: "Maniküre", }); }; const handleEdit = (treatment: any) => { setEditingTreatment(treatment); setFormData({ name: treatment.name, description: treatment.description, duration: treatment.duration, price: treatment.price, category: treatment.category, }); setShowForm(true); }; const handleCancel = () => { setShowForm(false); setEditingTreatment(null); resetForm(); }; return (

Behandlungen verwalten

{showForm && (

{editingTreatment ? "Behandlung bearbeiten" : "Neue Behandlung hinzufügen"}

setFormData({...formData, name: e.target.value})} className="w-full p-3 border border-gray-300 rounded-md focus:ring-2 focus:ring-pink-500 focus:border-pink-500" required />