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_common_app/lib/models/service_schedule_model.dart

181 lines
5.5 KiB
Dart

import 'package:mc_common_app/extensions/string_extensions.dart';
import 'package:mc_common_app/models/services/item_model.dart';
import 'package:mc_common_app/models/widgets_models.dart';
class ServiceAppointmentScheduleModel {
List<ServiceSlotList>? serviceSlotList;
List<ItemData>? serviceItemList;
String? selectedDate;
String? selectedTimeSlot;
List<TimeSlotModel>? availableDates;
List<TimeSlotModel>? availableTimeSlots;
double? amountToPay;
double? amountTotal;
double? amountRem;
ServiceAppointmentScheduleModel({
this.serviceSlotList,
this.serviceItemList,
this.selectedDate,
this.selectedTimeSlot,
this.availableDates,
this.availableTimeSlots,
this.amountToPay,
this.amountTotal,
this.amountRem,
});
List<TimeSlotModel> getFormattedSlotTimes() {
var seenSlots = <TimeSlotModel>{};
var slotTimeData = serviceSlotList!
.where((slot) => seenSlots.add(TimeSlotModel(
slot: slot.startTime!,
slotId: slot.id!,
isSelected: false,
)))
.toList();
List<TimeSlotModel> slotTime = [];
for (var element in slotTimeData) {
slotTime.add(TimeSlotModel(isSelected: false, slotId: element.id!, slot: element.slotDate ?? ""));
}
return slotTime;
}
List<TimeSlotModel> getFormattedSlotDates() {
var seenDates = <TimeSlotModel>{};
var slotDatesData = serviceSlotList!
.where((slot) => seenDates.add(TimeSlotModel(
slot: slot.slotDate!,
slotId: slot.id!,
isSelected: false,
)))
.toList();
List<TimeSlotModel> slotDates = [];
for (var element in slotDatesData) {
slotDates.add(TimeSlotModel(isSelected: false, slotId: element.id!, slot: element.slotDate!.toFormattedDateWithoutTime() ?? ""));
}
return slotDates;
}
//TODO: I WILL START FROM HERE; I NEED TO ONLY PICK THE DISTINCT DATES FROM THE RESPONSE AND THEN BASED ON THE DATE SELECTION I WILL PICK THEIR SLOTS.
//TODO: AFTER THAT, I WILL
ServiceAppointmentScheduleModel.fromJson(Map<String, dynamic> json) {
if (json['serviceSlotList'] != null) {
serviceSlotList = <ServiceSlotList>[];
json['serviceSlotList'].forEach((v) {
serviceSlotList!.add(ServiceSlotList.fromJson(v));
});
}
if (json['serviceItemList'] != null) {
serviceItemList = <ItemData>[];
json['serviceItemList'].forEach((v) {
serviceItemList!.add(ItemData.fromJson(v));
});
}
amountToPay = json['amountToPay'];
selectedDate = '';
selectedTimeSlot = '';
availableDates = getFormattedSlotDates();
availableTimeSlots = getFormattedSlotTimes();
amountTotal = json['amountTotal'];
amountRem = json['amountRem'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
if (serviceSlotList != null) {
data['serviceSlotList'] = serviceSlotList!.map((v) => v.toJson()).toList();
}
if (serviceItemList != null) {
data['serviceItemList'] = serviceItemList!.map((v) => v.toJson()).toList();
}
data['amountToPay'] = amountToPay;
data['amountTotal'] = amountTotal;
data['amountRem'] = amountRem;
return data;
}
}
class ServiceSlotList {
int? id;
int? branchAppointmentScheduleID;
String? branchAppointmentSchedule;
int? serviceProviderID;
String? slotDate;
String? startTime;
String? endTime;
int? bookAppointment;
int? allowAppointment;
int? slotDurationMinute;
int? appointmentType;
bool? isActive;
int? createdBy;
String? createdOn;
int? modifiedBy;
String? modifiedOn;
ServiceSlotList(
{this.id,
this.branchAppointmentScheduleID,
this.branchAppointmentSchedule,
this.serviceProviderID,
this.slotDate,
this.startTime,
this.endTime,
this.bookAppointment,
this.allowAppointment,
this.slotDurationMinute,
this.appointmentType,
this.isActive,
this.createdBy,
this.createdOn,
this.modifiedBy,
this.modifiedOn});
ServiceSlotList.fromJson(Map<String, dynamic> json) {
id = json['id'];
branchAppointmentScheduleID = json['branchAppointmentScheduleID'];
branchAppointmentSchedule = json['branchAppointmentSchedule'];
serviceProviderID = json['serviceProviderID'];
slotDate = json['slotDate'];
startTime = json['startTime'];
endTime = json['endTime'];
bookAppointment = json['bookAppointment'];
allowAppointment = json['allowAppointment'];
slotDurationMinute = json['slotDurationMinute'];
appointmentType = json['appointmentType'];
isActive = json['isActive'];
createdBy = json['createdBy'];
createdOn = json['createdOn'];
modifiedBy = json['modifiedBy'];
modifiedOn = json['modifiedOn'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['branchAppointmentScheduleID'] = branchAppointmentScheduleID;
data['branchAppointmentSchedule'] = branchAppointmentSchedule;
data['serviceProviderID'] = serviceProviderID;
data['slotDate'] = slotDate;
data['startTime'] = startTime;
data['endTime'] = endTime;
data['bookAppointment'] = bookAppointment;
data['allowAppointment'] = allowAppointment;
data['slotDurationMinute'] = slotDurationMinute;
data['appointmentType'] = appointmentType;
data['isActive'] = isActive;
data['createdBy'] = createdBy;
data['createdOn'] = createdOn;
data['modifiedBy'] = modifiedBy;
data['modifiedOn'] = modifiedOn;
return data;
}
}