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.
115 lines
3.5 KiB
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;
|
|
}
|
|
}
|