$this->getDefaultTemplateValue(), ]; } public function listItems() { return [ [ 'label' => __eva('WhatsApp Template'), 'slug' => 'whatsapp_template', 'description' => __eva('WhatsApp template sent to the caller after a missed call.'), ], ]; } public function fields() { return [ 'whatsapp_template' => [ [ 'attribute' => 'whatsapp_template', 'stacked' => true, 'name' => __eva('WhatsApp Template'), 'component' => 'group-whatsapp-template-field', 'helpText' => __eva('Select the WhatsApp template to send after a missed call. One template per language.'), 'value' => $this->valueWithLanguagesFor('whatsapp_template'), 'bookingFields' => self::getRestaurantTags(), 'isAdmin' => false, ], ], ]; } /** * Get value with languages for a specific field * * @param string $key * @return array */ public function valueWithLanguagesFor($key) { $languages = evavel_languages_allowed(); $value = $this->{$key}; if (!is_array($value)) { $value = []; } foreach ($languages as $lang => $label) { if (!isset($value[$lang])) { $value[$lang] = [ 'template_sid' => '', 'template_name' => '', 'field_mapping' => [], ]; } } return $value; } /** * Get configured template for a specific language * * @param string $language * @return array|null */ public function getTemplateConfig($language) { $config = $this->whatsapp_template; if (!is_array($config) || !isset($config[$language])) { return null; } $langConfig = $config[$language]; if (empty($langConfig['template_sid'])) { return null; } return [ 'template_sid' => $langConfig['template_sid'], 'template_name' => $langConfig['template_name'] ?? '', 'field_mapping' => $langConfig['field_mapping'] ?? [], ]; } /** * Get default template value structure for all languages * * @return array */ protected function getDefaultTemplateValue() { $languages = evavel_languages_allowed(); $value = []; foreach ($languages as $lang => $label) { $value[$lang] = [ 'template_sid' => '', 'template_name' => '', 'field_mapping' => [], ]; } return $value; } }