import 'dart:convert';

class Domicilio {
  final String id;
  final String nombre;
  final String colonia;
  final String calle;
  final String numero;
  final double latitud;
  final double longitud;

  Domicilio({
    required this.id,
    required this.nombre,
    required this.colonia,
    required this.calle,
    required this.numero,
    required this.latitud,
    required this.longitud,
  });

  String get direccionCompleta => '$colonia, $calle $numero';

  Map<String, dynamic> toJson() => {
    'id': id,
    'nombre': nombre,
    'colonia': colonia,
    'calle': calle,
    'numero': numero,
    'latitud': latitud,
    'longitud': longitud,
  };

  factory Domicilio.fromJson(Map<String, dynamic> json) {
    return Domicilio(
      id: json['id'],
      nombre: json['nombre'],
      colonia: json['colonia'],
      calle: json['calle'],
      numero: json['numero'],
      latitud: json['latitud'].toDouble(),
      longitud: json['longitud'].toDouble(),
    );
  }

  static String encode(List<Domicilio> domicilios) {
    return json.encode(domicilios.map((d) => d.toJson()).toList());
  }

  static List<Domicilio> decode(String domiciliosString) {
    final List<dynamic> data = json.decode(domiciliosString);
    return data.map((item) => Domicilio.fromJson(item)).toList();
  }
}