почти работает

This commit is contained in:
xom9kxom9k 2024-12-01 16:33:11 +04:00
parent d005b62a7e
commit 502d172e6b
5 changed files with 44 additions and 11 deletions

View File

@ -33,6 +33,8 @@
label = new Label(); label = new Label();
dateTimePicker = new DateTimePicker(); dateTimePicker = new DateTimePicker();
buttonCreate = new Button(); buttonCreate = new Button();
label1 = new Label();
comboBoxSelectExpense = new ComboBox();
SuspendLayout(); SuspendLayout();
// //
// buttonSelectFile // buttonSelectFile
@ -65,7 +67,7 @@
// //
// dateTimePicker // dateTimePicker
// //
dateTimePicker.Location = new Point(59, 60); dateTimePicker.Location = new Point(69, 60);
dateTimePicker.Name = "dateTimePicker"; dateTimePicker.Name = "dateTimePicker";
dateTimePicker.Size = new Size(227, 23); dateTimePicker.Size = new Size(227, 23);
dateTimePicker.TabIndex = 3; dateTimePicker.TabIndex = 3;
@ -80,11 +82,30 @@
buttonCreate.UseVisualStyleBackColor = true; buttonCreate.UseVisualStyleBackColor = true;
buttonCreate.Click += buttonCreate_Click; buttonCreate.Click += buttonCreate_Click;
// //
// label1
//
label1.AutoSize = true;
label1.Location = new Point(12, 107);
label1.Name = "label1";
label1.Size = new Size(45, 15);
label1.TabIndex = 5;
label1.Text = "Расход";
//
// comboBoxSelectExpense
//
comboBoxSelectExpense.FormattingEnabled = true;
comboBoxSelectExpense.Location = new Point(69, 104);
comboBoxSelectExpense.Name = "comboBoxSelectExpense";
comboBoxSelectExpense.Size = new Size(227, 23);
comboBoxSelectExpense.TabIndex = 6;
//
// FormExpenseReport // FormExpenseReport
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(321, 179); ClientSize = new Size(321, 179);
Controls.Add(comboBoxSelectExpense);
Controls.Add(label1);
Controls.Add(buttonCreate); Controls.Add(buttonCreate);
Controls.Add(dateTimePicker); Controls.Add(dateTimePicker);
Controls.Add(label); Controls.Add(label);
@ -104,5 +125,7 @@
private Label label; private Label label;
private DateTimePicker dateTimePicker; private DateTimePicker dateTimePicker;
private Button buttonCreate; private Button buttonCreate;
private Label label1;
private ComboBox comboBoxSelectExpense;
} }
} }

View File

@ -1,4 +1,5 @@
using ProjectFamilyBudget.Reports; using ProjectFamilyBudget.Reports;
using ProjectFamilyBudget.Repositories;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@ -16,10 +17,14 @@ namespace ProjectFamilyBudget.Forms
{ {
private string _fileName = string.Empty; private string _fileName = string.Empty;
private readonly IUnityContainer _container; private readonly IUnityContainer _container;
public FormExpenseReport(IUnityContainer container) public FormExpenseReport(IUnityContainer container, IExpense expense)
{ {
InitializeComponent(); InitializeComponent();
_container = container ?? throw new ArgumentNullException(nameof(container)); _container = container ?? throw new ArgumentNullException(nameof(container));
comboBoxSelectExpense.DataSource = expense.ReadExpense();
comboBoxSelectExpense.DisplayMember = "Name";
comboBoxSelectExpense.ValueMember = "Id";
} }
private void buttonSelectFile_Click(object sender, EventArgs e) private void buttonSelectFile_Click(object sender, EventArgs e)
@ -43,8 +48,12 @@ namespace ProjectFamilyBudget.Forms
{ {
throw new Exception("Отсутствует имя файла для отчета"); throw new Exception("Отсутствует имя файла для отчета");
} }
if (comboBoxSelectExpense.SelectedIndex < 0)
{
throw new Exception("Не выбран расход");
}
if if
(_container.Resolve<ChartReport>().CreateChart(_fileName, dateTimePicker.Value)) (_container.Resolve<ChartReport>().CreateChart(_fileName, (int)comboBoxSelectExpense.SelectedValue!,dateTimePicker.Value))
{ {
MessageBox.Show("Документ сформирован", MessageBox.Show("Документ сформирован",
"Формирование документа", "Формирование документа",

View File

@ -53,13 +53,14 @@ namespace ProjectFamilyBudget.Forms
} }
if (comboBoxSelectIncome.SelectedIndex < 0 || comboBoxSelectExpense.SelectedIndex < 0) if (comboBoxSelectIncome.SelectedIndex < 0 || comboBoxSelectExpense.SelectedIndex < 0)
{ {
throw new Exception("Не выбран корм"); throw new Exception("Не выбран доход или расход");
} }
if (dateTimePickerEnd.Value <= dateTimePickerStart.Value) if (dateTimePickerEnd.Value <= dateTimePickerStart.Value)
{ {
throw new Exception("Дата начала должна быть раньше даты окончания"); throw new Exception("Дата начала должна быть раньше даты окончания");
} }
if (_container.Resolve<TableReport>().CreateTable(textBoxFilePath.Text, (int)comboBoxSelectIncome.SelectedValue!, (int)comboBoxSelectExpense.SelectedValue!, dateTimePickerStart.Value, dateTimePickerEnd.Value)) if (_container.Resolve<TableReport>().CreateTable(textBoxFilePath.Text, (int)comboBoxSelectIncome.SelectedValue!,
(int)comboBoxSelectExpense.SelectedValue!, dateTimePickerStart.Value, dateTimePickerEnd.Value))
{ {
MessageBox.Show("Документ сформирован", MessageBox.Show("Документ сформирован",
"Формирование документа", "Формирование документа",

View File

@ -14,18 +14,18 @@ public class ChartReport
private readonly IPeopleExpense _peopleExpense; private readonly IPeopleExpense _peopleExpense;
private readonly ILogger<ChartReport> _logger; private readonly ILogger<ChartReport> _logger;
public ChartReport(IPeopleExpense peopleExpense,, ILogger<ChartReport> logger) public ChartReport(IPeopleExpense peopleExpense, ILogger<ChartReport> logger)
{ {
_peopleExpense = peopleExpense ?? throw new ArgumentNullException(nameof(peopleExpense)); _peopleExpense = peopleExpense ?? throw new ArgumentNullException(nameof(peopleExpense));
_logger = logger ?? throw new ArgumentNullException(nameof(logger)); _logger = logger ?? throw new ArgumentNullException(nameof(logger));
} }
public bool CreateChart(string filePath, DateTime dateTime) public bool CreateChart(string filePath, int expenseId, DateTime dateTime)
{ {
try try
{ {
new PdfBuilder(filePath) new PdfBuilder(filePath)
.AddHeader("Траты людей") .AddHeader("Траты людей")
.AddPieChart("Виды трат", GetData(dateTime)) .AddPieChart("Виды трат", GetData(expenseId, dateTime))
.Build(); .Build();
return true; return true;
} }
@ -35,12 +35,12 @@ public class ChartReport
return false; return false;
} }
} }
private List<(string Caption, double Value)> GetData(DateTime dateTime) private List<(string Caption, double Value)> GetData(int expenseId, DateTime dateTime)
{ {
return _peopleExpense return _peopleExpense
.ReadPeopleExpense() .ReadPeopleExpense()
.Where(x => x.DataReciept.Date == dateTime.Date) .Where(x => x.DataReciept.Date == dateTime.Date)
.GroupBy(x => x.PeopleId, (key, group) => new { Id = key, Count = group.Sum(x =>}) .GroupBy(x => x.PeopleId, (key, group) => new { Id = key, Count = group.Sum(x => x.ExpensePeopleExpenses.FirstOrDefault(y => y.ExpenseId == expenseId)?.Sum )})
.Select(x => (x.Id.ToString(), (double)x.Count)) .Select(x => (x.Id.ToString(), (double)x.Count))
.ToList(); .ToList();
} }

View File

@ -8,5 +8,5 @@ namespace ProjectFamilyBudget.Repositories.Implementations;
public class ConnectionString : IConnectionString public class ConnectionString : IConnectionString
{ {
string IConnectionString.ConnectionString => "Host=localhost;Port=5432;Username=postgres;Password=postgres;Database=postgres"; string IConnectionString.ConnectionString => "Host=localhost;Port=5432;Username=postgres;Password=postgres;Database=otp3";
} }