123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- <?php
- namespace Packages\Product\Http\Controllers;
- use Carbon\Carbon;
- use Illuminate\Support\Facades\Auth;
- use App\Http\Controllers\Controller;
- use Facade\Ignition\Support\Packagist\Package;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Support\Facades\Facade;
- use Illuminate\Support\Facades\File;
- use Illuminate\Support\Facades\Storage;
- use Illuminate\Support\Str;
- use Packages\Product\Models\Attribute;
- use Packages\Product\Models\Draft;
- use Packages\Product\Http\Requests\ProductRequest;
- use Packages\Product\Http\Requests\ProductRequestEdit;
- use Packages\Product\Models\Product;
- use Illuminate\Http\Request;
- use App\Models\Category;
- use App\Models\Upload;
- use Packages\Product\Models\Temp;
- use phpDocumentor\Reflection\Types\Compound;
- class ProductController extends Controller
- {
- public function __construct()
- {
- }
- // *******************************************show page product ************
- public function index()
- {
- $categories = Category::orderBy('id', 'DESC')->get();
- $draft = Draft::orderBy('id', 'DESC')->first();
- $products = Product::query()->orderBy('id', 'DESC');
- if (request()->has('productCategory') && request('productCategory') != '')
- $products = $products->whereHas('categories', function (Builder $query) {
- $query->whereRaw('id = ?', [request('productCategory')]);
- });
- if (request()->has('productStatus') && request('productStatus') != '')
- $products = $products->whereRaw('status = ?', [request('productStatus')]);
- if (request()->has('productName') && request('productName') != '')
- $products = $products->whereRaw('title = ?', [request('productName')]);
- if (request()->has('creatorId') && request('creatorId') != '')
- $products = $products->whereHas('user', function (Builder $query) {
- $query->whereRaw('name= ?', [request('creatorId')]);
- });
- $products = $products->paginate();
- return view('product::index', compact('products', 'categories', 'draft'));
- }
- //**************************************************** page create products *****************
- public function create(Request $request)
- {
- return view('product::product.create');
- }
- // *********************************************************save products ******************
- public function store(ProductRequest $request)
- {
- $data = [
- 'title' => $request->title,
- 'slug' => $request->slug,
- 'ReleaseStatus' => $request->ReleaseStatus,
- 'type' => $request->type,
- 'discription' => $request->discription,
- 'creator_id' => auth()->user()->id,
- ];
- $product = Product::create($data);
- $view = 'create';
- if ($product->type === 'ساده'){
- $view = 'saveProductStepTwo';
- }elseif ($product->type ==='متغیر'){
- $view = 'productStepVariable';
- }elseif ($product->type === 'باندل'){
- $view = 'productStepVariable';
- }
- $msg = 'ذخیره محصول با موفقیت انجام شد ';
- return redirect()->route($view, $product->id)->with('success', $msg);
- }
- public function productStepTwo($id)
- {
- $product = $this->productChecker($id);
- if ($product != false){
- $msg = 'ذخیره محصول با موفقیت انجام شد ';
- return view('product::product.simpleEditProduct', compact('product'))->with('success', $msg);
- }else{
- return abort(419);
- }
- }
- public function productStepVariable(Request $request, $id)
- {
- $attributes = Attribute::orderBy('id')->where('use_in_veriation', 1)->get();
- $attributables = \DB::table('attributables')->where('val_attribute', true)->get();
- // dd($attributables->val_attribute);
- $product = $this->productChecker($id);
- if ($product != false){
- $msg = 'ذخیره محصول با موفقیت انجام شد ';
- return view('product::product.variableProduct', compact('product', 'attributes', 'attributables'))->with('success', $msg);
- }else{
- return abort(419);
- }
- }
- public function productStepThree(Request $request)
- {
- $product = $this->productChecker($request->product_id);
- if ($product != false){
- $request->validate([
- 'title' => 'required',
- 'slug' => 'required',
- 'ReleaseStatus' => 'required',
- 'discription' => 'required',
- 'sku' => 'required',
- 'status' => 'required',
- 'price' => 'required',
- 'sale_price' => 'required',
- ]);
- /**
- * update product
- */
- $data = [
- 'title' => $request->title,
- 'slug' => $request->slug,
- 'ReleaseStatus' => $request->ReleaseStatus,
- 'discription' => $request->discription,
- 'creator_id' => auth()->user()->id,
- 'sku' => $request->sku,
- 'status' => $request->status,
- 'price' => $request->price,
- 'sale_price' => $request->sale_price,
- ];
- $product->update($data);
- $msg = 'ویرایش محصول با موفقیت انجام شد ';
- return redirect(route('products.index'))->with('success', $msg);
- }else{
- return abort(419);
- }
- }
- public function productChecker($id)
- {
- $product = Product::where('id', $id)->where('creator_id', Auth::user()->id)->first();
- if (!empty($product)){
- return $product;
- }else{
- return false;
- }
- }
- // ******************************************************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(ProductRequestEdit $request, Product $product)
- {
- $request->merge([
- 'price' => preg_replace('/[^0-9]+/', '', $request->price),
- 'sale_price' => preg_replace('/[^0-9]+/', '', $request->sale_price),
- ]);
- $data = [
- 'title' => $request->title,
- 'slug' => $request->slug,
- 'sku' => $request->sku,
- 'price' => $request->price,
- 'sale_price' => $request->sale_price,
- 'type' => $request->type,
- 'ReleaseStatus' => $request->ReleaseStatus,
- '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();
- }
- }
- //************************delete image in the product**********************
- public function destroyFile(Upload $upload)
- {
- $upload->delete();
- $msg = 'حذف عکس محصول با موفقیت انجام شد ';
- session()->flash('image_deleted', $msg);
- return redirect()->back();
- }
- // ****************************uploadGallery********************
- public function uploadValAttribute(Request $request)
- {
- $attributes=Attribute::orderBy('title')->get();
- $productID = $request->productID;
- // dd( [$request->val_attribute]);
- $product = Product::where('id', $productID)->first();
- $attributes = [];
- foreach ( $request->val_attribute as $attr_id => $values ){
- $attributes[ $attr_id ] = ['val_attribute' => $values];
- }
- // dd($attributes);
- $product->attributes()->sync($attributes);
- //dd($attributesd);
- }
- }
|