import 'models.dart';

class PedidoProducto extends Basico {
  int? idPedido;
  int? idProducto;
  Producto? producto;
  String? costoUnitario;
  String? descuento;
  int? cantidad;
  int? terminar;
  String? comentario;
  List<PedidoProductoTopping> toppings = [];
  int? idWeb;
  String? sincronizado;

  PedidoProducto({
    super.id,
    this.idPedido,
    this.idProducto,
    this.producto,
    this.costoUnitario,
    this.descuento,
    this.cantidad,
    this.terminar,
    this.comentario,
    this.toppings = const [],
    this.idWeb,
    this.sincronizado,
    super.eliminado,
  });

  @override
  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'idPedido': idPedido,
      'idProducto': idProducto,
      'costoUnitario': costoUnitario,
      'descuento': descuento,
      'cantidad': cantidad,
      'terminar': terminar,
      'comentario': comentario,
      'idWeb': idWeb,
      'sincronizado': sincronizado,
      'eliminado': eliminado?.toIso8601String(),
    }..addAll(super.toJson());
  }

  Map<String, dynamic> toApi() {
    return {
      'idLocal': idProducto,
      'nombre': producto?.nombre ?? '',
      'costoUnitario': costoUnitario,
      'descuento': descuento,
      'cantidad': cantidad,
      'comentario': comentario,
      'eliminado': eliminado,
      'toppings': toppings.map((topping) => topping.toApi()).toList(),
    };
  }

  PedidoProducto.fromJson(Map<String, dynamic> json) {
    super.parseJson(json);
    idPedido = Basico.parseInt(json['idPedido']);
    idProducto = Basico.parseInt(json['idProducto']);
    producto =
        json['producto'] != null ? Producto.fromJson(json['producto']) : null;
    costoUnitario = Basico.parseString(json['costoUnitario']);
    descuento = Basico.parseString(json['descuento']);
    cantidad = Basico.parseInt(json['cantidad']);
    terminar = Basico.parseInt(json['terminar']);
    comentario = Basico.parseString(json['comentario']);
    idWeb = Basico.parseInt(json['idWeb']);
    sincronizado = Basico.parseString(json['sincronizado']);
    toppings = (json['toppings'] as List<dynamic>?)
            ?.map((topingJson) => PedidoProductoTopping.fromJson(
                topingJson as Map<String, dynamic>))
            .toList() ??
        [];
  }
}
