<?php
namespace Modules\{{modulePath}}\Http\Controllers;


use App\Http\Controllers\Controller;
use Modules\{{modulePath}}\Entities\{{modelName}};
use Illuminate\Http\Request;

class {{controllerName}} extends Controller
{
    protected $model = {{modelName}}::class;
    public function index(Request $request)
    {
        $query = $this->model::query();
        $model=null;
        if (in_array('App\Traits\HasSearchable', class_uses_recursive($this->model))) {
            $query->filter($request);
            $model=$this->model;
        }
        $out = $query->orderBy('id','desc')->paginate(20)->appends(\request()->all());

        return view( '{{viewPath}}.index', compact('out','model'));
    }

    public function showCreate()
    {
        return view('{{viewPath}}.create');

    }
    public function create(Request $request)
    {
        $request->validate([
            'name'=>'required',
        ]);

        $this->model::create([
            'name'=>$request->name,
        ]);
        if($request->expectsJson()){
            return ['done'=>1];
        }
        flash('تمت الاضافة بنجاح');
        return redirect()->route('{{viewPath}}.index');
    }

    /**
     * Display the specified resource.
     */
    public function show({{modelName}} $object)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     */
    public function showUpdate({{modelName}} $object)
    {

        return view('{{viewPath}}.update', compact('object'));
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, {{modelName}} $object)
    {
        $request->validate([
            'name'=>'required',

        ]);

        $object->update([
            'name'=>$request->name,
        ]);
        if($request->expectsJson()){
            return ['done'=>1];
        }
        flash('تم التعديل بنجاح');
        return redirect()->route('{{viewPath}}.index');
    }
    public function delete(Request $request)
    {
        $ids = [];
        if (is_array($request->id)) {
            $ids = $request->id;
        } else {
            $ids[] = $request->id;
        }
        foreach ($ids as $id) {
            $item=$this->model::find($id);
            $item->delete();

        }
        return ['done' =>1];
    }



    public function activate(Request $request)
    {
        $ids = [];
        if (is_array($request->id)) {
            $ids = $request->id;
        } else {
            $ids[] = $request->id;
        }
        $this->model::whereIn('id',$ids)->update(['status'=>'enabled']);
        return ['done' =>1];
    }


    public function deactivate(Request $request)
    {

        $ids = [];
        if (is_array($request->id)) {
            $ids = $request->id;
        } else {
            $ids[] = $request->id;
        }
        $this->model::whereIn('id',$ids)->update(['status'=>'disabled']);
        return ['done' =>1];
    }
}
