namespace data.RemoteData.DAO
{
    // Представляет DAO для пользователя.
    public class UserDao
    {
        // ID пользователя.
        public Guid Guid { get; set; }

        // Полное имя пользователя.
        public string FIO { get; set; } = string.Empty;

        // Идентификатор группы, к которой принадлежит пользователь.
        public int GroupID { get; set; }

        // Связанная группа пользователя
        private GroupDao? _group;
        public virtual GroupDao Group
        {
            get => _group ?? throw new InvalidOperationException("Group is not initialized.");
            set => _group = value ?? throw new ArgumentNullException(nameof(Group), "Group cannot be null.");
        }

        // Список посещаемости пользователя
        private IEnumerable<PresenceDao> _presences = new List<PresenceDao>();
        public virtual IEnumerable<PresenceDao> Presences
        {
            get => _presences;
            set => _presences = value ?? throw new ArgumentNullException(nameof(Presences), "Presences cannot be null.");
        }
    }
}