/// <summary> /// Обновление записи /// </summary> /// <param name="basisForAssessing">Тип оценивания</param> /// <returns>Объект редактированной записи</returns> public BasisForAssessing UpdateBasisForAssessing(BasisForAssessing basisForAssessing) { logger.Trace("Попытка подключения к источнику данных."); logger.Trace("Подготовка к обновлению типа оценивания."); try { BasisForAssessing basisForAssessingToUpdate = context.BasisForAssessing.FirstOrDefault(b => b.BasisForAssessingId == basisForAssessing.BasisForAssessingId); logger.Debug($"Текущая запись: {basisForAssessingToUpdate.ToString()}"); basisForAssessingToUpdate.Name = basisForAssessing.Name; context.SaveChanges(); logger.Debug($"Новая запись: {basisForAssessingToUpdate.ToString()}"); return(basisForAssessingToUpdate); } catch (SqlException sqlEx) { logger.Error("Ошибка редактирования типа оценивания."); logger.Error($"Ошибка SQL Server — {sqlEx.Number}."); logger.Error($"Сообщение об ошибке: {sqlEx.Message}."); return(null); } catch (Exception ex) { logger.Error("Ошибка редактирования типа оценивания."); logger.Error($"Ошибка — {ex.Message}."); return(null); } }
/// <summary> /// Удаление записи /// </summary> /// <param name="basisForAssessing">Удаляемая запись</param> public void DeleteBasisForAssessing(BasisForAssessing basisForAssessing) { logger.Trace("Попытка подключения к источнику данных."); logger.Trace("Подготовка к удалению типа оценивания."); try { var basisForAssessingToDelete = context.BasisForAssessing.FirstOrDefault(b => b.BasisForAssessingId == basisForAssessing.BasisForAssessingId); if (basisForAssessingToDelete != null) { context.BasisForAssessing.Remove(basisForAssessingToDelete); context.SaveChanges(); logger.Debug("Удаление успешно завершено."); } } catch (SqlException sqlEx) { logger.Error("Ошибка удаления типа оценивания."); logger.Error($"Ошибка SQL Server — {sqlEx.Number}."); logger.Error($"Сообщение об ошибке: {sqlEx.Message}."); } catch (Exception ex) { logger.Error("Ошибка удаления типа оценивания."); logger.Error($"Ошибка — {ex.Message}."); } }
/// <summary> /// Добавление новой записи /// </summary> /// <param name="basisForAssessing">Тип оценивания</param> /// <returns>Объект добавленной записи</returns> public BasisForAssessing InsertBasisForAssessing(BasisForAssessing basisForAssessing) { logger.Trace("Попытка подключения к источнику данных."); logger.Trace("Подготовка к добавлению типа оценивания."); try { logger.Debug($"Добавляемая запись: {basisForAssessing.ToString()}"); context.BasisForAssessing.Add(basisForAssessing); context.SaveChanges(); logger.Debug($"Новая запись успешно добавлена."); return(basisForAssessing); } catch (SqlException sqlEx) { logger.Error("Ошибка добавления типа оценивания."); logger.Error($"Ошибка SQL Server — {sqlEx.Number}."); logger.Error($"Сообщение об ошибке: {sqlEx.Message}."); return(null); } catch (Exception ex) { logger.Error("Ошибка добавления типа оценивания."); logger.Error($"Ошибка — {ex.Message}."); return(null); } }
/// <summary> /// Получение списка дисциплин /// </summary> /// <param name="basisForAssessing">Тип оценивания</param> /// <param name="IsGroup">Группа дисциплин?</param> /// <returns>Список дисциплин</returns> public List <Discipline> GetDisciplines(BasisForAssessing basisForAssessing, bool IsGroup) { logger.Trace("Попытка подключения к источнику данных."); logger.Trace("Подготовка к поиску списка дисциплин по параметрам."); try { var disciplines = context.Discipline.AsNoTracking().Where(d => d.IsGroup == IsGroup && d.BasisForAssessingId == basisForAssessing.BasisForAssessingId).ToList(); if (disciplines.Count != 0) { logger.Debug($"Поиск окончен. Количество записей: {disciplines.Count}."); } else { logger.Debug($"Поиск окончен. Список пуст."); } return(disciplines); } catch (SqlException sqlEx) { logger.Error("Ошибка получения списка дисциплин по параметрам."); logger.Error($"Ошибка SQL Server — {sqlEx.Number}."); logger.Error($"Сообщение об ошибке: {sqlEx.Message}."); return(null); } catch (Exception ex) { logger.Error("Ошибка получения списка дисциплин по параметрам."); logger.Error($"Ошибка — {ex.Message}."); return(null); } }
/// <summary> /// Получение списка оценок /// </summary> /// <param name="basisForAssessing">Фильтр по типу оценивания</param> /// <returns>Отфильтрованный список оценок</returns> public List <Assessment> GetAssessments(BasisForAssessing basisForAssessing) { logger.Trace("Попытка подключения к источнику данных."); logger.Trace("Подготовка к поиску списка оценок по типу оценивания."); try { var assessments = context.Assessment.AsNoTracking().Where(a => a.Discipline.BasisForAssessingId == basisForAssessing.BasisForAssessingId).ToList(); if (assessments.Count != 0) { logger.Debug($"Поиск окончен. Количество записей: {assessments.Count}."); } else { logger.Debug($"Поиск окончен. Список оценок пуст."); } return(assessments); } catch (SqlException sqlEx) { logger.Error("Ошибка поиска данных об оценке."); logger.Error($"Ошибка SQL Server — {sqlEx.Number}."); logger.Error($"Сообщение об ошибке: {sqlEx.Message}."); return(null); } catch (Exception ex) { logger.Error("Ошибка поиска данных об оценке."); logger.Error($"Ошибка — {ex.Message}."); return(null); } }
/// <summary> /// Получение оценки по дисциплине, абитуриенту и типу оценивания /// </summary> /// <param name="discipline">Дисциплина</param> /// <param name="enrollee">Абитуриент</param> /// <param name="basisForAssessing">Фильтр по типу оценивания</param> /// <returns>Искомая запись об оценке</returns> public Assessment GetAssessment(Discipline discipline, Enrollee enrollee, BasisForAssessing basisForAssessing) { logger.Trace("Попытка подключения к источнику данных."); logger.Trace("Подготовка к поиску данных об оценке по параметрам дисциплины, абитуриента и типа оценивания."); try { var assessment = context.Assessment.AsNoTracking().FirstOrDefault(a => a.DisciplineId == discipline.DisciplineId && a.EnrolleeId == enrollee.EnrolleeId && a.Discipline.BasisForAssessingId == basisForAssessing.BasisForAssessingId); if (assessment != null) { logger.Debug($"Поиск окончен. Запись найдена {assessment.ToString()}."); } else { logger.Debug($"Поиск окончен. Запись не найдена."); } return(assessment); } catch (SqlException sqlEx) { logger.Error("Ошибка поиска данных об оценке."); logger.Error($"Ошибка SQL Server — {sqlEx.Number}."); logger.Error($"Сообщение об ошибке: {sqlEx.Message}."); return(null); } catch (Exception ex) { logger.Error("Ошибка поиска данных об оценке."); logger.Error($"Ошибка — {ex.Message}."); return(null); } }
/// <summary> /// Метод инициализации содержимого списка дисциплин /// Инициализируем список только предметами тестирования /// Сортировка по наименованию /// </summary> private void InitializeDisciplineComboBox() { // Отключаем отслеживание изменения дисциплины в списке дисциплин cbDiscipline.SelectedValueChanged -= cbDiscipline_SelectedValueChanged; // Получаем основание оценок равное значению "Тестирование" basisForAssessing = basisForAssessingService.GetBasisForAssessing(3); if (basisForAssessing != null) { // Получаем список дисциплин var disciplines = disciplineService.GetDisciplines(basisForAssessing, false).OrderBy(d => d.Name).ToList(); // Загружаем в комбо-бокс cbDiscipline.DataSource = disciplines; cbDiscipline.DisplayMember = "Name"; cbDiscipline.ValueMember = "DisciplineId"; // Если список дисциплин не пуст, инициализируем "выбранную дисциплину" первой из списка if (disciplines.Count != 0) { discipline = disciplines[0]; } } // Включаем отслеживание изменения дисциплины в списке дисциплин cbDiscipline.SelectedValueChanged += cbDiscipline_SelectedValueChanged; }