File: /var/www/limestate-admin/app/Models/ExternalServiceRelation.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
/**
* @property int $id
* @property string $service
* @property string $model
* @property int $model_id
* @property string $external_id
* @property string $created_at
* @property string $updated_at
*/
class ExternalServiceRelation extends Model
{
const SERVICE_YANDEX = 'yandex';
const SERVICE_CIAN = 'cian';
const SERVICE_AVITO = 'avito';
const MODEL_COMPLEX = 'complex';
const MODEL_BUILDING = 'building';
protected $fillable = [
'service',
'model',
'model_id',
'external_id',
];
public static function createRelation(string $model, int $modelId, string $externalId, string $service): self
{
$relation = new self();
$relation->service = $service;
$relation->model = $model;
$relation->model_id = $modelId;
$relation->external_id = $externalId;
$relation->save();
return $relation;
}
public static function createYandexRelation(string $model, int $modelId, string $externalId): self
{
return self::createRelation($model, $modelId, $externalId, self::SERVICE_YANDEX);
}
public static function getYandexRelations(array $models = []): Collection
{
$query = self::query()->where('service', self::SERVICE_YANDEX);
if (!empty($models)) {
$query->whereIn('model', $models);
}
return $query->get();
}
public static function createAvitoRelation(string $model, int $modelId, string $externalId): self
{
return self::createRelation($model, $modelId, $externalId, self::SERVICE_AVITO);
}
}