import 'dart:developer'; import 'package:flutter/material.dart'; import '../config/AppSnackbar.dart'; import '../services/sms_services.dart'; import '../utils/connection.dart'; class SmsProvider extends ChangeNotifier { bool _loader = false; bool get loader => _loader; /// Send OTP to phone number Future send_sms(String phonenumber) async { if (!await Connection.checkConnection()) { AppSnackbar.showError("Error", 'No Internet Connection'); log("-----> No Internet Connection"); return false; } _loader = true; notifyListeners(); bool status = false; try { final sendCodeResult = await SmsServices().send_sms_otp(phonenumber); log("Status Code: ${sendCodeResult.statusCode}"); log("data: ${sendCodeResult.data}"); log("error Message: ${sendCodeResult.errorMessage}"); if (sendCodeResult.statusCode == 200 || sendCodeResult.statusCode == 201) { AppSnackbar.showSuccess("Success", "OTP sent successfully!"); status = true; } else { String errorMsg = sendCodeResult.errorMessage ?? "Error sending OTP. Please try again later."; AppSnackbar.showError("Error", errorMsg); status = false; } } catch (e, stackTrace) { log("Error: $e"); log("StackTrace: $stackTrace"); AppSnackbar.showError("Error", 'Error sending OTP. Please try again later.'); status = false; } finally { _loader = false; notifyListeners(); } return status; } Future checkphoneandemail(String phonenumber,String email) async { if (!await Connection.checkConnection()) { AppSnackbar.showError("Error", 'No Internet Connection'); log("-----> No Internet Connection"); return false; } _loader = true; notifyListeners(); bool status = false; try { final sendCodeResult = await SmsServices().checkphoneandemail(phonenumber,email); log("Status Code: ${sendCodeResult.statusCode}"); log("data: ${sendCodeResult.data}"); log("error Message: ${sendCodeResult.errorMessage}"); if (sendCodeResult.statusCode == 200 || sendCodeResult.statusCode == 201) { status = true; } else { if(sendCodeResult.statusCode==302){ AppSnackbar.showError("Error", "Email is already exist"); } if(sendCodeResult.statusCode==409){ AppSnackbar.showError("Error", "Phone number is already exist"); } status = false; } } catch (e, stackTrace) { log("Error: $e"); log("StackTrace: $stackTrace"); AppSnackbar.showError("Error", 'Error when verifying Email and Phone-number please try again later.'); status = false; } finally { _loader = false; notifyListeners(); } return status; } /// Verify OTP code Future verify_sms(String phonenumber, String otp) async { if (!await Connection.checkConnection()) { AppSnackbar.showError("Error", 'No Internet Connection'); log("-----> No Internet Connection"); return false; } _loader = true; notifyListeners(); bool status = false; try { final verifyCodeResult = await SmsServices().verify_otp(phonenumber, otp); log("Status Code: ${verifyCodeResult.statusCode}"); log("data: ${verifyCodeResult.data}"); log("error Message: ${verifyCodeResult.errorMessage}"); if (verifyCodeResult.statusCode == 200 || verifyCodeResult.statusCode == 201) { AppSnackbar.showSuccess("Success", "OTP verified successfully!"); status = true; } else { String errorMsg = verifyCodeResult.errorMessage ?? "Invalid OTP. Please try again."; AppSnackbar.showError("Error", errorMsg); status = false; } } catch (e, stackTrace) { log("Error: $e"); log("StackTrace: $stackTrace"); AppSnackbar.showError("Error", 'Error verifying OTP. Please try again later.'); status = false; } finally { _loader = false; notifyListeners(); } return status; } }