This commit is contained in:
анна 2024-05-31 16:39:24 +04:00
parent ea5afbeaf6
commit e5c8b35348
3 changed files with 127 additions and 134 deletions

View File

@ -1,138 +1,133 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using UniversityBusinessLogics.MailWorker;
using UniversityBusinessLogics.OfficePackage;
using UniversityContracts.BindingModels;
using UniversityContracts.BusinessLogicContracts;
using UniversityContracts.StoragesContracts;
namespace UniversityBusinessLogics.BusinessLogic
namespace UniversityBusinessLogics.BusinessLogics;
public class ReportLogic : IReportLogic
{
public class ReportLogic : IReportLogic
{
private readonly AbstractSaveToWord _saveToWord;
private readonly IPurchaseStorage _purchaseStorage;
private readonly IOperationStorage _carStorage;
private readonly AbstractSaveToExcel _saveToExcel;
private readonly IPaymentStorage _paymentStorage;
private readonly AbstractMailWorker _mailWorker;
private readonly AbstractSaveToPdf _saveToPdf;
private readonly AbstractSaveToWord _saveToWord;
private readonly IPurchaseStorage _purchaseStorage;
private readonly IOperationStorage _carStorage;
private readonly AbstractSaveToExcel _saveToExcel;
private readonly IPaymentStorage _paymentStorage;
private readonly AbstractMailWorker _mailWorker;
private readonly AbstractSaveToPdf _saveToPdf;
public ReportLogic(AbstractSaveToWord saveToWord, IPurchaseStorage purchaseStorage, AbstractSaveToExcel saveToExcel,
AbstractMailWorker mailWorker, IPaymentStorage paymentStorage, AbstractSaveToPdf saveToPdf, IOperationStorage carStorage)
{
_mailWorker = mailWorker;
_paymentStorage = paymentStorage;
_saveToExcel = saveToExcel;
_saveToWord = saveToWord;
_purchaseStorage = purchaseStorage;
_saveToPdf = saveToPdf;
_carStorage = carStorage;
}
public ReportLogic(AbstractSaveToWord saveToWord, IPurchaseStorage purchaseStorage, AbstractSaveToExcel saveToExcel,
AbstractMailWorker mailWorker, IPaymentStorage paymentStorage, AbstractSaveToPdf saveToPdf, IOperationStorage carStorage)
{
_mailWorker = mailWorker;
_paymentStorage = paymentStorage;
_saveToExcel = saveToExcel;
_saveToWord = saveToWord;
_purchaseStorage = purchaseStorage;
_saveToPdf = saveToPdf;
_carStorage = carStorage;
}
public void SavePurchasesToWord(ReportBindingModel option)
{
_saveToWord.CreateDoc(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список сделок вместе с операциями",
ReportObjects = _purchaseStorage.GetFilteredList(new() { OperationsIds = option.Ids.ToList() })
.Select(x => (object)x).ToList(),
});
}
public void SavePurchasesToWord(ReportBindingModel option)
{
_saveToWord.CreateDoc(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список сделок вместе с операциями",
ReportObjects = _purchaseStorage.GetFilteredList(new() { OperationsIds = option.Ids.ToList() })
.Select(x => (object)x).ToList(),
});
}
public void SavePurchasesToExcel(ReportBindingModel option)
{
_saveToExcel.CreateReportPurchase(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список сделок вместе с операциями",
ReportObjects = _purchaseStorage.GetFilteredList(new() { OperationsIds = option.Ids.ToList() })
.Select(x => (object)x).ToList(),
Headers = new() { "Сделка", "Дата сделки", }
});
}
public void SavePurchasesToExcel(ReportBindingModel option)
{
_saveToExcel.CreateReportPurchase(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список сделок вместе с операциями",
ReportObjects = _purchaseStorage.GetFilteredList(new() { OperationsIds = option.Ids.ToList() })
.Select(x => (object)x).ToList(),
Headers = new() { "Сделка", "Дата сделки",}
});
}
public void SendPaymentsToEmail(ReportDateRangeBindingModel option, string email)
{
var payments = _paymentStorage.GetFilteredList(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
});
option.Stream = new MemoryStream();
_saveToPdf.CreateDocForPayments(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
Stream = option.Stream,
Title = "Данные по операциям с оплатами за период",
ReportObjects = payments.Select(x => (object)x).ToList()
});
public void SendPaymentsToEmail(ReportDateRangeBindingModel option, string email)
{
var payments = _paymentStorage.GetFilteredList(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
});
option.Stream = new MemoryStream();
_saveToPdf.CreateDocForPayments(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
Stream = option.Stream,
Title = "Данные по операциям с оплатами за период",
ReportObjects = payments.Select(x => (object)x).ToList()
});
_mailWorker.MailSendAsync(new()
{
FilesStreams = new() { new(option.Stream, "report.pdf") },
Subject = $"Отчет по оплатам за {option.DateFrom.ToShortDateString()}-{option.DateTo.ToShortDateString()}",
MailAddress = email,
});
}
_mailWorker.MailSendAsync(new()
{
FilesStreams = new() { new(option.Stream, "report.pdf") },
Subject = $"Отчет по оплатам за {option.DateFrom.ToShortDateString()}-{option.DateTo.ToShortDateString()}",
MailAddress = email,
});
}
public void SaveOperationsToWord(ReportBindingModel option)
{
_saveToWord.CreateDoc(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список операций вместе с сделками",
ReportObjects = _carStorage.GetFilteredList(new() { PurchasesIds = option.Ids.ToList() })
.Select(x => (object)x).ToList(),
});
}
public void SaveOperationsToWord(ReportBindingModel option)
{
_saveToWord.CreateDoc(new()
{
FileName = option.FileName,
Stream = option.Stream,
Title = "Список операций вместе с сделками",
ReportObjects = _carStorage.GetFilteredList(new() { PurchasesIds = option.Ids.ToList() })
.Select(x => (object)x).ToList(),
});
}
public void SaveOperationsToExcel(ReportBindingModel option)
{
_saveToExcel.CreateReportOperations(new()
{
FileName = option.FileName,
Stream = option.Stream,
Ids = option.Ids.ToList(),
Title = "Список операций вместе с сделками",
ReportObjects = _carStorage.GetFilteredList(new() { PurchasesIds = option.Ids.ToList() })
.Select(x => (object)x).ToList(),
Headers = new() { "Вид", "Тип", "Дата" }
});
}
public void SaveOperationsToExcel(ReportBindingModel option)
{
_saveToExcel.CreateReportOperations(new()
{
FileName = option.FileName,
Stream = option.Stream,
Ids = option.Ids.ToList(),
Title = "Список операций вместе с сделками",
ReportObjects = _carStorage.GetFilteredList(new() { PurchasesIds = option.Ids.ToList() })
.Select(x => (object)x).ToList(),
Headers = new() { "Вид", "Тип", "Дата"}
});
}
public void SendCostsToEmail(ReportDateRangeBindingModel option, string email)
{
var purchaseVisit = _purchaseStorage.GetFilteredList(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
});
option.Stream = new MemoryStream();
_saveToPdf.CreateDocForPurchases(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
Stream = option.Stream,
Title = "Данные по сделке со статьями затрат за период",
ReportObjects = purchaseVisit.Select(x => (object)x).ToList()
});
public void SendCostsToEmail(ReportDateRangeBindingModel option, string email)
{
var purchaseVisit = _purchaseStorage.GetFilteredList(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
});
option.Stream = new MemoryStream();
_saveToPdf.CreateDocForPurchases(new()
{
DateFrom = option.DateFrom,
DateTo = option.DateTo,
Stream = option.Stream,
Title = "Данные по сделке со статьями затрат за период",
ReportObjects = purchaseVisit.Select(x => (object)x).ToList()
});
_mailWorker.MailSendAsync(new()
{
FilesStreams = new() { new(option.Stream, "report.pdf") },
Subject = $"Отчет по статьям затрат за {option.DateFrom.ToShortDateString()}-{option.DateTo.ToShortDateString()}",
MailAddress = email,
});
}
}
}
_mailWorker.MailSendAsync(new()
{
FilesStreams = new() { new(option.Stream, "report.pdf") },
Subject = $"Отчет по статьям затрат за {option.DateFrom.ToShortDateString()}-{option.DateTo.ToShortDateString()}",
MailAddress = email,
});
}
}

View File

@ -188,17 +188,17 @@ namespace UniversityBusinessLogics.OfficePackage.Implements
_shareStringPart.SharedStringTable = new SharedStringTable();
}
// Создаем лист в книгу
var worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
// Create a new worksheet part
var workbookPart = _spreadsheetDocument.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
// Добавляем лист в книгу
var sheets = _spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());
var sheet = new Sheet()
// Set the new worksheet as the active worksheet
var sheets = workbookPart.Workbook.AppendChild(new Sheets());
var sheet = new Sheet
{
Id = _spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
SheetId = 1,
Name = "Лист"
SheetId = (uint)sheets.ChildElements.Count + 1,
Name = "Sheet1" // You can change the name as needed
};
sheets.Append(sheet);
@ -290,10 +290,7 @@ namespace UniversityBusinessLogics.OfficePackage.Implements
}
}
var mergeCell = new MergeCell()
{
Reference = new StringValue(excelParams.Merge)
};
var mergeCell = new MergeCell { Reference = excelParams.Merge };
mergeCells.Append(mergeCell);
}

View File

@ -1,5 +1,6 @@
using Serilog;
using UniversityBusinessLogics.BusinessLogic;
using UniversityBusinessLogics.BusinessLogics;
using UniversityBusinessLogics.MailWorker;
using UniversityBusinessLogics.OfficePackage;
using UniversityBusinessLogics.OfficePackage.Implements;