import 'package:flutter/material.dart';

enum CalendarViewType { day, month }

class CalendarState {
  final CalendarViewType viewType;
  final DateTime selectedDate;

  CalendarState({required this.viewType, required this.selectedDate});

  CalendarState copyWith({CalendarViewType? viewType, DateTime? selectedDate}) {
    return CalendarState(
      viewType: viewType ?? this.viewType,
      selectedDate: selectedDate ?? this.selectedDate,
    );
  }
}

class CalendarStateManager extends ChangeNotifier {
  CalendarState _state;

  CalendarStateManager()
    : _state = CalendarState(
        viewType: CalendarViewType.month,
        selectedDate: DateTime.now(),
      );

  CalendarState get state => _state;

  CalendarViewType get viewType => _state.viewType;
  DateTime get selectedDate => _state.selectedDate;

  void setViewType(CalendarViewType type) {
    _state = _state.copyWith(viewType: type);
    notifyListeners();
  }

  void setSelectedDate(DateTime date) {
    _state = _state.copyWith(selectedDate: date);
    notifyListeners();
  }

  void resetToToday() {
    final now = DateTime.now();
    _state = CalendarState(
      viewType: CalendarViewType.month,
      selectedDate: DateTime(now.year, now.month, now.day),
    );
    notifyListeners();
  }
}
