import 'package:household_keeper/features/home/domain/daily_plan_models.dart';

/// State for the calendar day view: tasks for the selected date + overdue tasks
/// + pre-populated tasks within the current interval window.
class CalendarDayState {
  final DateTime selectedDate;
  final List<TaskWithRoom> dayTasks;
  final List<TaskWithRoom> overdueTasks;

  /// Tasks visible via pre-population: recurring tasks whose nextDueDate is in
  /// the future but whose current interval window includes [selectedDate].
  /// These are shown with muted styling to distinguish them from due-today tasks.
  final List<TaskWithRoom> prePopulatedTasks;

  /// Total number of tasks in the database (across all days/rooms).
  /// Used by the UI to distinguish first-run empty state (no tasks exist at all)
  /// from celebration state (tasks exist but today's are all done).
  final int totalTaskCount;

  const CalendarDayState({
    required this.selectedDate,
    required this.dayTasks,
    required this.overdueTasks,
    this.prePopulatedTasks = const [],
    required this.totalTaskCount,
  });

  /// True when day tasks, overdue tasks, and pre-populated tasks are all empty.
  bool get isEmpty =>
      dayTasks.isEmpty && overdueTasks.isEmpty && prePopulatedTasks.isEmpty;
}
