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.
car_provider_app/lib/view_models/schedule_view_model.dart

139 lines
4.4 KiB
Dart

2 years ago
import 'package:mc_common_app/models/appointments_models/schedule_model.dart';
1 year ago
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);
}
1 year ago
String currentSelectedBranchName = "";
1 year ago
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 ?? "");
}
}
1 year ago
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);
}
1 year ago
Future<GenericRespModel> createSchedule(Map map) async {
GenericRespModel response = await scheduleRepo.createSchedule(map);
return response;
}
12 months ago
Future<GenericRespModel> checkServiceGroupInBranchSchedule(Map map) async {
GenericRespModel response = await scheduleRepo.checkServiceGroupInBranchSchedule(map);
return response;
}
1 year ago
Future<GenericRespModel> addServicesInSchedule(Map map) async {
GenericRespModel response = await scheduleRepo.addServicesInSchedule(map);
return response;
}
7 months ago
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);
}
}
1 year ago
Future<GenericRespModel> updateSchedule(Map map) async {
GenericRespModel response = await scheduleRepo.updateSchedule(map);
return response;
}
1 year ago
Future<GenericRespModel> updateServicesInSchedule(Map map) async {
GenericRespModel response = await scheduleRepo.updateServicesInSchedule(map);
return response;
}
}