partner_id) { $this->redirect(route('dashboard'), navigate: true); return; } $role = $user->roles->first(); if ($role) { $this->roleIcon = $role->icon ?? 'shield-check'; $this->roleName = $role->display_name ?? $role->name; } $this->partner = Partner::with('users')->findOrFail($user->partner_id); $this->partnerType = $this->partner->type?->value ?? ''; // Vorausfüllen: Partner-Daten $this->companyName = $this->partner->company_name ?? ''; $this->displayName = $this->partner->display_name ?? ''; $this->salutation = $this->partner->salutation ?? ''; $this->firstName = $this->partner->first_name ?? ''; $this->lastName = $this->partner->last_name ?? ''; $this->description = $this->partner->description ?? ''; $this->street = $this->partner->street ?? ''; $this->houseNumber = $this->partner->house_number ?? ''; $this->zip = $this->partner->zip ?? ''; $this->city = $this->partner->city ?? ''; $this->country = $this->partner->country ?? 'Deutschland'; $this->phone = $this->partner->phone ?? ''; $this->website = $this->partner->website ?? ''; $this->deliveryRadius = $this->partner->delivery_radius_km; $this->assemblyRadius = $this->partner->assembly_radius_km; // Ersetze Platzhalter wie "roles.broker M10000004" durch Übersetzung + ID if(strpos($this->companyName, 'roles.') !== false) { $parts = explode(' ', $this->companyName, 2); $translatedRole = isset($parts[0]) ? __($parts[0]) : $this->companyName; $partnerId = isset($parts[1]) ? ' ' . $parts[1] : ''; $this->companyName = $translatedRole . $partnerId; } // Namen aus User übernehmen, falls Partner-Felder leer sind if (empty($this->firstName) && empty($this->lastName)) { $nameParts = explode(' ', $user->name, 2); $this->firstName = $nameParts[0] ?? ''; $this->lastName = $nameParts[1] ?? ''; } // Marke laden für Manufacturer if (strtolower(str_replace('-', '', $this->partnerType)) === 'manufacturer') { $brand = Brand::where('partner_id', $this->partner->id)->first(); if ($brand) { $this->brandName = $brand->name; $this->brandDescription = $brand->description ?? ''; } } } public function saveData(): void { $normalizedType = strtolower(str_replace('-', '', $this->partnerType)); $isCustomer = $normalizedType === 'customer'; $isBroker = $normalizedType === 'broker' || $normalizedType === 'estateagent'; $isRetailer = $normalizedType === 'retailer'; $isManufacturer = $normalizedType === 'manufacturer'; $rules = [ 'salutation' => 'required|in:Herr,Frau,Divers', 'firstName' => 'required|string|max:255', 'lastName' => 'required|string|max:255', 'street' => 'required|string|max:255', 'houseNumber' => 'required|string|max:20', 'zip' => 'required|string|max:10', 'city' => 'required|string|max:255', 'country' => 'required|string|max:255', 'phone' => 'nullable|string|max:50', ]; if (!$isCustomer) { $rules['companyName'] = 'required|string|max:255'; $rules['description'] = 'nullable|string|max:1000'; $rules['website'] = 'nullable|url|max:255'; } if ($isBroker) { $rules['displayName'] = 'required|string|max:255'; } if ($isRetailer) { $rules['deliveryRadius'] = 'required|integer|min:1|max:500'; $rules['assemblyRadius'] = 'required|integer|min:1|max:500'; } if ($isManufacturer) { $rules['brandName'] = 'required|string|max:255'; $rules['brandDescription'] = 'nullable|string|max:1000'; } $this->validate($rules, [ 'salutation.required' => __('Bitte wählen Sie eine Anrede.'), 'firstName.required' => __('Bitte geben Sie einen Vornamen ein.'), 'lastName.required' => __('Bitte geben Sie einen Nachnamen ein.'), 'companyName.required' => __('Bitte geben Sie einen Firmennamen ein.'), 'displayName.required' => __('Bitte geben Sie einen Anzeigenamen ein.'), 'street.required' => __('Bitte geben Sie eine Straße ein.'), 'houseNumber.required' => __('Bitte geben Sie eine Hausnummer ein.'), 'zip.required' => __('Bitte geben Sie eine Postleitzahl ein.'), 'city.required' => __('Bitte geben Sie eine Stadt ein.'), 'country.required' => __('Bitte wählen Sie ein Land.'), 'website.url' => __('Bitte geben Sie eine gültige URL ein.'), 'deliveryRadius.required' => __('Bitte geben Sie einen Lieferradius ein.'), 'deliveryRadius.min' => __('Der Lieferradius muss mindestens 1 km betragen.'), 'assemblyRadius.required' => __('Bitte geben Sie einen Montageradius ein.'), 'assemblyRadius.min' => __('Der Montageradius muss mindestens 1 km betragen.'), 'brandName.required' => __('Bitte geben Sie einen Markennamen ein.'), ]); // Update Partner $updateData = [ 'salutation' => $this->salutation, 'first_name' => $this->firstName, 'last_name' => $this->lastName, 'street' => $this->street, 'house_number' => $this->houseNumber, 'zip' => $this->zip, 'city' => $this->city, 'country' => $this->country, 'phone' => $this->phone, ]; if (!$isCustomer) { $updateData['company_name'] = $this->companyName; $updateData['description'] = $this->description; $updateData['website'] = $this->website; } if ($isBroker) { $updateData['display_name'] = $this->displayName; } if ($isRetailer) { $updateData['delivery_radius_km'] = $this->deliveryRadius; $updateData['assembly_radius_km'] = $this->assemblyRadius; } $this->partner->update($updateData); // Für Manufacturer: Marke aktualisieren oder erstellen if ($isManufacturer) { Brand::updateOrCreate( ['partner_id' => $this->partner->id], [ 'name' => $this->brandName, 'slug' => Str::slug($this->brandName), 'description' => $this->brandDescription, 'is_active' => true, ] ); } session()->flash('message', __('Ihre Daten wurden erfolgreich aktualisiert.')); } }; ?>
{{-- Header --}}
{{ __('Meine Daten') }} {{ __('Verwalten Sie Ihre Firmendaten und Kontaktinformationen') }}
@svg('heroicon-o-'.$roleIcon, 'w-6 h-6 text-accent-600 dark:text-accent-400') {{ $roleName }}
{{-- Success Message --}} {{-- Formular --}}
@php $isCustomer = strtolower(str_replace('-', '', $partnerType)) === 'customer'; $isRetailer = strtolower(str_replace('-', '', $partnerType)) === 'retailer'; $isManufacturer = strtolower(str_replace('-', '', $partnerType)) === 'manufacturer'; $isBroker = strtolower(str_replace('-', '', $partnerType)) === 'broker' || strtolower(str_replace('-', '', $partnerType)) === 'estateagent'; @endphp {{-- Firmenname (nur für Nicht-Kunden) --}} @if (!$isCustomer) {{ __('Firmenname') }} * @error('companyName') {{ $message }} @enderror @if ($isBroker) {{ __('Anzeigename') }} * {{ __('Der Name, der Ihren Kunden angezeigt wird') }} @error('displayName') {{ $message }} @enderror @endif {{ __('Kurzbeschreibung') }} ({{ __('optional') }}) @error('description') {{ $message }} @enderror @endif {{-- Persönliche Daten --}}
{{ __('Anrede') }} * {{ __('Bitte wählen') }} {{ __('Herr') }} {{ __('Frau') }} {{ __('Divers') }} @error('salutation') {{ $message }} @enderror {{ __('Vorname') }} * @error('firstName') {{ $message }} @enderror {{ __('Nachname') }} * @error('lastName') {{ $message }} @enderror
{{-- Adresse --}}
{{ __('Straße') }} * @error('street') {{ $message }} @enderror {{ __('Hausnummer') }} * @error('houseNumber') {{ $message }} @enderror
{{ __('Postleitzahl') }} * @error('zip') {{ $message }} @enderror {{ __('Ort') }} * @error('city') {{ $message }} @enderror
{{ __('Land') }} * {{ __('Deutschland') }} {{ __('Österreich') }} {{ __('Schweiz') }} @error('country') {{ $message }} @enderror {{ __('Telefon') }} @error('phone') {{ $message }} @enderror @if (!$isCustomer) {{ __('Website') }} @error('website') {{ $message }} @enderror @endif {{-- Liefergebiete für Händler (Retailer) --}} @if ($isRetailer)

{{ __('Liefergebiete') }}

{{ __('Definieren Sie, in welchem Umkreis Sie liefern und montieren können.') }}

{{ __('Lieferradius (km)') }} * {{ __('Ich liefere im Umkreis von ... km') }} @error('deliveryRadius') {{ $message }} @enderror {{ __('Montageradius (km)') }} * {{ __('Ich montiere im Umkreis von ... km') }} @error('assemblyRadius') {{ $message }} @enderror
@endif {{-- Marke für Hersteller (Manufacturer) --}} @if ($isManufacturer)

{{ __('Ihre Marke') }}

{{ __('Unter dieser Marke werden Ihre Produkte auf B2In gelistet.') }}

{{ __('Markenname') }} * @error('brandName') {{ $message }} @enderror {{ __('Marken-Beschreibung') }} ({{ __('optional') }}) @error('brandDescription') {{ $message }} @enderror @endif
{{ __('Änderungen speichern') }}