feat: update SettingsController for Azure Mail tab — AJAX whatsapp save, 3 new azure methods
This commit is contained in:
parent
dda2022d96
commit
1804ed4266
@ -4,9 +4,10 @@ namespace App\Http\Controllers;
|
|||||||
|
|
||||||
use App\Models\Setting;
|
use App\Models\Setting;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\RedirectResponse;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Mail;
|
||||||
use Illuminate\View\View;
|
use Illuminate\View\View;
|
||||||
|
use PromoSeven\AzureMailer\Graph\TokenManager;
|
||||||
use PromoSeven\UltraMessage\Facades\UltraMessage;
|
use PromoSeven\UltraMessage\Facades\UltraMessage;
|
||||||
use PromoSeven\UltraMessage\UltraMessageException;
|
use PromoSeven\UltraMessage\UltraMessageException;
|
||||||
|
|
||||||
@ -14,7 +15,7 @@ class SettingsController extends Controller
|
|||||||
{
|
{
|
||||||
public function integrations(): View
|
public function integrations(): View
|
||||||
{
|
{
|
||||||
$settings = [
|
$whatsappSettings = [
|
||||||
'enabled' => Setting::get('ultramsg_enabled', false),
|
'enabled' => Setting::get('ultramsg_enabled', false),
|
||||||
'instance_id' => Setting::get('ultramsg_instance_id', ''),
|
'instance_id' => Setting::get('ultramsg_instance_id', ''),
|
||||||
'token' => Setting::get('ultramsg_token', ''),
|
'token' => Setting::get('ultramsg_token', ''),
|
||||||
@ -22,10 +23,18 @@ class SettingsController extends Controller
|
|||||||
'webhook_path' => Setting::get('ultramsg_webhook_path', 'ultra-message/webhook'),
|
'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([
|
$request->validate([
|
||||||
'instance_id' => ['required', 'string', 'max:100'],
|
'instance_id' => ['required', 'string', 'max:100'],
|
||||||
@ -34,13 +43,69 @@ class SettingsController extends Controller
|
|||||||
'webhook_path' => ['required', 'string', 'max:100'],
|
'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_instance_id', $request->instance_id);
|
||||||
Setting::set('ultramsg_token', $request->token);
|
Setting::set('ultramsg_token', $request->token);
|
||||||
Setting::set('ultramsg_webhook_secret', $request->webhook_secret ?? '');
|
Setting::set('ultramsg_webhook_secret', $request->webhook_secret ?? '');
|
||||||
Setting::set('ultramsg_webhook_path', $request->webhook_path);
|
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
|
public function testWhatsappConnection(): JsonResponse
|
||||||
@ -52,4 +117,19 @@ class SettingsController extends Controller
|
|||||||
return response()->json(['success' => false, 'message' => $e->getMessage()]);
|
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()]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user