diff --git a/ProjectFamilyBudget/Entities/PeopleExpense.cs b/ProjectFamilyBudget/Entities/PeopleExpense.cs index e045b7c..dde00b6 100644 --- a/ProjectFamilyBudget/Entities/PeopleExpense.cs +++ b/ProjectFamilyBudget/Entities/PeopleExpense.cs @@ -22,4 +22,14 @@ public class PeopleExpense ExpensePeopleExpenses = expensePeopleExpenses }; } + public static PeopleExpense CreateOperation(TempExpensePeopleExpense tempExpensePeopleExpense, IEnumerable expensePeopleExpenses) + { + return new PeopleExpense + { + Id = tempExpensePeopleExpense.Id, + PeopleId = tempExpensePeopleExpense.PeopleId, + DataReciept = tempExpensePeopleExpense.DataReciept, + ExpensePeopleExpenses = expensePeopleExpenses + }; + } } diff --git a/ProjectFamilyBudget/Entities/PeopleIncome.cs b/ProjectFamilyBudget/Entities/PeopleIncome.cs index d10f68c..8435df5 100644 --- a/ProjectFamilyBudget/Entities/PeopleIncome.cs +++ b/ProjectFamilyBudget/Entities/PeopleIncome.cs @@ -23,4 +23,14 @@ public class PeopleIncome IncomePeopleIncomes = incomePeopleIncomes }; } + public static PeopleIncome CreateOperation(TempIncomePeopleIncome tempIncomePeopleIncome, IEnumerable incomePeopleIncomes) + { + return new PeopleIncome + { + Id = tempIncomePeopleIncome.Id, + PeopleId = tempIncomePeopleIncome.PeopleId, + DataReciept = tempIncomePeopleIncome.DataReciept, + IncomePeopleIncomes = incomePeopleIncomes + }; + } } diff --git a/ProjectFamilyBudget/Entities/TempExpensePeopleExpense.cs b/ProjectFamilyBudget/Entities/TempExpensePeopleExpense.cs new file mode 100644 index 0000000..41a1f25 --- /dev/null +++ b/ProjectFamilyBudget/Entities/TempExpensePeopleExpense.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectFamilyBudget.Entities; + +public class TempExpensePeopleExpense +{ + public int Id { get; private set; } + public int PeopleId { get; private set; } + public DateTime DataReciept { get; private set; } + public int ExpenseId { get; private set; } + public int Sum { get; private set; } +} diff --git a/ProjectFamilyBudget/Entities/TempIncomePeopleIncome.cs b/ProjectFamilyBudget/Entities/TempIncomePeopleIncome.cs index cd360a2..31eb880 100644 --- a/ProjectFamilyBudget/Entities/TempIncomePeopleIncome.cs +++ b/ProjectFamilyBudget/Entities/TempIncomePeopleIncome.cs @@ -10,7 +10,7 @@ public class TempIncomePeopleIncome { public int Id { get; private set; } public int PeopleId { get; private set; } - public DateTime DateReceipt { get; private set; } + public DateTime DataReciept { get; private set; } public int IncomeId { get; private set; } public int Sum { get; private set; } } diff --git a/ProjectFamilyBudget/FormFamilyBudget.Designer.cs b/ProjectFamilyBudget/FormFamilyBudget.Designer.cs index ef7a34f..7a95d39 100644 --- a/ProjectFamilyBudget/FormFamilyBudget.Designer.cs +++ b/ProjectFamilyBudget/FormFamilyBudget.Designer.cs @@ -38,6 +38,7 @@ PeopleExpenseToolStripMenuItem = new ToolStripMenuItem(); отчетыToolStripMenuItem = new ToolStripMenuItem(); DirectoryReportToolStripMenuItem = new ToolStripMenuItem(); + moneyReportToolStripMenuItem = new ToolStripMenuItem(); menuStrip.SuspendLayout(); SuspendLayout(); // @@ -101,7 +102,7 @@ // // отчетыToolStripMenuItem // - отчетыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { DirectoryReportToolStripMenuItem }); + отчетыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { DirectoryReportToolStripMenuItem, moneyReportToolStripMenuItem }); отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem"; отчетыToolStripMenuItem.Size = new Size(60, 20); отчетыToolStripMenuItem.Text = "Отчеты"; @@ -114,6 +115,14 @@ DirectoryReportToolStripMenuItem.Text = "Документ со справочниками"; DirectoryReportToolStripMenuItem.Click += DirectoryReportToolStripMenuItem_Click; // + // moneyReportToolStripMenuItem + // + moneyReportToolStripMenuItem.Name = "moneyReportToolStripMenuItem"; + moneyReportToolStripMenuItem.ShortcutKeys = Keys.Control | Keys.E; + moneyReportToolStripMenuItem.Size = new Size(280, 22); + moneyReportToolStripMenuItem.Text = "Движение денег"; + moneyReportToolStripMenuItem.Click += moneyReportToolStripMenuItem_Click; + // // FormFamilyBudget // AutoScaleDimensions = new SizeF(7F, 15F); @@ -144,5 +153,6 @@ private ToolStripMenuItem PeopleIncomeToolStripMenuItem; private ToolStripMenuItem PeopleExpenseToolStripMenuItem; private ToolStripMenuItem DirectoryReportToolStripMenuItem; + private ToolStripMenuItem moneyReportToolStripMenuItem; } } diff --git a/ProjectFamilyBudget/FormFamilyBudget.cs b/ProjectFamilyBudget/FormFamilyBudget.cs index e789c13..7f7d4c2 100644 --- a/ProjectFamilyBudget/FormFamilyBudget.cs +++ b/ProjectFamilyBudget/FormFamilyBudget.cs @@ -90,5 +90,18 @@ namespace ProjectFamilyBudget MessageBoxButtons.OK, MessageBoxIcon.Error); } } + + private void moneyReportToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } } } diff --git a/ProjectFamilyBudget/Forms/FormPeopleExpense.cs b/ProjectFamilyBudget/Forms/FormPeopleExpense.cs index 01d3f3c..639110e 100644 --- a/ProjectFamilyBudget/Forms/FormPeopleExpense.cs +++ b/ProjectFamilyBudget/Forms/FormPeopleExpense.cs @@ -62,8 +62,8 @@ namespace ProjectFamilyBudget.Forms list.Add(ExpensePeopleExpense.CreateElement(0, Convert.ToInt32(row.Cells["ColumnExpense"].Value) , Convert.ToInt32(row.Cells["ColumnSum"].Value))); } - return list; - + return list.GroupBy(x => x.ExpenseId, x => x.Sum, (id, counts) => + ExpensePeopleExpense.CreateElement(0, id, counts.Sum())).ToList(); } } } diff --git a/ProjectFamilyBudget/Forms/FormPeopleIncome.cs b/ProjectFamilyBudget/Forms/FormPeopleIncome.cs index d9c210c..e35e52e 100644 --- a/ProjectFamilyBudget/Forms/FormPeopleIncome.cs +++ b/ProjectFamilyBudget/Forms/FormPeopleIncome.cs @@ -63,8 +63,8 @@ namespace ProjectFamilyBudget.Forms list.Add(IncomePeopleIncome.CreateElement(0, Convert.ToInt32(row.Cells["ColumnIncome"].Value) , Convert.ToInt32(row.Cells["ColumnSum"].Value))); } - return list; - + return list.GroupBy(x => x.IncomeId, x => x.Sum, (id, counts) => + IncomePeopleIncome.CreateElement(0, id, counts.Sum())).ToList(); } } } diff --git a/ProjectFamilyBudget/Repositories/Implementations/PeopleExpenseRepository.cs b/ProjectFamilyBudget/Repositories/Implementations/PeopleExpenseRepository.cs index 176cb6d..0c687e4 100644 --- a/ProjectFamilyBudget/Repositories/Implementations/PeopleExpenseRepository.cs +++ b/ProjectFamilyBudget/Repositories/Implementations/PeopleExpenseRepository.cs @@ -91,7 +91,8 @@ public class PeopleExpenseRepository : IPeopleExpense try { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = "SELECT * FROM PeopleExpense"; + var querySelect = @"SELECT pe.*, epe.ExpenseId, epe.Sum FROM PeopleExpense pe + INNER JOIN ExpensePeopleExpense epe on epe.PeopleExpenseId = pe.Id"; var peopleExpenses = connection.Query(querySelect); _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(peopleExpenses)); diff --git a/ProjectFamilyBudget/Repositories/Implementations/PeopleIncomeRepository.cs b/ProjectFamilyBudget/Repositories/Implementations/PeopleIncomeRepository.cs index 7175a74..16c5bf1 100644 --- a/ProjectFamilyBudget/Repositories/Implementations/PeopleIncomeRepository.cs +++ b/ProjectFamilyBudget/Repositories/Implementations/PeopleIncomeRepository.cs @@ -94,11 +94,12 @@ public class PeopleIncomeRepository : IPeopleIncome try { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = "SELECT * FROM PeopleIncome"; - var peopleIncomes = connection.Query(querySelect); - _logger.LogDebug("Полученные объекты: {json}", - JsonConvert.SerializeObject(peopleIncomes)); - return peopleIncomes; + var querySelect = @"SELECT pi.*, ipi.IncomeId, ipi.Sum FROM PeopleIncome pi + INNER JOIN IncomePeopleIncome ipi on ipi.PeopleIncomeId = pi.Id"; + var peopleIncomes = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(peopleIncomes)); + return peopleIncomes.GroupBy(x => x.Id, y => y, (key, value) => PeopleIncome.CreateOperation(value.First(), + value.Select(z => IncomePeopleIncome.CreateElement(0, z.IncomeId, z.Sum)))).ToList(); } catch (Exception ex) {