<?php

namespace App\Http\Controllers\Backend;

use App\Models\Category;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
class CategoryController extends Controller
{
    //
    public function index()
    {
        $categories = Category::where('parent_id', null)->orderBy('order', 'asc')->get();
        return view('admin.category.index', compact('categories'));
    }

    public function updateState(Request $request)
    {
        $items = $request->all();

        $p_o = 1;


        foreach ($items as $key => $item) {

            foreach ($item as $l) {



                $menu_id = $l['id'];
                $parent_record = DB::table("categories")->where("id", $menu_id)->first();
                if (!empty($parent_record)) {
                    $data = array(
                       // "is_active" => 1,
                        "parent_id" => null,
                        "order" => $p_o
                    );
                    DB::table("categories")->where("id", $menu_id)->update($data);
                }
                if (!empty($l['children'])) {
                    $c_o = 1;
                    foreach ($l['children'] as $child) {
                        $data = array(
                            //"is_active" => 1,
                            "parent_id" => $menu_id,
                            "order" => $c_o
                        );

                        $child_record = DB::table("categories")->where("id", $menu_id)->first();
                        if (!empty($child_record)) {
                            DB::table("categories")->where("id", $child['id'])->update($data);
                        }
                        $c_o++;

                        $c_o_2 = 1;
                        $menu_id_2 = $child['id'];

                        if(isset($child['children'])) {
	                        foreach ( $child['children'] as $child2 ) {
		                        $data = array(
			                        //"is_active" => 1,
			                        "parent_id" => $menu_id_2,
			                        "order"     => $c_o_2
		                        );

		                        $child_record = DB::table( "categories" )->where( "id", $menu_id_2 )->first();
		                        if ( ! empty( $child_record ) ) {
			                        DB::table( "categories" )->where( "id", $child2['id'] )->update( $data );
		                        }

		                        $c_o_2 ++;

		                        $menu_id_3 = $child2['id'];
		                        $c_o_3     = 1;
		                        if(isset($child2['children'])) {
			                        foreach ( $child2['children'] as $child3 ) {
				                        $data = array(
					                        //"is_active" => 1,
					                        "parent_id" => $menu_id_3,
					                        "order"     => $c_o_3
				                        );

				                        $child_record = DB::table( "categories" )->where( "id", $menu_id_3 )->first();
				                        if ( ! empty( $child_record ) ) {
					                        DB::table( "categories" )->where( "id", $child3['id'] )->update( $data );
				                        }

				                        $c_o_3 ++;
			                        }
		                        }

	                        }
                        }
                    }
                }
                $p_o++;
            }
        }
    }

    public function detail($id)
    {
        $item = Category::find($id);

        return view('admin.menu.detail', compact('item'))->render();
    }

    public function store(Request $request)
    {
        $data = $request->all();

        $category = Category::create($data);

        if (!$category->slug){
            DB::table('categories')->where('id', $category->id)
                ->update(['slug' => str_slug($category->name).'-'.$category->id]);
        }

        return response([
            'status' => 1,
            'message' => 'Tạo thành công',
        ]);
    }

    public function update(Request $request)
    {
        $data = $request->all();
        $id = $data['id'];

        if (empty(trim($data['parent_id']))) {
            $data['parent_id'] = null;
        }

        $menu = Category::find($id);

        $menu->update($data);

        $category = Category::find($id);

        if (!$category->slug){
            DB::table('categories')->where('id', $category->id)
                ->update(['slug' => str_slug($category->name).'-'.$category->id]);
        }

        if($request->ajax()) {
            return response([
                'status' => 1,
                'message' => 'Cập nhật thành công',

            ]);
        }
        return redirect()->back()->with('success', 'Cập nhật thành công');
    }

    public function destroy(Request $request)
    {
        $data = $request->all();
        $id = $data['id'];
        $menu = Category::find($id);
        $menu->delete();
        return response([
            'status' => 1,
            'message' => 'Xóa thành công',
        ]);
    }
}
