/// Modelo de datos para retener la informacion basica necesaria de todos los modelos
class Basico {
  static const String identificadorLocal = "idLocal";
  static const String identificadorWeb = "id";

  int id;
  int idLocal;
  DateTime? creado;
  DateTime? modificado;
  DateTime? eliminado;

  Basico({
    this.id = 0,
    this.idLocal = -1,
    this.creado,
    this.modificado,
    this.eliminado,
  });

  static parseDate(origen) {
    if (origen == "null") return null;
    if (origen == null) return null;
    if (origen == '') return null;
    if (origen == "null") return null;
    return DateTime.parse(origen);
  }

  static double parseDouble(origen) {
    if (origen == null) return 0.0;
    if (origen == "null") return 0.0;
    if (origen == "") return 0.0;
    if (origen.runtimeType.toString() == 'double') return origen;
    return double.parse(origen.toString());
  }

  static int parseInt(origen) {
    if (origen == null) return 0;
    if (origen == "") return 0;
    if (origen == "null") return 0;
    if (origen.runtimeType.toString() == 'int') return origen;
    return int.parse(origen.toString());
  }

  static String parseString(origen) {
    if (origen == "null") return "";
    if (origen == null) return "";
    if (origen == "") return "";
    if (origen == "null") return "";
    if (origen.runtimeType.toString() == 'string') return origen;
    return origen.toString();
  }

  static bool parseBolean(origen) {
    if (origen == null) return false;
    if (origen == "") return false;
    if (origen == "null") return false;
    if (origen == "false") return false;
    if (origen.runtimeType.toString() == 'bool') return origen;
    return bool.parse(origen.toString());
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'idLocal': idLocal,
      //'eliminado': eliminado,
    };
  }

  parseJson(Map<String, dynamic> json) {
    id = json['id'] != null ? int.parse(json['id'].toString()) : 0;
    idLocal = json['idLocal'] ?? -1;
    eliminado = parseDate(json['eliminado']);
    creado = parseDate(json['creado']);
    modificado = parseDate(json['modificado']);
  }
}
