From 502d172e6b0de149ae0bce23c58c6c85eda3c394 Mon Sep 17 00:00:00 2001 From: xom9kxom9k Date: Sun, 1 Dec 2024 16:33:11 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D1=87=D1=82=D0=B8=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Forms/FormExpenseReport.Designer.cs | 25 ++++++++++++++++++- .../Forms/FormExpenseReport.cs | 13 ++++++++-- ProjectFamilyBudget/Forms/FormMoneyReport.cs | 5 ++-- ProjectFamilyBudget/Reports/ChartReport.cs | 10 ++++---- .../Implementations/ConnectionString.cs | 2 +- 5 files changed, 44 insertions(+), 11 deletions(-) diff --git a/ProjectFamilyBudget/Forms/FormExpenseReport.Designer.cs b/ProjectFamilyBudget/Forms/FormExpenseReport.Designer.cs index a946b1e..da32b9c 100644 --- a/ProjectFamilyBudget/Forms/FormExpenseReport.Designer.cs +++ b/ProjectFamilyBudget/Forms/FormExpenseReport.Designer.cs @@ -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; } } \ No newline at end of file diff --git a/ProjectFamilyBudget/Forms/FormExpenseReport.cs b/ProjectFamilyBudget/Forms/FormExpenseReport.cs index 5d4b834..0863666 100644 --- a/ProjectFamilyBudget/Forms/FormExpenseReport.cs +++ b/ProjectFamilyBudget/Forms/FormExpenseReport.cs @@ -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().CreateChart(_fileName, dateTimePicker.Value)) + (_container.Resolve().CreateChart(_fileName, (int)comboBoxSelectExpense.SelectedValue!,dateTimePicker.Value)) { MessageBox.Show("Документ сформирован", "Формирование документа", diff --git a/ProjectFamilyBudget/Forms/FormMoneyReport.cs b/ProjectFamilyBudget/Forms/FormMoneyReport.cs index 4fffe71..9a89a79 100644 --- a/ProjectFamilyBudget/Forms/FormMoneyReport.cs +++ b/ProjectFamilyBudget/Forms/FormMoneyReport.cs @@ -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().CreateTable(textBoxFilePath.Text, (int)comboBoxSelectIncome.SelectedValue!, (int)comboBoxSelectExpense.SelectedValue!, dateTimePickerStart.Value, dateTimePickerEnd.Value)) + if (_container.Resolve().CreateTable(textBoxFilePath.Text, (int)comboBoxSelectIncome.SelectedValue!, + (int)comboBoxSelectExpense.SelectedValue!, dateTimePickerStart.Value, dateTimePickerEnd.Value)) { MessageBox.Show("Документ сформирован", "Формирование документа", diff --git a/ProjectFamilyBudget/Reports/ChartReport.cs b/ProjectFamilyBudget/Reports/ChartReport.cs index 4a4f623..57d5526 100644 --- a/ProjectFamilyBudget/Reports/ChartReport.cs +++ b/ProjectFamilyBudget/Reports/ChartReport.cs @@ -14,18 +14,18 @@ public class ChartReport private readonly IPeopleExpense _peopleExpense; private readonly ILogger _logger; - public ChartReport(IPeopleExpense peopleExpense,, ILogger logger) + public ChartReport(IPeopleExpense peopleExpense, ILogger 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(); } diff --git a/ProjectFamilyBudget/Repositories/Implementations/ConnectionString.cs b/ProjectFamilyBudget/Repositories/Implementations/ConnectionString.cs index 439d25e..d2aa9d9 100644 --- a/ProjectFamilyBudget/Repositories/Implementations/ConnectionString.cs +++ b/ProjectFamilyBudget/Repositories/Implementations/ConnectionString.cs @@ -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"; }