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 getAllServices(String branchId); Future createSchedule(Map map); Future addServicesInSchedule(Map map); Future updateSchedule(Map map); Future> getSchedules(String branchId); Future updateServicesInSchedule(Map map); Future> mergeServiceIntoAvailableSchedules({ required List serviceItemIdsForHome, required List serviceItemIdsForWorkshop, }); Future createServiceAppointment({required List serviceItemIds, required int serviceSlotID}); } class ScheduleRepoImp implements ScheduleRepo { @override Future getAllServices(String branchId) async { Map map = {"ProviderBranchID": branchId}; String t = AppState().getUser.data!.accessToken ?? ""; return await injector.get().getJsonForObject((json) => Services.fromJson(json), ApiConsts.getServicesOfBranch, token: t, queryParameters: map); } @override Future createSchedule(Map map) async { String t = AppState().getUser.data!.accessToken ?? ""; return await injector.get().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.createSchedule, map, token: t); } @override Future addServicesInSchedule(Map map) async { String t = AppState().getUser.data!.accessToken ?? ""; return await injector.get().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.createGroup, map, token: t); } @override Future> getSchedules(String branchId) async { Map map = {"ServiceProviderBranchID": branchId}; String t = AppState().getUser.data!.accessToken ?? ""; GenericRespModel adsGenericModel = await injector.get().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 updateSchedule(Map map) async { String t = AppState().getUser.data!.accessToken ?? ""; return await injector.get().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.updateSchedule, map, token: t); } @override Future updateServicesInSchedule(Map map) async { String t = AppState().getUser.data!.accessToken ?? ""; return await injector.get().postJsonForObject((json) => MResponse.fromJson(json), ApiConsts.updateGroup, map, token: t); } Future> mergeServiceIntoAvailableSchedules({ required List serviceItemIdsForHome, required List serviceItemIdsForWorkshop, }) async { String t = AppState().getUser.data!.accessToken ?? ""; var queryParameters = [ { "appointmentType": 2, "ServiceItemIDs": serviceItemIdsForHome, }, { "appointmentType": 1, "ServiceItemIDs": serviceItemIdsForWorkshop, } ]; GenericRespModel adsGenericModel = await injector.get().postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.GetServiceItemAppointmentScheduleSlots, queryParameters, token: t, ); List serviceAppointmentScheduleModel = List.generate(adsGenericModel.data.length, (index) => ServiceAppointmentScheduleModel.fromJson(adsGenericModel.data[index])); return serviceAppointmentScheduleModel; } Future createServiceAppointment({required List 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().postJsonForObject( (json) => GenericRespModel.fromJson(json), ApiConsts.ServiceProvidersAppointmentCreate, queryParameters, token: t, ); } }