<?php

namespace Packages\Product\Http\Controllers;

use App\Http\Controllers\Controller;
use Facade\Ignition\Support\Packagist\Package;
use Packages\Product\Models\Product;
use Illuminate\Http\Request;
use App\Models\Category;
use phpDocumentor\Reflection\Types\Compound;

class ProductController extends Controller
{
    public function __construct()
    {

    }

//  *******************************************show  page product ************
    public function index()
    {

        $products = Product::orderBy('id', 'DESC')->paginate(20);
        $categories = Category::orderBy('id', 'DESC')->get();
        return view('product::index', compact('products', 'categories'));

    }

//**************************************************** page create products *****************
    public function create()
    {
        $categories = Category::orderBy('id', 'DESC')->get();
        return view('product::product.create', compact( 'categories'));
    }

// *********************************************************save products ******************

    public function store(Request $request)
    {

        $validatedData = $request->validate([
            'title' => 'required|max:100',
            'price' => 'required',
            'status' => 'required',
            'discription' => 'required',
            'type' => 'required',


        ], [
            'title.required' => 'فیلد عنوان الزامی می باشد.',
            'price.required' => 'فیلد قیمت الزامی می باشد.',
            'status.required' => 'فیلد وضعیت الزامی می باشد.',
            'discription.required' => 'فیلد توضیحات الزامی می باشد.',
            'type.required' => 'فیلد نوع محصول الزامی می باشد.',

        ]);

        $request->merge([
            'price' => preg_replace('/[^0-9]+/', '', $request->price),
            'sale_price' => preg_replace('/[^0-9]+/', '', $request->sale_price),
        ]);
//        $data = array_merge($request->except('categories'), ['creator_id' => auth()->user()->id]);

        $data = [
          'title' => $request->title,
          'slug' => $request->slug,
          'sku' => $request->sku,
          'price' => $request->price,
          'sale_price' =>$request->sale_price ,
          'type' =>$request->type ,
          'status' =>$request->status ,
          'discription' =>$request->discription ,
          'creator_id' => auth()->user()->id
        ];
        $product = Product::create($data);
         $product->categories()->sync($request->categories);
        $msg = 'ذخیره محصول با موفقیت انجام شد ';
        return redirect(route('products.edit', $product->id))->with('success', $msg);
    }

    // ******************************************************edit page product*********************************************

    public function edit(Product $product)
    {
        $categories = Category::orderBy('id', 'DESC')->get();
        return view('product::product.edit', compact('product', 'categories'));
    }

// *******************************************update page product*****************************************

    public function update(Request $request, Product $product)
    {
        $validatedData = $request->validate([
            'title' => 'required|max:100',
            'price' => 'required',
            'status' => 'required',
            'discription' => 'required',
            'type' => 'required',


        ], [
            'title.required' => 'فیلد عنوان الزامی می باشد.',
            'price.required' => 'فیلد قیمت الزامی می باشد.',
            'status.required' => 'فیلد وضعیت الزامی می باشد.',
            'discription.required' => 'فیلد توضیحات الزامی می باشد.',
            'type.required' => 'فیلد نوع محصول الزامی می باشد.',

        ]);
        $request->merge([
            'price' => preg_replace('/[^0-9]+/', '', $request->price),
            'sale_price' => preg_replace('/[^0-9]+/', '', $request->sale_price),
        ]);

//        $data = array_merge($request->all(), ['creator_id' => auth()->user()->id]);
        $data = [
            'title' => $request->title,
            'slug' => $request->slug,
            'sku' => $request->sku,
            'price' => $request->price,
            'sale_price' =>$request->sale_price ,
            'type' =>$request->type ,
            'status' =>$request->status ,
            'discription' =>$request->discription ,
            'creator_id' => auth()->user()->id
        ];

        $product->update($data);
        $product->categories()->sync($request->categories);

        $msg = 'ویرایش محصول با موفقیت انجام شد ';

        return redirect(route('products.index'))->with('success', $msg);
    }

    //***************************** delete products*****************************************
    public function destroy(Product $product)
    {

        $product->delete();
        {
            return back();
        }
    }


}
