@ -1,10 +1,12 @@
import ' dart:developer ' ;
import ' package:easy_localization/easy_localization.dart ' ;
import ' package:mc_common_app/api/api_client.dart ' ;
import ' package:mc_common_app/classes/app_state.dart ' ;
import ' package:mc_common_app/classes/consts.dart ' ;
import ' package:mc_common_app/config/dependency_injection.dart ' ;
import ' package:mc_common_app/extensions/string_extensions.dart ' ;
import ' package:mc_common_app/generated/locale_keys.g.dart ' ;
import ' package:mc_common_app/models/advertisment_models/ad_details_model.dart ' ;
import ' package:mc_common_app/models/advertisment_models/ads_bank_details_model.dart ' ;
import ' package:mc_common_app/models/advertisment_models/ads_duration_model.dart ' ;
@ -14,6 +16,7 @@ import 'package:mc_common_app/models/advertisment_models/special_service_model.d
import ' package:mc_common_app/models/chat_models/buyers_chat_for_ads_model.dart ' ;
import ' package:mc_common_app/models/general_models/generic_resp_model.dart ' ;
import ' package:mc_common_app/utils/enums.dart ' ;
import ' package:mc_common_app/utils/utils.dart ' ;
abstract class AdsRepo {
Future < List < AdsDurationModel > > getAdsDuration ( { required int ? countryId } ) ;
@ -22,7 +25,12 @@ abstract class AdsRepo {
Future < GenericRespModel > createOrUpdateAd ( { required AdsCreationPayloadModel adsCreationPayloadModel , required bool isCreateNew } ) ;
Future < List < AdDetailsModel > > getAllAds ( { required bool isMyAds , AdPostStatus ? adPostStatus , CreatedByRoleEnum ? createdByRoleEnum } ) ;
Future < List < AdDetailsModel > > getAllAds ( {
required bool isMyAds ,
AdPostStatus ? adPostStatus ,
CreatedByRoleEnum ? createdByRoleEnum ,
int ? page ,
} ) ;
Future < List < AdDetailsModel > > getExploreAdsBasedOnFilters ( {
List < String > ? cityIdsList ,
@ -31,6 +39,8 @@ abstract class AdsRepo {
List < String > ? createdByRolesIdsList ,
List < String > ? vehicleAdConditionIdsList ,
List < String > ? vehicleAdCreatedDateList ,
int page ,
bool isMyAds = false ,
} ) ;
Future < List < AdDetailsModel > > getMyReservedAds ( ) ;
@ -62,10 +72,10 @@ class AdsRepoImp implements AdsRepo {
@ override
Future < List < AdsDurationModel > > getAdsDuration ( { required int ? countryId } ) async {
int roleID = appState . getUser ! . data ! . userInfo ! . roleId ? ? 0 ;
int roleID = appState . getUser . data ! . userInfo ! . roleId ? ? 0 ;
var param = {
" CountryID " : countryId . toString ( ) ? ? " 0 " ,
" roleID " : roleID . toString ( ) ? ? " 0 " ,
" CountryID " : countryId . toString ( ) ,
" roleID " : roleID . toString ( ) ,
} ;
GenericRespModel adsGenericModel = await apiClient . getJsonForObject (
token: appState . getUser . data ! . accessToken ,
@ -168,7 +178,12 @@ class AdsRepoImp implements AdsRepo {
}
@ override
Future < List < AdDetailsModel > > getAllAds ( { required isMyAds , AdPostStatus ? adPostStatus , CreatedByRoleEnum ? createdByRoleEnum } ) async {
Future < List < AdDetailsModel > > getAllAds ( {
required isMyAds ,
AdPostStatus ? adPostStatus ,
CreatedByRoleEnum ? createdByRoleEnum ,
int ? page ,
} ) async {
Map < String , dynamic > onlyMyAdsParams = {
" userID " : appState . getUser . data ! . userInfo ! . userId ? ? " " ,
} ;
@ -176,6 +191,7 @@ class AdsRepoImp implements AdsRepo {
onlyMyAdsParams . addAll ( {
" AdsStatuses " : [ " ${ adPostStatus . getIdFromAdPostStatusEnum ( ) } " ] ,
" PageSize " : " 30 " ,
" PageIndex " : page ! = null ? page . toString ( ) : " 0 " ,
} ) ;
}
var allAdsParams = {
@ -183,6 +199,7 @@ class AdsRepoImp implements AdsRepo {
" isActive " : " true " , / / only Active ADS
" isExplore " : " true " ,
" PageSize " : " 30 " ,
" PageIndex " : page ! = null ? page . toString ( ) : " 0 " ,
} ;
if ( ! isMyAds & & createdByRoleEnum ! = null ) {
@ -196,7 +213,7 @@ class AdsRepoImp implements AdsRepo {
ApiConsts . vehicleAdsGet ,
queryParameters: isMyAds ? onlyMyAdsParams : allAdsParams ,
) ;
List < AdDetailsModel > vehicleAdsDetails = List . generate ( adsGenericModel . data . length , ( index ) = > AdDetailsModel . fromJson ( adsGenericModel . data [ index ] , isMyAds )) ;
List < AdDetailsModel > vehicleAdsDetails = List . generate ( adsGenericModel . data . length , ( index ) = > AdDetailsModel . fromJson ( adsGenericModel . data [ index ] , isMyAds , adsGenericModel . totalItemsCount ? ? 1 )) ;
return vehicleAdsDetails ;
}
@ -208,6 +225,8 @@ class AdsRepoImp implements AdsRepo {
List < String > ? createdByRolesIdsList ,
List < String > ? vehicleAdConditionIdsList ,
List < String > ? vehicleAdCreatedDateList ,
int ? page ,
bool isMyAds = false ,
} ) async {
var parameters = {
" CityIDs " : cityIdsList ? ? [ ] ,
@ -218,17 +237,29 @@ class AdsRepoImp implements AdsRepo {
" VehicleNew " : vehicleAdConditionIdsList ? ? [ ] ,
" CreatedOn " : ( vehicleAdCreatedDateList ! = null & & vehicleAdCreatedDateList . isNotEmpty ) ? vehicleAdCreatedDateList . first . toString ( ) : " " ,
" isActive " : " true " , / / only Active ADS
" isExplore " : " true " ,
" isExplore " : isMyAds . toString ( ) ,
" PageSize " : " 30 " ,
" PageIndex " : page ! = null ? page . toString ( ) : " 1 " ,
} ;
if ( isMyAds ) {
parameters . addAll ( {
" userID " : appState . getUser . data ! . userInfo ! . userId ? ? " " ,
} ) ;
}
GenericRespModel adsGenericModel = await apiClient . getJsonForObject (
token: appState . getUser . data ! . accessToken ,
( json ) = > GenericRespModel . fromJson ( json ) ,
ApiConsts . vehicleAdsGet ,
queryParameters: parameters ,
) ;
List < AdDetailsModel > vehicleAdsDetails = List . generate ( adsGenericModel . data . length , ( index ) = > AdDetailsModel . fromJson ( adsGenericModel . data [ index ] , false ) ) ;
if ( adsGenericModel . messageStatus ! = 1 | | adsGenericModel . data = = null ) {
Utils . showToast ( adsGenericModel . message ? ? LocaleKeys . somethingWrong . tr ( ) ) ;
return [ ] ;
}
List < AdDetailsModel > vehicleAdsDetails = List . generate ( adsGenericModel . data . length , ( index ) = > AdDetailsModel . fromJson ( adsGenericModel . data [ index ] , false , adsGenericModel . totalItemsCount ? ? 1 ) ) ;
return vehicleAdsDetails ;
}
@ -244,6 +275,11 @@ class AdsRepoImp implements AdsRepo {
ApiConsts . myAdsReserveGet ,
queryParameters: params ,
) ;
if ( adsGenericModel . messageStatus ! = 1 | | adsGenericModel . data = = null ) {
Utils . showToast ( adsGenericModel . message ? ? LocaleKeys . somethingWrong . tr ( ) ) ;
return [ ] ;
}
List < MyReservedAdsRespModel > reservedAds = List . generate ( adsGenericModel . data . length , ( index ) = > MyReservedAdsRespModel . fromJson ( adsGenericModel . data [ index ] ) ) ;
List < String > selectedIdsString = reservedAds . map ( ( component ) = > component . adsID . toString ( ) ) . toList ( ) ;
@ -266,7 +302,11 @@ class AdsRepoImp implements AdsRepo {
queryParameters: params ,
ApiConsts . vehicleAdsGet ,
) ;
List < AdDetailsModel > vehicleAdsDetails = List . generate ( adsGenericModel . data . length , ( index ) = > AdDetailsModel . fromJson ( adsGenericModel . data [ index ] , true ) ) ;
if ( adsGenericModel . messageStatus ! = 1 | | adsGenericModel . data = = null ) {
Utils . showToast ( adsGenericModel . message ? ? LocaleKeys . somethingWrong . tr ( ) ) ;
return [ ] ;
}
List < AdDetailsModel > vehicleAdsDetails = List . generate ( adsGenericModel . data . length , ( index ) = > AdDetailsModel . fromJson ( adsGenericModel . data [ index ] , true , adsGenericModel . totalItemsCount ? ? 1 ) ) ;
for ( int i = 0 ; i < vehicleAdsDetails . length ; i + + ) {
vehicleAdsDetails [ i ] . adReserveStatus = ( reservedAds [ i ] . adsReserveStatus ? ? 0 ) . toAdRserveStatusEnum ( ) ;
@ -288,7 +328,11 @@ class AdsRepoImp implements AdsRepo {
queryParameters: params ,
ApiConsts . vehicleAdsGet ,
) ;
List < AdDetailsModel > vehicleAdsDetails = List . generate ( adsGenericModel . data . length , ( index ) = > AdDetailsModel . fromJson ( adsGenericModel . data [ index ] , true ) ) ;
if ( adsGenericModel . messageStatus ! = 1 | | adsGenericModel . data = = null ) {
Utils . showToast ( adsGenericModel . message ? ? LocaleKeys . somethingWrong . tr ( ) ) ;
return [ ] ;
}
List < AdDetailsModel > vehicleAdsDetails = List . generate ( adsGenericModel . data . length , ( index ) = > AdDetailsModel . fromJson ( adsGenericModel . data [ index ] , true , adsGenericModel . totalItemsCount ? ? 1 ) ) ;
return vehicleAdsDetails ;
}