wordpress/lib/viewmodel/all_product_model.dart
2025-10-16 11:27:27 +05:30

326 lines
9.8 KiB
Dart

class AllProductModel {
final int id;
final String name;
final String slug;
final String permalink;
final DateTime dateCreated;
final DateTime dateCreatedGmt;
final DateTime dateModified;
final DateTime dateModifiedGmt;
final String type;
final String status;
final bool featured;
final String catalogVisibility;
final String description;
final String shortDescription;
final String sku;
final String price;
final String? regularPrice;
final String? salePrice;
final bool onSale;
final bool purchasable;
final int totalSales;
final bool virtual;
final bool downloadable;
final List<dynamic> downloads;
final int downloadLimit;
final int downloadExpiry;
final String externalUrl;
final String buttonText;
final String taxStatus;
final String taxClass;
final bool manageStock;
final int? stockQuantity;
final String backorders;
final bool backordersAllowed;
final bool backordered;
final int? lowStockAmount;
final bool soldIndividually;
final String weight;
final Dimensions dimensions;
final bool shippingRequired;
final bool shippingTaxable;
final String shippingClass;
final int shippingClassId;
final bool reviewsAllowed;
final String averageRating;
final int ratingCount;
final List<int> upsellIds;
final List<int> crossSellIds;
final int parentId;
final String purchaseNote;
final List<Category> categories;
final List<dynamic> brands;
final List<Tag> tags;
final List<ProductImage> images;
final List<Attribute> attributes;
final List<dynamic> defaultAttributes;
final List<int> variations;
final List<dynamic> groupedProducts;
final int menuOrder;
final String priceHtml;
final List<int> relatedIds;
final List<MetaData> metaData;
final String stockStatus;
final bool hasOptions;
final String postPassword;
final String globalUniqueId;
AllProductModel({
required this.id,
required this.name,
required this.slug,
required this.permalink,
required this.dateCreated,
required this.dateCreatedGmt,
required this.dateModified,
required this.dateModifiedGmt,
required this.type,
required this.status,
required this.featured,
required this.catalogVisibility,
required this.description,
required this.shortDescription,
required this.sku,
required this.price,
this.regularPrice,
this.salePrice,
required this.onSale,
required this.purchasable,
required this.totalSales,
required this.virtual,
required this.downloadable,
required this.downloads,
required this.downloadLimit,
required this.downloadExpiry,
required this.externalUrl,
required this.buttonText,
required this.taxStatus,
required this.taxClass,
required this.manageStock,
this.stockQuantity,
required this.backorders,
required this.backordersAllowed,
required this.backordered,
this.lowStockAmount,
required this.soldIndividually,
required this.weight,
required this.dimensions,
required this.shippingRequired,
required this.shippingTaxable,
required this.shippingClass,
required this.shippingClassId,
required this.reviewsAllowed,
required this.averageRating,
required this.ratingCount,
required this.upsellIds,
required this.crossSellIds,
required this.parentId,
required this.purchaseNote,
required this.categories,
required this.brands,
required this.tags,
required this.images,
required this.attributes,
required this.defaultAttributes,
required this.variations,
required this.groupedProducts,
required this.menuOrder,
required this.priceHtml,
required this.relatedIds,
required this.metaData,
required this.stockStatus,
required this.hasOptions,
required this.postPassword,
required this.globalUniqueId,
});
factory AllProductModel.fromJson(Map<String, dynamic> json) => AllProductModel(
id: json['id'],
name: json['name'],
slug: json['slug'],
permalink: json['permalink'],
dateCreated: DateTime.parse(json['date_created']),
dateCreatedGmt: DateTime.parse(json['date_created_gmt']),
dateModified: DateTime.parse(json['date_modified']),
dateModifiedGmt: DateTime.parse(json['date_modified_gmt']),
type: json['type'],
status: json['status'],
featured: json['featured'],
catalogVisibility: json['catalog_visibility'],
description: json['description'],
shortDescription: json['short_description'],
sku: json['sku'],
price: json['price'],
regularPrice: json['regular_price'],
salePrice: json['sale_price'],
onSale: json['on_sale'],
purchasable: json['purchasable'],
totalSales: json['total_sales'],
virtual: json['virtual'],
downloadable: json['downloadable'],
downloads: json['downloads'],
downloadLimit: json['download_limit'],
downloadExpiry: json['download_expiry'],
externalUrl: json['external_url'],
buttonText: json['button_text'],
taxStatus: json['tax_status'],
taxClass: json['tax_class'],
manageStock: json['manage_stock'],
stockQuantity: json['stock_quantity'],
backorders: json['backorders'],
backordersAllowed: json['backorders_allowed'],
backordered: json['backordered'],
lowStockAmount: json['low_stock_amount'],
soldIndividually: json['sold_individually'],
weight: json['weight'],
dimensions: Dimensions.fromJson(json['dimensions']),
shippingRequired: json['shipping_required'],
shippingTaxable: json['shipping_taxable'],
shippingClass: json['shipping_class'],
shippingClassId: json['shipping_class_id'],
reviewsAllowed: json['reviews_allowed'],
averageRating: json['average_rating'],
ratingCount: json['rating_count'],
upsellIds: List<int>.from(json['upsell_ids']),
crossSellIds: List<int>.from(json['cross_sell_ids']),
parentId: json['parent_id'],
purchaseNote: json['purchase_note'],
categories: List<Category>.from(json['categories'].map((x) => Category.fromJson(x))),
brands: json['brands'],
tags: List<Tag>.from(json['tags'].map((x) => Tag.fromJson(x))),
images: List<ProductImage>.from(json['images'].map((x) => ProductImage.fromJson(x))),
attributes: List<Attribute>.from(json['attributes'].map((x) => Attribute.fromJson(x))),
defaultAttributes: json['default_attributes'],
variations: List<int>.from(json['variations']),
groupedProducts: json['grouped_products'],
menuOrder: json['menu_order'],
priceHtml: json['price_html'],
relatedIds: List<int>.from(json['related_ids']),
metaData: List<MetaData>.from(json['meta_data'].map((x) => MetaData.fromJson(x))),
stockStatus: json['stock_status'],
hasOptions: json['has_options'],
postPassword: json['post_password'],
globalUniqueId: json['global_unique_id'],
);
}
class Dimensions {
final String length;
final String width;
final String height;
Dimensions({required this.length, required this.width, required this.height});
factory Dimensions.fromJson(Map<String, dynamic> json) => Dimensions(
length: json['length'],
width: json['width'],
height: json['height'],
);
}
class Category {
final int id;
final String name;
final String slug;
Category({required this.id, required this.name, required this.slug});
factory Category.fromJson(Map<String, dynamic> json) => Category(
id: json['id'],
name: json['name'],
slug: json['slug'],
);
}
class Tag {
final int id;
final String name;
final String slug;
Tag({required this.id, required this.name, required this.slug});
factory Tag.fromJson(Map<String, dynamic> json) => Tag(
id: json['id'],
name: json['name'],
slug: json['slug'],
);
}
class ProductImage {
final int id;
final DateTime dateCreated;
final DateTime dateCreatedGmt;
final DateTime dateModified;
final DateTime dateModifiedGmt;
final String src;
final String name;
final String alt;
ProductImage({
required this.id,
required this.dateCreated,
required this.dateCreatedGmt,
required this.dateModified,
required this.dateModifiedGmt,
required this.src,
required this.name,
required this.alt,
});
factory ProductImage.fromJson(Map<String, dynamic> json) => ProductImage(
id: json['id'],
dateCreated: DateTime.parse(json['date_created']),
dateCreatedGmt: DateTime.parse(json['date_created_gmt']),
dateModified: DateTime.parse(json['date_modified']),
dateModifiedGmt: DateTime.parse(json['date_modified_gmt']),
src: json['src'],
name: json['name'],
alt: json['alt'],
);
}
class Attribute {
final int id;
final String name;
final String slug;
final int position;
final bool visible;
final bool variation;
final List<String> options;
Attribute({
required this.id,
required this.name,
required this.slug,
required this.position,
required this.visible,
required this.variation,
required this.options,
});
factory Attribute.fromJson(Map<String, dynamic> json) => Attribute(
id: json['id'],
name: json['name'],
slug: json['slug'],
position: json['position'],
visible: json['visible'],
variation: json['variation'],
options: List<String>.from(json['options']),
);
}
class MetaData {
final int id;
final String key;
final dynamic value;
MetaData({required this.id, required this.key, required this.value});
factory MetaData.fromJson(Map<String, dynamic> json) => MetaData(
id: json['id'],
key: json['key'],
value: json['value'],
);
}