import '/models/models.dart';

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

class UsuarioPermiso extends Basico {
  int? idUsuario;
  String? idPermiso;
  DateTime? asignado;

  UsuarioPermiso({super.id, this.idUsuario, this.idPermiso, this.asignado});

  @override
  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'idUsuario': idUsuario ?? 0,
      'idPermiso': idPermiso ?? '',
      'asignado': asignado?.toIso8601String(),
      'modificado': modificado?.toIso8601String(),
      'eliminado': eliminado?.toIso8601String(),
    }..addAll(super.toJson());
  }

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'idUsuario': idUsuario,
      'idPermiso': idPermiso,
      'asignado': asignado != null ? asignado!.toIso8601String() : null,
      'modificado': modificado != null ? modificado!.toIso8601String() : null,
      'eliminado': eliminado != null ? eliminado!.toIso8601String() : null,
    };
  }

  UsuarioPermiso.fromJson(Map<String, dynamic> json) {
    super.parseJson(json);
    idUsuario = Basico.parseInt(json['idUsuario']);
    idPermiso = Basico.parseString(json['idPermiso']);
    asignado = Basico.parseDate(json['asignado']);
  }

  UsuarioPermiso.fromApi(Map<String, dynamic> json) {
    super.parseJson(json);
    idUsuario = Basico.parseInt(json['idUsuario']);
    idPermiso = Basico.parseString(json['idPermiso']);
    asignado = Basico.parseDate(json['asignado']);
    modificado = Basico.parseDate(json['modificado']);
    eliminado = Basico.parseDate(json['eliminado']);
  }

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