142 lines
5.2 KiB
C#
142 lines
5.2 KiB
C#
using AbstractLawFirmContracts.ViewModels;
|
||
using System.Reflection;
|
||
using UniversityBusinessLogics.OfficePackage;
|
||
using UniversityContracts.BindingModels;
|
||
using UniversityContracts.BusinessLogicContracts;
|
||
using UniversityContracts.SearchModels;
|
||
using UniversityContracts.StorageContracts;
|
||
|
||
namespace UniversityBusinessLogics.BusinessLogics;
|
||
|
||
public class ReportLogic : IReportLogic
|
||
{
|
||
public List<ReportDisciplineViewModel> GetDisciplines(ReportBindingModel model)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
|
||
/*private readonly AbstractSaveToWord _saveToWord;
|
||
private readonly AbstractSaveToExcel _saveToExcel;
|
||
private readonly AbstractSaveToPdf _saveToPdf;*/
|
||
|
||
private readonly ITeacherStorage _teacherStorage;
|
||
private readonly IDisciplineStorage _disciplineStorage;
|
||
private readonly IStudentStorage _studentStorage;
|
||
private readonly IStatementStorage _statementStorage;
|
||
private readonly IPlanOfStudyStorage _planOfStudyStorage;
|
||
public List<ReportTeacherViewModel> GetTeachers()
|
||
{
|
||
var teachers = _teacherStorage.GetFullList();
|
||
|
||
// Создаем список для результатов
|
||
var result = new List<ReportTeacherViewModel>();
|
||
|
||
foreach (var teacher in teachers)
|
||
{
|
||
// Получаем список дисциплин, связанных с учителем
|
||
var disciplines = _disciplineStorage.GetFilteredList(new DisciplineSearchModel
|
||
{
|
||
TeacherId = teacher.Id,
|
||
});
|
||
|
||
// Получаем список студентов, связанных с дисциплинами
|
||
var students = new List<(string Student, string PhoneNumber)>();
|
||
foreach (var discipline in disciplines)
|
||
{
|
||
var studentDisciplines = _disciplineStorage.GetStudentsForDiscipline(new DisciplineSearchModel
|
||
{
|
||
Id = discipline.Id,
|
||
});
|
||
|
||
foreach (var studentDiscipline in studentDisciplines)
|
||
{
|
||
var studentList = _studentStorage.GetFilteredList(new StudentSearchModel
|
||
{
|
||
Id = studentDiscipline.Id,
|
||
});
|
||
foreach(var st in studentList){
|
||
students.Add((st.Name, st.PhoneNumber));
|
||
}
|
||
}
|
||
}
|
||
|
||
// Добавляем учителя и его студентов в результат
|
||
result.Add(new ReportTeacherViewModel
|
||
{
|
||
TeacherName = teacher.Name,
|
||
Students = students.Distinct().ToList() // Убираем дубликаты, если они есть
|
||
});
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
public List<ReportDisciplineViewModel> GetDisciplines(ReportDateRangeBindingModel model)
|
||
{
|
||
var disciplines = _disciplineStorage.GetFullList();
|
||
|
||
var reportDisciplineViewModels = new List<ReportDisciplineViewModel>();
|
||
|
||
foreach (var discipline in disciplines)
|
||
{
|
||
// Получаем список студентов, связанных с дисциплинами
|
||
var studentDisciplines = _disciplineStorage.GetStudentsForDiscipline(new DisciplineSearchModel
|
||
{
|
||
Id = discipline.Id,
|
||
});
|
||
|
||
var planOfStudys = new List<string>();
|
||
foreach (var studentDiscipline in studentDisciplines)
|
||
{
|
||
var student = _studentStorage.GetElement(new StudentSearchModel
|
||
{
|
||
Id = studentDiscipline.Id,
|
||
});
|
||
|
||
if (student != null)
|
||
{
|
||
var planOfStudy = _planOfStudyStorage.GetElement(new PlanOfStudySearchModel
|
||
{
|
||
Id = student.PlanOfStudyId,
|
||
});
|
||
|
||
if (planOfStudy != null)
|
||
{
|
||
planOfStudys.Add(planOfStudy.Profile);
|
||
}
|
||
}
|
||
}
|
||
|
||
// Получаем список заявлений преподавателя в указанном диапазоне дат
|
||
var statements = _statementStorage.GetFilteredList(new StatementSearchModel
|
||
{
|
||
TeacherId = discipline.TeacherId
|
||
});
|
||
|
||
// Создаем ReportDisciplineViewModel и добавляем его в список
|
||
reportDisciplineViewModels.Add(new ReportDisciplineViewModel
|
||
{
|
||
DisciplineName = discipline.Name,
|
||
PlanOfStudys = planOfStudys.Distinct().ToList(), // Убираем дубликаты, если они есть
|
||
Statements = statements.Select(s => s.Name).ToList()
|
||
});
|
||
}
|
||
|
||
return reportDisciplineViewModels;
|
||
}
|
||
|
||
public void SaveTeachersToExcel(ReportBindingModel option)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
|
||
public void SaveTeachersToWord(ReportBindingModel option)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
|
||
public void SendDisciplinesToEmail(ReportDateRangeBindingModel option, string email)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
} |