<?php
namespace App\Http\Controllers\Admin;
use App\Http\Requests\MenuTablePost;
use App\Models\Permission;
use Illuminate\Http\Request;
use App\Repositories\Eloquent\MenuRepositoryEloquent;
class MenuTableController extends Controller
{
    private $model_menu;
    
    public function __construct(MenuRepositoryEloquent $menu)
    {
               $this->model_menu = $menu;
    }
    
    public function index()
    {
        $menus = $this->model_menu->getAllMenu();
        return view('admin.menu.menu_table' ,['menus' => $menus]);
    }
    
    public function create()
    {
               $model_menu = $this->model_menu->model();
        $menu_first = $model_menu::where('parent_id', 0)->orderBy('order', 'asc')->get();
        return view('admin.menu.menu_add', ['menu_first' => $menu_first]);
    }
    
    public function store(MenuTablePost $request)
    {
        if ($request->parent_id_1 == 0) {
            $parent_id = 0;
        } else {
            if ($request->parent_id_2 == 0) {
                $parent_id = $request->parent_id_1;
            } else {
                $parent_id = $request->parent_id_2;
            }
        }
        $responseData = $this->model_menu->createMenu($parent_id, $request);
        return response()->json($responseData);
    }
    
    public function show($id)
    {
               dd('show');
    }
    
    public function edit($id)
    {
        $model_menu = $this->model_menu->model();
        $menu_info = $model_menu::find($id);
        return view('admin.menu.menu_edit' ,['menu_info' => $menu_info]);
    }
    
    public function update(MenuTablePost $request, $id)
    {
        $responseData = $this->model_menu->updateMenu($id, $request);
        return response()->json($responseData);
    }
    
    public function destroy($id)
    {
        $this->model_menu->delAllMenu($id);
        $this->model_menu->setMenuAllCache();
        return response()->json(['state' => 'success']);
    }
    
    public function ajaxGetChildMenu(Request $request) {
        if ($request->parent_id != 0) {
            return $this->model_menu->getChildMenu($request->parent_id);
        }
    }
    
    public function saveOrder(Request $request)
    {
        if (!empty($request->menu)) {
            $menu = json_decode($request->menu);
            $this->model_menu->saveMenuOrder($menu);
            $this->model_menu->setMenuAllCache();
            return response()->json(['state' => 'success']);
        }
    }
}