/// <summary>
        /// Обновляет электронный журнал
        /// </summary>
        /// <param name="elGradebook"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task UpdateElGradebook(ElGradebook elGradebook, string userName)
        {
            var appUser = await GetAppUserAsync(userName);

            if (appUser == null)
            {
                throw new Exception($"Аккаунт пользователя {userName} не найден!");
            }

            var entry = await GetElGradebookAsync(elGradebook.ElGradebookId);

            if (entry.Course != elGradebook.Course)
            {
                entry.Course = elGradebook.Course;
            }

            if (entry.Department != elGradebook.Department)
            {
                entry.Department = elGradebook.Department;
            }

            if (entry.DisciplineName != elGradebook.DisciplineName)
            {
                entry.DisciplineName = elGradebook.DisciplineName;
            }

            if (entry.EduYear != elGradebook.EduYear)
            {
                entry.EduYear = elGradebook.EduYear;
            }

            if (entry.Faculty != elGradebook.Faculty)
            {
                entry.Faculty = elGradebook.Faculty;
            }

            if (entry.GroupName != elGradebook.GroupName)
            {
                entry.GroupName = elGradebook.GroupName;
            }

            if (entry.GroupId != elGradebook.GroupId)
            {
                entry.GroupId = elGradebook.GroupId;
            }

            if (entry.SemesterNumber != elGradebook.SemesterNumber)
            {
                entry.SemesterNumber = elGradebook.SemesterNumber;
            }

            _context.Update(entry);
            await _context.SaveChangesAsync();
        }
        /// <summary>
        /// Создаёт электронный журнал
        /// </summary>
        /// <param name="elGradebook"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task CreateElGradebook(ElGradebook elGradebook, string userName)
        {
            var appUser = await GetAppUserAsync(userName);

            if (appUser == null)
            {
                throw new Exception($"Аккаунт пользователя {userName} не найден!");
            }

            var elGradebookTeacher = new ElGradebookTeacher {
                UserId = appUser.Id, TeacherFio = appUser.GetFullName
            };

            elGradebook.ElGradebookTeachers = new List <ElGradebookTeacher>();
            elGradebook.ElGradebookTeachers.Add(elGradebookTeacher);

            _context.Add(elGradebook);
            await _context.SaveChangesAsync();
        }
        /// <summary>
        /// Возвращает true, если userName входит в число преподавателей, закреплённых за электронным журналом
        /// </summary>
        /// <param name="elGradebook"></param>
        /// <param name="userName"></param>
        /// <returns></returns>
        public async Task <bool> IsGradebookTeacherAsync(ElGradebook elGradebook, string userName)
        {
            bool isGradebookTeacher = false;

            var appUserId = (await GetAppUserAsync(userName)).Id;

            if (string.IsNullOrEmpty(appUserId))
            {
                return(false);
            }

            foreach (var elGradebookTeacher in elGradebook.ElGradebookTeachers)
            {
                if (elGradebookTeacher.UserId == appUserId)
                {
                    isGradebookTeacher = true;
                    break;
                }
            }

            return(isGradebookTeacher);
        }