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.
139 lines
4.4 KiB
Dart
139 lines
4.4 KiB
Dart
import 'package:mc_common_app/models/appointments_models/schedule_model.dart';
|
|
import 'package:mc_common_app/models/general_models/generic_resp_model.dart';
|
|
import 'package:mc_common_app/models/provider_branches_models/profile/services.dart';
|
|
import 'package:mc_common_app/repositories/schedule_repo.dart';
|
|
import 'package:car_provider_app/views/branch_management/schedule/widgets/chips_picker_item.dart';
|
|
import 'package:mc_common_app/utils/enums.dart';
|
|
import 'package:mc_common_app/utils/utils.dart';
|
|
import 'package:mc_common_app/view_models/base_view_model.dart';
|
|
|
|
List<PickerItem> initDaysList = [
|
|
PickerItem(id: 1, title: "Monday", isSelected: false),
|
|
PickerItem(id: 2, title: "Tuesday", isSelected: false),
|
|
PickerItem(id: 3, title: "Wednesday", isSelected: false),
|
|
PickerItem(id: 4, title: "Thursday", isSelected: false),
|
|
PickerItem(id: 5, title: "Friday", isSelected: false),
|
|
PickerItem(id: 6, title: "Saturday", isSelected: false),
|
|
PickerItem(id: 7, title: "Sunday", isSelected: false),
|
|
];
|
|
|
|
class ScheduleVM extends BaseVM {
|
|
ScheduleRepo scheduleRepo;
|
|
|
|
ScheduleVM({required this.scheduleRepo});
|
|
|
|
List<PickerItem> selectedServicesItems = [];
|
|
List<ServicesData>? servicesList;
|
|
List<PickerItem> selectedDaysItems = [];
|
|
Schedule? schedule;
|
|
|
|
refresh() {
|
|
setState(ViewState.idle);
|
|
}
|
|
|
|
String currentSelectedBranchName = "";
|
|
|
|
Future<GenericRespModel> setScheduleInactive(int scheduleId, int branchId) async {
|
|
GenericRespModel val = await scheduleRepo.setScheduleInActive(scheduleId, branchId);
|
|
if (val.messageStatus == 1) {
|
|
if (schedule!.data != null) {
|
|
schedule!.data!.removeWhere((element) => element.serviceProviderBranchId == branchId && element.id == scheduleId);
|
|
} else {
|
|
Utils.showToast(val.message ?? "");
|
|
}
|
|
}
|
|
return val;
|
|
}
|
|
|
|
getAllServices(String branchId, ScheduleData selectedSchedule) async {
|
|
// if (servicesList == null) {
|
|
servicesList = null;
|
|
Services services = await scheduleRepo.getAllServices(branchId);
|
|
if (services.messageStatus == 1) {
|
|
servicesList = services.data;
|
|
if (selectedSchedule.id != null) {
|
|
for (var element in servicesList!) {
|
|
for (var innerElement in selectedSchedule.scheduleServices!) {
|
|
if (element.id == innerElement.providerServiceId) {
|
|
element.isSelected = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
setState(ViewState.idle);
|
|
// }
|
|
}
|
|
|
|
filterSelectedServices() {
|
|
if (servicesList != null) {
|
|
selectedServicesItems = [];
|
|
for (var element in servicesList!) {
|
|
if (element.isSelected ?? false) {
|
|
selectedServicesItems.add(PickerItem(id: element.id ?? 0, title: element.description ?? ""));
|
|
}
|
|
}
|
|
setState(ViewState.idle);
|
|
}
|
|
}
|
|
|
|
//Days
|
|
List<PickerItem> intiDays() {
|
|
for (var element in initDaysList) {
|
|
element.isSelected = false;
|
|
for (var innerElement in selectedDaysItems) {
|
|
if (element.id == innerElement.id) {
|
|
element.isSelected = true;
|
|
}
|
|
}
|
|
}
|
|
return initDaysList;
|
|
}
|
|
|
|
filterDays(List<PickerItem> picked) {
|
|
selectedDaysItems = [];
|
|
for (var element in picked) {
|
|
if (element.isSelected ?? false) {
|
|
selectedDaysItems.add(element);
|
|
}
|
|
}
|
|
setState(ViewState.idle);
|
|
}
|
|
|
|
Future<GenericRespModel> createSchedule(Map map) async {
|
|
GenericRespModel response = await scheduleRepo.createSchedule(map);
|
|
return response;
|
|
}
|
|
|
|
Future<GenericRespModel> checkServiceGroupInBranchSchedule(Map map) async {
|
|
GenericRespModel response = await scheduleRepo.checkServiceGroupInBranchSchedule(map);
|
|
return response;
|
|
}
|
|
|
|
Future<GenericRespModel> addServicesInSchedule(Map map) async {
|
|
GenericRespModel response = await scheduleRepo.addServicesInSchedule(map);
|
|
return response;
|
|
}
|
|
|
|
Future<void> getSchedules(String branchId) async {
|
|
try {
|
|
setState(ViewState.busy);
|
|
schedule = null;
|
|
schedule = await scheduleRepo.getSchedules(branchId);
|
|
setState(ViewState.idle);
|
|
} catch (e) {
|
|
setState(ViewState.idle);
|
|
}
|
|
}
|
|
|
|
Future<GenericRespModel> updateSchedule(Map map) async {
|
|
GenericRespModel response = await scheduleRepo.updateSchedule(map);
|
|
return response;
|
|
}
|
|
|
|
Future<GenericRespModel> updateServicesInSchedule(Map map) async {
|
|
GenericRespModel response = await scheduleRepo.updateServicesInSchedule(map);
|
|
return response;
|
|
}
|
|
}
|