1314 lines
36 KiB
Dart
1314 lines
36 KiB
Dart
// // To parse this JSON data, do
|
|
// //
|
|
// // final productDetails = productDetailsFromJson(jsondynamic);
|
|
|
|
// import 'dart:convert';
|
|
// import 'dart:ffi';
|
|
|
|
// ProductDetailsData productDetailsdataFromJson(dynamic str) =>
|
|
// ProductDetailsData.fromJson(json.decode(str));
|
|
|
|
// dynamic productDetailsToJson(ProductDetailsData data) =>
|
|
// json.encode(data.toJson());
|
|
|
|
// class ProductDetailsData {
|
|
// Data? data;
|
|
|
|
// ProductDetailsData({
|
|
// this.data,
|
|
// });
|
|
|
|
// factory ProductDetailsData.fromJson(Map<dynamic, dynamic> json) =>
|
|
// ProductDetailsData(
|
|
// data: Data.fromJson(json["data"]),
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "data": data!.toJson(),
|
|
// };
|
|
// }
|
|
|
|
// class Data {
|
|
// dynamic id;
|
|
// dynamic name;
|
|
// dynamic description;
|
|
// dynamic additionalInfo;
|
|
// dynamic brand;
|
|
// dynamic basePrice;
|
|
// dynamic discountPrice;
|
|
// dynamic? stock;
|
|
// dynamic? quantity;
|
|
// dynamic unit;
|
|
// dynamic slug;
|
|
// dynamic averageRating;
|
|
// bool? isInStock;
|
|
// bool? isActive;
|
|
// DateTime? createdAt;
|
|
// DateTime? updatedAt;
|
|
// dynamic storeId;
|
|
// dynamic categoryId;
|
|
// dynamic productTypeId;
|
|
// dynamic timeSlotId;
|
|
// Store? store;
|
|
// Category? category;
|
|
// dynamic? productType;
|
|
// dynamic timeSlot;
|
|
// List<ProductImage>? productImages;
|
|
// List<dynamic>? productTags;
|
|
// List<dynamic>? zones;
|
|
// List<ProductReview>? productReview;
|
|
// List<dynamic>? questions;
|
|
// List<CartItem>? cartItems;
|
|
// List<WishlistItem>? wishlistItem;
|
|
// List<dynamic>? applicableCoupons;
|
|
// bool? isInWishlist;
|
|
|
|
// Data({
|
|
// this.id,
|
|
// this.name,
|
|
// this.description,
|
|
// this.additionalInfo,
|
|
// this.brand,
|
|
// this.basePrice,
|
|
// this.discountPrice,
|
|
// this.stock,
|
|
// this.quantity,
|
|
// this.unit,
|
|
// this.slug,
|
|
// this.averageRating,
|
|
// this.isInStock,
|
|
// this.isActive,
|
|
// this.createdAt,
|
|
// this.updatedAt,
|
|
// this.storeId,
|
|
// this.categoryId,
|
|
// this.productTypeId,
|
|
// this.timeSlotId,
|
|
// this.store,
|
|
// this.category,
|
|
// this.productType,
|
|
// this.timeSlot,
|
|
// this.productImages,
|
|
// this.productTags,
|
|
// this.zones,
|
|
// this.productReview,
|
|
// this.questions,
|
|
// this.cartItems,
|
|
// this.wishlistItem,
|
|
// this.applicableCoupons,
|
|
// this.isInWishlist,
|
|
// });
|
|
|
|
// factory Data.fromJson(Map<dynamic, dynamic> json) => Data(
|
|
// id: json["id"],
|
|
// name: json["name"],
|
|
// description: json["description"],
|
|
// additionalInfo: json["additionalInfo"],
|
|
// brand: json["brand"],
|
|
// basePrice: json["basePrice"],
|
|
// discountPrice: json["discountPrice"],
|
|
// stock: json["stock"],
|
|
// quantity: json["quantity"],
|
|
// unit: json["unit"],
|
|
// slug: json["slug"],
|
|
// averageRating: json["averageRating"],
|
|
// isInStock: json["isInStock"],
|
|
// isActive: json["isActive"],
|
|
// createdAt: DateTime.parse(json["createdAt"]),
|
|
// updatedAt: DateTime.parse(json["updatedAt"]),
|
|
// storeId: json["storeId"],
|
|
// categoryId: json["categoryId"],
|
|
// productTypeId: json["productTypeId"],
|
|
// timeSlotId: json["timeSlotId"],
|
|
// store: Store.fromJson(json["store"]),
|
|
// category: Category.fromJson(json["category"]),
|
|
// productType: json["productType"],
|
|
// timeSlot: json["timeSlot"],
|
|
// productImages: List<ProductImage>.from(
|
|
// json["productImages"].map((x) => ProductImage.fromJson(x))),
|
|
// productTags: List<dynamic>.from(json["productTags"].map((x) => x)),
|
|
// zones: List<dynamic>.from(json["zones"].map((x) => x)),
|
|
// productReview: List<ProductReview>.from(
|
|
// json["ProductReview"].map((x) => ProductReview.fromJson(x))),
|
|
// questions: List<dynamic>.from(json["questions"].map((x) => x)),
|
|
// cartItems: List<CartItem>.from(
|
|
// json["cartItems"].map((x) => CartItem.fromJson(x))),
|
|
// wishlistItem: List<WishlistItem>.from(
|
|
// json["WishlistItem"].map((x) => WishlistItem.fromJson(x))),
|
|
// applicableCoupons:
|
|
// List<dynamic>.from(json["applicableCoupons"].map((x) => x)),
|
|
// isInWishlist: json["isInWishlist"],
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "name": name,
|
|
// "description": description,
|
|
// "additionalInfo": additionalInfo,
|
|
// "brand": brand,
|
|
// "basePrice": basePrice,
|
|
// "discountPrice": discountPrice,
|
|
// "stock": stock,
|
|
// "quantity": quantity,
|
|
// "unit": unit,
|
|
// "slug": slug,
|
|
// "averageRating": averageRating,
|
|
// "isInStock": isInStock,
|
|
// "isActive": isActive,
|
|
// "createdAt": createdAt,
|
|
// "updatedAt": updatedAt,
|
|
// "storeId": storeId,
|
|
// "categoryId": categoryId,
|
|
// "productTypeId": productTypeId,
|
|
// "timeSlotId": timeSlotId,
|
|
// "store": store!.toJson(),
|
|
// "category": category!.toJson(),
|
|
// "productType": productType,
|
|
// "timeSlot": timeSlot,
|
|
// "productImages":
|
|
// List<dynamic>.from(productImages!.map((x) => x.toJson())),
|
|
// "productTags": List<dynamic>.from(productTags!.map((x) => x)),
|
|
// "zones": List<dynamic>.from(zones!.map((x) => x)),
|
|
// "ProductReview": List<dynamic>.from(productReview!.map((x) => x)),
|
|
// "questions": List<dynamic>.from(questions!.map((x) => x)),
|
|
// "cartItems": List<dynamic>.from(cartItems!.map((x) => x.toJson())),
|
|
// "WishlistItem":
|
|
// List<dynamic>.from(wishlistItem!.map((x) => x.toJson())),
|
|
// "applicableCoupons":
|
|
// List<dynamic>.from(applicableCoupons!.map((x) => x)),
|
|
// "isInWishlist": isInWishlist,
|
|
// };
|
|
// }
|
|
|
|
// class CartItem {
|
|
// dynamic id;
|
|
// dynamic quantity;
|
|
// dynamic priceSnapshot;
|
|
// dynamic cartId;
|
|
// dynamic productId;
|
|
// dynamic storeId;
|
|
// DateTime? createdAt;
|
|
// DateTime? updatedAt;
|
|
|
|
// CartItem({
|
|
// this.id,
|
|
// this.quantity,
|
|
// this.priceSnapshot,
|
|
// this.cartId,
|
|
// this.productId,
|
|
// this.storeId,
|
|
// this.createdAt,
|
|
// this.updatedAt,
|
|
// });
|
|
|
|
// factory CartItem.fromJson(Map<dynamic, dynamic> json) => CartItem(
|
|
// id: json["id"],
|
|
// quantity: json["quantity"],
|
|
// priceSnapshot: json["priceSnapshot"],
|
|
// cartId: json["cartId"],
|
|
// productId: json["productId"],
|
|
// storeId: json["storeId"],
|
|
// createdAt: DateTime.parse(json["createdAt"]),
|
|
// updatedAt: DateTime.parse(json["updatedAt"]),
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "quantity": quantity,
|
|
// "priceSnapshot": priceSnapshot,
|
|
// "cartId": cartId,
|
|
// "productId": productId,
|
|
// "storeId": storeId,
|
|
// "createdAt": createdAt,
|
|
// "updatedAt": updatedAt,
|
|
// };
|
|
// }
|
|
|
|
// class Category {
|
|
// dynamic id;
|
|
// dynamic name;
|
|
// dynamic description;
|
|
// dynamic image;
|
|
// dynamic slug;
|
|
// dynamic level;
|
|
// bool? isActive;
|
|
// DateTime? createdAt;
|
|
// DateTime? updatedAt;
|
|
// dynamic parentCategoryId;
|
|
// dynamic path;
|
|
|
|
// Category({
|
|
// this.id,
|
|
// this.name,
|
|
// this.description,
|
|
// this.image,
|
|
// this.slug,
|
|
// this.level,
|
|
// this.isActive,
|
|
// this.createdAt,
|
|
// this.updatedAt,
|
|
// this.parentCategoryId,
|
|
// this.path,
|
|
// });
|
|
|
|
// factory Category.fromJson(Map<dynamic, dynamic> json) => Category(
|
|
// id: json["id"],
|
|
// name: json["name"],
|
|
// description: json["description"],
|
|
// image: json["image"],
|
|
// slug: json["slug"],
|
|
// level: json["level"],
|
|
// isActive: json["isActive"],
|
|
// createdAt: DateTime.parse(json["createdAt"]),
|
|
// updatedAt: DateTime.parse(json["updatedAt"]),
|
|
// parentCategoryId: json["parentCategoryId"],
|
|
// path: json["path"],
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "name": name,
|
|
// "description": description,
|
|
// "image": image,
|
|
// "slug": slug,
|
|
// "level": level,
|
|
// "isActive": isActive,
|
|
// "createdAt": createdAt,
|
|
// "updatedAt": updatedAt,
|
|
// "parentCategoryId": parentCategoryId,
|
|
// "path": path,
|
|
// };
|
|
// }
|
|
|
|
// class ProductImage {
|
|
// dynamic id;
|
|
// dynamic url;
|
|
// bool? isDefault;
|
|
// dynamic productId;
|
|
|
|
// ProductImage({
|
|
// this.id,
|
|
// this.url,
|
|
// this.isDefault,
|
|
// this.productId,
|
|
// });
|
|
|
|
// factory ProductImage.fromJson(Map<dynamic, dynamic> json) => ProductImage(
|
|
// id: json["id"],
|
|
// url: json["url"],
|
|
// isDefault: json["isDefault"],
|
|
// productId: json["productId"],
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "url": url,
|
|
// "isDefault": isDefault,
|
|
// "productId": productId,
|
|
// };
|
|
// }
|
|
|
|
// class Store {
|
|
// dynamic id;
|
|
// dynamic storeName;
|
|
// dynamic storeDescription;
|
|
// dynamic officialPhoneNumber;
|
|
// dynamic storeAddress;
|
|
// dynamic gstNumber;
|
|
// dynamic gumastaNumber;
|
|
// dynamic storePicture;
|
|
// DateTime? createdAt;
|
|
// DateTime? updatedAt;
|
|
// dynamic vendorId;
|
|
// bool? isActive;
|
|
// dynamic couponId;
|
|
|
|
// Store({
|
|
// this.id,
|
|
// this.storeName,
|
|
// this.storeDescription,
|
|
// this.officialPhoneNumber,
|
|
// this.storeAddress,
|
|
// this.gstNumber,
|
|
// this.gumastaNumber,
|
|
// this.storePicture,
|
|
// this.createdAt,
|
|
// this.updatedAt,
|
|
// this.vendorId,
|
|
// this.isActive,
|
|
// this.couponId,
|
|
// });
|
|
|
|
// factory Store.fromJson(Map<dynamic, dynamic> json) => Store(
|
|
// id: json["id"],
|
|
// storeName: json["storeName"],
|
|
// storeDescription: json["storeDescription"],
|
|
// officialPhoneNumber: json["officialPhoneNumber"],
|
|
// storeAddress: json["storeAddress"],
|
|
// gstNumber: json["gstNumber"],
|
|
// gumastaNumber: json["gumastaNumber"],
|
|
// storePicture: json["storePicture"],
|
|
// createdAt: DateTime.parse(json["createdAt"]),
|
|
// updatedAt: DateTime.parse(json["updatedAt"]),
|
|
// vendorId: json["vendorId"],
|
|
// isActive: json["isActive"],
|
|
// couponId: json["couponId"],
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "storeName": storeName,
|
|
// "storeDescription": storeDescription,
|
|
// "officialPhoneNumber": officialPhoneNumber,
|
|
// "storeAddress": storeAddress,
|
|
// "gstNumber": gstNumber,
|
|
// "gumastaNumber": gumastaNumber,
|
|
// "storePicture": storePicture,
|
|
// "createdAt": createdAt,
|
|
// "updatedAt": updatedAt,
|
|
// "vendorId": vendorId,
|
|
// "isActive": isActive,
|
|
// "couponId": couponId,
|
|
// };
|
|
// }
|
|
|
|
// class WishlistItem {
|
|
// dynamic id;
|
|
// dynamic wishlistId;
|
|
// dynamic productId;
|
|
// dynamic storeId;
|
|
// DateTime? createdAt;
|
|
// DateTime? updatedAt;
|
|
|
|
// WishlistItem({
|
|
// this.id,
|
|
// this.wishlistId,
|
|
// this.productId,
|
|
// this.storeId,
|
|
// this.createdAt,
|
|
// this.updatedAt,
|
|
// });
|
|
|
|
// factory WishlistItem.fromJson(Map<dynamic, dynamic> json) => WishlistItem(
|
|
// id: json["id"],
|
|
// wishlistId: json["wishlistId"],
|
|
// productId: json["productId"],
|
|
// storeId: json["storeId"],
|
|
// createdAt: DateTime.parse(json["createdAt"]),
|
|
// updatedAt: DateTime.parse(json["updatedAt"]),
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "wishlistId": wishlistId,
|
|
// "productId": productId,
|
|
// "storeId": storeId,
|
|
// "createdAt": createdAt,
|
|
// "updatedAt": updatedAt,
|
|
// };
|
|
// }
|
|
|
|
// class ProductReview {
|
|
// dynamic id;
|
|
// dynamic userId;
|
|
// dynamic productId;
|
|
// dynamic rating;
|
|
// dynamic title;
|
|
// dynamic description;
|
|
// int? likes;
|
|
// int? dislikes;
|
|
// int? helpfulCount;
|
|
// bool? verifiedPurchase;
|
|
// dynamic status;
|
|
// DateTime? createdAt;
|
|
// DateTime? updatedAt;
|
|
// User? user;
|
|
// List<ProductReviewImage>? productReviewImage;
|
|
|
|
// ProductReview({
|
|
// this.id,
|
|
// this.userId,
|
|
// this.productId,
|
|
// this.rating,
|
|
// this.title,
|
|
// this.description,
|
|
// this.likes,
|
|
// this.dislikes,
|
|
// this.helpfulCount,
|
|
// this.verifiedPurchase,
|
|
// this.status,
|
|
// this.createdAt,
|
|
// this.updatedAt,
|
|
// this.user,
|
|
// this.productReviewImage,
|
|
// });
|
|
|
|
// factory ProductReview.fromJson(Map<dynamic, dynamic> json) => ProductReview(
|
|
// id: json["id"],
|
|
// userId: json["userId"],
|
|
// productId: json["productId"],
|
|
// rating: json["rating"],
|
|
// title: json["title"],
|
|
// description: json["description"],
|
|
// likes: json["likes"],
|
|
// dislikes: json["dislikes"],
|
|
// helpfulCount: json["helpfulCount"],
|
|
// verifiedPurchase: json["verifiedPurchase"],
|
|
// status: json["status"],
|
|
// createdAt: DateTime.parse(json["createdAt"]),
|
|
// updatedAt: DateTime.parse(json["updatedAt"]),
|
|
// user: User.fromJson(json["user"]),
|
|
// productReviewImage: List<ProductReviewImage>.from(
|
|
// json["ProductReviewImage"]
|
|
// .map((x) => ProductReviewImage.fromJson(x))),
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "userId": userId,
|
|
// "productId": productId,
|
|
// "rating": rating,
|
|
// "title": title,
|
|
// "description": description,
|
|
// "likes": likes,
|
|
// "dislikes": dislikes,
|
|
// "helpfulCount": helpfulCount,
|
|
// "verifiedPurchase": verifiedPurchase,
|
|
// "status": status,
|
|
// "createdAt": createdAt,
|
|
// "updatedAt": updatedAt,
|
|
// "user": user!.toJson(),
|
|
// "ProductReviewImage":
|
|
// List<dynamic>.from(productReviewImage!.map((x) => x.toJson())),
|
|
// };
|
|
// }
|
|
|
|
// class ProductReviewImage {
|
|
// dynamic id;
|
|
// dynamic reviewId;
|
|
// dynamic imageUrl;
|
|
// bool? isDefault;
|
|
// DateTime? createdAt;
|
|
|
|
// ProductReviewImage({
|
|
// this.id,
|
|
// this.reviewId,
|
|
// this.imageUrl,
|
|
// this.isDefault,
|
|
// this.createdAt,
|
|
// });
|
|
|
|
// factory ProductReviewImage.fromJson(Map<dynamic, dynamic> json) =>
|
|
// ProductReviewImage(
|
|
// id: json["id"],
|
|
// reviewId: json["reviewId"],
|
|
// imageUrl: json["imageUrl"],
|
|
// isDefault: json["isDefault"],
|
|
// createdAt: DateTime.parse(json["createdAt"]),
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "reviewId": reviewId,
|
|
// "imageUrl": imageUrl,
|
|
// "isDefault": isDefault,
|
|
// "createdAt": createdAt,
|
|
// };
|
|
// }
|
|
|
|
// class User {
|
|
// dynamic id;
|
|
// dynamic email;
|
|
// dynamic firstName;
|
|
// dynamic lastName;
|
|
// dynamic name;
|
|
// dynamic img;
|
|
// dynamic authType;
|
|
// dynamic role;
|
|
// dynamic phone;
|
|
// dynamic password;
|
|
// bool? isActive;
|
|
// bool? isPhoneVerified;
|
|
// dynamic vendorType;
|
|
// dynamic businessId;
|
|
// bool? isVendorAccountCreated;
|
|
// bool? isVendorAccountActive;
|
|
// bool? vendorTermsAccepted;
|
|
// DateTime? createdAt;
|
|
// DateTime? updatedAt;
|
|
// dynamic rtHash;
|
|
// dynamic resetToken;
|
|
// dynamic resetTokenExpiresAt;
|
|
|
|
// User({
|
|
// this.id,
|
|
// this.email,
|
|
// this.firstName,
|
|
// this.lastName,
|
|
// this.name,
|
|
// this.img,
|
|
// this.authType,
|
|
// this.role,
|
|
// this.phone,
|
|
// this.password,
|
|
// this.isActive,
|
|
// this.isPhoneVerified,
|
|
// this.vendorType,
|
|
// this.businessId,
|
|
// this.isVendorAccountCreated,
|
|
// this.isVendorAccountActive,
|
|
// this.vendorTermsAccepted,
|
|
// this.createdAt,
|
|
// this.updatedAt,
|
|
// this.rtHash,
|
|
// this.resetToken,
|
|
// this.resetTokenExpiresAt,
|
|
// });
|
|
|
|
// factory User.fromJson(Map<dynamic, dynamic> json) => User(
|
|
// id: json["id"],
|
|
// email: json["email"],
|
|
// firstName: json["firstName"],
|
|
// lastName: json["lastName"],
|
|
// name: json["name"],
|
|
// img: json["img"],
|
|
// authType: json["authType"],
|
|
// role: json["role"],
|
|
// phone: json["phone"],
|
|
// password: json["password"],
|
|
// isActive: json["isActive"],
|
|
// isPhoneVerified: json["isPhoneVerified"],
|
|
// vendorType: json["vendorType"],
|
|
// businessId: json["businessId"],
|
|
// isVendorAccountCreated: json["isVendorAccountCreated"],
|
|
// isVendorAccountActive: json["isVendorAccountActive"],
|
|
// vendorTermsAccepted: json["vendorTermsAccepted"],
|
|
// createdAt: DateTime.parse(json["createdAt"]),
|
|
// updatedAt: DateTime.parse(json["updatedAt"]),
|
|
// rtHash: json["rtHash"],
|
|
// resetToken: json["resetToken"],
|
|
// resetTokenExpiresAt: json["resetTokenExpiresAt"],
|
|
// );
|
|
|
|
// Map<dynamic, dynamic> toJson() => {
|
|
// "id": id,
|
|
// "email": email,
|
|
// "firstName": firstName,
|
|
// "lastName": lastName,
|
|
// "name": name,
|
|
// "img": img,
|
|
// "authType": authType,
|
|
// "role": role,
|
|
// "phone": phone,
|
|
// "password": password,
|
|
// "isActive": isActive,
|
|
// "isPhoneVerified": isPhoneVerified,
|
|
// "vendorType": vendorType,
|
|
// "businessId": businessId,
|
|
// "isVendorAccountCreated": isVendorAccountCreated,
|
|
// "isVendorAccountActive": isVendorAccountActive,
|
|
// "vendorTermsAccepted": vendorTermsAccepted,
|
|
// "createdAt": createdAt,
|
|
// "updatedAt": updatedAt,
|
|
// "rtHash": rtHash,
|
|
// "resetToken": resetToken,
|
|
// "resetTokenExpiresAt": resetTokenExpiresAt,
|
|
// };
|
|
// }
|
|
|
|
// To parse this JSON data, do
|
|
//
|
|
// final productDetailsData = productDetailsDataFromJson(jsondynamic);
|
|
|
|
import 'dart:convert';
|
|
|
|
ProductDetailsData productDetailsDataFromJson(dynamic str) =>
|
|
ProductDetailsData.fromJson(json.decode(str));
|
|
|
|
dynamic productDetailsDataToJson(ProductDetailsData data) =>
|
|
json.encode(data.toJson());
|
|
|
|
class ProductDetailsData {
|
|
Data? data;
|
|
|
|
ProductDetailsData({
|
|
this.data,
|
|
});
|
|
|
|
factory ProductDetailsData.fromJson(Map<dynamic, dynamic> json) =>
|
|
ProductDetailsData(
|
|
data: Data.fromJson(json["data"]),
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"data": data!.toJson(),
|
|
};
|
|
}
|
|
|
|
class Data {
|
|
dynamic id;
|
|
dynamic name;
|
|
dynamic description;
|
|
dynamic additionalInfo;
|
|
dynamic brand;
|
|
dynamic basePrice;
|
|
dynamic discountPrice;
|
|
dynamic stock;
|
|
dynamic quantity;
|
|
dynamic unit;
|
|
dynamic slug;
|
|
dynamic averageRating;
|
|
bool? isInStock;
|
|
bool? isActive;
|
|
dynamic disclaimer;
|
|
dynamic customerCareDetails;
|
|
dynamic manufacturerName;
|
|
dynamic manufacturerAddress;
|
|
dynamic countryOfOrigin;
|
|
DateTime? expiryDate;
|
|
dynamic returnsAllowedDays;
|
|
dynamic exchangeAllowedDays;
|
|
DateTime? createdAt;
|
|
DateTime? updatedAt;
|
|
dynamic storeId;
|
|
dynamic categoryId;
|
|
dynamic productTypeId;
|
|
dynamic timeSlotId;
|
|
Store? store;
|
|
Category? category;
|
|
dynamic productType;
|
|
dynamic timeSlot;
|
|
List<ProductImage>? productImages;
|
|
List<ProductTag>? productTags;
|
|
List<dynamic>? zones;
|
|
List<ProductHighlight>? productHighlight;
|
|
List<ProductReview>? productReview;
|
|
List<dynamic>? questions;
|
|
List<dynamic>? cartItems;
|
|
List<WishlistItem>? wishlistItem;
|
|
List<dynamic>? applicableCoupons;
|
|
bool? isInWishlist;
|
|
|
|
Data({
|
|
this.id,
|
|
this.name,
|
|
this.description,
|
|
this.additionalInfo,
|
|
this.brand,
|
|
this.basePrice,
|
|
this.discountPrice,
|
|
this.stock,
|
|
this.quantity,
|
|
this.unit,
|
|
this.slug,
|
|
this.averageRating,
|
|
this.isInStock,
|
|
this.isActive,
|
|
this.disclaimer,
|
|
this.customerCareDetails,
|
|
this.manufacturerName,
|
|
this.manufacturerAddress,
|
|
this.countryOfOrigin,
|
|
this.expiryDate,
|
|
this.returnsAllowedDays,
|
|
this.exchangeAllowedDays,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
this.storeId,
|
|
this.categoryId,
|
|
this.productTypeId,
|
|
this.timeSlotId,
|
|
this.store,
|
|
this.category,
|
|
this.productType,
|
|
this.timeSlot,
|
|
this.productImages,
|
|
this.productTags,
|
|
this.zones,
|
|
this.productHighlight,
|
|
this.productReview,
|
|
this.questions,
|
|
this.cartItems,
|
|
this.wishlistItem,
|
|
this.applicableCoupons,
|
|
this.isInWishlist,
|
|
});
|
|
|
|
factory Data.fromJson(Map<dynamic, dynamic> json) => Data(
|
|
id: json["id"],
|
|
name: json["name"],
|
|
description: json["description"],
|
|
additionalInfo: json["additionalInfo"],
|
|
brand: json["brand"],
|
|
basePrice: json["basePrice"],
|
|
discountPrice: json["discountPrice"],
|
|
stock: json["stock"],
|
|
quantity: json["quantity"],
|
|
unit: json["unit"],
|
|
slug: json["slug"],
|
|
averageRating: json["averageRating"],
|
|
isInStock: json["isInStock"],
|
|
isActive: json["isActive"],
|
|
disclaimer: json["disclaimer"],
|
|
customerCareDetails: json["customerCareDetails"],
|
|
manufacturerName: json["manufacturerName"],
|
|
manufacturerAddress: json["manufacturerAddress"],
|
|
countryOfOrigin: json["countryOfOrigin"],
|
|
expiryDate: DateTime.parse(json["expiryDate"]),
|
|
returnsAllowedDays: json["returnsAllowedDays"],
|
|
exchangeAllowedDays: json["exchangeAllowedDays"],
|
|
createdAt: DateTime.parse(json["createdAt"]),
|
|
updatedAt: DateTime.parse(json["updatedAt"]),
|
|
storeId: json["storeId"],
|
|
categoryId: json["categoryId"],
|
|
productTypeId: json["productTypeId"],
|
|
timeSlotId: json["timeSlotId"],
|
|
store: Store.fromJson(json["store"]),
|
|
category: Category.fromJson(json["category"]),
|
|
productType: json["productType"],
|
|
timeSlot: json["timeSlot"],
|
|
productImages: List<ProductImage>.from(
|
|
json["productImages"].map((x) => ProductImage.fromJson(x))),
|
|
productTags: List<ProductTag>.from(
|
|
json["productTags"].map((x) => ProductTag.fromJson(x))),
|
|
zones: List<dynamic>.from(json["zones"].map((x) => x)),
|
|
productHighlight: List<ProductHighlight>.from(
|
|
json["ProductHighlight"].map((x) => ProductHighlight.fromJson(x))),
|
|
productReview: List<ProductReview>.from(
|
|
json["ProductReview"].map((x) => ProductReview.fromJson(x))),
|
|
questions: List<dynamic>.from(json["questions"].map((x) => x)),
|
|
cartItems: List<dynamic>.from(json["cartItems"].map((x) => x)),
|
|
wishlistItem: List<WishlistItem>.from(
|
|
json["WishlistItem"].map((x) => WishlistItem.fromJson(x))),
|
|
applicableCoupons:
|
|
List<dynamic>.from(json["applicableCoupons"].map((x) => x)),
|
|
isInWishlist: json["isInWishlist"],
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"name": name,
|
|
"description": description,
|
|
"additionalInfo": additionalInfo,
|
|
"brand": brand,
|
|
"basePrice": basePrice,
|
|
"discountPrice": discountPrice,
|
|
"stock": stock,
|
|
"quantity": quantity,
|
|
"unit": unit,
|
|
"slug": slug,
|
|
"averageRating": averageRating,
|
|
"isInStock": isInStock,
|
|
"isActive": isActive,
|
|
"disclaimer": disclaimer,
|
|
"customerCareDetails": customerCareDetails,
|
|
"manufacturerName": manufacturerName,
|
|
"manufacturerAddress": manufacturerAddress,
|
|
"countryOfOrigin": countryOfOrigin,
|
|
"expiryDate": expiryDate,
|
|
"returnsAllowedDays": returnsAllowedDays,
|
|
"exchangeAllowedDays": exchangeAllowedDays,
|
|
"createdAt": createdAt,
|
|
"updatedAt": updatedAt,
|
|
"storeId": storeId,
|
|
"categoryId": categoryId,
|
|
"productTypeId": productTypeId,
|
|
"timeSlotId": timeSlotId,
|
|
"store": store!.toJson(),
|
|
"category": category!.toJson(),
|
|
"productType": productType,
|
|
"timeSlot": timeSlot,
|
|
"productImages":
|
|
List<dynamic>.from(productImages!.map((x) => x.toJson())),
|
|
"productTags": List<dynamic>.from(productTags!.map((x) => x.toJson())),
|
|
"zones": List<dynamic>.from(zones!.map((x) => x)),
|
|
"ProductHighlight":
|
|
List<dynamic>.from(productHighlight!.map((x) => x.toJson())),
|
|
"ProductReview": List<dynamic>.from(productReview!.map((x) => x)),
|
|
"questions": List<dynamic>.from(questions!.map((x) => x)),
|
|
"cartItems": List<dynamic>.from(cartItems!.map((x) => x)),
|
|
"WishlistItem":
|
|
List<dynamic>.from(wishlistItem!.map((x) => x.toJson())),
|
|
"applicableCoupons":
|
|
List<dynamic>.from(applicableCoupons!.map((x) => x)),
|
|
"isInWishlist": isInWishlist,
|
|
};
|
|
}
|
|
|
|
class Category {
|
|
dynamic id;
|
|
dynamic name;
|
|
dynamic description;
|
|
dynamic image;
|
|
dynamic slug;
|
|
int? level;
|
|
bool? isActive;
|
|
DateTime? createdAt;
|
|
DateTime? updatedAt;
|
|
dynamic commissionPercentage;
|
|
dynamic parentCategoryId;
|
|
dynamic path;
|
|
|
|
Category({
|
|
this.id,
|
|
this.name,
|
|
this.description,
|
|
this.image,
|
|
this.slug,
|
|
this.level,
|
|
this.isActive,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
this.commissionPercentage,
|
|
this.parentCategoryId,
|
|
this.path,
|
|
});
|
|
|
|
factory Category.fromJson(Map<dynamic, dynamic> json) => Category(
|
|
id: json["id"],
|
|
name: json["name"],
|
|
description: json["description"],
|
|
image: json["image"],
|
|
slug: json["slug"],
|
|
level: json["level"],
|
|
isActive: json["isActive"],
|
|
createdAt: DateTime.parse(json["createdAt"]),
|
|
updatedAt: DateTime.parse(json["updatedAt"]),
|
|
commissionPercentage: json["commissionPercentage"],
|
|
parentCategoryId: json["parentCategoryId"],
|
|
path: json["path"],
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"name": name,
|
|
"description": description,
|
|
"image": image,
|
|
"slug": slug,
|
|
"level": level,
|
|
"isActive": isActive,
|
|
"createdAt": createdAt,
|
|
"updatedAt": updatedAt,
|
|
"commissionPercentage": commissionPercentage,
|
|
"parentCategoryId": parentCategoryId,
|
|
"path": path,
|
|
};
|
|
}
|
|
|
|
class ProductHighlight {
|
|
dynamic id;
|
|
dynamic key;
|
|
dynamic value;
|
|
dynamic productId;
|
|
DateTime? createdAt;
|
|
DateTime? updatedAt;
|
|
|
|
ProductHighlight({
|
|
this.id,
|
|
this.key,
|
|
this.value,
|
|
this.productId,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
});
|
|
|
|
factory ProductHighlight.fromJson(Map<dynamic, dynamic> json) =>
|
|
ProductHighlight(
|
|
id: json["id"],
|
|
key: json["key"],
|
|
value: json["value"],
|
|
productId: json["productId"],
|
|
createdAt: DateTime.parse(json["createdAt"]),
|
|
updatedAt: DateTime.parse(json["updatedAt"]),
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"key": key,
|
|
"value": value,
|
|
"productId": productId,
|
|
"createdAt": createdAt,
|
|
"updatedAt": updatedAt,
|
|
};
|
|
}
|
|
|
|
class ProductImage {
|
|
dynamic id;
|
|
dynamic url;
|
|
bool? isDefault;
|
|
dynamic productId;
|
|
|
|
ProductImage({
|
|
this.id,
|
|
this.url,
|
|
this.isDefault,
|
|
this.productId,
|
|
});
|
|
|
|
factory ProductImage.fromJson(Map<dynamic, dynamic> json) => ProductImage(
|
|
id: json["id"],
|
|
url: json["url"],
|
|
isDefault: json["isDefault"],
|
|
productId: json["productId"],
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"url": url,
|
|
"isDefault": isDefault,
|
|
"productId": productId,
|
|
};
|
|
}
|
|
|
|
class ProductTag {
|
|
dynamic id;
|
|
dynamic name;
|
|
dynamic description;
|
|
bool? isActive;
|
|
DateTime? createdAt;
|
|
DateTime? updatedAt;
|
|
|
|
ProductTag({
|
|
this.id,
|
|
this.name,
|
|
this.description,
|
|
this.isActive,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
});
|
|
|
|
factory ProductTag.fromJson(Map<dynamic, dynamic> json) => ProductTag(
|
|
id: json["id"],
|
|
name: json["name"],
|
|
description: json["description"],
|
|
isActive: json["isActive"],
|
|
createdAt: DateTime.parse(json["createdAt"]),
|
|
updatedAt: DateTime.parse(json["updatedAt"]),
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"name": name,
|
|
"description": description,
|
|
"isActive": isActive,
|
|
"createdAt": createdAt,
|
|
"updatedAt": updatedAt,
|
|
};
|
|
}
|
|
|
|
class Store {
|
|
dynamic id;
|
|
dynamic storeName;
|
|
dynamic storePicture;
|
|
dynamic storeAddress;
|
|
dynamic officialPhoneNumber;
|
|
dynamic sellerLicenseNumber;
|
|
Vendor? vendor;
|
|
|
|
Store({
|
|
this.id,
|
|
this.storeName,
|
|
this.storePicture,
|
|
this.storeAddress,
|
|
this.officialPhoneNumber,
|
|
this.sellerLicenseNumber,
|
|
this.vendor,
|
|
});
|
|
|
|
factory Store.fromJson(Map<dynamic, dynamic> json) => Store(
|
|
id: json["id"],
|
|
storeName: json["storeName"],
|
|
storePicture: json["storePicture"],
|
|
storeAddress: json["storeAddress"],
|
|
officialPhoneNumber: json["officialPhoneNumber"],
|
|
sellerLicenseNumber: json["sellerLicenseNumber"],
|
|
vendor: Vendor.fromJson(json["vendor"]),
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"storeName": storeName,
|
|
"storePicture": storePicture,
|
|
"storeAddress": storeAddress,
|
|
"officialPhoneNumber": officialPhoneNumber,
|
|
"sellerLicenseNumber": sellerLicenseNumber,
|
|
"vendor": vendor!.toJson(),
|
|
};
|
|
}
|
|
|
|
class Vendor {
|
|
dynamic id;
|
|
dynamic email;
|
|
dynamic firstName;
|
|
dynamic lastName;
|
|
dynamic phone;
|
|
|
|
Vendor({
|
|
this.id,
|
|
this.email,
|
|
this.firstName,
|
|
this.lastName,
|
|
this.phone,
|
|
});
|
|
|
|
factory Vendor.fromJson(Map<dynamic, dynamic> json) => Vendor(
|
|
id: json["id"],
|
|
email: json["email"],
|
|
firstName: json["firstName"],
|
|
lastName: json["lastName"],
|
|
phone: json["phone"],
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"email": email,
|
|
"firstName": firstName,
|
|
"lastName": lastName,
|
|
"phone": phone,
|
|
};
|
|
}
|
|
|
|
class WishlistItem {
|
|
dynamic id;
|
|
dynamic wishlistId;
|
|
dynamic productId;
|
|
dynamic storeId;
|
|
DateTime? createdAt;
|
|
DateTime? updatedAt;
|
|
|
|
WishlistItem({
|
|
this.id,
|
|
this.wishlistId,
|
|
this.productId,
|
|
this.storeId,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
});
|
|
|
|
factory WishlistItem.fromJson(Map<dynamic, dynamic> json) => WishlistItem(
|
|
id: json["id"],
|
|
wishlistId: json["wishlistId"],
|
|
productId: json["productId"],
|
|
storeId: json["storeId"],
|
|
createdAt: DateTime.parse(json["createdAt"]),
|
|
updatedAt: DateTime.parse(json["updatedAt"]),
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"wishlistId": wishlistId,
|
|
"productId": productId,
|
|
"storeId": storeId,
|
|
"createdAt": createdAt,
|
|
"updatedAt": updatedAt,
|
|
};
|
|
}
|
|
|
|
class ProductReview {
|
|
dynamic id;
|
|
dynamic userId;
|
|
dynamic productId;
|
|
dynamic rating;
|
|
dynamic title;
|
|
dynamic description;
|
|
int? likes;
|
|
int? dislikes;
|
|
int? helpfulCount;
|
|
bool? verifiedPurchase;
|
|
dynamic status;
|
|
DateTime? createdAt;
|
|
DateTime? updatedAt;
|
|
User? user;
|
|
List<ProductReviewImage>? productReviewImage;
|
|
|
|
ProductReview({
|
|
this.id,
|
|
this.userId,
|
|
this.productId,
|
|
this.rating,
|
|
this.title,
|
|
this.description,
|
|
this.likes,
|
|
this.dislikes,
|
|
this.helpfulCount,
|
|
this.verifiedPurchase,
|
|
this.status,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
this.user,
|
|
this.productReviewImage,
|
|
});
|
|
|
|
factory ProductReview.fromJson(Map<dynamic, dynamic> json) => ProductReview(
|
|
id: json["id"],
|
|
userId: json["userId"],
|
|
productId: json["productId"],
|
|
rating: json["rating"],
|
|
title: json["title"],
|
|
description: json["description"],
|
|
likes: json["likes"],
|
|
dislikes: json["dislikes"],
|
|
helpfulCount: json["helpfulCount"],
|
|
verifiedPurchase: json["verifiedPurchase"],
|
|
status: json["status"],
|
|
createdAt: DateTime.parse(json["createdAt"]),
|
|
updatedAt: DateTime.parse(json["updatedAt"]),
|
|
user: User.fromJson(json["user"]),
|
|
productReviewImage: List<ProductReviewImage>.from(
|
|
json["ProductReviewImage"]
|
|
.map((x) => ProductReviewImage.fromJson(x))),
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"userId": userId,
|
|
"productId": productId,
|
|
"rating": rating,
|
|
"title": title,
|
|
"description": description,
|
|
"likes": likes,
|
|
"dislikes": dislikes,
|
|
"helpfulCount": helpfulCount,
|
|
"verifiedPurchase": verifiedPurchase,
|
|
"status": status,
|
|
"createdAt": createdAt,
|
|
"updatedAt": updatedAt,
|
|
"user": user!.toJson(),
|
|
"ProductReviewImage":
|
|
List<dynamic>.from(productReviewImage!.map((x) => x.toJson())),
|
|
};
|
|
}
|
|
|
|
class ProductReviewImage {
|
|
dynamic id;
|
|
dynamic reviewId;
|
|
dynamic imageUrl;
|
|
bool? isDefault;
|
|
DateTime? createdAt;
|
|
|
|
ProductReviewImage({
|
|
this.id,
|
|
this.reviewId,
|
|
this.imageUrl,
|
|
this.isDefault,
|
|
this.createdAt,
|
|
});
|
|
|
|
factory ProductReviewImage.fromJson(Map<dynamic, dynamic> json) =>
|
|
ProductReviewImage(
|
|
id: json["id"],
|
|
reviewId: json["reviewId"],
|
|
imageUrl: json["imageUrl"],
|
|
isDefault: json["isDefault"],
|
|
createdAt: DateTime.parse(json["createdAt"]),
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"reviewId": reviewId,
|
|
"imageUrl": imageUrl,
|
|
"isDefault": isDefault,
|
|
"createdAt": createdAt,
|
|
};
|
|
}
|
|
|
|
class User {
|
|
dynamic id;
|
|
dynamic email;
|
|
dynamic firstName;
|
|
dynamic lastName;
|
|
dynamic name;
|
|
dynamic img;
|
|
dynamic authType;
|
|
dynamic role;
|
|
dynamic phone;
|
|
dynamic password;
|
|
bool? isActive;
|
|
bool? isPhoneVerified;
|
|
dynamic vendorType;
|
|
dynamic businessId;
|
|
bool? isVendorAccountCreated;
|
|
bool? isVendorAccountActive;
|
|
bool? vendorTermsAccepted;
|
|
DateTime? createdAt;
|
|
DateTime? updatedAt;
|
|
dynamic rtHash;
|
|
dynamic resetToken;
|
|
dynamic resetTokenExpiresAt;
|
|
|
|
User({
|
|
this.id,
|
|
this.email,
|
|
this.firstName,
|
|
this.lastName,
|
|
this.name,
|
|
this.img,
|
|
this.authType,
|
|
this.role,
|
|
this.phone,
|
|
this.password,
|
|
this.isActive,
|
|
this.isPhoneVerified,
|
|
this.vendorType,
|
|
this.businessId,
|
|
this.isVendorAccountCreated,
|
|
this.isVendorAccountActive,
|
|
this.vendorTermsAccepted,
|
|
this.createdAt,
|
|
this.updatedAt,
|
|
this.rtHash,
|
|
this.resetToken,
|
|
this.resetTokenExpiresAt,
|
|
});
|
|
|
|
factory User.fromJson(Map<dynamic, dynamic> json) => User(
|
|
id: json["id"],
|
|
email: json["email"],
|
|
firstName: json["firstName"],
|
|
lastName: json["lastName"],
|
|
name: json["name"],
|
|
img: json["img"],
|
|
authType: json["authType"],
|
|
role: json["role"],
|
|
phone: json["phone"],
|
|
password: json["password"],
|
|
isActive: json["isActive"],
|
|
isPhoneVerified: json["isPhoneVerified"],
|
|
vendorType: json["vendorType"],
|
|
businessId: json["businessId"],
|
|
isVendorAccountCreated: json["isVendorAccountCreated"],
|
|
isVendorAccountActive: json["isVendorAccountActive"],
|
|
vendorTermsAccepted: json["vendorTermsAccepted"],
|
|
createdAt: DateTime.parse(json["createdAt"]),
|
|
updatedAt: DateTime.parse(json["updatedAt"]),
|
|
rtHash: json["rtHash"],
|
|
resetToken: json["resetToken"],
|
|
resetTokenExpiresAt: json["resetTokenExpiresAt"],
|
|
);
|
|
|
|
Map<dynamic, dynamic> toJson() => {
|
|
"id": id,
|
|
"email": email,
|
|
"firstName": firstName,
|
|
"lastName": lastName,
|
|
"name": name,
|
|
"img": img,
|
|
"authType": authType,
|
|
"role": role,
|
|
"phone": phone,
|
|
"password": password,
|
|
"isActive": isActive,
|
|
"isPhoneVerified": isPhoneVerified,
|
|
"vendorType": vendorType,
|
|
"businessId": businessId,
|
|
"isVendorAccountCreated": isVendorAccountCreated,
|
|
"isVendorAccountActive": isVendorAccountActive,
|
|
"vendorTermsAccepted": vendorTermsAccepted,
|
|
"createdAt": createdAt,
|
|
"updatedAt": updatedAt,
|
|
"rtHash": rtHash,
|
|
"resetToken": resetToken,
|
|
"resetTokenExpiresAt": resetTokenExpiresAt,
|
|
};
|
|
}
|