import os

def generate_booking_controller():
    return '''<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use App\Models\Service;
use App\Models\Order;
use App\Models\OrderTimeline;
use App\Models\Setting;
use App\Models\User;

class BookingController extends Controller
{
    public function book($slug)
    {
        $service = Service::where('slug', $slug)->where('is_active', true)->with(['category', 'subcategory'])->firstOrFail();
        
        $user = Auth::user();
        $bkash = Setting::get('bkash_number', '01711-223344 (Merchant / 0% fee)');
        $nagad = Setting::get('nagad_number', '01911-556677');
        $rocket = Setting::get('rocket_number', '01711-223344-9');
        $bankInfo = Setting::get('bank_account_info');

        return view('pages.book', compact('service', 'user', 'bkash', 'nagad', 'rocket', 'bankInfo'));
    }

    public function processOrder(Request $request, $slug)
    {
        $service = Service::where('slug', $slug)->where('is_active', true)->with(['category', 'subcategory'])->firstOrFail();

        if (!Auth::check()) {
            return redirect()->route('login', ['redirect' => route('book.service', $slug)]);
        }

        $user = Auth::user();

        $validated = $request->validate([]
            'customer_name' => 'required|string|max:255',
            'customer_email' => 'required|email|max:255',
            'customer_phone' => 'required|string|max:30',
            'customer_address' => 'required|string|max:500',
            'passport_number' => 'nullable|string|max:50',
            'nid_number' => 'nullable|string|max:50',
            'payment_method' => 'required|in:buy,sell',
        ]);
    }
}'''

print('generate_clean_code.py initialized')
