import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:customer/models/provider_serivce_model.dart'; import 'package:customer/models/tax_model.dart'; import 'package:customer/models/user_model.dart'; class OnProviderOrderModel { String authorID, payment_method; UserModel author; Timestamp createdAt; String? sectionId; ProviderServiceModel provider; String status; ShippingAddress? address; String id; List? taxModel; Timestamp? scheduleDateTime; Timestamp? newScheduleDateTime; Timestamp? startTime; Timestamp? endTime; String? notes; String? discount; String? discountType; String? discountLabel; String? couponCode; double quantity; String? reason; String? otp; String? adminCommission; String? adminCommissionType; String? extraCharges; String? extraChargesDescription; bool? paymentStatus; bool? extraPaymentStatus; String? workerId; OnProviderOrderModel({ this.sectionId = '', this.authorID = '', this.payment_method = '', author, createdAt, provider, this.status = '', this.address, this.id = '', this.taxModel, scheduleDateTime, this.newScheduleDateTime, this.startTime, this.endTime, this.notes = '', this.discount, this.discountType, this.discountLabel, this.couponCode, this.quantity = 0.0, this.reason, this.otp, this.adminCommission, this.adminCommissionType, this.extraCharges = '', this.extraChargesDescription = '', this.paymentStatus, this.extraPaymentStatus, this.workerId, }) : author = author ?? UserModel(), createdAt = createdAt ?? Timestamp.now(), provider = provider ?? ProviderServiceModel(), scheduleDateTime = scheduleDateTime ?? Timestamp.now(); factory OnProviderOrderModel.fromJson(Map parsedJson) { List? taxList; if (parsedJson['taxSetting'] != null) { taxList = []; parsedJson['taxSetting'].forEach((v) { taxList!.add(TaxModel.fromJson(v)); }); } return OnProviderOrderModel( author: parsedJson.containsKey('author') ? UserModel.fromJson(parsedJson['author']) : UserModel(), authorID: parsedJson['authorID'] ?? '', address: parsedJson.containsKey('address') ? ShippingAddress.fromJson(parsedJson['address']) : ShippingAddress(), createdAt: parsedJson['createdAt'] ?? Timestamp.now(), id: parsedJson['id'] ?? '', payment_method: parsedJson['payment_method'] ?? '', taxModel: taxList, sectionId: parsedJson['sectionId'] ?? '', status: parsedJson['status'] ?? '', provider: parsedJson.containsKey('provider') ? ProviderServiceModel.fromJson(parsedJson['provider']) : ProviderServiceModel(), notes: parsedJson['notes'] ?? "", scheduleDateTime: parsedJson['scheduleDateTime'] ?? Timestamp.now(), newScheduleDateTime: parsedJson['newScheduleDateTime'], startTime: parsedJson['startTime'], endTime: parsedJson['endTime'], discount: parsedJson['discount'] ?? "0.0", discountLabel: parsedJson['discountLabel'] ?? "0.0", discountType: parsedJson['discountType'] ?? "", couponCode: parsedJson['couponCode'] ?? "", quantity: double.parse("${parsedJson['quantity'] ?? 0.0}"), reason: parsedJson['reason'] ?? '', otp: parsedJson['otp'] ?? '', adminCommission: parsedJson['adminCommission'] ?? "", adminCommissionType: parsedJson['adminCommissionType'] ?? "", extraCharges: parsedJson["extraCharges"] ?? "0.0", paymentStatus: parsedJson['paymentStatus'], extraPaymentStatus: parsedJson['extraPaymentStatus'], workerId: parsedJson['workerId'] ?? "", extraChargesDescription: parsedJson['extraChargesDescription'] ?? "", ); } Map toJson() { return { 'address': address?.toJson(), 'author': author.toJson(), 'authorID': authorID, 'payment_method': payment_method, 'createdAt': createdAt, 'id': id, 'status': status, 'provider': provider.toJson(), 'sectionId': sectionId, "taxSetting": taxModel?.map((v) => v.toJson()).toList(), "scheduleDateTime": scheduleDateTime, "newScheduleDateTime": newScheduleDateTime, "startTime": startTime, "endTime": endTime, "notes": notes, 'discount': discount, "discountLabel": discountLabel, "discountType": discountType, "couponCode": couponCode, 'quantity': quantity, 'reason': reason, 'otp': otp, "adminCommission": adminCommission, "adminCommissionType": adminCommissionType, 'extraCharges': extraCharges, 'paymentStatus': paymentStatus, 'extraPaymentStatus': extraPaymentStatus, 'workerId': workerId, 'extraChargesDescription': extraChargesDescription, }; } }