49 lines
1.1 KiB
PHP
49 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Koneko\VuexyContacts\Services;
|
|
|
|
use Koneko\VuexyAdmin\Models\Setting;
|
|
|
|
class ContactableItemService
|
|
{
|
|
protected $settingsKey = 'contactable_item_types';
|
|
|
|
/**
|
|
* Obtiene la lista de tipos de medios de contacto desde settings.
|
|
*
|
|
* @return array
|
|
*/
|
|
public function getContactableTypes(): array
|
|
{
|
|
$setting = Setting::where('key', $this->settingsKey)->first();
|
|
|
|
return $setting ? json_decode($setting->value, true) : [];
|
|
}
|
|
|
|
/**
|
|
* Guarda una lista de tipos de medios de contacto.
|
|
*
|
|
* @param array $types
|
|
* @return bool
|
|
*/
|
|
public function saveContactableTypes(array $types): bool
|
|
{
|
|
return Setting::updateOrCreate(
|
|
['key' => $this->settingsKey],
|
|
['value' => json_encode($types)]
|
|
) ? true : false;
|
|
}
|
|
|
|
/**
|
|
* Obtiene un tipo de contacto específico por ID.
|
|
*
|
|
* @param int $id
|
|
* @return array|null
|
|
*/
|
|
public function getTypeById(int $id): ?array
|
|
{
|
|
$types = $this->getContactableTypes();
|
|
return collect($types)->firstWhere('id', $id);
|
|
}
|
|
}
|