Spamworldpro Mini Shell
Spamworldpro


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/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/job-board.corals.io/Corals/modules/Ecommerce/Services/AttributeService.php
<?php

namespace Corals\Modules\Ecommerce\Services;

use Corals\Foundation\Services\BaseServiceClass;
use Corals\Modules\Ecommerce\Models\AttributeOption;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;

class AttributeService extends BaseServiceClass
{
    protected $excludedRequestParams = ['options'];

    public function postStoreUpdate($request, $additionalData = [])
    {
        $attribute = $this->model;

        $options = $request->get('options', []);

        $attribute_options = array_flip($attribute->options()->pluck('id')->toArray());

        foreach ($options as $option) {
            $option_id = $option['id'] ?? null;
            unset($attribute_options[$option_id]);

            if ($attribute->type == 'select' && $attribute->getProperty('display_type') == 'image') {
                $img = Arr::pull($option, 'option_display');
                $option['option_display'] = $option['option_value'];
            }

            $attributeOption = AttributeOption::query()
                ->updateOrCreate(['id' => $option_id, 'attribute_id' => $attribute->id], $option);


            if ($attribute->type == 'select' && $attribute->getProperty('display_type') == 'image' && isset($img)) {

                $attributeOption->media()->delete();

                $attributeOption
                    ->addMedia($img)
                    ->withCustomProperties(['root' => 'user_' . user()->hashed_id])
                    ->toMediaCollection($attributeOption->galleryMediaCollection);
            }

        }

        if (!empty($attribute_options)) {
            $attribute->options()->whereIn('id', array_keys($attribute_options))->forceDelete();
        }
    }


    /**
     * @param Request $request
     * @return array|string
     * @throws \Throwable
     */
    public function renderSelectOptions(Request $request)
    {
        return view('Ecommerce::attributes.partials.select_options')
            ->with([
                'index' => $request->get('index'),
                'name' => $request->get('name'),
                'displayType' => $request->get('display_type')
            ])->render();
    }
}

Spamworldpro Mini