47 lines
1.6 KiB
C#
Raw Normal View History

2024-12-20 11:46:58 +04:00
using DocumentFormat.OpenXml.Wordprocessing;
using Microsoft.Extensions.Logging;
2024-12-20 01:07:20 +04:00
using ProjectLibrary.Repositories;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectLibrary.Reports;
public class ChartReport
{
private readonly IOrderRepository _orderRepository;
private readonly ILogger<ChartReport> _logger;
public ChartReport(IOrderRepository orderRepository, ILogger<ChartReport> logger)
{
_orderRepository = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public bool CreateChart(string filePath, DateTime dateTime)
{
try
{
new PdfBuilder(filePath)
.AddHeader("Количество книг в библиотеках")
.AddPieChart("Библиотеки", GetData(dateTime))
.Build();
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при формировании документа");
return false;
}
}
2024-12-20 15:49:09 +04:00
private List<(string Caption, double Value)> GetData(DateTime? dateTime = null)
2024-12-20 01:07:20 +04:00
{
return _orderRepository
2024-12-20 15:49:09 +04:00
.ReadOrders()
2024-12-21 20:33:17 +04:00
.GroupBy(x => x.BookOrders.First(y => y.OrderID == x.Id).BookName , (key, group) => new { Name = key, Count = group.Sum(y => y.BookOrders.First(z => z.OrderID == y.Id).Count) })
.Select(x => (x.Name, (double)x.Count))
2024-12-20 01:07:20 +04:00
.ToList();
}
}