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

115 lines
3.5 KiB
Dart

import 'package:mc_common_app/models/appointments_models/schedule_model.dart';
import 'package:mc_common_app/models/general_models/m_response.dart';
import 'package:mc_common_app/models/provider_branches_models/profile/services.dart';
import 'package:car_provider_app/repositories/schedule_repo.dart';
import 'package:car_provider_app/views/settings/schedule/widgets/chips_picker_item.dart';
import 'package:mc_common_app/utils/enums.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);
}
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<MResponse> createSchedule(Map map) async {
MResponse response = await scheduleRepo.createSchedule(map);
return response;
}
Future<MResponse> addServicesInSchedule(Map map) async {
MResponse response = await scheduleRepo.addServicesInSchedule(map);
return response;
}
getSchedules(String branchId) async {
schedule = null;
schedule = await scheduleRepo.getSchedules(branchId);
setState(ViewState.idle);
}
Future<MResponse> updateSchedule(Map map) async {
MResponse response = await scheduleRepo.updateSchedule(map);
return response;
}
Future<MResponse> updateServicesInSchedule(Map map) async {
MResponse response = await scheduleRepo.updateServicesInSchedule(map);
return response;
}
}