import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; import 'package:syncrow_web/pages/auth/model/region_model.dart'; import 'package:syncrow_web/pages/auth/model/token.dart'; import 'package:syncrow_web/services/api/http_service.dart'; import 'package:syncrow_web/utils/constants/api_const.dart'; class AuthenticationAPI { static Future loginWithEmail({required var model}) async { final response = await HTTPService().post( path: ApiEndpoints.login, body: model.toJson(), showServerMessage: true, expectedResponseModel: (json) { return Token.fromJson(json['data']); }); return response; } static Future forgetPassword({ required var email, required var password, }) async { final response = await HTTPService().post( path: ApiEndpoints.forgetPassword, body: {"email": email, "password": password}, showServerMessage: true, expectedResponseModel: (json) {}); return response; } static Future sendOtp({required String email, required String regionUuid}) async { try { final response = await HTTPService().post( path: ApiEndpoints.sendOtp, body: {"email": email, "type": "PASSWORD", "regionUuid": regionUuid}, showServerMessage: true, expectedResponseModel: (json) { return json['data']['cooldown']; }); return response; } on DioException catch (e) { if (e.response != null) { if (e.response!.statusCode == 400) { final errorData = e.response!.data; String errorMessage = errorData['message']; if (errorMessage == 'User not found') { return 1; } else { int cooldown = errorData['data']['cooldown'] ?? 1; return cooldown; } } else { debugPrint('Error: ${e.response!.statusCode} - ${e.response!.statusMessage}'); return 1; } } else { debugPrint('Error: ${e.message}'); return 1; } } catch (e) { debugPrint('Unexpected Error: $e'); return 1; } } static Future verifyOtp({required String email, required String otpCode}) async { try { final response = await HTTPService().post( path: ApiEndpoints.verifyOtp, body: {"email": email, "type": "PASSWORD", "otpCode": otpCode}, showServerMessage: true, expectedResponseModel: (json) { if (json['message'] == 'Otp Verified Successfully') { return true; } else { return false; } }); return response; } on DioException catch (e) { if (e.response != null) { if (e.response!.statusCode == 400) { final errorData = e.response!.data; String errorMessage = errorData['message']; return errorMessage; } } else { debugPrint('Error: ${e.message}'); } } } static Future> fetchRegion() async { final response = await HTTPService().get( path: ApiEndpoints.getRegion, showServerMessage: true, expectedResponseModel: (json) { return (json as List).map((zone) => RegionModel.fromJson(zone)).toList(); }); return response; } }