Refactored Code

aamir_dev
Faiz Hashmi 2 years ago
parent 1333895a02
commit 93cca6425f

@ -1,7 +1,6 @@
import 'package:car_provider_app/repositories/branch_repo.dart'; import 'package:mc_common_app/repositories/branch_repo.dart';
import 'package:car_provider_app/repositories/items_repo.dart'; import 'package:car_provider_app/repositories/items_repo.dart';
import 'package:car_provider_app/repositories/schedule_repo.dart'; import 'package:car_provider_app/repositories/schedule_repo.dart';
import 'package:mc_common_app/config/dependencies.dart'; import 'package:mc_common_app/config/dependencies.dart';
import 'package:mc_common_app/repositories/subscription_repo.dart'; import 'package:mc_common_app/repositories/subscription_repo.dart';
@ -10,7 +9,6 @@ class ProviderAppDependencies {
AppDependencies.addDependencies(); AppDependencies.addDependencies();
injector.registerSingleton<BranchRepo>(() => BranchRepoImp()); injector.registerSingleton<BranchRepo>(() => BranchRepoImp());
injector.registerSingleton<ItemsRepo>(() => ItemsRepoImp()); injector.registerSingleton<ItemsRepo>(() => ItemsRepoImp());
// injector.registerSingleton<CommonRepo>(() => CommonRepoImp());
injector.registerSingleton<SubscriptionRepo>(() => SubscriptionRepoImp()); injector.registerSingleton<SubscriptionRepo>(() => SubscriptionRepoImp());
injector.registerSingleton<ScheduleRepo>(() => ScheduleRepoImp()); injector.registerSingleton<ScheduleRepo>(() => ScheduleRepoImp());
} }

@ -1,8 +1,6 @@
import 'package:car_provider_app/config/provider_dependencies.dart'; import 'package:car_provider_app/config/provider_dependencies.dart';
import 'package:car_provider_app/repositories/branch_repo.dart';
import 'package:car_provider_app/repositories/items_repo.dart'; import 'package:car_provider_app/repositories/items_repo.dart';
import 'package:car_provider_app/repositories/schedule_repo.dart'; import 'package:car_provider_app/repositories/schedule_repo.dart';
import 'package:car_provider_app/view_models/branch_view_model.dart';
import 'package:car_provider_app/view_models/dashboard_view_model.dart'; import 'package:car_provider_app/view_models/dashboard_view_model.dart';
import 'package:car_provider_app/view_models/items_view_model.dart'; import 'package:car_provider_app/view_models/items_view_model.dart';
import 'package:car_provider_app/view_models/schedule_view_model.dart'; import 'package:car_provider_app/view_models/schedule_view_model.dart';
@ -10,12 +8,12 @@ import 'package:car_provider_app/view_models/service_view_model.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/classes/app_state.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/config/dependencies.dart';
import 'package:mc_common_app/config/routes.dart'; import 'package:mc_common_app/config/routes.dart';
import 'package:mc_common_app/models/general_models/post_params_model.dart'; import 'package:mc_common_app/models/general_models/post_params_model.dart';
import 'package:mc_common_app/repositories/ads_repo.dart'; import 'package:mc_common_app/repositories/ads_repo.dart';
import 'package:mc_common_app/repositories/appointment_repo.dart'; import 'package:mc_common_app/repositories/appointment_repo.dart';
import 'package:mc_common_app/repositories/branch_repo.dart';
import 'package:mc_common_app/repositories/chat_repo.dart'; import 'package:mc_common_app/repositories/chat_repo.dart';
import 'package:mc_common_app/repositories/common_repo.dart'; import 'package:mc_common_app/repositories/common_repo.dart';
import 'package:mc_common_app/repositories/payments_repo.dart'; import 'package:mc_common_app/repositories/payments_repo.dart';
@ -76,8 +74,7 @@ Future<void> main() async {
), ),
), ),
ChangeNotifierProvider<SubscriptionsVM>( ChangeNotifierProvider<SubscriptionsVM>(
create: (_) => create: (_) => SubscriptionsVM(subscriptionRepo: injector.get<SubscriptionRepo>()),
SubscriptionsVM(subscriptionRepo: injector.get<SubscriptionRepo>()),
), ),
ChangeNotifierProvider<ItemsVM>( ChangeNotifierProvider<ItemsVM>(
create: (_) => ItemsVM( create: (_) => ItemsVM(
@ -110,6 +107,7 @@ Future<void> main() async {
providerRepo: injector.get<ProviderRepo>(), providerRepo: injector.get<ProviderRepo>(),
commonServices: injector.get<CommonAppServices>(), commonServices: injector.get<CommonAppServices>(),
commonRepo: injector.get<CommonRepo>(), commonRepo: injector.get<CommonRepo>(),
branchRepo: injector.get<BranchRepo>(),
), ),
), ),
ChangeNotifierProvider<ChatVM>( ChangeNotifierProvider<ChatVM>(
@ -119,9 +117,7 @@ Future<void> main() async {
), ),
), ),
ChangeNotifierProvider<PaymentVM>( ChangeNotifierProvider<PaymentVM>(
create: (_) => PaymentVM( create: (_) => PaymentVM(paymentService: injector.get<PaymentService>(), paymentRepo: injector.get<PaymentsRepo>()),
paymentService: injector.get<PaymentService>(),
paymentRepo: injector.get<PaymentsRepo>()),
), ),
], ],
child: const MyApp(), child: const MyApp(),
@ -144,19 +140,12 @@ class MyApp extends StatelessWidget {
injector.get<AppState>().setAppType(AppType.provider); injector.get<AppState>().setAppType(AppType.provider);
AppState().setPostParamsModel( AppState().setPostParamsModel(
PostParamsModel( PostParamsModel(
languageID: languageID: EasyLocalization.of(context)?.locale.languageCode == "ar" ? 1 : 2,
EasyLocalization.of(context)?.locale.languageCode == "ar"
? 1
: 2,
), ),
); );
ThemeData data = AppTheme.getTheme( ThemeData data = AppTheme.getTheme(isArabic: EasyLocalization.of(context)?.locale.languageCode == "ar");
isArabic:
EasyLocalization.of(context)?.locale.languageCode == "ar");
return MaterialApp( return MaterialApp(
theme: AppTheme.getTheme( theme: AppTheme.getTheme(isArabic: EasyLocalization.of(context)?.locale.languageCode == "ar"),
isArabic:
EasyLocalization.of(context)?.locale.languageCode == "ar"),
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
localizationsDelegates: context.localizationDelegates, localizationsDelegates: context.localizationDelegates,
supportedLocales: context.supportedLocales, supportedLocales: context.supportedLocales,

@ -1,324 +0,0 @@
import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;
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/general_models/m_response.dart';
import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/models/provider_branches_models/profile/branch.dart';
import 'package:mc_common_app/models/provider_branches_models/profile/categroy.dart';
import 'package:mc_common_app/models/provider_branches_models/profile/document.dart';
import 'package:mc_common_app/models/provider_branches_models/profile/services.dart';
import 'package:mc_common_app/models/provider_branches_models/provider_model.dart';
abstract class BranchRepo {
Future<MResponse> createBranch(String branchName, String branchDescription,
String cityId, String address, String latitude, String longitude);
Future<MResponse> updateBranch(
int id,
String branchName,
String branchDescription,
String cityId,
String address,
String latitude,
String longitude,
{bool isNeedToDelete = true});
Future<Branch> fetchAllBranches();
Future<Category> fetchBranchCategory();
Future<Services> fetchServicesByCategoryId(String serviceCategoryId);
Future<Services> fetchProviderServices(String branchID, String serviceCategoryId);
Future<MResponse> createNewService(List<Map<String, dynamic>> map);
Future<Document> getServiceProviderDocument(dynamic userId);
Future<MResponse> serviceProviderDocumentsUpdate(
List<DocumentData>? documents);
Future<ProviderModel> getBranchAndServices();
Future<MResponse> createService(List<Map<String, dynamic>> map);
Future<MResponse> updateService(List<Map<String, dynamic>> map);
Future<MResponse> getMatchedServices(
int oldBranchId, int newBranchId, int categoryId);
Future<MResponse> duplicateItems(Map<String, dynamic> map);
Future<MResponse> getAllProviderDealers(Map<String, dynamic> map);
Future<MResponse> getBranchUsers(Map<String, dynamic> map);
Future<MResponse> assignDealerToBranch(Map<String, dynamic> map);
Future<MResponse> removeDealerFromBranch(Map<String, dynamic> map);
Future<MResponse> addNewServicesInAppointment(Map<String, dynamic> map);
}
class BranchRepoImp implements BranchRepo {
@override
Future<MResponse> createBranch(String branchName, String branchDescription,
String cityId, String address, String latitude, String longitude) async {
var postParams = {
"serviceProviderID": AppState().getUser.data?.userInfo?.providerId ?? "",
"branchName": branchName,
"branchDescription": branchDescription,
"cityID": cityId,
"address": address,
"latitude": latitude,
"longitude": longitude,
"isActive": true
};
String t = AppState().getUser.data!.accessToken ?? "";
debugPrint("token " + t);
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json),
ApiConsts.createProviderBranch,
postParams,
token: t);
}
@override
Future<Branch> fetchAllBranches() async {
var postParams = {
"ServiceProviderID":
AppState().getUser.data?.userInfo?.providerId.toString() ?? ""
};
String t = AppState().getUser.data!.accessToken ?? "";
debugPrint("token " + t);
return await injector.get<ApiClient>().getJsonForObject(
(json) => Branch.fromJson(json), ApiConsts.ServiceProviderBranchGet,
queryParameters: postParams, token: t);
}
@override
Future<Category> fetchBranchCategory() async {
var postParams = {
"ServiceProviderID":
AppState().getUser.data?.userInfo?.providerId.toString() ?? ""
};
String t = AppState().getUser.data!.accessToken ?? "";
debugPrint("token " + t);
return await injector.get<ApiClient>().getJsonForObject(
(json) => Category.fromJson(json), ApiConsts.ServiceCategory_Get,
queryParameters: postParams, token: t);
}
@override
Future<Services> fetchServicesByCategoryId(String serviceCategoryId) async {
var postParams = {"ServiceCategoryID": serviceCategoryId};
String t = AppState().getUser.data!.accessToken ?? "";
debugPrint("token " + t);
return await injector.get<ApiClient>().getJsonForObject(
(json) => Services.fromJson(json), ApiConsts.Services_Get,
queryParameters: postParams, token: t);
}
@override
Future<MResponse> createNewService(List<Map<String, dynamic>> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json),
ApiConsts.ServiceProviderService_Create,
map,
token: t);
}
@override
Future<Document> getServiceProviderDocument(dynamic userId) async {
var queryParameters = {
"ServiceProviderID": userId.toString(),
};
String? token = AppState().getUser.data?.accessToken;
debugPrint(token);
return await injector.get<ApiClient>().getJsonForObject(
(json) => Document.fromJson(json), ApiConsts.GetProviderDocument,
queryParameters: queryParameters,
token: AppState().getUser.data!.accessToken ?? "");
}
@override
Future<MResponse> serviceProviderDocumentsUpdate(
List<DocumentData>? documents) async {
List<Map<String, dynamic>> map = [];
for (int i = 0; i < documents!.length; i++) {
if (documents[i].document != null) {
var postParams = {
"id": documents[i].id,
"serviceProviderID": documents[i].serviceProviderId,
"documentID": documents[i].documentId,
"documentExt": documents[i].fileExt,
"documentImage": documents[i].document,
"isActive": true
};
map.add(postParams);
}
}
String t = AppState().getUser.data!.accessToken ?? "";
debugPrint("token " + t);
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json),
ApiConsts.ServiceProviderDocument_Update,
map,
token: t);
}
@override
Future<ProviderModel> getBranchAndServices() async {
var postParams = {
"serviceProviderID":
AppState().getUser.data?.userInfo?.providerId.toString() ?? ""
};
String t = AppState().getUser.data!.accessToken ?? "";
print("tokeen121 " + t);
return await injector.get<ApiClient>().getJsonForObject(
(json) => ProviderModel.fromJson(json), ApiConsts.BranchesAndServices,
queryParameters: postParams, token: t);
}
@override
Future<MResponse> updateBranch(
int id,
String branchName,
String branchDescription,
String cityId,
String address,
String latitude,
String longitude,
{bool isNeedToDelete = true}) async {
String lat = "0", long = "0";
try {
lat = latitude.substring(0, 9);
long = longitude.substring(0, 9);
} catch (e) {}
var postParams = {
"id": id,
"serviceProviderID": AppState().getUser.data?.userInfo?.providerId ?? "",
"branchName": branchName,
"branchDescription": branchDescription,
"cityID": cityId,
"address": address,
"latitude": lat,
"longitude": long,
"isActive": isNeedToDelete
};
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json),
ApiConsts.updateProviderBranch,
postParams,
token: t);
}
@override
Future<MResponse> createService(List<Map<String, dynamic>> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json),
ApiConsts.ServiceProviderService_Create,
map,
token: t);
}
@override
Future<MResponse> updateService(List<Map<String, dynamic>> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json),
ApiConsts.ServiceProviderService_Update,
map,
token: t);
}
@override
Future<MResponse> getMatchedServices(
int oldBranchId, int newBranchId, int categoryId) async {
var postParams = {
"ProviderBranchIDExisted": oldBranchId.toString(),
"ProviderBranchIDNew": newBranchId.toString(),
"CategoryID": categoryId.toString(),
};
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().getJsonForObject(
(json) => MResponse.fromJson(json), ApiConsts.getMatchedServices,
queryParameters: postParams, token: t);
}
@override
Future<MResponse> duplicateItems(Map<String, dynamic> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json), ApiConsts.duplicateItems, map,
token: t);
}
@override
Future<MResponse> getAllProviderDealers(Map<String, dynamic> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().getJsonForObject(
(json) => MResponse.fromJson(json), ApiConsts.getAllProviderDealers,
queryParameters: map, token: t);
}
@override
Future<MResponse> getBranchUsers(Map<String, dynamic> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().getJsonForObject(
(json) => MResponse.fromJson(json), ApiConsts.getBranchUser,
queryParameters: map, token: t);
}
@override
Future<MResponse> assignDealerToBranch(Map<String, dynamic> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json), ApiConsts.assignDealerToBranch, map,
token: t);
}
@override
Future<MResponse> removeDealerFromBranch(Map<String, dynamic> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json),
ApiConsts.removeDealerFromBranch,
map,
token: t);
}
@override
Future<Services> fetchProviderServices(String branchID, String serviceCategoryId) async {
var postParams = {
"ServiceCategoryID": serviceCategoryId,
"ProviderBranchID": branchID,
};
String t = AppState().getUser.data!.accessToken ?? "";
debugPrint("token " + t);
return await injector.get<ApiClient>().getJsonForObject(
(json) => Services.fromJson(json), ApiConsts.GetProviderServices,
queryParameters: postParams, token: t);
}
@override
Future<MResponse> addNewServicesInAppointment(Map<String, dynamic> map) async {
String t = AppState().getUser.data!.accessToken ?? "";
return await injector.get<ApiClient>().postJsonForObject(
(json) => MResponse.fromJson(json),
ApiConsts.AddNewServicesInAppointment,
map,
token: t);
}
}

@ -1,4 +1,3 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mc_common_app/api/api_client.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/app_state.dart';
@ -7,7 +6,6 @@ import 'package:mc_common_app/config/dependencies.dart';
import 'package:mc_common_app/models/general_models/m_response.dart'; import 'package:mc_common_app/models/general_models/m_response.dart';
import 'package:mc_common_app/models/services_models/item_model.dart'; import 'package:mc_common_app/models/services_models/item_model.dart';
abstract class ItemsRepo { abstract class ItemsRepo {
Future<MResponse> createServiceItems(Map map); Future<MResponse> createServiceItems(Map map);
@ -41,6 +39,5 @@ class ItemsRepoImp implements ItemsRepo {
String t = AppState().getUser.data!.accessToken ?? ""; String t = AppState().getUser.data!.accessToken ?? "";
debugPrint(t); debugPrint(t);
return await injector.get<ApiClient>().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.updateServiceItem, map, token: t); return await injector.get<ApiClient>().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.updateServiceItem, map, token: t);
} }
} }

@ -235,14 +235,11 @@
// } // }
// } // }
import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:mc_common_app/repositories/branch_repo.dart';
import 'package:car_provider_app/repositories/branch_repo.dart';
import 'package:file_picker/file_picker.dart'; import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:mc_common_app/models/general_models/m_response.dart'; import 'package:mc_common_app/models/general_models/m_response.dart';
import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart'; import 'package:mc_common_app/models/provider_branches_models/branch_detail_model.dart';
import 'package:mc_common_app/models/provider_branches_models/profile/categroy.dart'; import 'package:mc_common_app/models/provider_branches_models/profile/categroy.dart';
import 'package:mc_common_app/models/provider_branches_models/profile/document.dart'; import 'package:mc_common_app/models/provider_branches_models/profile/document.dart';
@ -251,7 +248,6 @@ import 'package:mc_common_app/models/provider_branches_models/provider_model.dar
import 'package:mc_common_app/models/services_models/item_model.dart'; import 'package:mc_common_app/models/services_models/item_model.dart';
import 'package:mc_common_app/models/services_models/service_model.dart'; import 'package:mc_common_app/models/services_models/service_model.dart';
import 'package:mc_common_app/models/user_models/branch_user.dart'; import 'package:mc_common_app/models/user_models/branch_user.dart';
import 'package:mc_common_app/models/user_models/cities.dart'; import 'package:mc_common_app/models/user_models/cities.dart';
import 'package:mc_common_app/models/user_models/country.dart'; import 'package:mc_common_app/models/user_models/country.dart';
import 'package:mc_common_app/repositories/common_repo.dart'; import 'package:mc_common_app/repositories/common_repo.dart';
@ -298,7 +294,7 @@ class ServiceVM extends BaseVM {
setState(ViewState.idle); setState(ViewState.idle);
} }
Future<void> selectFile(BuildContext context,int index) async { Future<void> selectFile(BuildContext context, int index) async {
final File? file = await commonServices.pickFile( final File? file = await commonServices.pickFile(
context, context,
fileType: FileType.custom, fileType: FileType.custom,
@ -348,8 +344,7 @@ class ServiceVM extends BaseVM {
setState(ViewState.idle); setState(ViewState.idle);
} }
Future<void> getAllCountriesList( Future<void> getAllCountriesList(BranchDetailModel? branchData, String countryCode) async {
BranchDetailModel? branchData, String countryCode) async {
cities = null; cities = null;
country = null; country = null;
setState(ViewState.busy); setState(ViewState.busy);
@ -361,9 +356,7 @@ class ServiceVM extends BaseVM {
countryId = element.id ?? -1; countryId = element.id ?? -1;
countryValue = DropValue( countryValue = DropValue(
element.id ?? 0, element.id ?? 0,
countryCode == "SA" countryCode == "SA" ? (element.countryNameN ?? "") : (element.countryName ?? ""),
? (element.countryNameN ?? "")
: (element.countryName ?? ""),
element.countryCode ?? "", element.countryCode ?? "",
); );
} }
@ -371,9 +364,7 @@ class ServiceVM extends BaseVM {
countryDropList.add( countryDropList.add(
DropValue( DropValue(
element.id ?? 0, element.id ?? 0,
countryCode == "SA" countryCode == "SA" ? (element.countryNameN ?? "") : (element.countryName ?? ""),
? (element.countryNameN ?? "")
: (element.countryName ?? ""),
element.countryCode ?? "", element.countryCode ?? "",
), ),
); );
@ -384,8 +375,7 @@ class ServiceVM extends BaseVM {
setState(ViewState.idle); setState(ViewState.idle);
} }
Future<void> getAllCities( Future<void> getAllCities(BranchDetailModel? branchData, String countryCode) async {
BranchDetailModel? branchData, String countryCode) async {
setState(ViewState.busy); setState(ViewState.busy);
citiesDropList = []; citiesDropList = [];
cities = null; cities = null;
@ -404,9 +394,7 @@ class ServiceVM extends BaseVM {
cityId = branchData.cityId!; cityId = branchData.cityId!;
cityValue = DropValue( cityValue = DropValue(
element.id ?? 0, element.id ?? 0,
countryCode == "SA" countryCode == "SA" ? (element.cityNameN ?? "") : (element.cityName ?? ""),
? (element.cityNameN ?? "")
: (element.cityName ?? ""),
element.id.toString() ?? "", element.id.toString() ?? "",
); );
} }
@ -414,9 +402,7 @@ class ServiceVM extends BaseVM {
citiesDropList.add( citiesDropList.add(
DropValue( DropValue(
element.id ?? 0, element.id ?? 0,
countryCode == "SA" countryCode == "SA" ? (element.cityNameN ?? "") : (element.cityName ?? ""),
? (element.cityNameN ?? "")
: (element.cityName ?? ""),
element.id.toString() ?? "", element.id.toString() ?? "",
), ),
); );
@ -424,10 +410,8 @@ class ServiceVM extends BaseVM {
setState(ViewState.idle); setState(ViewState.idle);
} }
Future<MResponse> createBranch(String branchName, String branchDescription, Future<MResponse> createBranch(String branchName, String branchDescription, String cityId, String address, String latitude, String longitude) async {
String cityId, String address, String latitude, String longitude) async { return await branchRepo.createBranch(branchName, branchDescription, cityId.toString(), address, latitude.toString(), longitude.toString());
return await branchRepo.createBranch(branchName, branchDescription,
cityId.toString(), address, latitude.toString(), longitude.toString());
} }
Future<MResponse> updateBranch( Future<MResponse> updateBranch(
@ -498,10 +482,10 @@ class ServiceVM extends BaseVM {
setState(ViewState.idle); setState(ViewState.idle);
} }
Future<void> fetchServicesByCategoryId(String categoryId) async { Future<void> fetchServicesByCategoryId(int categoryId) async {
servicesDropList = []; servicesDropList = [];
setState(ViewState.busy); setState(ViewState.busy);
services = await branchRepo.fetchServicesByCategoryId(categoryId); services = await branchRepo.fetchServicesByCategoryId(serviceCategoryId: categoryId); // to get all the services
for (var element in services!.data!) { for (var element in services!.data!) {
servicesDropList.add( servicesDropList.add(
@ -549,16 +533,13 @@ class ServiceVM extends BaseVM {
List<ServiceModel>? matchedServices; List<ServiceModel>? matchedServices;
bool isAllSelected = false; bool isAllSelected = false;
Future<void> getAllMatchedServices( Future<void> getAllMatchedServices(int oldBranchId, int newBranchId, int categoryId) async {
int oldBranchId, int newBranchId, int categoryId) async {
matchedServices = null; matchedServices = null;
final MResponse response = await branchRepo.getMatchedServices( final MResponse response = await branchRepo.getMatchedServices(oldBranchId, newBranchId, categoryId);
oldBranchId, newBranchId, categoryId);
matchedServices = []; matchedServices = [];
if (response.messageStatus == 1) { if (response.messageStatus == 1) {
matchedServices = List<ServiceModel>.from( matchedServices = List<ServiceModel>.from(response.data.map((x) => ServiceModel.fromJson(x)));
response.data.map((x) => ServiceModel.fromJson(x)));
} }
notifyListeners(); notifyListeners();
} }
@ -599,8 +580,7 @@ class ServiceVM extends BaseVM {
MResponse response = await branchRepo.getAllProviderDealers(map); MResponse response = await branchRepo.getAllProviderDealers(map);
if (response.messageStatus == 1) { if (response.messageStatus == 1) {
allProviderDealersList = []; allProviderDealersList = [];
allProviderDealersList = List<BranchUser>.from( allProviderDealersList = List<BranchUser>.from(response.data.map((x) => BranchUser.fromJson(x)));
response.data.map((x) => BranchUser.fromJson(x)));
} }
setState(ViewState.idle); setState(ViewState.idle);
} }
@ -610,8 +590,7 @@ class ServiceVM extends BaseVM {
MResponse response = await branchRepo.getBranchUsers(map); MResponse response = await branchRepo.getBranchUsers(map);
if (response.messageStatus == 1) { if (response.messageStatus == 1) {
branchUserList = []; branchUserList = [];
branchUserList = List<BranchUser>.from( branchUserList = List<BranchUser>.from(response.data.map((x) => BranchUser.fromJson(x)));
response.data.map((x) => BranchUser.fromJson(x)));
} }
setState(ViewState.idle); setState(ViewState.idle);
} }

@ -35,19 +35,15 @@ class CreateServicesPage3 extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
ServiceVM serviceVM = context.read<ServiceVM>(); ServiceVM serviceVM = context.read<ServiceVM>();
if (branchModel!.categoryId == null) { if (branchModel!.categoryId == null) {
serviceVM.fetchBranchCategory( serviceVM.fetchBranchCategory(EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA");
EasyLocalization.of(context)?.currentLocale?.countryCode ?? "SA");
} else { } else {
isAppointmentAvailable = isAppointmentAvailable = branchModel?.serviceProviderService?.isAllowAppointment ?? false;
branchModel?.serviceProviderService?.isAllowAppointment ?? false;
// isHomeAppointmentAvailable=branchModel.serviceProviderService. // isHomeAppointmentAvailable=branchModel.serviceProviderService.
serviceRage = serviceRage = branchModel?.serviceProviderService?.customerLocationRange ?? 0;
branchModel?.serviceProviderService?.customerLocationRange ?? 0;
if (serviceRage > 0) { if (serviceRage > 0) {
isHomeAppointmentAvailable = true; isHomeAppointmentAvailable = true;
} }
chargersPerKm = chargersPerKm = branchModel?.serviceProviderService?.rangePricePerKm ?? "0";
branchModel?.serviceProviderService?.rangePricePerKm ?? "0";
serviceId = branchModel?.serviceProviderService?.serviceId ?? -1; serviceId = branchModel?.serviceProviderService?.serviceId ?? -1;
} }
return Scaffold( return Scaffold(
@ -72,8 +68,7 @@ class CreateServicesPage3 extends StatelessWidget {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
).toContainer( ).toContainer(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(left: 8, right: 8, bottom: 12, top: 12),
left: 8, right: 8, bottom: 12, top: 12),
backgroundColor: MyColors.textFieldColor, backgroundColor: MyColors.textFieldColor,
borderRadius: 0, borderRadius: 0,
width: double.infinity, width: double.infinity,
@ -87,14 +82,12 @@ class CreateServicesPage3 extends StatelessWidget {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
).toContainer( ).toContainer(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(left: 8, right: 8, bottom: 12, top: 12),
left: 8, right: 8, bottom: 12, top: 12),
backgroundColor: MyColors.textFieldColor, backgroundColor: MyColors.textFieldColor,
borderRadius: 0, borderRadius: 0,
width: double.infinity, width: double.infinity,
) )
: (branchModel!.categoryId == null && : (branchModel!.categoryId == null && model.categoryDropList.isNotEmpty)
model.categoryDropList.isNotEmpty)
? DropdownField( ? DropdownField(
(DropValue value) async { (DropValue value) async {
categoryId = value.id; categoryId = value.id;
@ -103,28 +96,23 @@ class CreateServicesPage3 extends StatelessWidget {
serviceId = -1; serviceId = -1;
isAppointmentAvailable = false; isAppointmentAvailable = false;
isHomeAppointmentAvailable = false; isHomeAppointmentAvailable = false;
model.fetchServicesByCategoryId( model.fetchServicesByCategoryId(value.id);
value.id.toString());
}, },
dropdownValue: category, dropdownValue: category,
list: model.categoryDropList, list: model.categoryDropList,
hint: hint: LocaleKeys.selectServiceCategory.tr(),
LocaleKeys.selectServiceCategory.tr(),
) )
: const CircularProgressIndicator(), : const CircularProgressIndicator(),
12.height, 12.height,
branchModel!.serviceProviderService != null branchModel!.serviceProviderService != null
? Text( ? Text(
branchModel!.serviceProviderService! branchModel!.serviceProviderService!.serviceDescription ?? "N/A",
.serviceDescription ??
"N/A",
style: const TextStyle( style: const TextStyle(
fontSize: 12, fontSize: 12,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
).toContainer( ).toContainer(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(left: 8, right: 8, bottom: 12, top: 12),
left: 8, right: 8, bottom: 12, top: 12),
backgroundColor: MyColors.textFieldColor, backgroundColor: MyColors.textFieldColor,
borderRadius: 0, borderRadius: 0,
width: double.infinity, width: double.infinity,
@ -153,8 +141,7 @@ class CreateServicesPage3 extends StatelessWidget {
CheckBoxWithTitleDescription( CheckBoxWithTitleDescription(
isSelected: isAppointmentAvailable, isSelected: isAppointmentAvailable,
title: 'Available for appointment', title: 'Available for appointment',
description: description: 'This option will allow customer to book appointment for these services',
'This option will allow customer to book appointment for these services',
onSelection: (bool v) { onSelection: (bool v) {
isAppointmentAvailable = v; isAppointmentAvailable = v;
model.setState(ViewState.idle); model.setState(ViewState.idle);
@ -164,8 +151,7 @@ class CreateServicesPage3 extends StatelessWidget {
CheckBoxWithTitleDescription( CheckBoxWithTitleDescription(
isSelected: isHomeAppointmentAvailable, isSelected: isHomeAppointmentAvailable,
title: 'Allow home services', title: 'Allow home services',
description: description: 'This option will allow customer to book appointment at their desired location',
'This option will allow customer to book appointment at their desired location',
onSelection: (bool v) { onSelection: (bool v) {
isHomeAppointmentAvailable = v; isHomeAppointmentAvailable = v;
model.setState(ViewState.idle); model.setState(ViewState.idle);
@ -178,18 +164,13 @@ class CreateServicesPage3 extends StatelessWidget {
TxtField( TxtField(
hint: "Home Services Range", hint: "Home Services Range",
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
value: serviceRage == 0 value: serviceRage == 0 ? null : serviceRage.toString(),
? null
: serviceRage.toString(),
postfixWidget: Row( postfixWidget: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: crossAxisAlignment: CrossAxisAlignment.center,
CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
mainAxisAlignment:
MainAxisAlignment.center,
children: [ children: [
"KM".toText( "KM".toText(color: MyColors.lightTextColor),
color: MyColors.lightTextColor),
], ],
), ),
onChanged: (v) { onChanged: (v) {
@ -204,9 +185,7 @@ class CreateServicesPage3 extends StatelessWidget {
TxtField( TxtField(
hint: "Charges per Kilometer", hint: "Charges per Kilometer",
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
value: chargersPerKm == "0.0" value: chargersPerKm == "0.0" ? null : chargersPerKm,
? null
: chargersPerKm,
onChanged: (v) { onChanged: (v) {
if (v.isNotEmpty) { if (v.isNotEmpty) {
chargersPerKm = v; chargersPerKm = v;

Loading…
Cancel
Save