![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/job-board.corals.io/Corals/modules/Ecommerce/Services/ |
<?php namespace Corals\Modules\Ecommerce\Services; use Corals\Foundation\Services\BaseServiceClass; use Corals\Modules\Ecommerce\Models\Tag; use Corals\Modules\Ecommerce\Traits\DownloadableController; use Corals\Modules\Utility\Traits\Gallery\ServiceHasGalleryTrait; use Illuminate\Support\Arr; class ProductService extends BaseServiceClass { use DownloadableController, ServiceHasGalleryTrait; public $sku_attributes = [ 'regular_price', 'sale_price', 'code', 'inventory', 'inventory_value', 'allowed_quantity' ]; public $skipParameters = [ 'global_options', 'variation_options', 'create_gateway_product', 'tax_classes', 'categories', 'tags', 'posts', 'private_content_pages', 'downloads_enabled', 'downloads', 'cleared_downloads', 'external', 'gallery_new', 'gallery_deleted', 'gallery_favorite', ]; public function getRequestData($request) { $excludedRequestParams = array_merge($this->skipParameters, $this->sku_attributes); if (is_array($request)) { $data = Arr::except($request, $excludedRequestParams); } else { $data = $request->except($excludedRequestParams); } $data = $this->setShippingData($data); return $data; } /** * @param $data * @return mixed */ protected function setShippingData($data) { if (!isset($data['shipping']['enabled'])) { $data['shipping']['enabled'] = 0; } return $data; } public function postStore($request, &$additionalData) { $this->handleGalleryInputs($request, $this->model); } protected function postStoreUpdate($request, $additionalData) { $product = $this->model; if ($product->type == "simple") { $sku_data = $request->only(array_merge($this->sku_attributes, ['status'])); if ($product->sku->first()) { $product->sku->first()->update($sku_data); } else { $product->sku()->create($sku_data); } } $product->categories()->sync($request->get('categories', [])); $product->tax_classes()->sync($request->get('tax_classes', [])); $attributes = []; foreach ($request->get('global_options', []) as $option) { $attributes[$option] = [ 'sku_level' => false, ]; } if ($product->type == "variable") { foreach ($request->get('variation_options', []) as $option) { $attributes[$option] = [ 'sku_level' => true, ]; } } $product->attributes()->sync($attributes); $tags = $this->getTags($request); $product->tags()->sync($tags); $product->posts()->sync($request->get('posts', [])); $this->handleDownloads($request, $product); $product->indexRecord(); } /** * @param $request * @return array */ private function getTags($request) { $tags = []; $requestTags = $request->get('tags', []); foreach ($requestTags as $tag) { if (is_numeric($tag)) { array_push($tags, $tag); } else { try { $newTag = Tag::create([ 'name' => $tag, 'slug' => \Str::slug($tag) ]); array_push($tags, $newTag->id); } catch (\Exception $exception) { continue; } } } return $tags; } }