HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/ipsremont-demo/app/Repository/Category/CategoryRepository.php
<?php


namespace App\Repository\Category;


use App\Http\Requests\Category\CreateRequest;
use App\Http\Requests\Category\IndexRequest;
use App\Http\Requests\Category\UpdateRequest;
use App\Models\Category;
use App\Repository\BaseRepository;
use App\Traits\GridTrait;
use Illuminate\Database\Eloquent\Builder;

class CategoryRepository extends BaseRepository
{
    use GridTrait;

    /**
     * @return Builder
     */
    public static function getQuery() {
        return Category::query();
    }

    /**
     * @param IndexRequest $request
     * @return mixed
     */
    public function search(IndexRequest $request)
    {
        $query = self::getAvailable();

        $this->makeQueryOrdered(Category::class, $query, $request);

        if (isset($request->name) && !empty($request->name)) {
            $query->where('name', 'like', '%' . $request->name . '%');
        }

        if (isset($request->code) && !empty($request->code)) {
            $query->where('code', 'like', '%' . $request->code . '%');
        }

        $perPage = $request->per_page ?? config('crud.defaultPerPage');

        return $query->paginate((int)$perPage)->appends($request->all());
    }

    public function search_specifications(IndexRequest $request)
    {
        $query = self::getAvailable();

        $query->groupBy('name');

        $this->makeQueryOrdered(Category::class, $query, $request);

        $perPage = 1000;

        return $query->paginate((int)$perPage)->appends($request->all());
    }

    /**
     * @param CreateRequest $request
     */
    public function save(CreateRequest $request)
    {
        $model = new Category();

        $request->validate($request->rules());

        $fields = $request->all();

        $model->fill($fields)->save();
    }

    public function saveData($data)
    {
        $fc = mb_strtoupper(mb_substr($data[1], 0, 1));
        $name = $fc.mb_substr($data[1], 1);

        $category = new Category();
        $category->code = $data[0];
        $category->name = $name;
        $category->save();
    }

    /**
     * @param UpdateRequest $request
     */
    public function update(UpdateRequest $request)
    {
        $request->validate($request->rules());

        $fields = $request->all();

        $model =  self::getById($request->id);

        $model->fill($fields)->update();
    }

    /**
     * @param $id
     */
    public function delete($id)
    {
        self::getById($id)->delete();
    }

    /**
     * @param $id
     * @return mixed
     */
    public static function getById($id)
    {
        return static::getAvailable()->findOrFail($id);
    }

    public static function getAll()
    {
        return Category::all();
    }

    public static function getByCode($code)
    {
        return static::getAvailable()->where('code', $code)->first();
    }
}