You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
8.3 KiB
Dart
196 lines
8.3 KiB
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/dependencies.dart';
|
|
import 'package:mc_common_app/models/advertisment_models/ss_car_check_schedule_model.dart';
|
|
import 'package:mc_common_app/models/advertisment_models/ss_photo_schedule_model.dart';
|
|
import 'package:mc_common_app/models/appointments_models/appointment_list_model.dart';
|
|
import 'package:mc_common_app/models/general/generic_resp_model.dart';
|
|
import 'package:mc_common_app/models/user/cities.dart';
|
|
import 'package:mc_common_app/models/user/country.dart';
|
|
import 'package:mc_common_app/models/user/role.dart';
|
|
|
|
import '../models/advertisment_models/vehicle_details_models.dart';
|
|
import '../models/general/enums_model.dart';
|
|
|
|
abstract class CommonRepo {
|
|
Future<Country> getAllCountries();
|
|
|
|
Future<Cities> getAllCites(String countryId);
|
|
|
|
//TODO: Needs to remove cities method one of them
|
|
Future<List<VehicleCityModel>> getVehicleCities({required int countryId});
|
|
|
|
Future<Role> getRoles();
|
|
|
|
Future<List<AppointmentListModel>> getMyAppointments();
|
|
|
|
Future<SSCarCheckScheduleModel> getCarCheckServiceScheduleDetails({required double lat, required double long});
|
|
|
|
Future<List<SSPhotoOfficeScheduleModel>> getPhotographyServiceScheduleListByOffices({required double lat, required double long});
|
|
|
|
// Future<List<ProviderCategoryModel>> getProviderServiceCategories();
|
|
|
|
// Future<List<ProviderServiceModel>> getProviderServices({required int categoryId});
|
|
|
|
Future<List<VehicleTypeModel>> getVehicleTypes();
|
|
|
|
//TODO: Needs to remove common methods from AD's repo and delete all repeated methods.
|
|
Future<VehicleDetailsModel> getVehicleDetails({int? vehicleTypeId, int? vehicleBrandId});
|
|
|
|
Future<List<EnumsModel>> getEnumTypeValues({int? enumTypeID, String? enumTypeName});
|
|
}
|
|
|
|
class CommonRepoImp implements CommonRepo {
|
|
ApiClient apiClient = injector.get<ApiClient>();
|
|
AppState appState = injector.get<AppState>();
|
|
|
|
@override
|
|
Future<Country> getAllCountries() async {
|
|
return await apiClient.getJsonForObject((json) => Country.fromJson(json), ApiConsts.GetAllCountry);
|
|
}
|
|
|
|
@override
|
|
Future<Cities> getAllCites(String countryId) async {
|
|
var postParams = {
|
|
"CountryID": countryId,
|
|
};
|
|
return await apiClient.getJsonForObject((json) => Cities.fromJson(json), ApiConsts.GetAllCities, queryParameters: postParams);
|
|
}
|
|
|
|
@override
|
|
Future<Role> getRoles() async {
|
|
return await apiClient.getJsonForObject((json) => Role.fromJson(json), ApiConsts.GetProviderRoles);
|
|
}
|
|
|
|
@override
|
|
Future<List<AppointmentListModel>> getMyAppointments() async {
|
|
var params = {
|
|
"customerID": appState.getUser.data!.userInfo!.customerId.toString() ?? "",
|
|
};
|
|
GenericRespModel genericRespModel = await apiClient.getJsonForObject(
|
|
token: appState.getUser.data!.accessToken,
|
|
(json) => GenericRespModel.fromJson(json),
|
|
queryParameters: params,
|
|
ApiConsts.serviceProvidersAppointmentGet,
|
|
);
|
|
List<AppointmentListModel> appointmentList = List.generate(genericRespModel.data.length, (index) => AppointmentListModel.fromJson(genericRespModel.data[index]));
|
|
return appointmentList;
|
|
}
|
|
|
|
@override
|
|
Future<SSCarCheckScheduleModel> getCarCheckServiceScheduleDetails({required double lat, required double long}) async {
|
|
var params = {
|
|
"Latitude": lat.toString(),
|
|
"Longitude": long.toString(),
|
|
};
|
|
GenericRespModel genericRespModel = await apiClient.getJsonForObject(
|
|
token: appState.getUser.data!.accessToken,
|
|
(json) => GenericRespModel.fromJson(json),
|
|
queryParameters: params,
|
|
ApiConsts.adsCarCheckupSPBranchScheduleSlotGet,
|
|
);
|
|
SSCarCheckScheduleModel ssCarCheckScheduleModel = SSCarCheckScheduleModel.fromJson(genericRespModel.data[0]);
|
|
return ssCarCheckScheduleModel;
|
|
}
|
|
|
|
@override
|
|
Future<List<SSPhotoOfficeScheduleModel>> getPhotographyServiceScheduleListByOffices({required double lat, required double long}) async {
|
|
var params = {
|
|
"Latitude": lat.toString(),
|
|
"Longitude": long.toString(),
|
|
};
|
|
GenericRespModel genericRespModel = await apiClient.getJsonForObject(
|
|
token: appState.getUser.data!.accessToken,
|
|
(json) => GenericRespModel.fromJson(json),
|
|
queryParameters: params,
|
|
ApiConsts.adsPhotoOfficeAppointmentScheduleSlotGet,
|
|
);
|
|
if (genericRespModel.data == null) {
|
|
return [];
|
|
}
|
|
List<SSPhotoOfficeScheduleModel> ssPhotoScheduleModel = List.generate(genericRespModel.data.length, (index) => SSPhotoOfficeScheduleModel.fromJson(genericRespModel.data[index]));
|
|
return ssPhotoScheduleModel ?? [];
|
|
}
|
|
|
|
@override
|
|
Future<List<VehicleTypeModel>> getVehicleTypes() async {
|
|
GenericRespModel adsGenericModel = await apiClient.getJsonForObject(token: appState.getUser.data!.accessToken, (json) => GenericRespModel.fromJson(json), ApiConsts.vehicleTypeGet);
|
|
List<VehicleTypeModel> vehicleTypes = List.generate(adsGenericModel.data.length, (index) => VehicleTypeModel.fromJson(adsGenericModel.data[index]));
|
|
return vehicleTypes;
|
|
}
|
|
|
|
@override
|
|
Future<VehicleDetailsModel> getVehicleDetails({int? vehicleTypeId, int? vehicleBrandId}) async {
|
|
var postParams = {
|
|
"vehicleType": vehicleTypeId ?? 0,
|
|
"isVehicleBrand": "true",
|
|
"vehicleBrand": vehicleBrandId ?? 0,
|
|
"isVehicleCategory": "true",
|
|
"isVehicleColor": "true",
|
|
"isVehicleCondition": "true",
|
|
"isVehicleMileage": "true",
|
|
"isVehicleModel": "true",
|
|
"isVehicleModelYear": "true",
|
|
"isVehiclePriceRange": "true",
|
|
"isVehiclePricingMethod": "true",
|
|
"isVehcileSellerType": "true",
|
|
"isVehicleTransmission": "true",
|
|
"isCountry": "true"
|
|
};
|
|
|
|
String token = appState.getUser.data!.accessToken ?? "";
|
|
GenericRespModel adsGenericModel = await apiClient.postJsonForObject(
|
|
(json) => GenericRespModel.fromJson(json),
|
|
ApiConsts.vehicleDetailsMaster,
|
|
postParams,
|
|
token: token,
|
|
);
|
|
VehicleDetailsModel vehicleDetails = VehicleDetailsModel.fromJson(adsGenericModel.data);
|
|
return vehicleDetails;
|
|
}
|
|
|
|
@override
|
|
Future<List<VehicleCityModel>> getVehicleCities({required int countryId}) async {
|
|
var postParams = {
|
|
"CountryID": countryId.toString(),
|
|
};
|
|
GenericRespModel adsGenericModel =
|
|
await apiClient.getJsonForObject(token: appState.getUser.data!.accessToken, (json) => GenericRespModel.fromJson(json), ApiConsts.vehicleCityGet, queryParameters: postParams);
|
|
List<VehicleCityModel> vehicleCities = List.generate(adsGenericModel.data.length, (index) => VehicleCityModel.fromJson(adsGenericModel.data[index]));
|
|
return vehicleCities;
|
|
}
|
|
|
|
@override
|
|
Future<List<EnumsModel>> getEnumTypeValues({int? enumTypeID, String? enumTypeName}) async {
|
|
var postParams = {"enumTypeID": (enumTypeID ?? 0).toString(), "enumTypeName": enumTypeName ?? ""};
|
|
GenericRespModel enumGenericModel = await apiClient.postJsonForObject(
|
|
(json) => GenericRespModel.fromJson(json),
|
|
ApiConsts.getEnumTypeValues,
|
|
postParams,
|
|
token: appState.getUser.data!.accessToken,
|
|
);
|
|
|
|
List<EnumsModel> vehicleCities = List.generate(enumGenericModel.data.length, (index) => EnumsModel.fromJson(enumGenericModel.data[index]));
|
|
return vehicleCities;
|
|
}
|
|
//
|
|
// @override
|
|
// Future<List<ProviderCategoryModel>> getProviderServiceCategories() async {
|
|
// GenericRespModel adsGenericModel = await apiClient.getJsonForObject(token: appState.getUser.data!.accessToken, (json) => GenericRespModel.fromJson(json), ApiConsts.serviceCategoryGet);
|
|
// List<ProviderCategoryModel> providerCategories = List.generate(adsGenericModel.data.length, (index) => ProviderCategoryModel.fromJson(adsGenericModel.data[index]));
|
|
// return providerCategories;
|
|
// }
|
|
|
|
// @override
|
|
// Future<List<ProviderServiceModel>> getProviderServices({required int categoryId}) async {
|
|
// var postParams = {
|
|
// "ServiceCategoryID": categoryId.toString(),
|
|
// };
|
|
// GenericRespModel adsGenericModel =
|
|
// await apiClient.getJsonForObject(token: appState.getUser.data!.accessToken, (json) => GenericRespModel.fromJson(json), ApiConsts.serviceCategoryGet, queryParameters: postParams);
|
|
// List<ProviderServiceModel> providerServices = List.generate(adsGenericModel.data.length, (index) => ProviderServiceModel.fromJson(adsGenericModel.data[index]));
|
|
// return providerServices;
|
|
// }
|
|
}
|