import 'dart:async'; import 'package:tangheem/classes/consts.dart'; import 'package:tangheem/models/aya_model.dart'; import 'package:tangheem/models/aya_tangheem_property.dart'; import 'package:tangheem/models/aya_tangheem_type.dart'; import 'package:tangheem/models/aya_tangheem_type_mapped.dart'; import 'package:tangheem/models/content_info_model.dart'; import 'package:tangheem/models/country_model.dart'; import 'package:tangheem/models/discussion_model.dart'; import 'package:tangheem/models/general_response_model.dart'; import 'package:tangheem/models/member_model.dart'; import 'package:tangheem/models/navigation_model.dart'; import 'package:tangheem/models/quick_links_model.dart'; import 'package:tangheem/models/surah_model.dart'; import 'package:tangheem/models/tangheem_type_model.dart'; import 'api_client.dart'; class TangheemUserApiClient { static final TangheemUserApiClient _instance = TangheemUserApiClient._internal(); TangheemUserApiClient._internal(); factory TangheemUserApiClient() => _instance; Future getSurahs() async { String url = "${ApiConsts.tangheemUsers}AlSuar_Get"; var postParams = {}; return await ApiClient().postJsonForObject((json) => SurahModel.fromJson(json), url, postParams); } Future getTangheemBySurah(int surahId) async { String url = "${ApiConsts.tangheemUsers}AyatTangheemTypeMapped_Get"; var postParams = {"surahNo": surahId}; return await ApiClient().postJsonForObject((json) => AyatTangheemTypeMapped.fromJson(json), url, postParams); } Future getAyaByFilter(int surahID, int ayahFrom, int ayahTo) async { String url = "${ApiConsts.tangheemUsers}AyatByRange_Get"; var postParams = {"surahID": surahID, "ayahFrom": ayahFrom, "ayahTo": ayahTo}; return await ApiClient().postJsonForObject((json) => AyaModel.fromJson(json), url, postParams); } Future getQuranByPageNo(int pageNo) async { String url = "${ApiConsts.tangheemUsers}Quran_Get"; var postParams = {"pageNo": pageNo}; return await ApiClient().postJsonForObject((json) => AyaModel.fromJson(json), url, postParams); } Future getAyaByRange(int itemsPerPage, int currentPageNo, int surahID, int ayahFrom, int ayahTo) async { String url = "${ApiConsts.tangheemUsers}AyatByRange_Get"; var postParams = {"itemsPerPage": itemsPerPage, "currentPageNo": currentPageNo, "surahID": surahID, "ayahFrom": ayahFrom, "ayahTo": ayahTo}; return await ApiClient().postJsonForObject((json) => AyaModel.fromJson(json), url, postParams); } Future getTangheemType() async { String url = "${ApiConsts.tangheemUsers}TangheemType_Get"; var postParams = {}; return await ApiClient().postJsonForObject((json) => TangheemType.fromJson(json), url, postParams); } Future getAyaTangheemTypeMappedRelated(int surahNo, String ayatNumberInSurahs) async { String url = "${ApiConsts.tangheemUsers}AyatTangheemTypeMapped_Get"; var postParams = {"surahNo": surahNo, "numberInSurahs": ayatNumberInSurahs}; return await ApiClient().postJsonForObject((json) => AyatTangheemTypeMapped.fromJson(json), url, postParams); } Future getAyaTangheemTypeMapped(int surahNo, String tangheemTypeName, String ayaText, int itemsPerPage, int currentPageNo) async { String url = "${ApiConsts.tangheemUsers}AyatTangheemTypeMapped_Get"; var postParams = {}; if (surahNo != null) { postParams["surahNo"] = surahNo; } if (tangheemTypeName != null) { postParams["tangheemTypeName"] = tangheemTypeName; } if (ayaText != null) { postParams["ayaText"] = ayaText; } postParams["itemsPerPage"] = itemsPerPage; postParams["currentPageNo"] = currentPageNo; return await ApiClient().postJsonForObject((json) => AyatTangheemTypeMapped.fromJson(json), url, postParams); } Future getAyaTangheemType(int surahNo, String tangheemTypeName) async { String url = "${ApiConsts.tangheemUsers}AyaTangheemType_Get"; var postParams = {}; if (surahNo != null) { postParams["surahNo"] = surahNo; } if (tangheemTypeName != null) { postParams["tangheemTypeName"] = tangheemTypeName; } return await ApiClient().postJsonForObject((json) => AyaTangheemType.fromJson(json), url, postParams); } Future getAyaTangheemProperty(int currentPage, int surahNo, String tangheemTypeName) async { String url = "${ApiConsts.tangheemUsers}AyaTangheemProperty_Get"; var postParams = {"itemsPerPage": 5, "currentPageNo": currentPage, "surahNo": surahNo, "tangheemTypeName": tangheemTypeName}; return await ApiClient().postJsonForObject((json) => AyaTangheemProperty.fromJson(json), url, postParams); } Future quickLinks() async { String url = "${ApiConsts.tangheemUsers}QuickLinks_Get"; var postParams = {}; return await ApiClient().postJsonForObject((json) => QuickLinksModel.fromJson(json), url, postParams); } Future contactUs(String firstName, String lastName, String email, String phone, String description) async { String url = "${ApiConsts.tangheemUsers}ContactUs_Add"; var postParams = {"firstName": firstName, "lastName": lastName, "email": email, "phone": phone, "description": description}; return await ApiClient().postJsonForObject((json) => GeneralResponseModel.fromJson(json), url, postParams); } Future getCountry() async { String url = "${ApiConsts.tangheemUsers}Country_Get"; var postParams = {}; return await ApiClient().postJsonForObject((json) => CountryModel.fromJson(json), url, postParams); } Future getDiscussionByTangheemID(int pageNumber, String tangheemID) async { String url = "${ApiConsts.tangheemUsers}Discussion_Get"; var postParams = {"itemsPerPage": 5, "currentPageNo": pageNumber, "ayaTangheemTypeId": tangheemID}; postParams["itemsPerPage"] = null; postParams["currentPageNo"] = null; return await ApiClient().postJsonForObject((json) => DiscussionModel.fromJson(json), url, postParams); } Future addStatistics(int statisticsTypeId) async { String url = "${ApiConsts.tangheemUsers}Statistics_Add"; var postParams = {"statisticsTypeId": statisticsTypeId}; return await ApiClient().postJsonForObject((json) => GeneralResponseModel.fromJson(json), url, postParams); } Future getNavigation() async { String url = "${ApiConsts.tangheemUsers}Navigation_Get"; var postParams = {}; return await ApiClient().postJsonForObject((json) => NavigationModel.fromJson(json), url, postParams); } Future getMembers() async { String url = "${ApiConsts.tangheemUsers}Committee_Get"; var postParams = {}; return await ApiClient().postJsonForObject((json) => MemberModel.fromJson(json), url, postParams); } Future getContentInfo(int contentId) async { String url = "${ApiConsts.tangheemUsers}ContentInfo_Get"; var postParams = {"contentTypeId": contentId}; return await ApiClient().postJsonForObject((json) => ContentInfoModel.fromJson(json), url, postParams); } }