producto_model.dart 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import 'package:yoshi_papas_app/models/models.dart';
  2. import '../services/services.dart';
  3. import 'basico_model.dart';
  4. class Producto extends Basico {
  5. int? idCategoria;
  6. CategoriaProducto? categoria;
  7. String? nombre;
  8. String? descripcion;
  9. String? imagen;
  10. int? venta;
  11. int? existencia;
  12. String? precio;
  13. int? verMenu;
  14. String? codigo;
  15. String? descuento;
  16. String? venceDescuento;
  17. int? toping;
  18. List<Toping>? topings;
  19. Producto({
  20. super.id,
  21. this.idCategoria,
  22. this.nombre,
  23. this.descripcion,
  24. this.imagen,
  25. this.venta,
  26. this.existencia,
  27. this.precio,
  28. this.verMenu,
  29. this.codigo,
  30. this.descuento,
  31. this.venceDescuento,
  32. this.toping,
  33. this.topings,
  34. });
  35. @override
  36. Map<String, dynamic> toJson() {
  37. return {
  38. 'id': id,
  39. 'idCategoria': idCategoria,
  40. 'nombre': nombre,
  41. 'descripcion': descripcion,
  42. 'imagen': imagen,
  43. 'venta': venta,
  44. 'existencia': existencia,
  45. 'precio': precio,
  46. 'verMenu': verMenu,
  47. 'codigo': codigo,
  48. 'descuento': descuento,
  49. 'venceDescuento': venceDescuento,
  50. 'toping': toping,
  51. 'toppings': topings?.map((toping) => toping.toJson()).toList(),
  52. }..addAll(super.toJson());
  53. }
  54. Map<String, dynamic> toMap() {
  55. return {
  56. 'id': id,
  57. 'idCategoria': idCategoria,
  58. 'nombre': nombre,
  59. 'descripcion': descripcion,
  60. 'imagen': imagen,
  61. 'venta': venta,
  62. 'existencia': existencia,
  63. 'precio': precio,
  64. 'verMenu': verMenu,
  65. 'codigo': codigo,
  66. 'descuento': descuento,
  67. 'venceDescuento': venceDescuento,
  68. 'toping': toping,
  69. // Asegúrate de convertir también los toppings si es necesario
  70. 'toppings': topings?.map((t) => t.toJson()).toList(),
  71. };
  72. }
  73. Producto.fromJson(Map<String, dynamic> json) {
  74. super.parseJson(json);
  75. idCategoria = Basico.parseInt(json['idCategoria']);
  76. categoria = json["categoria"] != null
  77. ? CategoriaProducto.fromJson(json["categoria"])
  78. : null;
  79. nombre = Basico.parseString(json['nombre']);
  80. descripcion = Basico.parseString(json['descripcion']);
  81. imagen = Basico.parseString(json['imagen']);
  82. venta = Basico.parseInt(json['venta']);
  83. existencia = Basico.parseInt(json['existencia']);
  84. precio = Basico.parseString(json['precio']);
  85. verMenu = Basico.parseInt(json['verMenu']);
  86. codigo = Basico.parseString(json['codigo']);
  87. descuento = Basico.parseString(json['descuento']);
  88. venceDescuento = Basico.parseString(json['venceDescuento']);
  89. if (json['toping'] is bool) {
  90. toping = json['toping'] ? 1 : 0;
  91. } else {
  92. toping = Basico.parseInt(json['toping']);
  93. }
  94. if (json['toppings'] != null) {
  95. topings = (json['toppings'] as List)
  96. .map((topingJson) => Toping.fromJson(topingJson))
  97. .toList();
  98. }
  99. }
  100. Future<void> guardar() async {
  101. idLocal = await RepoService().guardar(this);
  102. }
  103. }