почти работает
This commit is contained in:
parent
d005b62a7e
commit
502d172e6b
@ -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;
|
||||
}
|
||||
}
|
@ -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("Документ сформирован",
|
||||
"Формирование документа",
|
||||
|
@ -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("Документ сформирован",
|
||||
"Формирование документа",
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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";
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user