import 'dart:convert'; import 'package:http/http.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_objects/business.dart'; import 'package:mzansi_innovation_hub/mih_components/mih_pop_up_messages/mih_loading_circle.dart'; import 'package:flutter/material.dart'; import 'package:mzansi_innovation_hub/mih_config/mih_env.dart'; import '../mih_components/mih_pop_up_messages/mih_error_message.dart'; import 'package:supertokens_flutter/http.dart' as http; class MihBusinessDetailsServices { Future fetchBusinessCount() async { var response = await http.get( Uri.parse("${AppEnviroment.baseApiUrl}/business/count/"), headers: { "Content-Type": "application/json; charset=UTF-8" }, ); if (response.statusCode == 200) { var jsonBody = jsonDecode(response.body); return jsonBody['count']; } else { return 0; } } Future> fetchAllBusinessTypes() async { var response = await http.get( Uri.parse("${AppEnviroment.baseApiUrl}/business/types/"), headers: { "Content-Type": "application/json; charset=UTF-8" }, ); if (response.statusCode == 200) { List jsonList = jsonDecode(response.body); List businessTypes = jsonList.map((item) => item['type'].toString()).toList(); return businessTypes; } else { return []; } } Future> searchBusinesses( String searchText, String searchType, BuildContext context, ) async { String newSearchText = "All"; if (searchText.isNotEmpty) { newSearchText = searchText; } String newSearchType = "All"; if (searchType.isNotEmpty) { newSearchType = searchType; } if (searchText.isEmpty && searchType.isEmpty) { return []; } var response = await http.get( Uri.parse( "${AppEnviroment.baseApiUrl}/business/search/$newSearchType/$newSearchText"), headers: { "Content-Type": "application/json; charset=UTF-8" }, ); if (response.statusCode == 200) { Iterable l = jsonDecode(response.body); List businesses = List.from(l.map((model) => Business.fromJson(model))); return businesses; } else { throw Exception('failed to load users'); } } Future getBusinessDetailsByUser( String app_id, ) async { var response = await http.get( Uri.parse("${AppEnviroment.baseApiUrl}/business/app_id/$app_id"), headers: { "Content-Type": "application/json; charset=UTF-8" }, ); if (response.statusCode == 200) { String body = response.body; var jsonBody = jsonDecode(body); return Business.fromJson(jsonBody); } else { return null; } } Future getBusinessDetailsByBusinessId( String business_id, ) async { var response = await http.get( Uri.parse( "${AppEnviroment.baseApiUrl}/business/business_id/$business_id"), headers: { "Content-Type": "application/json; charset=UTF-8" }, ); if (response.statusCode == 200) { String body = response.body; var jsonBody = jsonDecode(body); return Business.fromJson(jsonBody); } else { return null; } } Future createBusinessDetails( String appId, String busineName, String businessType, String businessRegistrationNo, String businessPracticeNo, String businessVatNo, String businessEmail, String businessPhoneNumber, String businessLocation, String businessLogoFilename, String businessWebsite, String businessRating, String businessMissionVision, BuildContext context, ) async { showDialog( context: context, builder: (context) { return const Mihloadingcircle(); }, ); String logoPath = businessLogoFilename.isNotEmpty ? "$appId/business_files/$businessLogoFilename" : ""; var response = await http.post( Uri.parse("${AppEnviroment.baseApiUrl}/business/insert/"), headers: { "Content-Type": "application/json; charset=UTF-8" }, body: jsonEncode({ "Name": busineName, "type": businessType, "registration_no": businessRegistrationNo, "logo_name": businessLogoFilename, "logo_path": logoPath, "contact_no": businessPhoneNumber, "bus_email": businessEmail, "gps_location": businessLocation, "practice_no": businessPracticeNo, "vat_no": businessVatNo, "website": businessWebsite, "rating": businessRating, "mission_vision": businessMissionVision, }), ); Navigator.of(context).pop(); return response; } Future updateBusinessDetailsV2( String business_id, String business_name, String business_type, String business_registration_no, String business_practice_no, String business_vat_no, String business_email, String business_phone_number, String business_location, String business_logo_name, String businessWebsite, String businessRating, String businessMissionVision, BuildContext context, ) async { showDialog( context: context, builder: (context) { return const Mihloadingcircle(); }, ); var response = await http.put( Uri.parse("${AppEnviroment.baseApiUrl}/business/update/v2/"), headers: { "Content-Type": "application/json; charset=UTF-8" }, body: jsonEncode({ "business_id": business_id, "Name": business_name, "type": business_type, "registration_no": business_registration_no, "logo_name": business_logo_name, "logo_path": "$business_id/business_files/$business_logo_name", "contact_no": business_phone_number, "bus_email": business_email, "gps_location": business_location, "practice_no": business_practice_no, "vat_no": business_vat_no, "website": businessWebsite, "rating": businessRating, "mission_vision": businessMissionVision, }), ); Navigator.of(context).pop(); if (response.statusCode == 200) { return 200; } else { return 500; } } Future updateBusinessDetails( String business_id, String business_name, String business_type, String business_registration_no, String business_practice_no, String business_vat_no, String business_email, String business_phone_number, String business_location, String business_logo_name, BuildContext context, ) async { showDialog( context: context, builder: (context) { return const Mihloadingcircle(); }, ); var response = await http.put( Uri.parse("${AppEnviroment.baseApiUrl}/business/update/"), headers: { "Content-Type": "application/json; charset=UTF-8" }, body: jsonEncode({ "business_id": business_id, "Name": business_name, "type": business_type, "registration_no": business_registration_no, "logo_name": business_logo_name, "logo_path": "$business_id/business_files/$business_logo_name", "contact_no": business_phone_number, "bus_email": business_email, "gps_location": business_location, "practice_no": business_practice_no, "vat_no": business_vat_no, }), ); Navigator.of(context).pop(); if (response.statusCode == 200) { return 200; } else { return 500; } } void internetConnectionPopUp(BuildContext context) { showDialog( context: context, builder: (context) { return const MIHErrorMessage(errorType: "Internet Connection"); }, ); } }