File "ProductPriceController.php"

Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Controllers/Admin/ProductPriceController.php
File size: 4.25 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\MassDestroyProductPriceRequest;
use App\Http\Requests\Admin\StoreProductPriceRequest;
use App\Http\Requests\Admin\UpdateProductPriceRequest;
use App\Models\Product;
use App\Models\ProductPrice;
use Gate;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Yajra\DataTables\Facades\DataTables;

class ProductPriceController extends Controller
{
    public function index(Request $request)
    {
        abort_if(Gate::denies('product_price_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        if ($request->ajax()) {
            $query = ProductPrice::with(['product'])->select(sprintf('%s.*', (new ProductPrice())->table));
            $table = Datatables::of($query);

            $table->addColumn('placeholder', '&nbsp;');
            $table->addColumn('actions', '&nbsp;');

            $table->editColumn('actions', function ($row) {
                $viewGate = 'product_price_show';
                $editGate = 'product_price_edit';
                $deleteGate = 'product_price_delete';
                $crudRoutePart = 'product-prices';

                return view('partials.datatablesActions', compact(
                'viewGate',
                'editGate',
                'deleteGate',
                'crudRoutePart',
                'row'
            ));
            });

            $table->editColumn('id', function ($row) {
                return $row->id ? $row->id : '';
            });
            $table->addColumn('product_name', function ($row) {
                return $row->product ? $row->product->name : '';
            });

            $table->editColumn('product.name', function ($row) {
                return $row->product ? (is_string($row->product) ? $row->product : $row->product->name) : '';
            });
            $table->editColumn('qty_from', function ($row) {
                return $row->qty_from ? $row->qty_from : '';
            });
            $table->editColumn('qty_to', function ($row) {
                return $row->qty_to ? $row->qty_to : '';
            });
            $table->editColumn('price', function ($row) {
                return $row->price ? $row->price : '';
            });

            $table->rawColumns(['actions', 'placeholder', 'product']);

            return $table->make(true);
        }

        $products = Product::get();

        return view('admin.productPrices.index', compact('products'));
    }

    public function create()
    {
        abort_if(Gate::denies('product_price_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        $products = Product::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');

        return view('admin.productPrices.create', compact('products'));
    }

    public function store(StoreProductPriceRequest $request)
    {
        $productPrice = ProductPrice::create($request->all());

        return redirect()->route('admin.product-prices.index');
    }

    public function edit(ProductPrice $productPrice)
    {
        abort_if(Gate::denies('product_price_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        $products = Product::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), '');

        $productPrice->load('product');

        return view('admin.productPrices.edit', compact('productPrice', 'products'));
    }

    public function update(UpdateProductPriceRequest $request, ProductPrice $productPrice)
    {
        $productPrice->update($request->all());

        return redirect()->route('admin.product-prices.index');
    }

    public function show(ProductPrice $productPrice)
    {
        abort_if(Gate::denies('product_price_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        $productPrice->load('product');

        return view('admin.productPrices.show', compact('productPrice'));
    }

    public function destroy(ProductPrice $productPrice)
    {
        abort_if(Gate::denies('product_price_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        $productPrice->delete();

        return back();
    }

    public function massDestroy(MassDestroyProductPriceRequest $request)
    {
        ProductPrice::whereIn('id', request('ids'))->delete();

        return response(null, Response::HTTP_NO_CONTENT);
    }
}