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.
112 lines
4.6 KiB
Dart
112 lines
4.6 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/generic_resp_model.dart';
|
|
import 'package:mc_common_app/models/m_response.dart';
|
|
import 'package:mc_common_app/models/provider_branches_models/profile/services.dart';
|
|
import 'package:mc_common_app/models/schedule_model.dart';
|
|
import 'package:mc_common_app/models/service_schedule_model.dart';
|
|
|
|
abstract class ScheduleRepo {
|
|
Future<Services> getAllServices(String branchId);
|
|
|
|
Future<MResponse> createSchedule(Map map);
|
|
|
|
Future<MResponse> addServicesInSchedule(Map map);
|
|
|
|
Future<MResponse> updateSchedule(Map map);
|
|
|
|
Future<List<ScheduleData>> getSchedules(String branchId);
|
|
|
|
Future<MResponse> updateServicesInSchedule(Map map);
|
|
|
|
Future<List<ServiceAppointmentScheduleModel>> mergeServiceIntoAvailableSchedules({required int appointmentType, required List<String> serviceItemIds});
|
|
|
|
Future<void> createServiceAppointment({required List<String> serviceItemIds, required int serviceSlotID});
|
|
}
|
|
|
|
class ScheduleRepoImp implements ScheduleRepo {
|
|
@override
|
|
Future<Services> getAllServices(String branchId) async {
|
|
Map<String, dynamic> map = {"ProviderBranchID": branchId};
|
|
String t = AppState().getUser.data!.accessToken ?? "";
|
|
return await injector.get<ApiClient>().getJsonForObject((json) => Services.fromJson(json), ApiConsts.getServicesOfBranch, token: t, queryParameters: map);
|
|
}
|
|
|
|
@override
|
|
Future<MResponse> createSchedule(Map map) async {
|
|
String t = AppState().getUser.data!.accessToken ?? "";
|
|
return await injector.get<ApiClient>().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.createSchedule, map, token: t);
|
|
}
|
|
|
|
@override
|
|
Future<MResponse> addServicesInSchedule(Map map) async {
|
|
String t = AppState().getUser.data!.accessToken ?? "";
|
|
return await injector.get<ApiClient>().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.createGroup, map, token: t);
|
|
}
|
|
|
|
@override
|
|
Future<List<ScheduleData>> getSchedules(String branchId) async {
|
|
Map<String, dynamic> map = {"ServiceProviderBranchID": branchId};
|
|
String t = AppState().getUser.data!.accessToken ?? "";
|
|
|
|
GenericRespModel adsGenericModel = await injector.get<ApiClient>().getJsonForObject(
|
|
(json) => GenericRespModel.fromJson(json),
|
|
ApiConsts.getSchedule,
|
|
token: t,
|
|
queryParameters: map,
|
|
);
|
|
|
|
return List.generate(adsGenericModel.data.length, (index) => ScheduleData.fromJson(adsGenericModel.data[index]));
|
|
}
|
|
|
|
@override
|
|
Future<MResponse> updateSchedule(Map map) async {
|
|
String t = AppState().getUser.data!.accessToken ?? "";
|
|
return await injector.get<ApiClient>().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.updateSchedule, map, token: t);
|
|
}
|
|
|
|
@override
|
|
Future<MResponse> updateServicesInSchedule(Map map) async {
|
|
String t = AppState().getUser.data!.accessToken ?? "";
|
|
return await injector.get<ApiClient>().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.updateGroup, map, token: t);
|
|
}
|
|
|
|
Future<List<ServiceAppointmentScheduleModel>> mergeServiceIntoAvailableSchedules({required int appointmentType, required List<String> serviceItemIds}) async {
|
|
String t = AppState().getUser.data!.accessToken ?? "";
|
|
var queryParameters = {
|
|
"appointmentType": appointmentType,
|
|
"ServiceItemIDs": serviceItemIds,
|
|
};
|
|
GenericRespModel adsGenericModel = await injector.get<ApiClient>().postJsonForObject(
|
|
(json) => GenericRespModel.fromJson(json),
|
|
ApiConsts.GetServiceItemAppointmentScheduleSlots,
|
|
queryParameters,
|
|
token: t,
|
|
);
|
|
List<ServiceAppointmentScheduleModel> serviceAppointmentScheduleModel =
|
|
List.generate(adsGenericModel.data.length, (index) => ServiceAppointmentScheduleModel.fromJson(adsGenericModel.data[index]));
|
|
return serviceAppointmentScheduleModel;
|
|
}
|
|
|
|
Future<void> createServiceAppointment({required List<String> serviceItemIds, required int serviceSlotID}) async {
|
|
String t = AppState().getUser.data!.accessToken ?? "";
|
|
var queryParameters = {
|
|
"id": 0,
|
|
"serviceSlotID": serviceSlotID,
|
|
"appointmentStatusID": 0,
|
|
"serviceProviderID": 0,
|
|
"customerID": 0,
|
|
"isActive": true,
|
|
"serviceItemID": [11]
|
|
};
|
|
GenericRespModel adsGenericModel = await injector.get<ApiClient>().postJsonForObject(
|
|
(json) => GenericRespModel.fromJson(json),
|
|
ApiConsts.ServiceProvidersAppointmentCreate,
|
|
queryParameters,
|
|
token: t,
|
|
);
|
|
}
|
|
}
|