783cc88c6d
- Add integration fields to Order model: packing_*, courier_*, trello_card_id, qr_token
- Add integration fields to CustomOrder model: packing_*, proof_approved_*, courier_*, trello_card_id, qr_token
- Update Order model fillable array and add relationships (packedBy)
- Update CustomOrder model fillable array, casts, and add relationships (packedBy)
- Add isCustomOrder() method to both models for type checking
- Update OrderController to emit OrderCreated and DepositPaid events on successful payment
- For standard orders: full payment -> prep status, emit events
- For custom orders: deposit -> design status, balance -> printing status, emit respective events
- Add approveProof() method to CustomOrderController (POST /custom-orders/{id}/approve-proof)
- Add requestChanges() method to CustomOrderController (POST /custom-orders/{id}/request-changes)
- Add markBalancePaid() method to CustomOrderController (POST /custom-orders/{id}/pay-balance)
- All new methods emit appropriate events (ProofApproved, ProofRevisionRequested, BalancePaid)
- Add database migration for proof_approved and proof_approved_at fields on custom_orders
- Add routes for new custom order endpoints with UUID binding
- Import all required event classes in both controllers
88 lines
5.4 KiB
PHP
88 lines
5.4 KiB
PHP
<?php
|
|
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\HomeController;
|
|
use App\Http\Controllers\WallpapersController;
|
|
use App\Http\Controllers\MuralsController;
|
|
use App\Http\Controllers\FabricsController;
|
|
use App\Http\Controllers\ProductController;
|
|
use App\Http\Controllers\CartController;
|
|
use App\Http\Controllers\OrderController;
|
|
use App\Http\Controllers\CustomOrderController;
|
|
use App\Http\Controllers\Auth\GoogleAuthController;
|
|
use App\Http\Controllers\PackingController;
|
|
use App\Http\Controllers\ShippingController;
|
|
|
|
Route::get('/', [HomeController::class, 'index'])->name('home');
|
|
Route::get('/wallpapers', [WallpapersController::class, 'index'])->name('wallpapers');
|
|
Route::get('/murals', [MuralsController::class, 'index'])->name('murals');
|
|
Route::get('/fabrics', [FabricsController::class, 'index'])->name('fabrics');
|
|
|
|
// Product routes
|
|
Route::get('/products/{product}', [ProductController::class, 'show'])->name('product-detail');
|
|
|
|
// Authentication routes
|
|
Route::get('/login', function () { return view('auth.login'); })->name('auth.login');
|
|
Route::get('/auth/google', [GoogleAuthController::class, 'redirect'])->name('auth.google');
|
|
Route::get('/auth/google/callback', [GoogleAuthController::class, 'callback'])->name('auth.google.callback');
|
|
Route::post('/logout', [GoogleAuthController::class, 'logout'])->name('logout');
|
|
|
|
// Cart routes
|
|
Route::get('/cart', [CartController::class, 'index'])->name('cart');
|
|
Route::post('/cart/add/{product}', [CartController::class, 'add'])->name('cart-add');
|
|
Route::post('/cart/sample/{product}', [CartController::class, 'orderSample'])->name('order-sample');
|
|
Route::post('/cart/update', [CartController::class, 'update'])->name('cart-update');
|
|
Route::post('/cart/remove', [CartController::class, 'remove'])->name('cart-remove');
|
|
Route::post('/cart/clear', [CartController::class, 'clear'])->name('cart-clear');
|
|
|
|
// Order routes
|
|
Route::get('/checkout', [OrderController::class, 'checkout'])->name('checkout');
|
|
Route::post('/orders/process', [OrderController::class, 'process'])->name('order-process');
|
|
Route::get('/orders/success/{order:uuid}', [OrderController::class, 'success'])->name('order-success');
|
|
Route::get('/orders/history', [OrderController::class, 'history'])->name('order-history');
|
|
|
|
// Guest order tracking routes
|
|
Route::get('/track-order', [OrderController::class, 'trackForm'])->name('track-order-form');
|
|
Route::post('/track-order', [OrderController::class, 'trackSearch'])->name('track-order-search');
|
|
|
|
// Yoco payment routes
|
|
Route::get('/payment/yoco/{order:uuid}', [OrderController::class, 'yocoPayment'])->name('yoco-payment');
|
|
Route::get('/payment/yoco/success/{order:uuid}', [OrderController::class, 'yocoSuccess'])->name('yoco-success');
|
|
Route::get('/payment/yoco/cancel/{order:uuid}', [OrderController::class, 'yocoCancel'])->name('yoco-cancel');
|
|
Route::get('/payment/yoco/failure/{order:uuid}', [OrderController::class, 'yocoFailure'])->name('yoco-failure');
|
|
|
|
// Protected routes - authenticated users only
|
|
Route::middleware('auth')->group(function () {
|
|
Route::get('/my-account', 'App\Http\Controllers\AccountController@show')->name('my-account');
|
|
Route::post('/my-account', 'App\Http\Controllers\AccountController@update')->name('my-account.update');
|
|
Route::get('/my-orders', 'App\Http\Controllers\AccountController@orders')->name('my-orders');
|
|
Route::get('/my-orders/{order:uuid}', 'App\Http\Controllers\AccountController@orderDetail')->name('my-orders.detail');
|
|
Route::get('/custom-orders', [CustomOrderController::class, 'index'])->name('custom-orders.index');
|
|
Route::get('/custom-orders/create', 'App\Http\Controllers\CustomOrderController@create')->name('custom-orders.create');
|
|
Route::post('/custom-orders', 'App\Http\Controllers\CustomOrderController@store')->name('custom-orders.store');
|
|
Route::get('/custom-orders/{customOrder:uuid}', 'App\Http\Controllers\CustomOrderController@show')->name('custom-orders.show');
|
|
Route::post('/custom-orders/{customOrder:uuid}/approve-proof', [CustomOrderController::class, 'approveProof'])->name('custom-orders.approve-proof');
|
|
Route::post('/custom-orders/{customOrder:uuid}/request-changes', [CustomOrderController::class, 'requestChanges'])->name('custom-orders.request-changes');
|
|
Route::post('/custom-orders/{customOrder:uuid}/pay-balance', [CustomOrderController::class, 'markBalancePaid'])->name('custom-orders.pay-balance');
|
|
Route::post('/payment/yoco/custom/deposit', [CustomOrderController::class, 'depositPayment'])->name('yoco-custom-deposit');
|
|
Route::get('/payment/yoco/custom/deposit/success/{customOrder:uuid}', [CustomOrderController::class, 'depositSuccess'])->name('yoco-custom-deposit-success');
|
|
|
|
// Packing & Shipping routes (ops staff)
|
|
Route::post('/orders/{order:uuid}/pack', [PackingController::class, 'confirmPacked'])->name('orders.pack');
|
|
Route::post('/custom-orders/{customOrder:uuid}/pack', [PackingController::class, 'confirmPacked'])->name('custom-orders.pack');
|
|
Route::post('/orders/{order:uuid}/ship', [ShippingController::class, 'createShipment'])->name('orders.ship');
|
|
Route::post('/custom-orders/{customOrder:uuid}/ship', [ShippingController::class, 'createShipment'])->name('custom-orders.ship');
|
|
});
|
|
|
|
// use Illuminate\Support\Facades\Route;
|
|
|
|
Route::get('/font-test', function () {
|
|
dd(
|
|
file_exists(storage_path('fonts/AbrilFatface-Regular.ttf')),
|
|
is_readable(storage_path('fonts/AbrilFatface-Regular.ttf'))
|
|
);
|
|
});
|
|
|
|
|
|
// Test route for invoice generation (remove in production)
|
|
require __DIR__ . '/test-invoice.php'; |