<?php

namespace App\Http\Controllers\Kasir;

use App\Http\Controllers\Controller;
use App\Models\KategoriProduk;
use App\Models\KelompokKategori;
use App\Models\KelompokKategoriPivot;
use App\Models\Produk;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class Menu extends Controller
{
    public function index()
    {
        $kategori_produks = KategoriProduk::get();

        return view('pages.Menu.index', compact('kategori_produks'));
    }

    public function kelompokKategori($id) {
        $kelompok_kategoris = KelompokKategori::where('kategori_produk_id', $id)->get();

        if (empty($kelompok_kategoris[0])) {
            return response()->json(['message' => 'Data Kosong']);
        } else {
            return $kelompok_kategoris;
        }
        
    }

    public function getDataMenu()
    {
        // $data = Produk::with(['kategori_produk'])->get();
        $data = KelompokKategoriPivot::with(['kelompokKategori', 'produk'])->get();
        $nomor = 1;

        return $datatables = datatables()
            ->of($data)
            ->addColumn('nomor', function ($data) use (&$nomor) {
                return $nomor++;
            })
            ->addColumn('kode_produk', function ($data) {
                return $data->produk->kode_produk;
            })
            ->addColumn('nama_produk', function ($data) {
                return $data->produk->nama_produk;
            })
            ->addColumn('harga_produk', function ($data) {
                return $data->produk->harga_produk;
            })
            ->addColumn('nama_kelompok_kategori', function ($data) {
                return $data->kelompokKategori->nama_kelompok_kategori;
            })
            ->addColumn('kategori_produk', function ($data) {
                return $data->produk->kategori_produk->nama_kategori_produk;
            })
            ->addColumn('ubah', function ($data) {
                return '<div class="btn-group">
                            <a href="javascript:void(0)" onclick="editMenu(\'' . $data->id . '\')">
                                <span class="btn btn-md btn-warning"><i class="fas fa-edit"></i> Edit</span>
                            </a>
                        </div>';
            })
            ->rawColumns(['nomor', 'ubah'])
            ->make(true);
    }

    // Tambah Menu
    public function store(Request $request) {
        // validation
        $rules = array(
            'kategori_produk'  => 'required',
            'kelompok_produk'  => 'required',
            'kode_produk'  => 'required',
            'nama_produk'  => 'required',
            'harga_produk'  => 'required',
            'tersedia'  => 'required',
            'deskripsi_produk'  => 'required',
        );
        $validator = Validator::make($request->all(), $rules);

        // check validation
        if ($validator->fails()) {
            // If validation fails, return with errors
            return response()->json(['errors' => $validator->errors()], 422);
        } else {
            // create product
            $produk = Produk::create([
                'kategori_produk_id' => $request->kategori_produk,
                'kode_produk' => $request->kode_produk,
                'nama_produk' => $request->nama_produk,
                'harga_produk' => $request->harga_produk,
                'tersedia' => $request->tersedia,
                'deskripsi_produk' => $request->deskripsi_produk,
                'created_at' => Carbon::now()
            ]);

            $pivot_produk = KelompokKategoriPivot::create([
                'kelompok_kategori_id' => $request->kelompok_produk,
                'produk_id' => $produk->id,
                'created_at' => Carbon::now()
            ]);

            // Return a success response
            return response()->json(['message' => 'Data created successfully']);
        }
    } 
    
    public function show($id) {
        $data = KelompokKategoriPivot::with(['kelompokKategori', 'produk'])->findOrFail($id);
        return response()->json($data);
    }

    // Ubah Menu
    public function update(Request $request, $id) {
        // validation
        $rules = array(
            'kategori_produk'  => 'required',
            'kelompok_produk'  => 'required',
            'kode_produk'  => 'required',
            'nama_produk'  => 'required',
            'harga_produk'  => 'required',
            'tersedia'  => 'required',
            'deskripsi_produk'  => 'required',
        );
        $validator = Validator::make($request->all(), $rules);

        // check validation
        if ($validator->fails()) {
            // If validation fails, return with errors
            return response()->json(['errors' => $validator->errors()], 422);
        } else {
            $pivot = KelompokKategoriPivot::findOrFail($id);
            $produk = Produk::find($pivot->produk_id);
            
            // update pivot produk
            $pivot->update([
                'kelompok_ketegori_id' => $request->kelompok_produk,
            ]);

            // update produk
            $produk->update([
                'kategori_produk_id' => $request->kategori_produk,
                'kode_produk' => $request->kode_produk,
                'nama_produk' => $request->nama_produk,
                'harga_produk' => $request->harga_produk,
                'tersedia' => $request->tersedia,
                'deskripsi_produk' => $request->deskripsi_produk,
            ]);

            // Return a success response
            return response()->json(['message' => 'Data created successfully']);
        }
    } 
}