Ticket dev/_tickets/2026-09-08.md #1: neuer Punkt "Berater uebertragen" im Superadmin (/admin/user/transfer). Vorschau zeigt Firstline, Downline, geparkte Sponsor-Bezuege, Kunden, Kundenabos und Portal-Logins; nach Bestaetigung wird alles in einer Transaktion umgehaengt und wie die User-Bereinigung protokolliert (user_clean_up_logs, shopping_user_member_logs, SysLog). Bestellungen, Umsaetze und Provisionsdaten bleiben beim bisherigen Berater. Ziel unterhalb der Firstline der Quelle wird abgelehnt (Kreis im Baum). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Requests\UserTransfer;
|
|
|
|
use Illuminate\Foundation\Http\FormRequest;
|
|
|
|
/**
|
|
* Auswahl von Quell- und Zielberater für die Übertragung eines Berater-Stamms
|
|
* (dev/_tickets/2026-09-08.md, Ticket #1).
|
|
*/
|
|
class PreviewConsultantTransferRequest extends FormRequest
|
|
{
|
|
public function authorize(): bool
|
|
{
|
|
// Die Route liegt hinter der superadmin-Middleware.
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* @return array<string, array<int, mixed>>
|
|
*/
|
|
public function rules(): array
|
|
{
|
|
return [
|
|
'source_user_id' => ['required', 'integer', 'exists:users,id'],
|
|
'target_user_id' => ['required', 'integer', 'exists:users,id', 'different:source_user_id'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return array<string, string>
|
|
*/
|
|
public function messages(): array
|
|
{
|
|
return [
|
|
'source_user_id.required' => __('msg.transfer_error_source_required'),
|
|
'target_user_id.required' => __('msg.transfer_error_target_required'),
|
|
'target_user_id.different' => __('msg.transfer_error_same_user'),
|
|
];
|
|
}
|
|
}
|