"""
Time_Tracker
Generated by Eden via recursive self-improvement
2025-10-27 17:37:48.308554
"""

from datetime import datetime

class TimeTracker:
    def __init__(self):
        self.current_session = None
        self.past_sessions = []

    def _save_current_session(self):
        """Saves the current active session if it exists."""
        if self.current_session is not None:
            end_time = datetime.now()
            duration = (end_time - self.current_session['start_time']).total_seconds() / 60
            self.past_sessions.append({
                'category': self.current_session['category'],
                'duration_minutes': duration,
                'start_time': self.current_session['start_time'].strftime('%Y-%m-%d %H:%M'),
                'end_time': end_time.strftime('%Y-%m-%d %H:%M')
            })
            self.current_session = None

    def start_timer(self, category):
        """Starts a new timer for the specified task category."""
        if self.current_session is not None:
            self._save_current_session()
        self.current_session = {
            'category': category,
            'start_time': datetime.now()
        }
        print(f"Timer started for {category}.")

    def stop_timer(self):
        """Stops the currently running timer and saves the session."""
        if self.current_session is None:
            print("No active timer to stop.")
            return
        self._save_current_session()
        print(f"Time tracking saved. Total duration: {self.past_sessions[-1]['duration_minutes']:.2f} minutes")

    def get_report(self, date=None):
        """Generates a report of time spent per category.
        
        Args:
            date (str, optional): Specific date in 'YYYY-MM-DD' format to filter reports. Defaults to None (today's date).
        
        Returns:
            dict: Dictionary with categories as keys and total minutes as values.
        """
        report = {}
        today_date = datetime.now().date()
        if date:
            try:
                target_date = datetime.strptime(date, '%Y-%m-%d').date()
            except ValueError:
                print("Invalid date format. Using today's date.")
                target_date = today_date
        else:
            target_date = today_date

        for session in self.past_sessions:
            session_date = datetime.strptime(session['start_time'], '%Y-%m-%d %H:%M').date()
            if session_date == target_date:
                category = session['category']
                duration = session['duration_minutes']
                report[category] = report.get(category, 0) + duration
        return {k: round(v, 2) for k, v in report.items()}

# Example usage:
if __name__ == "__main__":
    tracker = TimeTracker()
    
    # Start and stop timers
    print("Starting work on coding...")
    tracker.start_timer("coding")
    
    input("Work on coding done? Press Enter to stop.")
    tracker.stop_timer()
    
    print("\nStarting meeting...")
    tracker.start_timer("meeting")
    
    input("Meeting ended? Press Enter to stop.")
    tracker.stop_timer()
    
    # Generate and display today's report
    print("\nTime Tracking Report for Today:")
    report = tracker.get_report()
    if report:
        for category, minutes in report.items():
            print(f"{category}: {minutes:.2f} minutes")