import 'dart:convert'; import 'package:nearledaily/constants/api_constants.dart'; import '../../../Helper/Logger.dart'; import '../../../data/authentication/auth_request.dart'; import '../../../data/authentication/auth_response.dart'; import '../../../modules/authentication/auth.dart'; import '../../../modules/authentication/getbyid.dart'; import '../../../service/dio.dart'; class LoginProvider { final CustomDio _customDio = CustomDio(); // ✅ Declare the CustomDio instance Future signIn(String urlData, LoginRequest data) async { logger.i('signInUrlData $urlData'); LoginResponse? loginResponse; final customDio = CustomDio(); try { final response = await customDio.postData( urlData, data.toJson(), ); logger.i("Raw response type: ${response.runtimeType}"); logger.i("Raw response: $response"); if (response != null) { if (response is Map) { loginResponse = LoginResponse.fromJson(response); } else if (response is String) { try { final Map jsonMap = jsonDecode(response); loginResponse = LoginResponse.fromJson(jsonMap); } catch (e) { loginResponse = LoginResponse( status: false, message: "Something went wrong", ); } } else { loginResponse = LoginResponse( status: false, message: "something went wrong", ); } logger.i('loginResponse: ${loginResponse.toJson()}'); } } catch (e, stacktrace) { logger.e("Error occurred in signIn: $e"); logger.e(stacktrace); loginResponse = LoginResponse( status: false, message: "Something went wrong", ); } return loginResponse; } Future getProfile(String customerId) async { logger.i('🔹 GetProfile API customerId: $customerId'); CustomerFullView? profile; final customDio = CustomDio(); final url = "${ApiConstants.fetchProfile}customerid=$customerId&contactno=''"; try { final response = await customDio.getData(url, headers: { 'x-hasura-admin-secret': 'nearle-admin-secret', }, ); logger.i("Raw response type: ${response.runtimeType}"); logger.i("Raw response: $response"); if (response != null) { Map jsonMap; if (response is Map) { jsonMap = response; } else if (response is String) { jsonMap = jsonDecode(response); } else { throw Exception("Something went wrong"); } // Parse the list and take the first item final list = jsonMap['customer_full_view'] as List?; logger.i('🔹 Full jsonMap keys: ${jsonMap.keys.toList()}'); // ← see all keys logger.i('🔹 customerFullView list: $list'); // ← see the list logger.i('🔹 list length: ${list?.length}'); if (list != null && list.isNotEmpty) { profile = CustomerFullView.fromJson(list[0] as Map); logger.i('Profile parsed successfully'); } } } catch (e, stacktrace) { logger.e("Error occurred in ProfileProvider.getProfile: $e"); logger.e(stacktrace); } return profile; } Future putData(String endpoint, Map data) async { try { final response = await _customDio.putData(endpoint, data); return response; } catch (e) { return {"status": false, "message": e.toString()}; } } }