using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace MoneyMap.Models; public enum AccountType { Checking, Savings, Other } public class Account { [Key] public int Id { get; set; } [Required] [MaxLength(100)] public string Institution { get; set; } = string.Empty; // e.g., "Chase", "Wells Fargo" [Required] [MaxLength(4)] public string Last4 { get; set; } = string.Empty; // Last 4 digits of account number [Required] [MaxLength(100)] public string Owner { get; set; } = string.Empty; // Account holder name public AccountType AccountType { get; set; } = AccountType.Checking; [MaxLength(50)] public string? Nickname { get; set; } // Optional friendly name like "Emergency Fund" // Navigation properties public ICollection Cards { get; set; } = new List(); // Cards linked to this account public ICollection Transactions { get; set; } = new List(); public ICollection SourceTransfers { get; set; } = new List(); public ICollection DestinationTransfers { get; set; } = new List(); [NotMapped] public string DisplayLabel => string.IsNullOrEmpty(Nickname) ? $"{Institution} {Last4} ({AccountType})" : $"{Nickname} ({Institution} {Last4})"; }