Your IP : 216.73.216.79


Current Path : /var/www/html/reddsis/app/Http/Controllers/Backend/
Upload File :
Current File : /var/www/html/reddsis/app/Http/Controllers/Backend/RefController.php

<?php

namespace App\Http\Controllers\Backend;

use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\RefRequest;
use App\Models\Backend\Ref;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class RefController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(Request $request)
    {
        $search = $request->get('search');
        $cat = $request->get('cat');

        $refs = Ref::query()
            ->when($search, function ($q) use ($search) {
                $q->where(function ($sub) use ($search) {
                    $sub->where('cat', 'like', "%{$search}%")
                        ->orWhere('code', 'like', "%{$search}%")
                        ->orWhere('descr', 'like', "%{$search}%")
                        ->orWhere('descr_en', 'like', "%{$search}%");
                });
            })
            ->when($cat, fn($q) => $q->where('cat', $cat))
            ->orderBy('cat')
            ->orderBy('sort')
            ->paginate(10)
            ->onEachSide(1)
            ->withQueryString();

        $categories = Ref::select('cat')->distinct()->orderBy('cat')->pluck('cat');

        return view(
            'backend.module.ref.index',
            [
                'refs' => $refs,
                'search' => $search,
                'cat' => $cat,
                'categories' => $categories,
            ]
        );
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        $codes = Ref::select('cat', 'code', 'descr')->orderBy('cat')->orderBy('sort')->get();
        return view('backend.module.ref.create', ['codes' => $codes]);
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(RefRequest $request)
    {
        Ref::create([
            'cat' => $request->cat,
            'code' => $request->code,
            'descr' => $request->descr,
            'descr_en' => $request->descr_en,
            'sort' => $request->sort,
            'parent' => $request->parent,
            'icon_name' => $request->icon_name,
            'created_by' => auth()->user()->username ?? auth()->id(),
            'updated_by' => auth()->user()->username ?? auth()->id(),
        ]);

        flash()->success('Parameter created successfully!');

        return redirect()->route('ref.index');
    }

    /**
     * Display the specified resource.
     */
    // public function show($id)
    // {
    //     $ref = Ref::findOrFail($id);

    //     return view(
    //         'backend.module.ref.show',
    //         [
    //             'ref' => $ref,
    //         ]
    //     );
    // }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        $ref = Ref::findOrFail($id);

        $codes = Ref::select('cat', 'code', 'descr')->orderBy('cat')->orderBy('sort')->get();
        return view(
            'backend.module.ref.edit',
            [
                'ref' => $ref,
                'codes' => $codes,
            ]
        );
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(RefRequest $request, $id)
    {
        $ref = Ref::findOrFail($id);

        $ref->update([
            'cat' => $request->cat,
            'code' => $request->code,
            'descr' => $request->descr,
            'descr_en' => $request->descr_en,
            'sort' => $request->sort,
            'parent' => $request->parent,
            'icon_name' => $request->icon_name,
            'updated_by' => auth()->user()->username ?? auth()->id(),
        ]);

        flash()->success('Parameter updated successfully!');

        return redirect()->route('ref.index');
    }

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

        flash()->success('Parameter deleted successfully.');

        return redirect()->route('ref.index');
    }
    public function reorder(Request $request)
    {
        $ids = $request->input("ids", []);
        $page = (int) $request->input('page', 1);
        $perPage = 10;
        $offset = ($page - 1) * $perPage;
        foreach ($ids as $index => $id) {
            \App\Models\Backend\Ref::where("id", $id)->update(["sort" => $offset + $index + 1]);
        }
        return response()->json(["success" => true]);
    }

}