/// <summary> /// Добавляет преподавателя к журналу /// </summary> /// <param name="elGradebookTeacher"></param> /// <returns></returns> public async Task AddElGradebookTeacher(ElGradebookTeacher elGradebookTeacher) { if (elGradebookTeacher == null) { throw new NullReferenceException(); } if (string.IsNullOrEmpty(elGradebookTeacher.TeacherFio)) { var appUser = await _context.Users.FirstOrDefaultAsync(u => u.Id == elGradebookTeacher.UserId); if (appUser == null) { throw new NullReferenceException($"Пользователь {elGradebookTeacher.UserId} не найден!"); } elGradebookTeacher.TeacherFio = appUser.GetFullName; } var elGradebook = await GetElGradebookAsync(elGradebookTeacher.ElGradebookId); var cmp = new ElGradebookTeacherComparer(); if (elGradebook.ElGradebookTeachers.Contains(elGradebookTeacher, cmp)) { return; } _context.Add(elGradebookTeacher); await _context.SaveChangesAsync(); }
/// <summary> /// Возвращает список журналов пользователя согласно параметрам фильтра /// </summary> /// <param name="filterAndSortModel"></param> /// <param name="userName"></param> /// <returns></returns> public async Task <List <ElGradebook> > GetElGradebooks(ElGradebooksFilterAndSortModel filterAndSortModel, string userName) { if (userName == null) { return(null); } var appUser = await GetAppUserAsync(userName); if (appUser == null) { return(null); } var query = GetElGradebooks(filterAndSortModel); var cmp = new ElGradebookTeacherComparer(); var st = new ElGradebookTeacher(); st.UserId = appUser.Id; query = query.Where(g => g.ElGradebookTeachers.Contains(st, cmp)); query = query.OrderByDescending(g => g.GroupName); var result = query.ToList(); return(result); }
/// <summary> /// Удаление преподавателя из журнала /// </summary> /// <param name="elGradebookTeacher"></param> /// <returns></returns> public async Task RemoveElGradebookTeacher(ElGradebookTeacher elGradebookTeacher) { var entry = await GetElGradebookTeacherAsync(elGradebookTeacher.ElGradebookTeacherId); if (entry == null || entry.ElGradebook.ElGradebookTeachers.Count == 1)//Последнего преподавателя не удаляем! { return; } _context.Remove(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(); }