using System.ComponentModel.DataAnnotations; using static System.Text.RegularExpressions.Regex; namespace Core.Entities; public class Student { public int Id { get; set; } [Required] [StringLength(50,MinimumLength = 2)] [Display(Name = "First Name")] public string FirstName { get; set; } [Required] [StringLength(50, MinimumLength = 2)] [Display(Name = "Last Name")] public string LastName { get; set; } [Range(5,12)] [Display(Name = "Grade")] public int Grade { get; set; } [EmailAddress] [Display(Name = "Email Address")] public string? Email { get; set; } [Phone] [Display(Name = "Phone Number")] public string? PhoneNumber { get; set; } [Display(Name = "TSA Year")] public int TsaYear { get; set; } [Display(Name = "State Id")] public string? StateId { get; set; } [Display(Name = "Regional Id")] public string? RegionalId { get; set; } [Display(Name = "National Id")] public string? NationalId { get; set; } [Display(Name = "Officer Role")] public OfficerRole? OfficerRole { get; set; } public List Teams { get; set; } = null; public List RankedEvents { get; } = []; public List EventRankings { get; } = []; public string Name => FirstNameLastName; public string LastNameFirstName => $"{LastName}, {FirstName}"; public string FirstNameLastName => $"{FirstName} {LastName}"; public static Tuple ParseNameParts(string fullName) { var match = Match(fullName, @"(.*),\s*(.*)"); if (match.Success) return Tuple.Create(match.Groups[2].Value, match.Groups[1].Value); match = Match(fullName, @"(.*)\s*(.*)"); return match.Success ? Tuple.Create(match.Groups[1].Value, match.Groups[2].Value) : new Tuple(fullName, string.Empty); } public override string ToString() { return FirstName; } public bool VotingDelegate => OfficerRole is Entities.OfficerRole.President or Entities.OfficerRole.VicePresident; }