import '/models/frequency.dart';

class Expense {
  final int? id;
  final String name;
  final double cost;
  final Frequency frequency;
  final String description;

  const Expense({
    this.id,
    required this.name,
    required this.cost,
    required this.frequency,
    required this.description,
  });

  @override
  String toString() {
    //return "$name, $cost, ${frequency.title}, $description";
    return toMap().toString();
  }

  double calcComparableCost() {
    return cost * frequency.timesPerYear;
  }

  double calcComparableCostDaily() {
    return cost / frequency.numDays;
  }

  factory Expense.fromMap(Map<String, dynamic> json) => Expense(
        id: json['id'],
        name: json['name'],
        cost: json['cost'],
        frequency: Frequency.values
            .where((expense) => expense.title == json['frequency'])
            .first,
        description: json['description'],
      );

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'name': name,
      'cost': cost,
      'frequency': frequency.title,
      'description': description,
    };
  }
}