283 lines
11 KiB
C#
283 lines
11 KiB
C#
using DocumentFormat.OpenXml.Office2021.DocumentTasks;
|
||
using SchoolAgainStudyBusinessLogic.OfficePackage;
|
||
using SchoolAgainStudyBusinessLogic.OfficePackage.HelperModels;
|
||
using SchoolAgainStudyContracts.BindingModel;
|
||
using SchoolAgainStudyContracts.BusinessLogicContracts;
|
||
using SchoolAgainStudyContracts.SearchModel;
|
||
using SchoolAgainStudyContracts.StorageContracts;
|
||
using SchoolAgainStudyContracts.ViewModel;
|
||
using SchoolAgainStudyDataBaseImplements.Models;
|
||
using SchoolAgainStudyDataModels.Models;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace SchoolAgainStudyBusinessLogic.BusinessLogic
|
||
{
|
||
public class ReportLogic : IReportLogic
|
||
{
|
||
private readonly IInterestStorage _interestStorage;
|
||
private readonly IMaterialStorage _materialStorage;
|
||
private readonly IProductStorage _productStorage;
|
||
private readonly IDiyStorage _diyStorage;
|
||
private readonly ITaskStorage _taskStorage;
|
||
private readonly ILessonStorage _lessonStorage;
|
||
|
||
private readonly AbstractSaveToExcelTeacher _saveToExcelTeacher;
|
||
|
||
private readonly AbstractSaveToWordTeacher _saveToWordTeacher;
|
||
|
||
private readonly AbstractSaveToPdfTeacher _saveToPdfTeacher;
|
||
|
||
private readonly AbstractSaveToExcelStudent _saveToExcelStudent;
|
||
|
||
private readonly AbstractSaveToWordStudent _saveToWordStudent;
|
||
|
||
private readonly AbstractSaveToPdfStudent _saveToPdfStudent;
|
||
|
||
public ReportLogic(IInterestStorage interestStorage, IMaterialStorage materialStorage, IProductStorage productStorage, IDiyStorage diyStorage, ITaskStorage taskStorage, ILessonStorage lessonStorage, AbstractSaveToExcelTeacher saveToExcelTeacher, AbstractSaveToWordTeacher saveToWordTeacher, AbstractSaveToPdfTeacher saveToPdfTeacher, AbstractSaveToExcelStudent saveToExcelStudent, AbstractSaveToWordStudent saveToWordStudent, AbstractSaveToPdfStudent saveToPdfStudent)
|
||
{
|
||
|
||
_interestStorage = interestStorage;
|
||
_materialStorage = materialStorage;
|
||
_productStorage = productStorage;
|
||
_diyStorage = diyStorage;
|
||
_taskStorage = taskStorage;
|
||
_lessonStorage = lessonStorage;
|
||
_saveToExcelTeacher = saveToExcelTeacher;
|
||
_saveToWordTeacher = saveToWordTeacher;
|
||
_saveToPdfTeacher = saveToPdfTeacher;
|
||
_saveToExcelStudent = saveToExcelStudent;
|
||
_saveToWordStudent = saveToWordStudent;
|
||
_saveToPdfStudent = saveToPdfStudent;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
public List<ReportDiyMaterialViewModel> GetDiyMaterial(ReportBindingModel model)
|
||
{
|
||
|
||
var tasks = _taskStorage.GetFilteredList(new TaskSearchModel{
|
||
TeacherId=model.TeacherId
|
||
});
|
||
var diys = _diyStorage.GetFullList();
|
||
var list = new List<ReportDiyMaterialViewModel>();
|
||
|
||
foreach (MaterialViewModel material in model.Materials)
|
||
{
|
||
var record = new ReportDiyMaterialViewModel
|
||
{
|
||
Title = material.Title
|
||
};
|
||
foreach(TaskViewModel task in tasks)
|
||
{
|
||
if (task.TaskMaterials.ContainsKey(material.Id))
|
||
{
|
||
foreach(DiyViewModel diy in diys)
|
||
{
|
||
if (diy.TaskId == task.Id)
|
||
record.Diys.Add(diy.Title);
|
||
}
|
||
}
|
||
}
|
||
list.Add(record);
|
||
}
|
||
return list;
|
||
}
|
||
|
||
public List<ReportInterestLessonViewModel> GetInterestLesson(ReportBindingModel model)
|
||
{
|
||
var products = _productStorage.GetFilteredList(new ProductSearchModel
|
||
{
|
||
StudentId = model.StudentId
|
||
});
|
||
var lessons = _lessonStorage.GetFullList();
|
||
var list = new List<ReportInterestLessonViewModel>();
|
||
foreach(InterestViewModel interest in model.Interests)
|
||
{
|
||
var record = new ReportInterestLessonViewModel
|
||
{
|
||
Title = interest.Title
|
||
};
|
||
foreach(ProductViewModel product in products)
|
||
{
|
||
if (product.ProductInterests.ContainsKey(interest.Id))
|
||
{
|
||
foreach(LessonViewModel lesson in lessons)
|
||
{
|
||
if(lesson.ProductId == product.Id)
|
||
{
|
||
record.Lessons.Add(lesson.Title);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
list.Add(record);
|
||
}
|
||
return list;
|
||
}
|
||
|
||
public List<ReportInterestViewModel> GetInterests(ReportBindingModel model)
|
||
{
|
||
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
|
||
var interests = _interestStorage.GetFilteredList(new InterestSearchModel
|
||
{
|
||
StudentId = model.StudentId
|
||
});
|
||
var products = _productStorage.GetFilteredList(new ProductSearchModel
|
||
{
|
||
StudentId = model.StudentId,
|
||
DateFrom = model.DateFrom,
|
||
DateTo = model.DateTo
|
||
});
|
||
var diys = _diyStorage.GetFilteredList(new DiySearchModel
|
||
{
|
||
StudentId = model.StudentId,
|
||
DateFrom = model.DateFrom,
|
||
DateTo = model.DateTo
|
||
});
|
||
var list = new List<ReportInterestViewModel>();
|
||
foreach (ProductViewModel product in products)
|
||
{
|
||
|
||
foreach (DiyViewModel diy in diys)
|
||
{
|
||
|
||
foreach (int interestProduct in product.ProductInterests.Keys)
|
||
{
|
||
if (diy.DiyInterests.ContainsKey(interestProduct))
|
||
{
|
||
list.Add(new ReportInterestViewModel
|
||
{
|
||
InterestTitle = interests.FirstOrDefault(x => x.Id == interestProduct).Title,
|
||
ProductTitle = product.Title,
|
||
DateCreateProduct = product.DateCreate,
|
||
DiyTitle = diy.Title,
|
||
DateCreateDiy = diy.DateCreate
|
||
});
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|
||
return list;
|
||
}
|
||
|
||
public List<ReportLessonTaskViewModel> GetLessonTask(ReportBindingModel model)
|
||
{
|
||
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
|
||
var tasks = _taskStorage.GetFilteredList(new TaskSearchModel
|
||
{
|
||
TeacherId = model.TeacherId,
|
||
DateFrom = model.DateFrom,
|
||
DateTo = model.DateTo
|
||
});
|
||
var lessons = _lessonStorage.GetFilteredList(new LessonSearchModel
|
||
{
|
||
TeacherId = model.TeacherId,
|
||
DateFrom = model.DateFrom,
|
||
DateTo = model.DateTo
|
||
});
|
||
var list = new List<ReportLessonTaskViewModel>();
|
||
|
||
foreach (TaskViewModel task in tasks)
|
||
{
|
||
|
||
foreach(LessonViewModel lesson in lessons)
|
||
{
|
||
|
||
foreach (int materialTask in task.TaskMaterials.Keys)
|
||
{
|
||
if (lesson.LessonMaterials.ContainsKey(materialTask))
|
||
{
|
||
list.Add(new ReportLessonTaskViewModel
|
||
{
|
||
TitleLesson = lesson.Title,
|
||
TitleTask = task.Title,
|
||
DateEventLesson = lesson.DateEvent,
|
||
DateIssueTask = task.DateIssue
|
||
});
|
||
break;
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
return list;
|
||
}
|
||
|
||
public void SaveDiyMaterialToExcelFile(ReportBindingModel model)
|
||
{
|
||
_saveToExcelTeacher.CreateReport(new ExcelInfoTeacher
|
||
{
|
||
FileName = model.FileName,
|
||
Title = "Список поделок по материалам",
|
||
DiyMaterials = GetDiyMaterial(model)
|
||
});
|
||
}
|
||
|
||
public void SaveDiyMaterialToWordFile(ReportBindingModel model)
|
||
{
|
||
_saveToWordTeacher.CreateDoc(new WordInfoTeacher
|
||
{
|
||
FileName = model.FileName,
|
||
Title = "Список поделок по материалам",
|
||
DiyMaterials = GetDiyMaterial(model)
|
||
});
|
||
}
|
||
|
||
public void SaveInterestLessonToExcelFile(ReportBindingModel model)
|
||
{
|
||
_saveToExcelStudent.CreateReport(new ExcelInfoStudent
|
||
{
|
||
FileName = model.FileName,
|
||
Title = "Список занятий по интресам",
|
||
InterestLessons = GetInterestLesson(model)
|
||
});
|
||
}
|
||
|
||
public void SaveInterestLessonToWordFile(ReportBindingModel model)
|
||
{
|
||
_saveToWordStudent.CreateDoc(new WordInfoStudent
|
||
{
|
||
FileName = model.FileName,
|
||
Title = "Список занятий по интресам",
|
||
InterestLessons = GetInterestLesson(model)
|
||
});
|
||
}
|
||
|
||
public void SaveInterestsToPdfFile(ReportBindingModel model)
|
||
{
|
||
_saveToPdfStudent.CreateDoc(new PdfInfoStudent
|
||
{
|
||
FileName = model.FileName,
|
||
Title = "Список интересов",
|
||
DateFrom = DateTime.SpecifyKind(model.DateFrom!.Value, DateTimeKind.Utc),
|
||
DateTo = DateTime.SpecifyKind(model.DateTo!.Value, DateTimeKind.Utc),
|
||
Interests = GetInterests(model)
|
||
});
|
||
}
|
||
|
||
public void SaveLessonTaskToPdfFile(ReportBindingModel model)
|
||
{
|
||
_saveToPdfTeacher.CreateDoc(new PdfInfoTeacher
|
||
{
|
||
FileName = model.FileName,
|
||
Title = "Список заданий и занятий с общими материалами",
|
||
DateFrom = DateTime.SpecifyKind(model.DateFrom!.Value, DateTimeKind.Utc),
|
||
DateTo = DateTime.SpecifyKind(model.DateTo!.Value, DateTimeKind.Utc),
|
||
LessonTasks = GetLessonTask(model)
|
||
});
|
||
}
|
||
}
|
||
}
|