import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_categories_list.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/get_offers_list.dart'; import 'package:mohem_flutter_app/models/offers_and_discounts/wala_plus_category_model.dart'; class OffersAndDiscountsApiClient { static final OffersAndDiscountsApiClient _instance = OffersAndDiscountsApiClient._internal(); OffersAndDiscountsApiClient._internal(); factory OffersAndDiscountsApiClient() => _instance; Future> getSaleCategories() async { List getSaleCategoriesList = []; String url = "${ApiConsts.cocRest}Mohemm_ITG_GetCategories"; Map postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ItgPageSize": 100, "ItgPageNo": 1, "ItgIsActive": true}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject( (response) { var body = json.decode(response['Mohemm_ITG_ResponseItem']); GetCategoriesList getSaleCategoriesListObj = GetCategoriesList(); getSaleCategoriesListObj.id = 0; getSaleCategoriesListObj.categoryNameEn = "All"; getSaleCategoriesListObj.categoryNameAr = "الجميع"; getSaleCategoriesListObj.isActive = true; getSaleCategoriesListObj.content = ' '; getSaleCategoriesList.add(getSaleCategoriesListObj); body['result']['data'].forEach((v) { getSaleCategoriesList.add(GetCategoriesList.fromJson(v)); }); return getSaleCategoriesList; }, url, postParams, ); } Future> getOffersList(int categoryID, int pageSize) async { List getSaleCategoriesList = []; String url = "${ApiConsts.cocRest}GetOfferDiscountsConfigData"; Map postParams = {"EmployeeNumber": AppState().memberInformationList?.eMPLOYEENUMBER, "ItgPageSize": pageSize, "ItgPageNo": 1, "ItgCategoryID": categoryID}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject( (response) { var body = json.decode(response['Mohemm_ITG_ResponseItem']); var bodyData = body['result']['data']; if (bodyData != null) { bodyData.forEach((v) { getSaleCategoriesList.add(OffersListModel.fromJson(v)); }); } return getSaleCategoriesList; }, url, postParams, ); } Future> getWalaPlusCategories({BuildContext? context}) async { String url = ApiConsts.walaPlusCategories; String? pUserName = AppState().getUserName; String? tokenID = AppState().postParamsObject?.tokenID; String? logInTokenID = AppState().postParamsObject?.logInTokenID; Map postParams = { "VersionID": 20, "Channel": 31, "LanguageID": context != null ? AppState().getLanguageID(context) : 2, "LogInTokenID": logInTokenID, "TokenID": tokenID, "P_USER_NAME": pUserName, }; return await ApiClient().postJsonForObject( (response) { List categories = []; if (response != null && response['WalaPlus_Categories'] != null) { response['WalaPlus_Categories'].forEach((v) { categories.add(WalaPlusCategoryModel.fromJson(v)); }); } return categories; }, url, postParams, ); } }