File: /var/www/ipsremont-demo/app/Repository/Branch/BranchRepository.php
<?php
namespace App\Repository\Branch;
use App\Http\Requests\Branch\IndexRequest;
use App\Models\Branch;
use App\Repository\BaseRepository;
use App\Traits\GridTrait;
class BranchRepository extends BaseRepository
{
use GridTrait;
/**
* @return \Illuminate\Database\Eloquent\Builder
*/
public static function getQuery()
{
return Branch::query();
}
/**
* @param IndexRequest $request
*
* @return mixed
*/
public function search(IndexRequest $request)
{
$query = self::getAvailable();
$this->makeQueryOrdered(Branch::class, $query, $request);
if (isset($request->name) && !empty($request->name)) {
$query->where('name', 'like', '%' . $request->name . '%');
}
$perPage = $request->per_page ?? config('crud.defaultPerPage');
return $query->paginate((int) $perPage)->appends($request->all());
}
/**
* @param $id
*/
public static function delete($id)
{
self::getById($id)->delete();
}
public function getCentral()
{
$query = Branch::query()->where('central', 1);
return $query->first();
}
public static function getByCode($code)
{
return Branch::query()->where('external_id', $code)->first();
}
public function updateCentral($model)
{
$model->refresh();
if ($model->central) {
Branch::query()->where('id', '!=', $model->id)
->where('central', 1)
->update(['central' => 0]);
}
}
public static function fillStorage($external_id, $name)
{
$model = Branch::query()->where('external_id', $external_id)->withTrashed()->first();
if (!$model) {
$model = new Branch();
$model->external_id = $external_id;
$model->name = $name;
$model->display = 1;
$model->save();
} else {
$model->name = $name;
$model->deleted_at = null;
$model->update();
}
}
public static function getBranchIdsByRegion(int $regionId): array
{
return Branch::query()->where('region_id', $regionId)->pluck('id')->toArray();
}
}