first(); if ($setting) { return $setting->id; } // Create if does not exist yet $setting = WhatsappTemplate::create([ 'restaurant_id' => $tenantId, 'meta_value' => [ 'templates' => [], 'last_sync' => null, ] ]); return $setting->id; } /** * Get the templates for a tenant * * @param AppSettingsRequest $request * @param int $tenantId * @return array */ public static function getItems(AppSettingsRequest $request, $tenantId) { $settingId = WhatsappTemplate::getId($tenantId); $setting = WhatsappTemplate::find($settingId); //ray('WhatsappTemplates getItems:', $setting->templates); return [ 'templates' => $setting->templates ?? [], 'last_sync' => $setting->last_sync ?? null, ]; } /** * Save templates to the setting * * @param int $tenantId * @param array $templates * @return bool */ public static function saveTemplates($tenantId, $templates) { $settingId = WhatsappTemplate::getId($tenantId); $setting = WhatsappTemplate::find($settingId); if (!$setting) { return false; } // Using the Setting __set magic method to update meta_value $setting->templates = $templates; $setting->last_sync = current_time('mysql'); $setting->save(); return true; } /** * Update a single template detail (when fetching body) * * @param int $tenantId * @param string $sid * @param array $templateData * @return bool */ public static function updateTemplate($tenantId, $sid, $templateData) { $settingId = WhatsappTemplate::getId($tenantId); $setting = WhatsappTemplate::find($settingId); if (!$setting) { return false; } $templates = $setting->templates ?? []; //ray($templates); // Find and update the template $found = false; foreach ($templates as $key => $template) { if ($template['sid'] === $sid) { $templates[$key] = array_merge($template, $templateData); $found = true; break; } } if ($found) { $setting->templates = $templates; $setting->save(); } return $found; } /** * Get a single template by SID * * @param int $tenantId * @param string $sid * @return array|null */ public static function getTemplateBySid($tenantId, $sid) { $settingId = WhatsappTemplate::getId($tenantId); $setting = WhatsappTemplate::find($settingId); if (!$setting) { return null; } $templates = $setting->templates ?? []; foreach ($templates as $template) { if ($template['sid'] === $sid) { return $template; } } return null; } }