import 'basico_model.dart';
import '../services/services.dart';

class CategoriaProducto extends Basico {
  String? nombre;
  String? descripcion;
  int? esToping;
  int? maximo;
  int? minimo;
  int? idWeb;
  String? sincronizado;

  CategoriaProducto({
    super.id,
    this.nombre,
    this.descripcion,
    this.esToping,
    this.maximo,
    this.minimo,
    this.idWeb,
    this.sincronizado,
  });

  @override
  Map<String, dynamic> toJson() {
    // print("Convirtiendo Producto a JSON");
    // print("ID: $id, descripcion: $descripcion, Nombre: $nombre");
    // print("creado: $creado, modificado: $modificado, eliminado: $eliminado");

    return {
      'id': id,
      'nombre': nombre ?? '',
      'descripcion': descripcion ?? '',
      'esToping': esToping ?? 0,
      'maximo': maximo ?? 0,
      'minimo': minimo ?? 0,
      'creado': creado?.toIso8601String(),
      'modificado': modificado?.toIso8601String(),
      'eliminado': eliminado?.toIso8601String(),
    }..addAll(super.toJson());
  }

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'nombre': nombre ?? '',
      'descripcion': descripcion ?? '',
      'esToping': esToping ?? 0,
      'maximo': maximo ?? 0,
      'minimo': minimo ?? 0,
      'creado': creado?.toIso8601String(),
      'modificado': modificado?.toIso8601String(),
      'eliminado': eliminado?.toIso8601String(),
    };
  }

  static CategoriaProducto fromMap(Map<String, dynamic> map) {
    final mesa = CategoriaProducto(
      id: map['id'] as int,
      nombre: map['nombre'] as String?,
      descripcion: map['descripcion'] as String?,
      esToping: map['esToping'] as int,
      maximo: map['maximo'] as int,
      minimo: map['minimo'] as int,
    );
    return mesa;
  }

  CategoriaProducto.fromJson(Map<String, dynamic> json) {
    super.parseJson(json);
    nombre = Basico.parseString(json['nombre']);
    descripcion = Basico.parseString(json['descripcion']);
    esToping = Basico.parseInt(json['esToping']);
    maximo = Basico.parseInt(json['maximo']);
    minimo = Basico.parseInt(json['minimo']);
  }

  CategoriaProducto.fromApi(Map<String, dynamic> json) {
    super.parseJson(json);
    nombre = Basico.parseString(json['nombre']);
    descripcion = Basico.parseString(json['descripcion']);
    esToping = Basico.parseInt(json['esToping']);
    maximo = Basico.parseInt(json['maximo']);
    minimo = Basico.parseInt(json['minimo']);
    creado = Basico.parseDate(json['creado']);
    modificado = Basico.parseDate(json['modificado']);
    eliminado = Basico.parseDate(json['eliminado']);
  }

  Future<void> guardar() async {
    idLocal = await DatabaseService().guardar(this);
  }
}
