<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Lists;
use App\Models\Events;
use App\Models\Particulars;

class ParticularController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }
    
    public function getParticulars()
    {
        $cities = Lists::select('city')->distinct()->get();
        return view('particulars.index', compact('cities'));
    }

        // Fetch lists by city
        public function getListsByCity($city)
        {
            $lists = Lists::where('city', $city)->get(['id', 'title']); // Select only required fields
            return response()->json($lists);
        }
    
        // Fetch events by list
        public function getEventsByList($listId)
        {
            $events = Events::where('lists_id', $listId)->get(['id', 'description']); // Select only required fields
            return response()->json($events);
        }
    
        // Fetch particulars by event
        public function getParticularsByEvent($eventId)
        {
            $particulars = Particulars::where('events_id', $eventId)->get(['id', 'label_name', 'label_text']); // Select only required fields
            return response()->json($particulars);
        }

    

    public function getParticular($id)
    {
        $particular = Particulars::findOrFail($id);
        return response()->json($particular);
    }

    
    public function saveParticular(Request $request)
    {
        $validatedData = $request->validate([
            'events_id' => 'required|integer|exists:events,id',
            'label_name' => 'required|string|max:255',
            'label_text' => 'required|string',
        ]);

        try {
            Particulars::create($validatedData);
            return response()->json(['success' => true]);
        } catch (\Exception $e) {
            \Log::error('Error creating particular: ' . $e->getMessage());
            return response()->json(['success' => false, 'message' => 'Internal Server Error'], 500);
        }
    }



    public function updateParticular(Request $request, $id)
    {
        $particular = Particulars::findOrFail($id);
        $particular->update($request->all());
        return response()->json(['success' => true]);
    }

    public function deleteParticular($id)
    {
        try {
            $particular = Particulars::findOrFail($id);
            $particular->delete();
            return response()->json(['success' => true]);
        } catch (Exception $e) {
            return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
        }
    }

}

