using ComputerShopBusinessLogic.OfficePackage; using ComputerShopBusinessLogic.OfficePackage.HelperModels; using ComputerShopContracts.BindingModels; using ComputerShopContracts.BusinessLogicContracts; using ComputerShopContracts.StorageContracts; using ComputerShopContracts.ViewModels; using ComputerShopContracts.SearchModels; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ComputerShopBusinessLogic.BusinessLogics { public class ReportLogic : IReportLogic { private readonly IComponentStorage _componentStorage; private readonly ISupplyStorage _supplyStorage; private readonly IAssemblyStorage _assemblyStorage; private readonly IEquipmentReceivingStorage _receivingStorage; private readonly AbstractSaveToExcel _saveToExcel; private readonly AbstractSaveToWord _saveToWord; private readonly AbstractSaveToPdf _saveToPdf; public ReportLogic(IComponentStorage componentStorage, IAssemblyStorage assemblyStorage, IEquipmentReceivingStorage receivingStorage, ISupplyStorage supplyStorage, AbstractSaveToExcel saveToExcel, AbstractSaveToWord saveToWord, AbstractSaveToPdf saveToPdf) { _componentStorage = componentStorage; _assemblyStorage = assemblyStorage; _receivingStorage = receivingStorage; _supplyStorage = supplyStorage; _saveToExcel = saveToExcel; _saveToWord = saveToWord; _saveToPdf = saveToPdf; } public List GetComponentReceivings(List ids) { var result = new List(); foreach (int id in ids) { var component = _componentStorage.GetElement(new ComponentSearchModel() { Id = id, }); var supplies = _supplyStorage.GetFilteredList(new() { ComponentId = id }); var receivings = new List(); foreach(var supply in supplies) { if (supply.ReceivingId.HasValue) { var receiving = _receivingStorage.GetElement(new() { Id = supply.ReceivingId.Value }); if (receiving != null && receivings.Contains(receiving)) { receivings.Add(receiving); } } } var receivingnames = new List(); foreach (var receiving in receivings) { receivingnames.Add($"Id: {receiving.Id}. Date: {receiving.Status}."); } if(receivingnames.Count > 0 && component != null) { result.Add(new() { ComponentName = component.ComponentName, Receivings = receivingnames }); } } return result; } public void SaveReceivingComponentsToWordFile(ReportBindingModel model) { _saveToWord.CreateDoc(new WordInfoProvider { FileName = model.FileName, Title = "Список получений по компонентам", ComponentReceivings = GetComponentReceivings(model.Ids) }); } public void SaveReceivingComponentsToXmlFile(ReportBindingModel mode) { } public List GetPurchaseReceiving() { throw new NotImplementedException(); } public List GetPurchaseSupply() { throw new NotImplementedException(); } public void SaveOrdersToPdfFile(ReportBindingModel model) { throw new NotImplementedException(); } public void SavePackagesToWordFile(ReportBindingModel model) { throw new NotImplementedException(); } public void SaveProductComponentToExcelFile(ReportBindingModel model) { throw new NotImplementedException(); } } }