File: D:/HostingSpaces/Anvil/anvil-industries.com/app/KommaApp/References/Kms/ReferenceService.php
<?php
namespace App\KommaApp\References\Kms;
use App\KommaApp\Kms\Core\Attributes\Attribute;
use App\KommaApp\Kms\Core\Attributes\Models\SelectOption;
use App\KommaApp\Kms\Core\NestedSets\Nodes\EloquentNode;
use App\KommaApp\Kms\Core\Sections\SectionService;
use App\KommaApp\Kms\Core\Sections\SectionTabItem;
use App\KommaApp\Languages\Models\Language;
use App\KommaApp\References\Models\Reference;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
class ReferenceService extends SectionService
{
protected $sortable = false;
function __construct()
{
$this->forModelName = Reference::class;
parent::__construct();
}
public function getReferenceTypesForSelect()
{
$typeSelector = [
(new SelectOption())
->setContent(trans('kms/references.types.' . Reference::REFERENCE_TYPE_CUSTOMER))
->setHtmlContent(trans('kms/references.types.' . Reference::REFERENCE_TYPE_CUSTOMER))
->setValue(Reference::REFERENCE_TYPE_CUSTOMER),
(new SelectOption())
->setContent(trans('kms/references.types.' . Reference::REFERENCE_TYPE_EMPLOYEE))
->setHtmlContent(trans('kms/references.types.' . Reference::REFERENCE_TYPE_EMPLOYEE))
->setValue(Reference::REFERENCE_TYPE_EMPLOYEE)
];
return $typeSelector;
}
public function getReferencesBySite($siteId)
{
$entities = [];
$references = Reference::where('site_id', $siteId)
->get();
foreach ($references as $reference) {
$entities[] = (new SelectOption())
->setValue($reference->id)
->setContent($reference->name)
->setHtmlContent($reference->name);
}
return $entities;
}
public function getReferenceableModels($site, $referenceable_type = 'pages')
{
switch ($referenceable_type) {
case 'specialisms':
$models = $site->specialisms()->where('lft', '!=', 1)->get();
break;
case 'segments':
$models = $site->segments()->where('lft', '!=', 1)->get();
break;
case 'pages':
default:
$models = $site->pages()->where('lft', '!=', 1)->get();
break;
}
$selectOptions = [];
foreach ($models as $model) {
$selectOptions[] = (new SelectOption())
->setValue($model->id)
->setContent($model->translation->name)
->setHtmlContent($model->translation->name);
}
return $selectOptions;
}
}