/home2/mshostin/carnival.ms-hostingladz.com/app/Http/Controllers/VariantController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Variant;
use App\Models\Category;

class VariantController extends Controller
{
    public function index()
    {
        $variants = Variant::all();
        $categories = Category::all();
        return view('dashboard.admin.variants.index', compact('variants', 'categories'));
    }

    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'nullable',
            'category_id' => 'required',
            'type' => 'required',
        ]);

        $variants = Variant::create($request->all());

        if ($variants) {
            $variants = Variant::all();
            $view = view('dashboard.admin.variants.table', compact('variants'))->render();

            return response()->json(['message' => 'Variant created successfully', 'table_html' => $view], 200);
        } else {
            return response()->json(['error' => 'Failed to create variant'], 500);
        }
    }

    public function edit($id)
    {
        $variant = Variant::findOrFail($id);
        return response()->json(['variant' => $variant]);
    }

    public function update(Request $request, Variant $variant)
    {
        $request->validate([
            'title' => 'required',
            'description' => 'nullable',
            'category_id' => 'required',
            'type' => 'required',
        ]);

        try {
            $variant->update($request->all());

            if ($variant->wasChanged()) {
                $variants = Variant::all();
                $view = view('dashboard.admin.variants.table', compact('variants'))->render();

                return response()->json(['variant' => $variant, 'message' => 'Variant updated successfully', 'table_html' => $view], 200);
            } else {
                return response()->json(['error' => 'No changes detected for the variant'], 400);
            }
        } catch (\Exception $e) {
            return response()->json(['error' => 'Failed to update variant: ' . $e->getMessage()], 500);
        }
    }


    public function destroy(Variant $variant)
    {
        $variant->delete();
        return response()->json(['message' => 'Variant deleted successfully'], 200);
    }
}