import 'dart:convert'; import 'package:http/http.dart' as http; import '../constants/api_constants.dart'; class ApiService { // English: Client instance to perform network requests. // Arabic: نسخة العميل لإجراء طلبات الشبكة. final http.Client _client = http.Client(); // English: Perform a login request with email and password parameters. // Arabic: تنفيذ طلب تسجيل الدخول باستخدام معلمات البريد الإلكتروني وكلمة المرور. Future login(String email, String password) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.loginEndpoint}'); // English: Send POST request containing JSON body to login endpoint. // Arabic: إرسال طلب من نوع بوست يحتوي على نص جيسون إلى نقطة تسجيل الدخول. return await _client.post( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, body: jsonEncode({ 'email': email, 'password': password, }), ); } // English: Fetch current user details by supplying the JWT token. // Arabic: جلب تفاصيل المستخدم الحالي من خلال توفير رمز التحقق. Future getMe(String token) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.meEndpoint}'); // English: Send GET request with authorization token header. // Arabic: إرسال طلب من نوع غيت مع ترويسة رمز التفويض. return await _client.get( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, ); } // English: Fetch WhatsApp connection status. // Arabic: جلب حالة اتصال الواتساب. Future getWhatsAppStatus(String token) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.whatsappStatusEndpoint}'); return await _client.get( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, ); } // English: Fetch subscription plans list. // Arabic: جلب قائمة باقات الاشتراك. Future getPlans(String token) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.plansEndpoint}'); return await _client.get( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, ); } // English: Fetch CRM contacts directory. // Arabic: جلب دليل جهات الاتصال الخاص بنظام إدارة العملاء. Future getContacts(String token) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.contactsEndpoint}'); return await _client.get( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, ); } // English: Create a new contact in CRM directory. // Arabic: إنشاء جهة اتصال جديدة في دليل إدارة العملاء. Future addContact(String token, String name, String phone) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.contactsEndpoint}'); return await _client.post( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, body: jsonEncode({ 'name': name, 'phone': phone, }), ); } // English: Fetch chatbot rules. // Arabic: جلب قواعد الرد الآلي لروبوت الدردشة. Future getChatbotRules(String token) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.chatbotRulesEndpoint}'); return await _client.get( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, ); } // English: Fetch Super Admin platform statistics. // Arabic: جلب إحصائيات منصة المشرف العام. Future getAdminStats(String token) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.adminStatsEndpoint}'); return await _client.get( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, ); } // English: Request a new WhatsApp QR connection. // Arabic: طلب اتصال واتساب جديد برمز استجابة سريع. Future requestWhatsAppQr(String token) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.whatsappQrEndpoint}'); return await _client.post( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, ); } // English: Disconnect the active WhatsApp connection session. // Arabic: قطع اتصال جلسة الواتساب النشطة. Future disconnectWhatsApp(String token) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.whatsappDisconnectEndpoint}'); return await _client.post( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, ); } // English: Approve a pending company subscription billing. // Arabic: الموافقة على اشتراك فوترة الشركة المعلق. Future approveBilling(String token, int companyId) async { final url = Uri.parse('${ApiConstants.baseUrl}${ApiConstants.approveBillingEndpoint}'); return await _client.post( url, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer $token', }, body: jsonEncode({ 'company_id': companyId, }), ); } }