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

class Retiro {
  String? id;
  String? idCorteCaja;
  int? idSucursal;
  int? idUsuario;
  DateTime? fechaRetiro;
  double? monto;
  String? persona;
  String? descripcion;
  DateTime? creado;
  DateTime? modificado;
  DateTime? eliminado;

  Retiro({
    this.id,
    this.idCorteCaja,
    this.idSucursal,
    this.idUsuario,
    this.fechaRetiro,
    this.monto,
    this.persona,
    this.descripcion,
    this.creado,
    this.modificado,
    this.eliminado,
  });

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'idCorteCaja': idCorteCaja ?? 0,
      'idSucursal': idSucursal ?? 0,
      'idUsuario': idUsuario ?? 0,
      'fechaRetiro': fechaRetiro?.toIso8601String(),
      'monto': monto ?? 0.0,
      'persona': persona ?? '',
      'descripcion': descripcion ?? '',
      'creado': creado?.toIso8601String(),
      'modificado': modificado?.toIso8601String(),
      'eliminado': eliminado?.toIso8601String(),
    };
  }

  Map<String, dynamic> toApi() {
    return {
      'id': id,
      'idCorteCaja': idCorteCaja,
      'idSucursal': idSucursal,
      'idUsuario': idUsuario,
      'fechaRetiro': fechaRetiro,
      'monto': monto,
      'persona': persona,
      'descripcion': descripcion,
      'creado': creado,
      'modificado': modificado,
      'eliminado': eliminado,
    };
  }

  Retiro.fromJson(Map<String, dynamic> json) {
    id = Basico.parseString(json['id']);
    idCorteCaja = Basico.parseString(json['idCorteCaja']);
    idSucursal = Basico.parseInt(json['idSucursal']);
    idUsuario = Basico.parseInt(json['idUsuario']);
    fechaRetiro = Basico.parseDate(json['fechaRetiro']);
    monto = Basico.parseDouble(json['monto']);
    persona = Basico.parseString(json['persona']);
    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);
  }
}
