import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import '../models/models.dart';
import '../services/repo_service.dart';

class CorteCajaViewModel extends ChangeNotifier {
  List<CorteCaja> _cortes = [];
  List<CorteCaja> get cortes => _cortes;

  bool _isLoading = false;
  bool get isLoading => _isLoading;
  CorteCaja? _selectedCorte;

  int _currentPage = 1;
  int _totalCortes = 0;
  int _limit = 10;

  int get currentPage => _currentPage;
  int get totalCortes => _totalCortes;
  int get totalPages => (_totalCortes / _limit).ceil();

  CorteCaja? get selectedCorte => _selectedCorte;

  void setIsLoading(bool loading) {
    _isLoading = loading;
    notifyListeners();
  }

  void nextPage() {
    if (_currentPage < totalPages) {
      fetchCortes(page: _currentPage + 1);
    }
  }

  void previousPage() {
    if (_currentPage > 1) {
      fetchCortes(page: _currentPage - 1);
    }
  }

  Future<void> fetchCortes({int page = 1}) async {
    setIsLoading(true);
    RepoService<CorteCaja> repoCorte = RepoService<CorteCaja>();
    _currentPage = page;
    _cortes = await repoCorte.obtenerTodos();
    setIsLoading(false);
    notifyListeners();
  }

  Future<void> buscarPorFecha(DateTime startDate, DateTime endDate) async {
    setIsLoading(true);
    RepoService<CorteCaja> repoCorte = RepoService<CorteCaja>();

    List<CorteCaja> localCorte =
        await repoCorte.buscarPorFechaCorte(startDate, endDate);
    _cortes = localCorte;

    setIsLoading(false);
    notifyListeners();
  }
}
