import 'package:json_annotation/json_annotation.dart';
import 'package:prasule/api/category.dart';
import 'package:prasule/api/entry_data.dart';

part 'wallet_entry.g.dart';

@JsonSerializable()

/// This is an entry containing a single item
class WalletSingleEntry {
  /// This is an entry containing a single item
  WalletSingleEntry({
    required this.data,
    required this.type,
    required this.date,
    required this.category,
    required this.id,
  });

  /// Connects the generated fromJson method
  factory WalletSingleEntry.fromJson(Map<String, dynamic> json) =>
      _$WalletSingleEntryFromJson(json);

  /// Expense or income
  EntryType type;

  /// Actual entry data
  EntryData data;

  /// Date of entry creation
  DateTime date;

  /// Selected category
  WalletCategory category;

  /// Unique entry ID
  int id;

  /// Connects the generated toJson method
  Map<String, dynamic> toJson() => _$WalletSingleEntryToJson(this);
}
