import 'package:ebroker/data/model/Personalized/personalized_settings.dart'; import 'package:ebroker/utils/Extensions/lib/map.dart'; import 'package:ebroker/utils/api.dart'; import 'package:flutter/material.dart'; import '../../app/app.dart'; import '../../utils/constant.dart'; import '../model/data_output.dart'; import '../model/property_model.dart'; enum PersonalizedFeedAction { add, edit, get } class PersonalizedFeedRepository { Future addOrUpdate({ required PersonalizedFeedAction action, required List categoryIds, List? outdoorFacilityList, RangeValues? priceRange, List? selectedPropertyType, String? city, }) async { ////List to String String categoryStringArray = categoryIds.join(","); String outdoorFacilityStringArray = outdoorFacilityList?.join(",") ?? ""; String priceRangeString = "${priceRange?.start},${priceRange?.end}"; String propertyTypeString = selectedPropertyType?.join(",") ?? ""; Map parameters = { "action": action.name, "category_ids": categoryStringArray, "outdoor_facilitiy_ids": outdoorFacilityStringArray, "price_range": priceRangeString, "property_type": propertyTypeString, "city": city?.toLowerCase() }; parameters.removeEmptyKeys(); print("PARAMETER-- $parameters"); Map result = await Api.post(url: Api.addEditUserInterest, parameter: parameters); try { personalizedInterestSettings = PersonalizedInterestSettings.fromMap(result['data']); } catch (e) {} } Future getUserPersonalizedSettings() async { try { Map userPersonalization = await Api.post( parameter: { "action": "get", }, url: Api.addEditUserInterest, ); print("----------------- $userPersonalization"); return PersonalizedInterestSettings.fromMap( userPersonalization['data'], ); } catch (e) { return PersonalizedInterestSettings.empty(); } } Future> getPersonalizedProeprties({ required int offset, }) async { Map response = await Api.get( url: Api.getUserRecommendation, queryParameters: { Api.offset: offset, Api.limit: Constant.loadLimit, }, ); List modelList = (response['data'] as List) .map((e) => PropertyModel.fromMap(e)) .toList(); return DataOutput(total: response['total'] ?? 0, modelList: modelList); } }