Files
Fondex/lib/models/provider_serivce_model.dart

191 lines
5.4 KiB
Dart

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:customer/models/subscription_plan_model.dart';
class ProviderServiceModel {
String? author;
String? authorName;
String? authorProfilePic;
String? sectionId;
String? subCategoryId;
String? categoryId;
Timestamp? createdAt;
String? description;
String? id;
double? latitude;
double? longitude;
List<dynamic> photos;
String? address;
num? reviewsCount;
num? reviewsSum;
String? title;
GeoFireData geoFireData;
String? price;
String? disPrice = "0";
bool? publish;
String? startTime;
String? endTime;
String? priceUnit;
List<dynamic> days;
String? phoneNumber;
String? subscriptionPlanId;
Timestamp? subscriptionExpiryDate;
SubscriptionPlanModel? subscriptionPlan;
String? subscriptionTotalOrders;
ProviderServiceModel({
this.author = '',
this.authorName = '',
this.authorProfilePic = '',
this.sectionId = '',
this.subCategoryId = '',
this.categoryId = '',
this.createdAt,
this.description = '',
this.id = '',
this.latitude = 0.1,
this.longitude = 0.1,
this.address = '',
this.reviewsCount = 0,
this.reviewsSum = 0,
this.title = '',
this.price = '',
this.disPrice,
geoFireData,
DeliveryCharge,
this.photos = const [],
this.publish = true,
this.startTime,
this.endTime,
this.priceUnit,
this.subscriptionPlanId,
this.subscriptionExpiryDate,
this.subscriptionPlan,
this.days = const [],
this.phoneNumber,
this.subscriptionTotalOrders,
}) : geoFireData = geoFireData ??
GeoFireData(
geohash: "",
geoPoint: GeoPoint(0.0, 0.0),
);
factory ProviderServiceModel.fromJson(Map<String, dynamic> parsedJson) {
return ProviderServiceModel(
author: parsedJson['author'] ?? '',
authorName: parsedJson['authorName'] ?? '',
authorProfilePic: parsedJson['authorProfilePic'] ?? '',
sectionId: parsedJson['sectionId'] ?? '',
categoryId: parsedJson['categoryId'] ?? '',
subCategoryId: parsedJson['subCategoryId'] ?? '',
price: parsedJson['price'] ?? '',
disPrice: parsedJson['disPrice'] ?? '0',
createdAt: parsedJson['createdAt'] ?? Timestamp.now(),
geoFireData: parsedJson.containsKey('g')
? GeoFireData.fromJson(parsedJson['g'])
: GeoFireData(
geohash: "",
geoPoint: GeoPoint(0.0, 0.0),
),
description: parsedJson['description'] ?? '',
id: parsedJson['id'] ?? '',
latitude: parsedJson['latitude'] ?? 0.1,
longitude: parsedJson['longitude'] ?? 0.1,
photos: parsedJson['photos'] ?? [],
address: parsedJson['address'] ?? '',
reviewsCount: parsedJson['reviewsCount'] ?? 0,
reviewsSum: parsedJson['reviewsSum'] ?? 0,
title: parsedJson['title'] ?? '',
publish: parsedJson['publish'] ?? true,
startTime: parsedJson['startTime'],
endTime: parsedJson['endTime'],
priceUnit: parsedJson['priceUnit'],
days: parsedJson['days'] ?? [],
phoneNumber: parsedJson['phoneNumber'],
subscriptionPlanId: parsedJson['subscriptionPlanId'],
subscriptionExpiryDate: parsedJson['subscriptionExpiryDate'],
subscriptionTotalOrders: parsedJson['subscriptionTotalOrders'],
subscriptionPlan: parsedJson['subscription_plan'] != null ? SubscriptionPlanModel.fromJson(parsedJson['subscription_plan']) : null,
);
}
Map<String, dynamic> toJson() {
photos.toList().removeWhere((element) => element == null);
Map<String, dynamic> json = {
'author': author,
'authorName': authorName,
'sectionId': sectionId,
'price': price,
'disPrice': disPrice,
'authorProfilePic': authorProfilePic,
'subCategoryId': subCategoryId,
'categoryId': categoryId,
'createdAt': createdAt,
"g": geoFireData.toJson(),
'description': description,
'id': id,
'latitude': latitude,
'longitude': longitude,
'photos': photos,
'address': address,
'reviewsCount': reviewsCount,
'reviewsSum': reviewsSum,
'title': title,
'publish': publish,
'startTime': startTime,
'endTime': endTime,
'priceUnit': priceUnit,
'days': days,
'phoneNumber': phoneNumber,
'subscriptionPlanId': subscriptionPlanId,
'subscriptionExpiryDate': subscriptionExpiryDate,
'subscriptionTotalOrders': subscriptionTotalOrders,
'subscription_plan': subscriptionPlan?.toJson(),
};
return json;
}
}
class GeoFireData {
String? geohash;
GeoPoint? geoPoint;
GeoFireData({this.geohash, this.geoPoint});
factory GeoFireData.fromJson(Map<dynamic, dynamic> parsedJson) {
return GeoFireData(
geohash: parsedJson['geohash'] ?? '',
geoPoint: parsedJson['geopoint'] ?? '',
);
}
Map<String, dynamic> toJson() {
return {
'geohash': geohash,
'geopoint': geoPoint,
};
}
}
class GeoPointClass {
double latitude;
double longitude;
GeoPointClass({this.latitude = 0.01, this.longitude = 0.01});
factory GeoPointClass.fromJson(Map<dynamic, dynamic> parsedJson) {
return GeoPointClass(
latitude: parsedJson['latitude'] ?? 0.01,
longitude: parsedJson['longitude'] ?? 0.01,
);
}
Map<String, dynamic> toJson() {
return {
'latitude': latitude,
'longitude': longitude,
};
}
}