- UserMakeOrder: bestaetigte Einmal-Artikel in den Yard, is_abo_addon auf ShoppingOrderItem; amount bleibt reiner Abo-Betrag (Reihenfolge) - AboOneTimeService::purgeAfterExecution: loescht alle Einmal-Artikel und rechnet Comp-Produkte neu - nur im Erfolgszweig (Cron + Retry) - User-Retry in Sales Center und Portal mit Berechtigungspruefung, gemeinsames Confirm-Modal; Admin-Retry unveraendert - Tests: AboMakeOrderOneTimeTest, AboUserRetryTest; Plan-Doku Phase 4 Co-authored-by: Cursor <cursoragent@cursor.com>
68 lines
4.5 KiB
PHP
68 lines
4.5 KiB
PHP
<?php
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Main Website Routes (mivita.care)
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
use App\Http\Controllers\Portal\AboController;
|
|
use App\Http\Controllers\Portal\Auth\LoginController;
|
|
use App\Http\Controllers\Portal\CustomerController;
|
|
use App\Http\Controllers\Portal\InController;
|
|
use App\Http\Controllers\Portal\OrderController;
|
|
|
|
/* ROUTING FOR CRM my.mivita / CMS */
|
|
|
|
Route::domain(config('app.pre_url_portal').config('app.domain').config('app.tld_care'))->group(function () {
|
|
|
|
Route::get('/', [InController::class, 'index'])->name('/portal.home');
|
|
Route::post('/loading/modal', [InController::class, 'loadingModal'])->name('portal.loading_modal');
|
|
Route::get('portal/change-login', [InController::class, 'changeLogin'])->name('portal.change_login');
|
|
|
|
// Standard login route für Laravel Auth-Kompatibilität
|
|
Route::get('login', function () {
|
|
return redirect()->route('portal.login.form');
|
|
})->name('login');
|
|
|
|
Route::get('portal/login', [LoginController::class, 'showLoginForm'])->name('portal.login.form');
|
|
Route::post('portal/login/send-otp', [LoginController::class, 'sendOtp'])->name('portal.login.send-otp');
|
|
Route::get('portal/login/verify/{email?}/{otp?}', [LoginController::class, 'showOtpForm'])->name('portal.login.otp.form'); // Zeigt OTP-Eingabeformular
|
|
Route::post('portal/login/verify', [LoginController::class, 'verifyOtpAndLogin'])->name('portal.login.verify-otp');
|
|
Route::get('portal/logout', [LoginController::class, 'logout'])->name('portal.logout');
|
|
Route::post('portal/logout-change', [LoginController::class, 'logoutChange'])->name('portal.logout_change');
|
|
|
|
// Geschützte Kunden-Routen
|
|
Route::middleware('auth:customers')->group(function () {
|
|
|
|
Route::get('portal/dashboard', [InController::class, 'dashboard'])->name('portal.dashboard');
|
|
// Route::get('portal/go-to-shop', [InController::class, 'goToShop'])->name('portal.go_to_shop');
|
|
Route::get('portal/my-data/edit', [CustomerController::class, 'myDataEdit'])->name('portal.my_data.edit');
|
|
Route::post('portal/my-data/store', [CustomerController::class, 'myDataStore'])->name('portal.my_data.store');
|
|
Route::get('portal/my-orders', [OrderController::class, 'myOrders'])->name('portal.my_orders');
|
|
Route::get('portal/my-orders/datatable', [OrderController::class, 'ordersDatatable'])->name('portal.my_orders.datatable');
|
|
Route::get('portal/my-orders/show/{id}', [OrderController::class, 'myOrderShow'])->name('portal.my_orders.show');
|
|
Route::get('portal/my-orders/{id}/payments/datatable', [OrderController::class, 'paymentsDatatable'])->name('portal.my_orders.payments_datatable');
|
|
Route::get('portal/my-orders/create/{id}', [OrderController::class, 'myOrderCreate'])->name('portal.my_orders.create');
|
|
Route::get('portal/my-subscriptions', [AboController::class, 'myAbo'])->name('portal.my_subscriptions');
|
|
Route::match(['get', 'post'], 'portal/my-subscriptions/create/{step}', [AboController::class, 'myAboCreate'])->name('portal.my_subscriptions.create');
|
|
Route::post('portal/my-subscriptions/update/{view}/{id}', [AboController::class, 'update'])->name('user_abos_update');
|
|
Route::post('portal/my-subscriptions/onetime/{view}/{id}', [AboController::class, 'oneTime'])->name('user_abos_onetime');
|
|
Route::post('portal/my-subscriptions/retry-payment/{id}', [AboController::class, 'retryPayment'])->name('portal_abos_retry_payment');
|
|
Route::get('portal/my-subscriptions/datatable/{id}', [AboController::class, 'datatable'])->name('user_abo_datatable');
|
|
Route::get('portal/my-subscriptions/onetime-datatable/{id}', [AboController::class, 'oneTimeDatatable'])->name('user_abo_onetime_datatable');
|
|
Route::post('portal/modal/load', [AboController::class, 'modalLoad'])->name('modal_load');
|
|
// Routen-Aliase für shared Views (admin.abo._detail, admin.abo._executions)
|
|
Route::get('portal/my-data/edit/{id?}', function () {
|
|
return redirect()->route('portal.my_data.edit');
|
|
})->name('user_customer_edit');
|
|
Route::get('portal/my-orders/detail/{id}', [OrderController::class, 'myOrderShow'])->name('user_shop_order_detail');
|
|
Route::get('portal/settings', [InController::class, 'settings'])->name('portal.settings');
|
|
// Weitere Kunden-spezifische Routen
|
|
});
|
|
|
|
// Logout für Kunden
|
|
|
|
// Logout für Kunden
|
|
});
|