[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: ProductController.php
<?php namespace App\Http\Controllers\Admin; use Exception; use App\Models\Product; use Illuminate\Http\Request; use App\Exports\ProductExport; use App\Imports\ProductImport; use App\Services\ProductService; use Maatwebsite\Excel\Facades\Excel; use App\Http\Requests\ProductRequest; use App\Http\Requests\PaginateRequest; use App\Http\Requests\ImportFileRequest; use Illuminate\Support\Facades\Response; use App\Http\Requests\ChangeImageRequest; use App\Http\Requests\ProductOfferRequest; use App\Http\Resources\ProductAdminResource; use App\Http\Requests\ShippingAndReturnRequest; use App\Http\Resources\ProductDetailsAdminResource; use App\Http\Resources\SimpleProductDetailsResource; use App\Http\Resources\simpleProductWithVariationCountResource; class ProductController extends AdminController { public ProductService $productService; public function __construct(ProductService $productService) { parent::__construct(); $this->productService = $productService; $this->middleware(['permission:products'])->only('export', 'generateSku', 'downloadAttachment'); $this->middleware(['permission:products_create'])->only('store', 'uploadImage', 'import'); $this->middleware(['permission:products_edit'])->only('update'); $this->middleware(['permission:products_delete'])->only('destroy', 'deleteImage'); $this->middleware(['permission:products_show'])->only('show', 'shippingAndReturn', 'downloadBarcode'); } public function index(PaginateRequest $request): \Illuminate\Http\Response|\Illuminate\Http\Resources\Json\AnonymousResourceCollection|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return ProductAdminResource::collection($this->productService->list($request)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function show(Product $product): \Illuminate\Foundation\Application|\Illuminate\Http\Response|ProductDetailsAdminResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return new ProductDetailsAdminResource($this->productService->show($product)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function store(ProductRequest $request): \Illuminate\Http\Response|ProductAdminResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return new ProductAdminResource($this->productService->store($request)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function update(ProductRequest $request, Product $product): \Illuminate\Http\Response|ProductAdminResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return new ProductAdminResource($this->productService->update($request, $product)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function destroy(Product $product): \Illuminate\Http\Response|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { $this->productService->destroy($product); return response('', 202); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function uploadImage(ChangeImageRequest $request, Product $product): \Illuminate\Foundation\Application|\Illuminate\Http\Response|ProductDetailsAdminResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return new ProductDetailsAdminResource($this->productService->uploadImage($request, $product)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function deleteImage(Product $product, $index): \Illuminate\Foundation\Application|\Illuminate\Http\Response|ProductDetailsAdminResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return new ProductDetailsAdminResource($this->productService->deleteImage($product, $index)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function export(PaginateRequest $request): \Illuminate\Http\Response|\Symfony\Component\HttpFoundation\BinaryFileResponse|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return Excel::download(new ProductExport($this->productService, $request), 'Product.xlsx'); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function generateSku(): \Illuminate\Foundation\Application|\Illuminate\Http\Response|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return response(['data' => ['product_sku' => $this->productService->generateSku()]], 200); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function shippingAndReturn(ShippingAndReturnRequest $request, Product $product): \Illuminate\Foundation\Application|\Illuminate\Http\Response|ProductAdminResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return new ProductAdminResource($this->productService->shippingAndReturn($request, $product)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function productOffer(ProductOfferRequest $request, Product $product): \Illuminate\Foundation\Application|\Illuminate\Http\Response|ProductAdminResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return new ProductAdminResource($this->productService->productOffer($request, $product)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function purchasableProducts(): \Illuminate\Foundation\Application|\Illuminate\Http\Response|\Illuminate\Http\Resources\Json\AnonymousResourceCollection|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return simpleProductWithVariationCountResource::collection($this->productService->purchasableProducts()); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function simpleProducts(): \Illuminate\Foundation\Application|\Illuminate\Http\Response|\Illuminate\Http\Resources\Json\AnonymousResourceCollection|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return simpleProductWithVariationCountResource::collection($this->productService->simpleProducts()); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function posProduct(Product $product, Request $request): SimpleProductDetailsResource|\Illuminate\Foundation\Application|\Illuminate\Http\Response|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory { try { return new SimpleProductDetailsResource($this->productService->showWithRelation($product, $request)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function downloadAttachment() { try { return Response::download(public_path('/file/ProductImportSample.xlsx')); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function import(ImportFileRequest $request) { try { Excel::import(new ProductImport($request->file('file')), $request->file('file')); return response('', 202); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function downloadBarcode(Product $product) { try { return $this->productService->downloadBarcode($product); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function barcodeProduct($barcode) { try { return response(['data' => $this->productService->barcodeProduct($barcode)]); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } public function clearOffer(Product $product) { try { return new ProductAdminResource($this->productService->clearOffer($product)); } catch (Exception $exception) { return response(['status' => false, 'message' => $exception->getMessage()], 422); } } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium320.web-hosting.com
Server IP: 66.29.153.54
PHP Version: 8.2.29
Server Software: LiteSpeed
System: Linux premium320.web-hosting.com 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 76.86 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
No
git:
Yes
User Info
Username: aoneqssk
User ID (UID): 1285
Group ID (GID): 1290
Script Owner UID: 1285
Current Dir Owner: 1285