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

class Sucursal extends Basico {
  String? nombre;
  String? descripcion;
  String? direccion;
  String? ciudad;
  String? clave;
  int? activo;
  int? seleccionado;

  Sucursal({
    super.id,
    this.nombre,
    this.descripcion,
    this.direccion,
    this.ciudad,
    this.clave,
    this.activo,
    this.seleccionado,
  });

  @override
  bool operator ==(Object other) {
    if (identical(this, other)) return true;
    return other is Sucursal && other.id == id;
  }

  @override
  Map<String, dynamic> toJson() {
    print("Convirtiendo Sucursal a JSON");
    print(
        "ID: $id, Nombre: $nombre, Descripción: $descripcion, Dirección: $direccion, Ciudad: $ciudad, Activo: $activo, Clave: $clave");
    print("Creado: $creado, Modificado: $modificado, Eliminado: $eliminado");

    return {
      'id': id,
      'nombre': nombre ?? '',
      'descripcion': descripcion ?? '',
      'direccion': direccion ?? '',
      'ciudad': ciudad ?? '',
      'clave': clave ?? '',
      'activo': activo ?? 0,
      'seleccionado': seleccionado ?? 0,
      'creado': creado?.toIso8601String(),
      'modificado': modificado?.toIso8601String(),
      'eliminado': eliminado?.toIso8601String(),
    }..addAll(super.toJson());
  }

  Sucursal.fromJson(Map<String, dynamic> json) {
    super.parseJson(json);
    nombre = Basico.parseString(json['nombre']);
    descripcion = Basico.parseString(json['descripcion']);
    direccion = Basico.parseString(json['direccion']);
    ciudad = Basico.parseString(json['ciudad']);
    activo = Basico.parseInt(json['activo']);
    seleccionado = Basico.parseInt(json['seleccionado']);
    clave = Basico.parseString(json['clave']);
  }

  Sucursal.fromApi(Map<String, dynamic> json) {
    super.parseJson(json);
    nombre = Basico.parseString(json['nombre']);
    descripcion = Basico.parseString(json['descripcion']);
    direccion = Basico.parseString(json['direccion']);
    ciudad = Basico.parseString(json['ciudad']);
    activo = json['activo'] == 1 ? 1 : 0;
    clave = Basico.parseString(json['clave']);
    creado = Basico.parseDate(json['creado']);
    modificado = Basico.parseDate(json['modificado']);
    eliminado = Basico.parseDate(json['eliminado']);
  }

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