PATH:
home
/
lab2454c
/
vaultchip.com
/
platform
/
plugins
/
ecommerce
/
src
/
Http
/
Controllers
<?php namespace Botble\Ecommerce\Http\Controllers; use Assets; use Botble\Base\Forms\FormBuilder; use Botble\Base\Http\Controllers\BaseController; use Botble\Base\Http\Responses\BaseHttpResponse; use Botble\Ecommerce\Forms\ProductForm; use Botble\Ecommerce\Http\Requests\ProductRequest; use Botble\Ecommerce\Repositories\Interfaces\GroupedProductInterface; use Botble\Ecommerce\Repositories\Interfaces\ProductVariationInterface; use Botble\Ecommerce\Repositories\Interfaces\ProductVariationItemInterface; use Botble\Ecommerce\Services\Products\StoreAttributesOfProductService; use Botble\Ecommerce\Services\Products\StoreProductService; use Botble\Ecommerce\Services\StoreProductTagService; use Botble\Ecommerce\Tables\ProductTable; use Botble\Ecommerce\Traits\ProductActionsTrait; use Exception; use Illuminate\Contracts\View\Factory; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Collection; use Illuminate\View\View; use Throwable; class ProductController extends BaseController { use ProductActionsTrait; /** * @param ProductTable $dataTable * @return Factory|View * @throws Throwable */ public function index(ProductTable $dataTable) { page_title()->setTitle(trans('plugins/ecommerce::products.name')); Assets::addScripts(['bootstrap-editable']) ->addStyles(['bootstrap-editable']); return $dataTable->renderTable(); } /** * @param FormBuilder $formBuilder * @return string */ public function create(FormBuilder $formBuilder) { page_title()->setTitle(trans('plugins/ecommerce::products.create')); Assets::addStyles(['datetimepicker']) ->addScripts([ 'moment', 'datetimepicker', 'jquery-ui', 'input-mask', 'blockui', ]) ->addStylesDirectly(['vendor/core/plugins/ecommerce/css/ecommerce.css']) ->addScriptsDirectly([ 'vendor/core/plugins/ecommerce/libraries/bootstrap-confirmation/bootstrap-confirmation.min.js', 'vendor/core/plugins/ecommerce/js/edit-product.js', ]); return $formBuilder->create(ProductForm::class)->renderForm(); } /** * @param int $id * @param FormBuilder $formBuilder * @return string */ public function edit($id, FormBuilder $formBuilder) { $product = $this->productRepository->findOrFail($id); if ($product->is_variation) { abort(404); } page_title()->setTitle(trans('plugins/ecommerce::products.edit', ['name' => $product->name])); Assets::addStyles(['datetimepicker']) ->addScripts([ 'moment', 'datetimepicker', 'jquery-ui', 'input-mask', 'blockui', ]) ->addStylesDirectly(['vendor/core/plugins/ecommerce/css/ecommerce.css']) ->addScriptsDirectly([ 'vendor/core/plugins/ecommerce/libraries/bootstrap-confirmation/bootstrap-confirmation.min.js', 'vendor/core/plugins/ecommerce/js/edit-product.js', ]); return $formBuilder ->create(ProductForm::class, ['model' => $product]) ->renderForm(); } /** * @param ProductRequest $request * @param StoreProductService $service * @param BaseHttpResponse $response * @param ProductVariationInterface $variationRepository * @param ProductVariationItemInterface $productVariationItemRepository * @param GroupedProductInterface $groupedProductRepository * @param StoreAttributesOfProductService $storeAttributesOfProductService * @param StoreProductTagService $storeProductTagService * @return BaseHttpResponse * @throws Exception */ public function store( ProductRequest $request, StoreProductService $service, BaseHttpResponse $response, ProductVariationInterface $variationRepository, ProductVariationItemInterface $productVariationItemRepository, GroupedProductInterface $groupedProductRepository, StoreAttributesOfProductService $storeAttributesOfProductService, StoreProductTagService $storeProductTagService ) { $product = $this->productRepository->getModel(); $product = $service->execute($request, $product); $storeProductTagService->execute($request, $product); $addedAttributes = $request->input('added_attributes', []); if ($request->input('is_added_attributes') == 1 && $addedAttributes) { $storeAttributesOfProductService->execute($product, array_keys($addedAttributes)); $variation = $variationRepository->create([ 'configurable_product_id' => $product->id, ]); foreach ($addedAttributes as $attribute) { $productVariationItemRepository->createOrUpdate([ 'attribute_id' => $attribute, 'variation_id' => $variation->id, ]); } $variation = $variation->toArray(); $variation['variation_default_id'] = $variation['id']; $variation['sku'] = $product->sku; $variation['auto_generate_sku'] = true; $variation['images'] = $request->input('images', []); $this->postSaveAllVersions([$variation['id'] => $variation], $variationRepository, $product->id, $response); } if ($request->has('grouped_products')) { $groupedProductRepository->createGroupedProducts($product->id, array_map(function ($item) { return [ 'id' => $item, 'qty' => 1, ]; }, array_filter(explode(',', $request->input('grouped_products', ''))))); } return $response ->setPreviousUrl(route('products.index')) ->setNextUrl(route('products.edit', $product->id)) ->setMessage(trans('core/base::notices.create_success_message')); } /** * @param int $id * @param ProductRequest $request * @param StoreProductService $service * @param GroupedProductInterface $groupedProductRepository * @param BaseHttpResponse $response * @param ProductVariationInterface $variationRepository * @param ProductVariationItemInterface $productVariationItemRepository * @param StoreProductTagService $storeProductTagService * @return BaseHttpResponse|JsonResponse|RedirectResponse */ public function update( $id, ProductRequest $request, StoreProductService $service, GroupedProductInterface $groupedProductRepository, BaseHttpResponse $response, ProductVariationInterface $variationRepository, ProductVariationItemInterface $productVariationItemRepository, StoreProductTagService $storeProductTagService ) { $product = $this->productRepository->findOrFail($id); $product = $service->execute($request, $product); $storeProductTagService->execute($request, $product); $variationRepository ->getModel() ->where('configurable_product_id', $product->id) ->update(['is_default' => 0]); $defaultVariation = $variationRepository->findById($request->input('variation_default_id')); if ($defaultVariation) { $defaultVariation->is_default = true; $defaultVariation->save(); } $addedAttributes = $request->input('added_attributes', []); if ($request->input('is_added_attributes') == 1 && $addedAttributes) { $result = $variationRepository->getVariationByAttributesOrCreate($id, $addedAttributes); /** * @var Collection $variation */ $variation = $result['variation']; foreach ($addedAttributes as $attribute) { $productVariationItemRepository->createOrUpdate([ 'attribute_id' => $attribute, 'variation_id' => $variation->id, ]); } $variation = $variation->toArray(); $variation['variation_default_id'] = $variation['id']; $product->productAttributeSets()->sync(array_keys($addedAttributes)); $variation['sku'] = $product->sku; $variation['auto_generate_sku'] = true; $this->postSaveAllVersions([$variation['id'] => $variation], $variationRepository, $product->id, $response); } elseif ($product->variations()->count() === 0) { $product->productAttributeSets()->detach(); $product->productAttributes()->detach(); } if ($request->has('grouped_products')) { $groupedProductRepository->createGroupedProducts($product->id, array_map(function ($item) { return [ 'id' => $item, 'qty' => 1, ]; }, array_filter(explode(',', $request->input('grouped_products', ''))))); } $relatedProductIds = $product->variations()->pluck('product_id')->all(); $this->productRepository->update([['id', 'IN', $relatedProductIds]], ['status' => $product->status]); return $response ->setPreviousUrl(route('products.index')) ->setMessage(trans('core/base::notices.update_success_message')); } }
[+]
Fronts
[-] ProductLabelController.php
[edit]
[+]
..
[-] EcommerceController.php
[edit]
[-] BulkImportController.php
[edit]
[-] TaxController.php
[edit]
[-] DiscountController.php
[edit]
[-] ReportController.php
[edit]
[-] ShipmentController.php
[edit]
[-] ProductAttributeSetsController.php
[edit]
[-] ProductTagController.php
[edit]
[-] FlashSaleController.php
[edit]
[-] OrderController.php
[edit]
[-] BrandController.php
[edit]
[-] ReviewController.php
[edit]
[-] ShippingMethodController.php
[edit]
[-] ProductController.php
[edit]
[-] ProductCategoryController.php
[edit]
[+]
Customers
[-] ProductCollectionController.php
[edit]