tenantId(); try { $manager = new WhatsappManager($tenantId); $provider = $manager->getProvider(); if (!$provider || !method_exists($provider, 'getAvailableDefaultLanguages')) { wp_send_json_error([ 'error' => __eva('Default templates are not supported by this provider.'), ]); return; } $languages = $provider->getAvailableDefaultLanguages(); wp_send_json_success([ 'languages' => array_keys($languages), ]); } catch (\Exception $e) { wp_send_json_error([ 'error' => $e->getMessage(), ]); } } /** * Get the list of default templates for a language. * * @param Request $request * @return void */ public function list(Request $request) { $tenantId = $request->tenantId(); $language = $request->language ?? 'en'; try { $manager = new WhatsappManager($tenantId); $provider = $manager->getProvider(); if (!$provider || !method_exists($provider, 'getDefaultTemplates')) { wp_send_json_error([ 'error' => __eva('Default templates are not supported by this provider.'), ]); return; } $templates = $provider->getDefaultTemplates($language); wp_send_json_success([ 'templates' => array_values($templates), 'language' => $language, 'count' => count($templates), ]); } catch (\Exception $e) { wp_send_json_error([ 'error' => $e->getMessage(), ]); } } /** * Upload a single template to Twilio and request WhatsApp approval. * * @param Request $request * @return void */ public function upload(Request $request) { $tenantId = $request->tenantId(); $template = $request->template; $language = $request->language ?? 'en'; if (empty($template)) { wp_send_json_error([ 'error' => __eva('Template data is required.'), ]); return; } try { $manager = new WhatsappManager($tenantId); if (!$manager->isConfigured()) { wp_send_json_error([ 'error' => __eva('WhatsApp service is not configured.'), ]); return; } $provider = $manager->getProvider(); if (!$provider || !method_exists($provider, 'createAndSubmitTemplate')) { wp_send_json_error([ 'error' => __eva('Default templates are not supported by this provider.'), ]); return; } // Ensure language is set in template if (is_array($template)) { $template['language'] = $language; } $templateName = $template['template_name'] ?? $template['name'] ?? ''; if ($templateName) { $templateSetting = WhatsappTemplate::where('restaurant_id', $tenantId)->first(); $existingTemplates = $templateSetting ? ($templateSetting->templates ?? []) : []; foreach ($existingTemplates as $existing) { if (($existing['name'] ?? '') === $templateName && ($existing['language'] ?? '') === $language) { wp_send_json_error([ 'error' => __eva('A template with this name and language already exists.'), 'existing_sid' => $existing['sid'] ?? null, ]); return; } } } $result = $provider->createAndSubmitTemplate($template); if ($result['success']) { wp_send_json_success([ 'sid' => $result['data']['sid'] ?? null, 'friendly_name' => $result['data']['friendly_name'] ?? null, 'template_name' => $result['data']['template_name'] ?? null, 'approval_status' => $result['data']['approval_status'] ?? null, 'message' => $result['message'], ]); } else { wp_send_json_error([ 'error' => $result['message'], 'details' => $result['data'] ?? null, ]); } } catch (\Exception $e) { wp_send_json_error([ 'error' => $e->getMessage(), ]); } } /** * Auto-map uploaded templates to whatsapp messages, reminders and reconfirmations. * * @param Request $request * @return void */ public function autoMap(Request $request) { $tenantId = $request->tenantId(); //ray('AUTOMAP: '. $tenantId); try { $result = alexr_whatsapp_auto_map_templates($tenantId); wp_send_json_success([ 'mapped' => $result, ]); } catch (\Exception $e) { wp_send_json_error([ 'error' => $e->getMessage(), ]); } } }