File: D:/HostingSpaces/Neopoints/momsecurity.be/app/Services/Kms/ServiceTranslationService.php
<?php
namespace App\Services\Kms;
use App\Services\Models\Service;
use App\Services\Models\ServiceTranslation;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;
use Komma\KMS\Core\AbstractTranslationModel;
use Komma\KMS\Core\HasSlugInterface;
use Komma\KMS\Core\TranslationService;
use Komma\KMS\Sites\HasSiteInterface;
use Komma\KMS\Sites\HasSitesInterface;
class ServiceTranslationService extends TranslationService
{
protected $modelClassName = ServiceTranslation::class;
/**
* Generates a unique slug for the model, and saves it at the model.
*
* @param Model $model
* @return Model
*/
protected function saveSlugForModel(Model $model): Model {
if(!is_a($model,HasSlugInterface::class)) return $model;
/** @var HasSlugInterface $model */
$suggestedSlug = $model->suggestSlug();
$service = Service::find($model->service_id);
$collection = $this->retrieveCollectionForCreatingSlug($service);
while($collection->where('slug', '=', $suggestedSlug)->count() !== 0) {
$suggestedSlug = create_unique_slug($collection, $suggestedSlug);
}
$model->slug = $suggestedSlug;
$model->save();
return $model;
}
/**
* @param Model $model
* @return Collection
*/
private function retrieveCollectionForCreatingSlug(Model $model)
{
$services = Service::where('service_type', $model->service_type)
->where('id', '!=', $model->id)
->with('translations')
->has('translations')
->get();
$serviceTranslations = collect([]);
foreach ($services as $service) {
foreach ($service->translations as $translation) $serviceTranslations->push($translation);
}
return $serviceTranslations;
}
}