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

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();
dateTimePicker = new DateTimePicker();
buttonCreate = new Button();
label1 = new Label();
comboBoxSelectExpense = new ComboBox();
SuspendLayout();
//
// buttonSelectFile
@ -65,7 +67,7 @@
//
// dateTimePicker
//
dateTimePicker.Location = new Point(59, 60);
dateTimePicker.Location = new Point(69, 60);
dateTimePicker.Name = "dateTimePicker";
dateTimePicker.Size = new Size(227, 23);
dateTimePicker.TabIndex = 3;
@ -80,11 +82,30 @@
buttonCreate.UseVisualStyleBackColor = true;
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
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(321, 179);
Controls.Add(comboBoxSelectExpense);
Controls.Add(label1);
Controls.Add(buttonCreate);
Controls.Add(dateTimePicker);
Controls.Add(label);
@ -104,5 +125,7 @@
private Label label;
private DateTimePicker dateTimePicker;
private Button buttonCreate;
private Label label1;
private ComboBox comboBoxSelectExpense;
}
}

View File

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

View File

@ -53,13 +53,14 @@ namespace ProjectFamilyBudget.Forms
}
if (comboBoxSelectIncome.SelectedIndex < 0 || comboBoxSelectExpense.SelectedIndex < 0)
{
throw new Exception("Не выбран корм");
throw new Exception("Не выбран доход или расход");
}
if (dateTimePickerEnd.Value <= dateTimePickerStart.Value)
{
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("Документ сформирован",
"Формирование документа",

View File

@ -14,18 +14,18 @@ public class ChartReport
private readonly IPeopleExpense _peopleExpense;
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));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}
public bool CreateChart(string filePath, DateTime dateTime)
public bool CreateChart(string filePath, int expenseId, DateTime dateTime)
{
try
{
new PdfBuilder(filePath)
.AddHeader("Траты людей")
.AddPieChart("Виды трат", GetData(dateTime))
.AddPieChart("Виды трат", GetData(expenseId, dateTime))
.Build();
return true;
}
@ -35,12 +35,12 @@ public class ChartReport
return false;
}
}
private List<(string Caption, double Value)> GetData(DateTime dateTime)
private List<(string Caption, double Value)> GetData(int expenseId, DateTime dateTime)
{
return _peopleExpense
.ReadPeopleExpense()
.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))
.ToList();
}

View File

@ -8,5 +8,5 @@ namespace ProjectFamilyBudget.Repositories.Implementations;
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";
}