import '../models/models.dart';

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

class Permiso {
  String? id;
  String? idModulo;
  String? nombre;
  String? descripcion;
  DateTime? eliminado;
  DateTime? creado;
  DateTime? modificado;

  Permiso(
      {this.id,
      this.idModulo,
      this.nombre,
      this.descripcion,
      this.eliminado,
      this.creado,
      this.modificado});

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'idModulo': idModulo ?? '',
      'nombre': nombre ?? '',
      'descripcion': descripcion ?? '',
      'creado': creado?.toIso8601String(),
      'modificado': modificado?.toIso8601String(),
      'eliminado': eliminado?.toIso8601String(),
    };
  }

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'idModulo': idModulo,
      'nombre': nombre,
      'descripcion': descripcion,
      'creado': creado != null ? creado!.toIso8601String() : null,
      'modificado': modificado != null ? modificado!.toIso8601String() : null,
      'eliminado': eliminado != null ? eliminado!.toIso8601String() : null,
    };
  }

  Permiso.fromJson(Map<String, dynamic> json) {
    id = Basico.parseString(json['id']);
    idModulo = Basico.parseString(json['idModulo']);
    nombre = Basico.parseString(json['nombre']);
    descripcion = Basico.parseString(json['descripcion']);
    creado = json['creado'] != null ? Basico.parseDate(json['creado']) : creado;
    eliminado = json['eliminado'] != null
        ? Basico.parseDate(json['eliminado'])
        : eliminado;
    modificado = json['modificado'] != null
        ? Basico.parseDate(json['modificado'])
        : modificado;
  }

  Permiso.fromApi(Map<String, dynamic> json) {
    id = Basico.parseString(json['id']);
    idModulo = Basico.parseString(json['idModulo']);
    nombre = Basico.parseString(json['nombre']);
    descripcion = Basico.parseString(json['descripcion']);
    creado = Basico.parseDate(json['creado']);
    modificado = Basico.parseDate(json['modificado']);
    eliminado = Basico.parseDate(json['eliminado']);
  }

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