75 lines
2.7 KiB
C#
75 lines
2.7 KiB
C#
using BusinessLogic.OfficePackage.HelperModels;
|
||
using BusinessLogic.OfficePackage;
|
||
using Contracts.BindingModels;
|
||
using Contracts.BusinessLogicContracts;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using Contracts.StorageContracts;
|
||
using Contracts.ViewModels;
|
||
using Contracts.SearchModels;
|
||
|
||
namespace BusinessLogic.BusinessLogic
|
||
{
|
||
public class ReportLogic : IReportLogic
|
||
{
|
||
private readonly IProductStorage _productStorage;
|
||
private readonly ISupplyStorage _supplyStorage;
|
||
private readonly AbstractSaveToPdf _saveToPdf;
|
||
public ReportLogic(IProductStorage productStorage, ISupplyStorage supplyStorage, AbstractSaveToPdf saveToPdf)
|
||
{
|
||
_productStorage = productStorage;
|
||
_supplyStorage = supplyStorage;
|
||
_saveToPdf = saveToPdf;
|
||
}
|
||
/// <summary>
|
||
/// Получение списка компонент с указанием, в каких изделиях используются
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
public List<ReportSupplyProductViewModel> GetSupplyProduct()
|
||
{
|
||
var products = _productStorage.GetFullList();
|
||
var supplies = _supplyStorage.GetFullList();
|
||
var list = new List<ReportSupplyProductViewModel>();
|
||
foreach (var supply in supplies)
|
||
{
|
||
var record = new ReportSupplyProductViewModel
|
||
{
|
||
SupplyName = supply.Name,
|
||
Products = new List<Tuple<string, int>>(),
|
||
TotalCount = 0
|
||
};
|
||
foreach (var product in products)
|
||
{
|
||
if (supply.Products.ContainsKey(product.Id))
|
||
{
|
||
record.Products.Add(new Tuple<string, int>(product.Name, supply.Products[product.Id].Item2));
|
||
record.TotalCount += supply.Products[product.Id].Item2;
|
||
}
|
||
}
|
||
list.Add(record);
|
||
}
|
||
return list;
|
||
}
|
||
/// <summary>
|
||
/// Сохранение заказов в файл-Pdf
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
public void SaveSuppliesToPdfFile(ReportBindingModel model)
|
||
{
|
||
_saveToPdf.CreateDoc(new PdfInfo
|
||
{
|
||
FileName = model.FileName,
|
||
Title = "Отчёт о поставке",
|
||
Date = model.Date!.Value,
|
||
Supply = _supplyStorage.GetElement(new SupplySearchModel()
|
||
{
|
||
Id = model.SupplyId,
|
||
})
|
||
});
|
||
}
|
||
}
|
||
}
|