223 lines
6.6 KiB
C#
223 lines
6.6 KiB
C#
using Contracts.BusinessLogicsContracts;
|
|
using Contracts.ViewModels;
|
|
using Contracts.BindingModels;
|
|
using Contracts.StoragesContracts;
|
|
using Contracts.SearchModels;
|
|
using BusinessLogic.OfficePackage;
|
|
using BusinessLogic.MailWorker;
|
|
using Org.BouncyCastle.Bcpg;
|
|
|
|
namespace ImplementerApp
|
|
{
|
|
public class ImplementerData
|
|
{
|
|
private readonly ILogger _logger;
|
|
private readonly IImplementerLogic _implementerLogic;
|
|
private readonly IDetailLogic _detailLogic;
|
|
private readonly IProductionLogic _productionLogic;
|
|
private readonly IProductLogic _productLogic;
|
|
private readonly IMachineLogic _machineLogic;
|
|
private readonly IWorkshopLogic _workshopLogic;
|
|
private readonly IImplementerReportLogic _reportLogic;
|
|
private readonly AbstractSaveToExcelImplementer _excel;
|
|
private readonly AbstractSaveToWordImplementer _word;
|
|
private readonly AbstractSaveToPdfImplementer _pdf;
|
|
private readonly AbstractMailWorker _mail;
|
|
|
|
|
|
public ImplementerData(ILogger<ImplementerData> logger,
|
|
IImplementerLogic implementerLogic,
|
|
IDetailLogic detailLogic,
|
|
IProductionLogic productionLogic,
|
|
IProductLogic productLogic,
|
|
IMachineLogic machineLogic,
|
|
IWorkshopLogic workshopLogic,
|
|
IImplementerReportLogic reportLogic,
|
|
AbstractSaveToExcelImplementer excel,
|
|
AbstractSaveToWordImplementer word,
|
|
AbstractMailWorker mail,
|
|
AbstractSaveToPdfImplementer pdf)
|
|
{
|
|
_logger = logger;
|
|
_implementerLogic = implementerLogic;
|
|
_detailLogic = detailLogic;
|
|
_productionLogic = productionLogic;
|
|
_productLogic = productLogic;
|
|
_machineLogic = machineLogic;
|
|
_workshopLogic = workshopLogic;
|
|
_reportLogic = reportLogic;
|
|
_excel = excel;
|
|
_word = word;
|
|
_mail = mail;
|
|
_pdf = pdf;
|
|
}
|
|
|
|
public ImplementerViewModel? Login(string login, string password)
|
|
{
|
|
return _implementerLogic.ReadElement(new()
|
|
{
|
|
Login = login,
|
|
Password = password
|
|
});
|
|
}
|
|
public bool Register(ImplementerBindingModel model)
|
|
{
|
|
return _implementerLogic.Create(model);
|
|
}
|
|
public bool UpdateUser(ImplementerBindingModel model)
|
|
{
|
|
return _implementerLogic.Update(model);
|
|
}
|
|
public bool CheckLogin(string login)
|
|
{
|
|
return _implementerLogic.ReadElement(new() { Login = login }) == null;
|
|
}
|
|
|
|
public List<DetailViewModel>? GetDetails(int userId)
|
|
{
|
|
return _detailLogic.ReadList(new DetailSearchModel() { UserId = userId });
|
|
}
|
|
public bool DeleteDetail(int detailId)
|
|
{
|
|
return _detailLogic.Delete(new() { Id = detailId });
|
|
}
|
|
public bool CreateDetail(DetailBindingModel model)
|
|
{
|
|
return _detailLogic.Create(model);
|
|
}
|
|
public bool UpdateDetail(DetailBindingModel model)
|
|
{
|
|
return _detailLogic.Update(model);
|
|
}
|
|
public DetailViewModel? GetDetail(int id)
|
|
{
|
|
return _detailLogic.ReadElement(new() { Id= id });
|
|
}
|
|
public bool CheckDetailName(string name)
|
|
{
|
|
return _detailLogic.ReadElement(new() { Name = name }) == null;
|
|
}
|
|
|
|
public List<ProductViewModel>? GetProducts(int userId)
|
|
{
|
|
return _productLogic.ReadList(new ProductSearchModel() { UserId = userId });
|
|
}
|
|
public ProductViewModel? GetProduct(int id)
|
|
{
|
|
return _productLogic.ReadElement(new() { Id = id });
|
|
}
|
|
public bool UpdateProduct(ProductBindingModel model)
|
|
{
|
|
return _productLogic.Update(model);
|
|
}
|
|
public bool DeleteProduct(int productId)
|
|
{
|
|
return _productLogic.Delete(new() { Id = productId });
|
|
}
|
|
public bool CreateProduct(ProductBindingModel model)
|
|
{
|
|
return _productLogic.Create(model);
|
|
}
|
|
public bool CheckProductName(string name)
|
|
{
|
|
return _productLogic.ReadElement(new() { Name = name }) == null;
|
|
}
|
|
|
|
public List<ProductionViewModel>? GetProductions(int userId)
|
|
{
|
|
return _productionLogic.ReadList(new() { UserId = userId });
|
|
}
|
|
public ProductionViewModel? GetProduction(int id)
|
|
{
|
|
return _productionLogic.ReadElement(new() { Id = id });
|
|
}
|
|
public bool CreateProduction(ProductionBindingModel model)
|
|
{
|
|
return _productionLogic.Create(model);
|
|
}
|
|
public bool UpdateProduction(ProductionBindingModel model)
|
|
{
|
|
return _productionLogic.Update(model);
|
|
}
|
|
public bool DeleteProduction(int productionId)
|
|
{
|
|
return _productionLogic.Delete(new() { Id = productionId});
|
|
}
|
|
public bool CheckProductionName(string name)
|
|
{
|
|
return _productionLogic.ReadElement(new() { Name = name }) == null;
|
|
}
|
|
|
|
public List<MachineViewModel>? GetMachines()
|
|
{
|
|
return _machineLogic.ReadList(null);
|
|
}
|
|
|
|
public List<DetailTimeReport>? GetTimeReport(DateTime? startDate, DateTime? endDate, int UserId)
|
|
{
|
|
return _reportLogic.GetDetailTimeReport(startDate!.Value, endDate!.Value, UserId);
|
|
}
|
|
|
|
public List<DetailWorkshopReportViewModel>? GetWorkshopReports(List<int> details)
|
|
{
|
|
return _reportLogic.GetDetailWorkshopReport(details);
|
|
}
|
|
|
|
public void SaveReportExcel(List<int> details, MemoryStream stream)
|
|
{
|
|
var reports = GetWorkshopReports(details);
|
|
if (reports == null)
|
|
return;
|
|
int maxsize = 0;
|
|
foreach (var report in reports) { maxsize = Math.Max(maxsize, report.WorkShops.Count); }
|
|
_excel.CreateReport(new()
|
|
{
|
|
detailWorkshops = reports,
|
|
Title = "Отчет Деталь - цех",
|
|
memoryStream = stream,
|
|
maxleng = maxsize
|
|
});
|
|
}
|
|
|
|
public void SaveReportWord(List<int> details, MemoryStream stream)
|
|
{
|
|
var reports = GetWorkshopReports(details);
|
|
if (reports == null)
|
|
return;
|
|
_word.CreateDoc(new()
|
|
{
|
|
memoryStream = stream,
|
|
Title = "Отчет Деталь - цех",
|
|
Workshops = reports
|
|
});
|
|
}
|
|
|
|
public void SendMailReport(DateTime? startDate, DateTime? endDate, int UserId, MemoryStream stream)
|
|
{
|
|
var reports = GetTimeReport(startDate, endDate, UserId);
|
|
if (reports == null)
|
|
return;
|
|
_pdf.CreateDoc(new()
|
|
{
|
|
DateFrom = startDate!.Value,
|
|
DateTo = endDate!.Value,
|
|
FileName = stream,
|
|
Reports = reports,
|
|
Title = "Отчет"
|
|
});
|
|
byte[] report = stream.GetBuffer();
|
|
_mail.MailSendAsync(new() { MailAddress = UserImplementer.user!.Email, Subject = "Отчет", FileName = "PdfReport.pdf", Pdf = report});
|
|
}
|
|
|
|
public List<DetailProductCountChartViewModel>? GetProductChart(int UserId)
|
|
{
|
|
return _reportLogic.GetDetailProductChart(UserId);
|
|
}
|
|
public List<DetailProductionCountChartViewModel>? GetProductionChart(int UserId)
|
|
{
|
|
return _reportLogic.GetDetailProductionChart(UserId);
|
|
}
|
|
|
|
}
|
|
}
|