diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 56b3abb..f624acd 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -4,9 +4,10 @@ namespace App\Http\Controllers; use App\Models\Setting; use Illuminate\Http\JsonResponse; -use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Mail; use Illuminate\View\View; +use PromoSeven\AzureMailer\Graph\TokenManager; use PromoSeven\UltraMessage\Facades\UltraMessage; use PromoSeven\UltraMessage\UltraMessageException; @@ -14,7 +15,7 @@ class SettingsController extends Controller { public function integrations(): View { - $settings = [ + $whatsappSettings = [ 'enabled' => Setting::get('ultramsg_enabled', false), 'instance_id' => Setting::get('ultramsg_instance_id', ''), 'token' => Setting::get('ultramsg_token', ''), @@ -22,10 +23,18 @@ class SettingsController extends Controller 'webhook_path' => Setting::get('ultramsg_webhook_path', 'ultra-message/webhook'), ]; - return view('settings.integrations', compact('settings')); + $azureSettings = [ + 'enabled' => Setting::get('azure_mail_enabled', false), + 'tenant_id' => Setting::get('azure_mail_tenant_id', ''), + 'client_id' => Setting::get('azure_mail_client_id', ''), + 'client_secret' => Setting::get('azure_mail_client_secret', ''), + 'from_address' => Setting::get('azure_mail_from_address', ''), + ]; + + return view('settings.integrations', compact('whatsappSettings', 'azureSettings')); } - public function updateWhatsapp(Request $request): RedirectResponse + public function updateWhatsapp(Request $request): JsonResponse { $request->validate([ 'instance_id' => ['required', 'string', 'max:100'], @@ -34,13 +43,69 @@ class SettingsController extends Controller 'webhook_path' => ['required', 'string', 'max:100'], ]); - Setting::set('ultramsg_enabled', $request->boolean('enabled') ? '1' : '0'); + Setting::set('ultramsg_enabled', $request->input('enabled') === '1' ? '1' : '0'); Setting::set('ultramsg_instance_id', $request->instance_id); Setting::set('ultramsg_token', $request->token); Setting::set('ultramsg_webhook_secret', $request->webhook_secret ?? ''); Setting::set('ultramsg_webhook_path', $request->webhook_path); - return redirect()->route('settings.integrations')->with('success', 'WhatsApp settings saved.'); + return response()->json(['success' => true]); + } + + public function updateAzureMail(Request $request): JsonResponse + { + $request->validate([ + 'tenant_id' => ['required', 'string', 'max:100'], + 'client_id' => ['required', 'string', 'max:100'], + 'client_secret' => ['required', 'string', 'max:500'], + 'from_address' => ['required', 'email', 'max:255'], + ]); + + Setting::set('azure_mail_enabled', $request->input('enabled') === '1' ? '1' : '0'); + Setting::set('azure_mail_tenant_id', $request->tenant_id); + Setting::set('azure_mail_client_id', $request->client_id); + Setting::set('azure_mail_client_secret', $request->client_secret); + Setting::set('azure_mail_from_address', $request->from_address); + + return response()->json(['success' => true]); + } + + public function testAzureMailConnection(): JsonResponse + { + try { + $config = [ + 'tenant_id' => Setting::get('azure_mail_tenant_id', ''), + 'client_id' => Setting::get('azure_mail_client_id', ''), + 'client_secret' => Setting::get('azure_mail_client_secret', ''), + ]; + $tokenManager = new TokenManager($config); + $tokenManager->getToken(); + return response()->json(['success' => true]); + } catch (\Exception $e) { + return response()->json(['success' => false, 'message' => $e->getMessage()]); + } + } + + public function sendTestEmail(Request $request): JsonResponse + { + $request->validate([ + 'to' => ['required', 'email', 'max:255'], + 'subject' => ['required', 'string', 'max:255'], + ]); + + try { + $to = $request->to; + $subject = $request->subject; + Mail::mailer('azure')->raw( + 'This is a test email from SteelERP.', + function ($message) use ($to, $subject) { + $message->to($to)->subject($subject); + } + ); + return response()->json(['success' => true]); + } catch (\Exception $e) { + return response()->json(['success' => false, 'message' => $e->getMessage()]); + } } public function testWhatsappConnection(): JsonResponse @@ -52,4 +117,19 @@ class SettingsController extends Controller return response()->json(['success' => false, 'message' => $e->getMessage()]); } } + + public function sendTestMessage(Request $request): JsonResponse + { + $request->validate([ + 'to' => ['required', 'string', 'max:30'], + 'body' => ['required', 'string', 'max:1000'], + ]); + + try { + UltraMessage::sendText($request->to, $request->body); + return response()->json(['success' => true]); + } catch (UltraMessageException $e) { + return response()->json(['success' => false, 'message' => $e->getMessage()]); + } + } }