Files
chapter-organizer/Core/Entities/Team.cs
T
poprhythm bba0f5f618 Fix formatting issue in Team entity and improve ToString method for null safety
This commit addresses a formatting issue in the Team.cs file by removing an invisible character at the beginning of the file. Additionally, the ToString method is updated to safely handle null values for the Event property, ensuring that it returns a default message when no event is associated with the team. These changes enhance code readability and prevent potential null reference exceptions.
2026-01-25 21:59:16 -05:00

66 lines
1.9 KiB
C#

using System.ComponentModel.DataAnnotations;
using Core.Models;
namespace Core.Entities;
public class Team
{
public int Id { get; set; }
[Required]
public EventDefinition Event { get; set; } = null!;
public List<Student> Students { get; set; } = [];
public Student? Captain { get; set; }
[Display(Name = "Team Identifier")]
[StringLength(32)]
public string? Identifier { get; set; }
// public Tuple<DateTime,DateTime?>? RegionalTimeSlotObj
//{
// get
// {
// if (string.IsNullOrEmpty(RegionalTimeSlot))
// return null;
// var times = Regex.Matches(RegionalTimeSlot, @"(.*)\s*-\s*(.*)");
// if (times.Count == 0)
// return Tuple.Create(P(RegionalTimeSlot), (DateTime?)null);
// var match = times[0];
// if (!match.Success)
// return Tuple.Create(P(RegionalTimeSlot), (DateTime?)null);
// return Tuple.Create(P(match.Groups[1].Value), (DateTime?)P(match.Groups[2].Value));
// return null;
// }
//}
private DateTime P(string s)
{
var dt = DateTime.Parse(s);
if (dt.TimeOfDay < TimeSpan.FromHours(7))
return dt + TimeSpan.FromHours(12);
return dt;
}
public virtual Team CloneWithOmittedStudents(IEnumerable<Student> studentsToOmit)
{
var studentsToOmitList = studentsToOmit.ToList();
var omittedStudents = Students.Where(studentsToOmitList.Contains).ToList();
if (omittedStudents.Count == 0)
return new Team{Captain = Captain, Event = Event, Students = Students.ToList(), Identifier = Identifier, Id = Id};
var remainingStudents = Students.Where(s => !studentsToOmitList.Contains(s)).ToList();
return new PartialTeam { Event = Event, Students = remainingStudents, OmittedStudents = omittedStudents, Identifier = Identifier, Id = Id};
}
public Team Clone() => CloneWithOmittedStudents([]);
public override string ToString()
{
return $"{Event?.Name ?? "(no event)"} {(Identifier != null ? $"({Identifier})" : "")}";
}
}