Untitled

 avatar
unknown
plain_text
3 years ago
7.5 kB
6
Indexable
class ProductsModel {
  ProductsModel({
    this.code,
    this.status,
    this.message,
    this.data,
  });

  int? code;
  bool? status;
  String? message;
  List<Datum>? data;

  factory ProductsModel.fromJson(Map<String, dynamic> json) => ProductsModel(
        code: json["code"],
        status: json["status"],
        message: json["message"],
        data: List<Datum>.from(json["data"].map((x) => Datum.fromJson(x))),
      );

  Map<String, dynamic> toJson() => {
        "code": code,
        "status": status,
        "message": message,
        "data": List<dynamic>.from(data!.map((x) => x.toJson())),
      };
}

class Datum {
  Datum({
    this.id,
    this.userId,
    this.productName,
    this.brandId,
    this.categoryId,
    this.subcategoryId,
    this.size,
    this.color,
    this.price,
    this.discountRate,
    this.quantity,
    this.discountPrice,
    this.discription,
    this.image,
    this.slug,
    this.sku,
    this.credit,
    this.totalPrice,
    this.featureProduct,
    this.trandProduct,
    this.exclusiveProduct,
    this.rate,
    this.status,
    this.createdAt,
    this.updatedAt,
    this.productToCategory,
    this.productToSubcategory,
    this.productToBrand,
    this.galleryProduct,
  });

  int? id;
  String? userId;
  String? productName;
  String? brandId;
  String? categoryId;
  String? subcategoryId;
  List<Size>? size;
  List<String>? color;
  String? price;
  String? discountRate;
  String? quantity;
  String? discountPrice;
  String? discription;
  String? image;
  String? slug;
  String? sku;
  Credit? credit;
  String? totalPrice;
  String? featureProduct;
  String? trandProduct;
  String? exclusiveProduct;
  String? rate;
  Status? status;
  DateTime? createdAt;
  DateTime? updatedAt;
  ProductTo? productToCategory;
  ProductTo? productToSubcategory;
  ProductTo? productToBrand;
  GalleryProduct? galleryProduct;

  factory Datum.fromJson(Map<String, dynamic> json) => Datum(
        id: json["id"],
        userId: json["user_id"],
        productName: json["product_name"],
        brandId: json["brand_id"],
        categoryId: json["category_id"],
        subcategoryId: json["subcategory_id"],
        size: List<Size>.from(json["size"].map((x) => sizeValues.map![x])),
        color: List<String>.from(json["color"].map((x) => x)),
        price: json["price"],
        discountRate: json["discount_rate"],
        quantity: json["quantity"],
        discountPrice: json["discount_price"],
        discription: json["discription"],
        image: json["image"],
        slug: json["slug"],
        sku: json["sku"],
        credit: creditValues.map![json["credit"]],
        totalPrice: json["total_price"],
        featureProduct: json["feature_product"],
        trandProduct: json["trand_product"],
        exclusiveProduct: json["exclusive_product"],
        rate: json["rate"],
        status: statusValues.map![json["status"]],
        createdAt: DateTime.parse(json["created_at"]),
        updatedAt: json["updated_at"] == null
            ? null
            : DateTime.parse(json["updated_at"]),
        productToCategory: ProductTo.fromJson(json["product_to_category"]),
        productToSubcategory:
            ProductTo.fromJson(json["product_to_subcategory"]),
        productToBrand: ProductTo.fromJson(json["product_to_brand"]),
        galleryProduct: GalleryProduct.fromJson(json["gallery_product"]),
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "user_id": userId,
        "product_name": productName,
        "brand_id": brandId,
        "category_id": categoryId,
        "subcategory_id": subcategoryId,
        "size": List<dynamic>.from(size!.map((x) => sizeValues.reverse[x])),
        "color": List<dynamic>.from(color!.map((x) => x)),
        "price": price,
        "discount_rate": discountRate,
        "quantity": quantity,
        "discount_price": discountPrice,
        "discription": discription,
        "image": image,
        "slug": slug,
        "sku": sku,
        "credit": creditValues.reverse[credit],
        "total_price": totalPrice,
        "feature_product": featureProduct,
        "trand_product": trandProduct,
        "exclusive_product": exclusiveProduct,
        "rate": rate,
        "status": statusValues.reverse[status],
        "created_at": createdAt!.toIso8601String(),
        "updated_at": updatedAt == null ? null : updatedAt!.toIso8601String(),
        "product_to_category": productToCategory!.toJson(),
        "product_to_subcategory": productToSubcategory!.toJson(),
        "product_to_brand": productToBrand!.toJson(),
        "gallery_product": galleryProduct!.toJson(),
      };
}

enum Credit { EMPTY, CREDIT }

final creditValues = EnumValues({"%": Credit.CREDIT, "-": Credit.EMPTY});

class GalleryProduct {
  GalleryProduct({
    this.id,
    this.productId,
    this.image,
    this.image1,
    this.image2,
    this.image3,
    this.createdAt,
    this.updatedAt,
  });

  int? id;
  String? productId;
  String? image;
  String? image1;
  String? image2;
  String? image3;
  dynamic? createdAt;
  DateTime? updatedAt;

  factory GalleryProduct.fromJson(Map<String, dynamic> json) => GalleryProduct(
        id: json["id"],
        productId: json["product_id"],
        image: json["image"],
        image1: json["image1"],
        image2: json["image2"],
        image3: json["image3"],
        createdAt: json["created_at"],
        updatedAt: json["updated_at"] == null
            ? null
            : DateTime.parse(json["updated_at"]),
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "product_id": productId,
        "image": image,
        "image1": image1,
        "image2": image2,
        "image3": image3,
        "created_at": createdAt,
        "updated_at": updatedAt == null ? null : updatedAt!.toIso8601String(),
      };
}

class ProductTo {
  ProductTo({
    this.id,
    this.brandTitle,
    this.photo,
    this.summary,
    this.status,
    this.createdAt,
    this.updatedAt,
    this.title,
    this.categoryId,
  });

  int? id;
  String? brandTitle;
  String? photo;
  dynamic summary;
  Status? status;
  DateTime? createdAt;
  DateTime? updatedAt;
  String? title;
  String? categoryId;

  factory ProductTo.fromJson(Map<String, dynamic> json) => ProductTo(
        id: json["id"],
        brandTitle: json["brand_title"],
        photo: json["photo"],
        summary: json["summary"],
        status: statusValues.map![json["status"]],
        createdAt: DateTime.parse(json["created_at"]),
        updatedAt: DateTime.parse(json["updated_at"]),
        title: json["title"],
        categoryId: json["category_id"],
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "brand_title": brandTitle,
        "photo": photo,
        "summary": summary,
        "status": statusValues.reverse[status],
        "created_at": createdAt!.toIso8601String(),
        "updated_at": updatedAt!.toIso8601String(),
        "title": title,
        "category_id": categoryId,
      };
}

enum Status { INACTIVE, ACTIVE }

final statusValues =
    EnumValues({"active": Status.ACTIVE, "inactive": Status.INACTIVE});

enum Size { S, M, L, XXL }

final sizeValues =
    EnumValues({"L": Size.L, "M": Size.M, "S": Size.S, "XXL": Size.XXL});

class EnumValues<T> {
  Map<String, T>? map;
  Map<T, String>? reverseMap;

  EnumValues(this.map);

  Map<T, String> get reverse {
    reverseMap ??= map!.map((k, v) => MapEntry(v, k));
    return reverseMap!;
  }
}
Editor is loading...