File: /var/www/ipsremont-demo/app/Repository/Errors/ErrorsRepository.php
<?php
namespace App\Repository\Errors;
use App\Http\Requests\Errors\IndexRequest;
use App\Models\ErrorCodes;
use App\Repository\BaseRepository;
use App\Traits\GridTrait;
class ErrorsRepository extends BaseRepository
{
use GridTrait;
public static function getQuery()
{
return ErrorCodes::query();
}
/**
* @param IndexRequest $request
*
* @return mixed
*/
public function search(IndexRequest $request)
{
$query = self::getAvailable();
$this->makeQueryOrdered(ErrorCodes::class, $query, $request);
$perPage = $request->per_page ?? config('crud.defaultPerPage');
return $query->paginate((int) $perPage)->appends($request->all());
}
public static function fillStorage($external_group_id, $external_id, $name)
{
$model = ErrorCodes::where('external_group_id', $external_group_id)->where('external_id', $external_id)->withTrashed()->first();
if (!$model) {
$model = new ErrorCodes();
$model->external_group_id = $external_group_id;
$model->external_id = $external_id;
$model->name = $name;
$model->save();
} else {
$model->name = $name;
$model->deleted_at = null;
$model->update();
}
}
public static function getCategories()
{
return ErrorCodes::where('external_id', 0)->get();
}
public static function getCodes($id)
{
$group_code = self::getById($id);
return ErrorCodes::query()->where('external_group_id', $group_code->external_group_id)->where('external_id', '!=', 0);
}
public static function getByGroup($id)
{
return static::getAvailable()->where('external_group_id', $id)->where('external_id', 0)->withTrashed()->first();
}
/**
* @param $id
*/
public static function delete($id)
{
$model = self::getById($id);
if (!$model->external_id) {
ErrorCodes::where('external_group_id', $model->external_group_id)->where('external_id', '<>', 0)->delete();
}
$model->delete();
}
}