From 9e0c116449acc0cdcfdc5d1975fbc4d542a83cfe Mon Sep 17 00:00:00 2001 From: I1nur Date: Tue, 24 Dec 2024 00:38:23 +0400 Subject: [PATCH 1/3] stll has errors --- .../FamilyBudget/Entities/ExpenseBudget.cs | 20 ++++--- .../Entities/ExpenseBudgetCategory.cs | 4 ++ FamilyBudget/FamilyBudget/Entities/Family.cs | 2 + .../FamilyBudget/Entities/FamilyMember.cs | 11 +++- .../Entities/FamilyMember_ExpenseBudget.cs | 1 + .../Entities/FamilyMember_IncomeBudget.cs | 1 + .../FamilyBudget/Entities/IncomeBudget.cs | 21 +++++--- .../Entities/IncomeBudgetCategory.cs | 4 ++ .../Entities/TempExpenseBudgetMember.cs | 18 ------- .../Entities/TempIncomeBudgetMember.cs | 18 ------- .../Forms/FormExpenseBudgetCategories.cs | 6 ++- .../Forms/FormFamilyMember_ExpenseBudget.cs | 2 +- .../Forms/FormFamilyMember_ExpenseBudgets.cs | 7 ++- .../Forms/FormFamilyMember_IncomeBudget.cs | 2 +- .../Forms/FormFamilyMember_IncomeBudgets.cs | 7 ++- .../FormIncomeBudgetCategories.Designer.cs | 1 + .../Forms/FormIncomeBudgetCategories.cs | 6 ++- .../ExpenseBudgetRepository.cs | 9 ++-- .../Implementations/FamilyMemberRepository.cs | 4 +- .../Implementations/IncomeBudgetRepository.cs | 52 ++++++++++++++++--- .../Implementations/QueryBuilder.cs | 33 ++++++++++++ 21 files changed, 159 insertions(+), 70 deletions(-) delete mode 100644 FamilyBudget/FamilyBudget/Entities/TempExpenseBudgetMember.cs delete mode 100644 FamilyBudget/FamilyBudget/Entities/TempIncomeBudgetMember.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/Implementations/QueryBuilder.cs diff --git a/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs b/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs index 219ad38..24fa9f0 100644 --- a/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs +++ b/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,8 +10,15 @@ namespace FamilyBudget.Entities public class ExpenseBudget { public int Id { get; private set; } + [Browsable(false)] public int FamilyMemberId { get; private set; } + [DisplayName("Семья")] + public string Name { get; private set; } = string.Empty; + [DisplayName("Дата")] public DateTime Date { get; private set; } + public string Expenses => FamilyMember_Expenses != null ? + string.Join(", ", FamilyMember_Expenses.Select(x => $"{x.ExpenseName} {x.Sum}")) : string.Empty; + [Browsable(false)] public IEnumerable FamilyMember_Expenses { get; private set; } = []; public static ExpenseBudget СreateOperation(int id, int familyMemberId, IEnumerable familyMember_Expenses) @@ -24,15 +32,13 @@ namespace FamilyBudget.Entities }; } - public static ExpenseBudget CreateOperation(TempExpenseBudgetMember tempExpenseBudgetMember, IEnumerable FamilyMember_Expenses) + public void setExpenseBudget(IEnumerable familyMember_Expenses) { - return new ExpenseBudget + if (familyMember_Expenses != null && familyMember_Expenses.Any()) { - Id = tempExpenseBudgetMember.Id, - FamilyMemberId = tempExpenseBudgetMember.FamilyMemberId, - Date = tempExpenseBudgetMember.Date, - FamilyMember_Expenses = FamilyMember_Expenses - }; + FamilyMember_Expenses = familyMember_Expenses; + } + } } } diff --git a/FamilyBudget/FamilyBudget/Entities/ExpenseBudgetCategory.cs b/FamilyBudget/FamilyBudget/Entities/ExpenseBudgetCategory.cs index d31bfac..69172ca 100644 --- a/FamilyBudget/FamilyBudget/Entities/ExpenseBudgetCategory.cs +++ b/FamilyBudget/FamilyBudget/Entities/ExpenseBudgetCategory.cs @@ -1,6 +1,7 @@ using FamilyBudget.Entities.Enums; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,8 +11,11 @@ namespace FamilyBudget.Entities public class ExpenseBudgetCategory { public int Id { get; private set; } + [DisplayName("Тип расхода")] public string Name { get; private set; } = string.Empty; + [DisplayName("Название")] public ExpenseCategoryType ExpenseCategoryType { get; private set; } + [DisplayName("Категория")] public static ExpenseBudgetCategory CreateEntity(int id, string name, ExpenseCategoryType expenseCategoryType) { return new ExpenseBudgetCategory diff --git a/FamilyBudget/FamilyBudget/Entities/Family.cs b/FamilyBudget/FamilyBudget/Entities/Family.cs index 0a47778..2595bdb 100644 --- a/FamilyBudget/FamilyBudget/Entities/Family.cs +++ b/FamilyBudget/FamilyBudget/Entities/Family.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,6 +10,7 @@ namespace FamilyBudget.Entities public class Family { public int Id { get; private set; } + [DisplayName("Фамилия")] public string Name { get; private set; } = string.Empty; public static Family CreateEntity(int id, string name) { diff --git a/FamilyBudget/FamilyBudget/Entities/FamilyMember.cs b/FamilyBudget/FamilyBudget/Entities/FamilyMember.cs index c50db86..f19a13c 100644 --- a/FamilyBudget/FamilyBudget/Entities/FamilyMember.cs +++ b/FamilyBudget/FamilyBudget/Entities/FamilyMember.cs @@ -1,6 +1,8 @@ -using FamilyBudget.Entities.Enums; +using DocumentFormat.OpenXml.Wordprocessing; +using FamilyBudget.Entities.Enums; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,8 +12,15 @@ namespace FamilyBudget.Entities public class FamilyMember { public int Id { get; set; } + [DisplayName("Имя")] public string Name { get; private set; } = string.Empty; + [Browsable(false)] public int FamilyId { get; private set; } + [DisplayName("Семья")] + public string FamilyName { get; private set; } = string.Empty; + public string FullName => $"{Name} {FamilyName}"; + + [DisplayName("Член семьи")] public FamilyMemberType MemberType { get; private set; } public static FamilyMember CreateEntity(int id, string name, int familyId, FamilyMemberType memberType) diff --git a/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs b/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs index 35f7465..8645259 100644 --- a/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs +++ b/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs @@ -12,6 +12,7 @@ namespace FamilyBudget.Entities public int ExpenseBudgetId { get; private set; } public int ExpenseCategoryID { get; private set; } public int Sum { get; private set; } + public string ExpenseName { get; private set; } = string.Empty; public static FamilyMember_ExpenseBudget CreateElement(int id, int expenseCategoryID, int expenseBudgetId, int sum) { return new FamilyMember_ExpenseBudget() diff --git a/FamilyBudget/FamilyBudget/Entities/FamilyMember_IncomeBudget.cs b/FamilyBudget/FamilyBudget/Entities/FamilyMember_IncomeBudget.cs index 223cbfb..a6f8391 100644 --- a/FamilyBudget/FamilyBudget/Entities/FamilyMember_IncomeBudget.cs +++ b/FamilyBudget/FamilyBudget/Entities/FamilyMember_IncomeBudget.cs @@ -12,6 +12,7 @@ namespace FamilyBudget.Entities public int IncomeBudgetId { get; private set;} public int IncomeBudgetCategoryId { get; private set; } public int Sum { get; private set; } + public string IncomeName { get; private set; } = string.Empty; public static FamilyMember_IncomeBudget CreateElement(int id, int incomeBudgetCategoryId, int incomeBudgetId, int sum) { return new FamilyMember_IncomeBudget() diff --git a/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs b/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs index f2effb7..8b8c6a3 100644 --- a/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs +++ b/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -9,8 +10,16 @@ namespace FamilyBudget.Entities public class IncomeBudget { public int Id { get; private set; } + [Browsable(false)] public int FamilyMemberId { get; private set; } + [DisplayName("Семья")] + public string FamilyName { get; private set; } = string.Empty; + [DisplayName("Дата")] public DateTime Date { get; private set; } + [DisplayName("Доходы")] + public string Incomes => FamilyMember_Incomes != null ? + string.Join(", ", FamilyMember_Incomes.Select(x => $"{x.IncomeName} {x.Sum}")) : string.Empty; + [Browsable(false)] public IEnumerable FamilyMember_Incomes { get; private set; } = []; public static IncomeBudget CreateOperation(int id, int familyMemberId, IEnumerable FamilyMember_Incomes) @@ -24,15 +33,13 @@ namespace FamilyBudget.Entities }; } - public static IncomeBudget CreateOperation(TempIncomeBudgetMember tempIncomeBudgetMember, IEnumerable FamilyMember_Incomes) + public void setIncomeBudget(IEnumerable familyMember_Incomes) { - return new IncomeBudget + if (familyMember_Incomes != null && familyMember_Incomes.Any()) { - Id = tempIncomeBudgetMember.Id, - FamilyMemberId = tempIncomeBudgetMember.FamilyMemberId, - FamilyMember_Incomes = FamilyMember_Incomes, - Date = tempIncomeBudgetMember.Date - }; + FamilyMember_Incomes = familyMember_Incomes; + } + } } } diff --git a/FamilyBudget/FamilyBudget/Entities/IncomeBudgetCategory.cs b/FamilyBudget/FamilyBudget/Entities/IncomeBudgetCategory.cs index 0ab44a1..0125b93 100644 --- a/FamilyBudget/FamilyBudget/Entities/IncomeBudgetCategory.cs +++ b/FamilyBudget/FamilyBudget/Entities/IncomeBudgetCategory.cs @@ -1,6 +1,7 @@ using FamilyBudget.Entities.Enums; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,8 +11,11 @@ namespace FamilyBudget.Entities public class IncomeBudgetCategory { public int Id { get; private set; } + [DisplayName("Тип дохода")] public string Name { get; private set; } = string.Empty; + [DisplayName("Название")] public IncomeCategoryType IncomeCategoryType { get; private set; } + [DisplayName("Категория")] public static IncomeBudgetCategory CreateEntity(int id, string name, IncomeCategoryType incomeCategoryType) { return new IncomeBudgetCategory diff --git a/FamilyBudget/FamilyBudget/Entities/TempExpenseBudgetMember.cs b/FamilyBudget/FamilyBudget/Entities/TempExpenseBudgetMember.cs deleted file mode 100644 index 34de5b7..0000000 --- a/FamilyBudget/FamilyBudget/Entities/TempExpenseBudgetMember.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FamilyBudget.Entities -{ - public class TempExpenseBudgetMember - { - public int Id { get; private set; } - public int FamilyMemberId { get; private set; } - public int ExpenseBudgetCategoryID { get; private set; } - public int ExpenseBudgetId { get; private set; } - public DateTime Date { get; private set; } - public int Sum { get; private set; } - } -} diff --git a/FamilyBudget/FamilyBudget/Entities/TempIncomeBudgetMember.cs b/FamilyBudget/FamilyBudget/Entities/TempIncomeBudgetMember.cs deleted file mode 100644 index 453e70a..0000000 --- a/FamilyBudget/FamilyBudget/Entities/TempIncomeBudgetMember.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FamilyBudget.Entities -{ - public class TempIncomeBudgetMember - { - public int Id { get; private set; } - public int FamilyMemberId { get; private set; } - public int IncomeBudgetId { get; private set; } - public int IncomeBudgetCategoryID { get; private set; } - public DateTime Date { get; private set; } - public int Sum { get; private set; } - } -} diff --git a/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.cs b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.cs index 1b3c37d..1e9736e 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.cs @@ -91,7 +91,11 @@ namespace FamilyBudget.Forms } } - private void LoadList() => dataGridViewExpanses.DataSource = _expenseBudgetCategoryRepository.ReadExpenseBudgetCategories(); + private void LoadList() + { + dataGridViewExpanses.DataSource = _expenseBudgetCategoryRepository.ReadExpenseBudgetCategories(); + dataGridViewExpanses.Columns["id"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.cs index 97988e0..53026e7 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.cs @@ -23,7 +23,7 @@ namespace FamilyBudget.Forms _expenseBudgetRepository = expenseBudgetRepository ?? throw new ArgumentNullException(nameof( expenseBudgetRepository)); comboBoxFamilyMember.DataSource = familyMemberRepository.ReadFamilyMembers(); - comboBoxFamilyMember.DisplayMember = "Name"; + comboBoxFamilyMember.DisplayMember = "FullName"; comboBoxFamilyMember.ValueMember = "Id"; ColumnExpanseName.DataSource = expenses.ReadExpenseBudgetCategories(); diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs index b6e3f2c..8e76d83 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs @@ -72,7 +72,12 @@ namespace FamilyBudget.Forms } } - private void LoadList() => dataGridViewExpenses.DataSource = _expenseBudgetRepository.ReadExpenseBudgets(); + private void LoadList() + { + dataGridViewExpenses.DataSource = _expenseBudgetRepository.ReadExpenseBudgets(); + dataGridViewExpenses.Columns["id"].Visible = false; + dataGridViewExpenses.Columns["data"].DefaultCellStyle.Format = "dd MMMM yyyy"; + } private bool TryGetIdentifierFromSelectedRow(out int id) { diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.cs index fba6fbb..3757ec8 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.cs @@ -23,7 +23,7 @@ namespace FamilyBudget.Forms _incomeBudgetRepository = incomeBudgetRepository ?? throw new ArgumentNullException(nameof( incomeBudgetRepository)); comboBoxFamilyMember.DataSource = familyMemberRepository.ReadFamilyMembers(); - comboBoxFamilyMember.DisplayMember = "Name"; + comboBoxFamilyMember.DisplayMember = "FullName"; comboBoxFamilyMember.ValueMember = "Id"; ColumnIncomeName.DataSource = incomes.ReadIncomeBudgetCategories(); diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs index 05b51fb..5c1e07c 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs @@ -59,7 +59,12 @@ namespace FamilyBudget.Forms } } - private void LoadList() => dataGridViewIncomes.DataSource = _incomeBudgetRepository.ReadIncomeBudgets(); + private void LoadList() + { + dataGridViewIncomes.DataSource = _incomeBudgetRepository.ReadIncomeBudgets(); + dataGridViewIncomes.Columns["id"].Visible = false; + dataGridViewIncomes.Columns["data"].DefaultCellStyle.Format = "dd MMMM yyyy"; + } private bool TryGetIdentifierFromSelectedRow(out int id) { diff --git a/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.Designer.cs index cbf0000..ae0196a 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.Designer.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.Designer.cs @@ -95,6 +95,7 @@ dataGridViewIncomes.Name = "dataGridViewIncomes"; dataGridViewIncomes.ReadOnly = true; dataGridViewIncomes.RowHeadersVisible = false; + dataGridViewIncomes.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridViewIncomes.Size = new Size(664, 450); dataGridViewIncomes.TabIndex = 1; // diff --git a/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.cs b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.cs index 00e1060..f795754 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.cs @@ -90,7 +90,11 @@ namespace FamilyBudget.Forms } } - private void LoadList() => dataGridViewIncomes.DataSource = _incomeBudgetCategoryRepository.ReadIncomeBudgetCategories(); + private void LoadList() + { + dataGridViewIncomes.DataSource = _incomeBudgetCategoryRepository.ReadIncomeBudgetCategories(); + dataGridViewIncomes.Columns["id"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs index 8e5cdf5..c8ddca8 100644 --- a/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs @@ -98,11 +98,10 @@ namespace FamilyBudget.Repositories.Implementations using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var querySelect = @"SELECT eb.*, fmeb.expensebudgetId, fmeb.sum, fmeb.ExpensebudgetCategoryId FROM ExpenseBudget eb INNER JOIN familymember_expensebudget fmeb on fmeb.expensebudgetid = eb.id"; - var expensesBudget = connection.Query(querySelect); - _logger.LogDebug("Полученные объекты: {json}", - JsonConvert.SerializeObject(expensesBudget)); - return expensesBudget.GroupBy(x => x.Id, y => y, (key, value) => ExpenseBudget.CreateOperation(value.First(), - value.Select(z => FamilyMember_ExpenseBudget.CreateElement(0, z.ExpenseBudgetCategoryID, z.Id, z.Sum)))).ToList(); + var expensesBudget = connection.Query(querySelect); + //_logger.LogDebug("Полученные объекты: {json}", + //JsonConvert.SerializeObject(expensesBudget)); + return null; } catch (Exception ex) { diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyMemberRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyMemberRepository.cs index 7a12d22..d4b530e 100644 --- a/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyMemberRepository.cs +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyMemberRepository.cs @@ -8,6 +8,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Forms; namespace FamilyBudget.Repositories.Implementations { @@ -93,7 +94,8 @@ namespace FamilyBudget.Repositories.Implementations try { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = "SELECT * FROM FamilyMember"; + var querySelect = @"SELECT fm.*, f.name as FamilyName + FROM FamilyMember fm left join family f on f.id = fm.familyid"; var familyMembers = connection.Query(querySelect); _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(familyMembers)); return familyMembers; diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs index a50c1a7..5ec5459 100644 --- a/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs @@ -1,8 +1,10 @@ using Dapper; +using DocumentFormat.OpenXml.Office2013.Word; using FamilyBudget.Entities; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Npgsql; +using ProjectFamilyBudget.Repositories.Implementations; using System; using System.Collections.Generic; using System.Linq; @@ -94,15 +96,51 @@ namespace FamilyBudget.Repositories.Implementations _logger.LogInformation("Получение всех объектов"); try { + var builder = new QueryBuilder(); + if (dateFrom.HasValue) + { + builder.AddCondition("pi.DataReciept >= @dateForm"); + } + if (dateTo.HasValue) + { + builder.AddCondition("pi.DataReciept <= @dateTo"); + } + if (familyMemberId.HasValue) + { + builder.AddCondition("pi.PeopleId = @peopleId"); + } + if (BudgetIncomeId.HasValue) + { + builder.AddCondition("ipi.IncomeId = @incomeId"); + } using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = @"SELECT ib.*, fmib.incomebudgetId, fmib.sum, fmib.incomebudgetcategoryid FROM incomeBudget ib - INNER JOIN familymember_incomebudget fmib on fmib.incomebudgetid = ib.id"; - var incomesBudget = connection.Query(querySelect); + var querySelect = $@"SELECT ib.*, CONCAT(fm.Name, ' ', f.Name) as people, + fmib.incomebudgetId, fmib.sum, + fmib.incomebudgetcategoryid FROM incomeBudget ib + LEFT JOIN familymember_incomebudget fmib on fmib.incomebudgetid = ib.id + LEFT JOIN Familymember fm on fm.Id = fmib.familymemberid + LEFT JOIN Family f on f.Id = fm.familyid + {builder.Build()}"; + // var incomeDict = new Dictionary>(); + // var peopleIncomes = connection.Query(querySelect, + // (income, peopleIncomes) => + // { + // if (!incomeDict.TryGetValue(income.Id, out var fmi)) + // { + // fmi = []; + // incomeDict.Add(income.Id, fmi); + // } - _logger.LogDebug("Полученные объекты: {json}", - JsonConvert.SerializeObject(incomesBudget)); - return incomesBudget.GroupBy(x => x.Id, y => y, (key, value) => IncomeBudget.CreateOperation(value.First(), - value.Select(z => FamilyMember_IncomeBudget.CreateElement(0, z.IncomeBudgetCategoryID, z.Id, z.Sum)))).ToList(); + // fmi.Add(peopleIncomes); + // return income; + // }, splitOn: "IncomeId", param: new { dateFrom, dateTo, familyMemberId, BudgetIncomeId }); + // _logger.LogDebug("Полученные объекты: {json}", + + //_logger.LogDebug("Полученные объекты: {json}", + // JsonConvert.SerializeObject(incomesBudget)); + // return incomesBudget.GroupBy(x => x.Id, y => y, (key, value) => IncomeBudget.CreateOperation(value.First(), + // value.Select(z => FamilyMember_IncomeBudget.CreateElement(0, z.IncomeBudgetCategoryID, z.Id, z.Sum)))).ToList(); + return null; } catch (Exception ex) { diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/QueryBuilder.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/QueryBuilder.cs new file mode 100644 index 0000000..abf174b --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/QueryBuilder.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectFamilyBudget.Repositories.Implementations; + +public class QueryBuilder +{ + private readonly StringBuilder _builder; + public QueryBuilder() + { + _builder = new(); + } + public QueryBuilder AddCondition(string condition) + { + if (_builder.Length > 0) + { + _builder.Append(" AND "); + } + _builder.Append(condition); + return this; + } + public string Build() + { + if (_builder.Length == 0) + { + return string.Empty; + } + return $"WHERE {_builder}"; + } +} \ No newline at end of file -- 2.25.1 From 15edafea603efca0111a9ba7131c0b393a36a71e Mon Sep 17 00:00:00 2001 From: I1nur Date: Tue, 24 Dec 2024 03:37:47 +0400 Subject: [PATCH 2/3] almost done --- .../FamilyBudget/Entities/ExpenseBudget.cs | 6 +- .../Entities/FamilyMember_ExpenseBudget.cs | 4 +- .../FamilyBudget/Entities/IncomeBudget.cs | 6 +- .../FamilyBudget/Forms/FormFamilies.cs | 6 +- .../Forms/FormFamilyMember_ExpenseBudgets.cs | 2 +- .../Forms/FormFamilyMember_IncomeBudgets.cs | 2 +- .../FamilyBudget/Forms/FormFamilyMembers.cs | 8 ++- .../FamilyBudget/Reports/ChartReport.cs | 2 +- .../FamilyBudget/Reports/TableReport.cs | 25 +++---- .../ExpenseBudgetRepository.cs | 68 ++++++++++++++++--- .../Implementations/IncomeBudgetRepository.cs | 66 ++++++++++-------- 11 files changed, 128 insertions(+), 67 deletions(-) diff --git a/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs b/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs index 24fa9f0..6ab645d 100644 --- a/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs +++ b/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs @@ -12,8 +12,8 @@ namespace FamilyBudget.Entities public int Id { get; private set; } [Browsable(false)] public int FamilyMemberId { get; private set; } - [DisplayName("Семья")] - public string Name { get; private set; } = string.Empty; + [DisplayName("Участник")] + public string FullName { get; private set; } = string.Empty; [DisplayName("Дата")] public DateTime Date { get; private set; } public string Expenses => FamilyMember_Expenses != null ? @@ -32,7 +32,7 @@ namespace FamilyBudget.Entities }; } - public void setExpenseBudget(IEnumerable familyMember_Expenses) + public void SetExpenseBudget(IEnumerable familyMember_Expenses) { if (familyMember_Expenses != null && familyMember_Expenses.Any()) { diff --git a/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs b/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs index 8645259..ecd7433 100644 --- a/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs +++ b/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs @@ -10,7 +10,7 @@ namespace FamilyBudget.Entities { public int Id { get; private set; } public int ExpenseBudgetId { get; private set; } - public int ExpenseCategoryID { get; private set; } + public int ExpenseBudgetCategoryID { get; private set; } public int Sum { get; private set; } public string ExpenseName { get; private set; } = string.Empty; public static FamilyMember_ExpenseBudget CreateElement(int id, int expenseCategoryID, int expenseBudgetId, int sum) @@ -18,7 +18,7 @@ namespace FamilyBudget.Entities return new FamilyMember_ExpenseBudget() { Id = id, - ExpenseCategoryID = expenseCategoryID, + ExpenseBudgetCategoryID = expenseCategoryID, ExpenseBudgetId = expenseBudgetId, Sum = sum }; diff --git a/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs b/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs index 8b8c6a3..f315f4e 100644 --- a/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs +++ b/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs @@ -12,8 +12,8 @@ namespace FamilyBudget.Entities public int Id { get; private set; } [Browsable(false)] public int FamilyMemberId { get; private set; } - [DisplayName("Семья")] - public string FamilyName { get; private set; } = string.Empty; + [DisplayName("Участник")] + public string FullName { get; private set; } = string.Empty; [DisplayName("Дата")] public DateTime Date { get; private set; } [DisplayName("Доходы")] @@ -33,7 +33,7 @@ namespace FamilyBudget.Entities }; } - public void setIncomeBudget(IEnumerable familyMember_Incomes) + public void SetIncomeBudget(IEnumerable familyMember_Incomes) { if (familyMember_Incomes != null && familyMember_Incomes.Any()) { diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilies.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilies.cs index e64bea4..ff5e3ef 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormFamilies.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilies.cs @@ -91,7 +91,11 @@ namespace FamilyBudget.Forms } } - private void LoadList() => dataGridViewFamilies.DataSource = _familyRepository.ReadFamilies(); + private void LoadList() + { + dataGridViewFamilies.DataSource = _familyRepository.ReadFamilies(); + dataGridViewFamilies.Columns["id"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs index 8e76d83..a6911c8 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs @@ -76,7 +76,7 @@ namespace FamilyBudget.Forms { dataGridViewExpenses.DataSource = _expenseBudgetRepository.ReadExpenseBudgets(); dataGridViewExpenses.Columns["id"].Visible = false; - dataGridViewExpenses.Columns["data"].DefaultCellStyle.Format = "dd MMMM yyyy"; + dataGridViewExpenses.Columns["date"].DefaultCellStyle.Format = "dd MMMM yyyy"; } private bool TryGetIdentifierFromSelectedRow(out int id) diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs index 5c1e07c..ceb9c48 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs @@ -63,7 +63,7 @@ namespace FamilyBudget.Forms { dataGridViewIncomes.DataSource = _incomeBudgetRepository.ReadIncomeBudgets(); dataGridViewIncomes.Columns["id"].Visible = false; - dataGridViewIncomes.Columns["data"].DefaultCellStyle.Format = "dd MMMM yyyy"; + dataGridViewIncomes.Columns["date"].DefaultCellStyle.Format = "dd MMMM yyyy"; } private bool TryGetIdentifierFromSelectedRow(out int id) diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.cs index 959f15b..bc9cb86 100644 --- a/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.cs +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.cs @@ -91,8 +91,12 @@ namespace FamilyBudget.Forms } } - private void LoadList() => dataGridViewFamilyMembers.DataSource = _familyMemberRepository.ReadFamilyMembers(); - + private void LoadList() + { + dataGridViewFamilyMembers.DataSource = _familyMemberRepository.ReadFamilyMembers(); + dataGridViewFamilyMembers.Columns["id"].Visible = false; + dataGridViewFamilyMembers.Columns["FullName"].Visible = false; + } private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; diff --git a/FamilyBudget/FamilyBudget/Reports/ChartReport.cs b/FamilyBudget/FamilyBudget/Reports/ChartReport.cs index 376413b..417d708 100644 --- a/FamilyBudget/FamilyBudget/Reports/ChartReport.cs +++ b/FamilyBudget/FamilyBudget/Reports/ChartReport.cs @@ -46,7 +46,7 @@ namespace FamilyBudget.Reports .Where(x => x.Date.Date == dateTime.Date) .GroupBy(x => x.FamilyMemberId, (key, group) => new { Id = key, - Count = group.Sum(x => x.FamilyMember_Expenses.FirstOrDefault(x => x.ExpenseCategoryID == expenseId)?.Sum ?? 0) + Count = group.Sum(x => x.FamilyMember_Expenses.FirstOrDefault(x => x.ExpenseBudgetCategoryID == expenseId)?.Sum ?? 0) }) .Select(x => (x.Id.ToString(), (double)x.Count)) .ToList(); diff --git a/FamilyBudget/FamilyBudget/Reports/TableReport.cs b/FamilyBudget/FamilyBudget/Reports/TableReport.cs index 2605a4e..8f47bd5 100644 --- a/FamilyBudget/FamilyBudget/Reports/TableReport.cs +++ b/FamilyBudget/FamilyBudget/Reports/TableReport.cs @@ -34,7 +34,7 @@ namespace FamilyBudget.Reports { new ExcelBuilder(filePath) .AddHeader("Сводка по бюджету семьи", 0, 4) - .AddParagraph("за период", 0) + .AddParagraph($"за период с {startDate:dd.MM.yyyy} по {endDate:dd.MM.yyyy}", 0) .AddTable([15, 10, 15, 15], GetData(incomeId, expenseId, startDate, endDate)) .Build(); return true; @@ -50,22 +50,20 @@ namespace FamilyBudget.Reports { _logger.LogDebug("{json}", JsonConvert.SerializeObject(_expenseBudgetRepository.ReadExpenseBudgets())); var expenseData = _expenseBudgetRepository - .ReadExpenseBudgets() - .Where(x => x.Date >= startDate && x.Date <= endDate && x.FamilyMember_Expenses.Any(y => y.ExpenseCategoryID == expenseId)) + .ReadExpenseBudgets(dateFrom: startDate, dateTo: endDate, BudgetExpenseId: expenseId) .Select(x => new { - x.FamilyMemberId, + x.FullName, x.Date, CountIn = (int?)null, - CountOut = x.FamilyMember_Expenses.FirstOrDefault(y => y.ExpenseCategoryID == expenseId)?.Sum + CountOut = x.FamilyMember_Expenses.FirstOrDefault(y => y.ExpenseBudgetCategoryID == expenseId)?.Sum }); var incomeData = _incomeBudgetRepository - .ReadIncomeBudgets() - .Where(x => x.Date >= startDate && x.Date <= endDate && x.FamilyMember_Incomes.Any(y => y.IncomeBudgetCategoryId == incomeId)) + .ReadIncomeBudgets(dateFrom: startDate, dateTo: endDate, BudgetIncomeId: incomeId) .Select(x => new { - x.FamilyMemberId, + x.FullName, x.Date, CountIn = x.FamilyMember_Incomes.FirstOrDefault(y => y.IncomeBudgetCategoryId == incomeId)?.Sum, CountOut = (int?)null, @@ -77,15 +75,10 @@ namespace FamilyBudget.Reports return new List(){ item } .Union( - data.Select(x => new string[] { - x.FamilyMemberId.ToString(), x.Date.ToString(), x.CountIn?.ToString() ?? - string.Empty, x.CountOut?.ToString() ?? string.Empty - }) - ) + data.Select(x => new string[] {x.FullName, x.Date.ToString("dd.MM.yyyy"), x.CountIn?.ToString("N0") ?? string.Empty, + x.CountOut?.ToString("N0") ?? string.Empty })) .Union( - [["Всего", "", data.Sum(x => x.CountIn ?? 0).ToString(), - data.Sum(x => x.CountOut ?? 0).ToString()]] - ) + [["Всего", "", data.Sum(x => x.CountIn ?? 0).ToString("N0"), data.Sum(x => x.CountOut ?? 0).ToString("N0")]]) .ToList(); } } diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs index c8ddca8..04a00eb 100644 --- a/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs @@ -3,6 +3,7 @@ using FamilyBudget.Entities; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Npgsql; +using ProjectFamilyBudget.Repositories.Implementations; using System; using System.Collections.Generic; using System.Linq; @@ -49,7 +50,7 @@ namespace FamilyBudget.Repositories.Implementations ExpenseBudgetId = expenseBudgetId, expenseBudget.FamilyMemberId, elem.Sum, - ExpensebudgetCategoryId = elem.ExpenseCategoryID + ExpensebudgetCategoryId = elem.ExpenseBudgetCategoryID }, transaction); } @@ -93,21 +94,70 @@ namespace FamilyBudget.Repositories.Implementations public IEnumerable ReadExpenseBudgets(DateTime? dateFrom = null, DateTime? dateTo = null, int? familyMemberId = null, int? BudgetExpenseId = null) { + _logger.LogInformation("Получение всех объектов"); try { + var builder = new QueryBuilder(); + if (dateFrom.HasValue) + { + builder.AddCondition("eb.Date >= @dateFrom"); + } + if (dateTo.HasValue) + { + builder.AddCondition("eb.Date<= @dateTo"); + } + if (familyMemberId.HasValue) + { + builder.AddCondition("eb.familyMemberId = @familyMemberId"); + } + if (BudgetExpenseId.HasValue) + { + builder.AddCondition("fmeb.ExpenseBudgetCategoryId = @BudgetExpenseId"); + } using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = @"SELECT eb.*, fmeb.expensebudgetId, fmeb.sum, fmeb.ExpensebudgetCategoryId FROM ExpenseBudget eb - INNER JOIN familymember_expensebudget fmeb on fmeb.expensebudgetid = eb.id"; - var expensesBudget = connection.Query(querySelect); - //_logger.LogDebug("Полученные объекты: {json}", - //JsonConvert.SerializeObject(expensesBudget)); - return null; + var querySelect = $@"SELECT + eb.Id, + eb.FamilyMemberId, + CONCAT(fm.Name, ' ', f.Name) AS FullName, + eb.Date, + fmeb.ExpenseBudgetId, + fmeb.ExpenseBudgetCategoryId, + fmeb.Sum, + e.Name AS ExpenseName + FROM expenseBudget eb + LEFT JOIN familymember_expensebudget fmeb ON fmeb.expensebudgetid = eb.id + INNER JOIN Familymember fm ON fm.Id = eb.FamilyMemberId + LEFT JOIN Family f ON f.Id = fm.FamilyId + LEFT JOIN expensebudgetcategory e ON e.Id = fmeb.ExpenseBudgetCategoryId + {builder.Build()}"; + var expenseDict = new Dictionary>(); + var expenseBudget = connection.Query(querySelect, + (expense, fmExpense) => + { + if (!expenseDict.TryGetValue(expense.Id, out var fme)) + { + fme = []; + expenseDict.Add(expense.Id, fme); + } + + fme.Add(fmExpense); + return expense; + }, splitOn: "ExpenseBudgetCategoryId", param: new { dateFrom, dateTo, familyMemberId, BudgetExpenseId }); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(expenseBudget)); + + return expenseDict.Select(x => + { + var pi = expenseBudget.First(y => y.Id == x.Key); + pi.SetExpenseBudget(x.Value); + return pi; + }).ToArray(); } catch (Exception ex) { _logger.LogError(ex, "Ошибка при чтении объектов"); throw; } - } - } + } + } } diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs index 5ec5459..8e84ede 100644 --- a/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs @@ -99,48 +99,58 @@ namespace FamilyBudget.Repositories.Implementations var builder = new QueryBuilder(); if (dateFrom.HasValue) { - builder.AddCondition("pi.DataReciept >= @dateForm"); + builder.AddCondition("ib.Date >= @dateFrom"); } if (dateTo.HasValue) { - builder.AddCondition("pi.DataReciept <= @dateTo"); + builder.AddCondition("ib.Date <= @dateTo"); } if (familyMemberId.HasValue) { - builder.AddCondition("pi.PeopleId = @peopleId"); + builder.AddCondition("ib.familyMemberId = @familyMemberId"); } if (BudgetIncomeId.HasValue) { - builder.AddCondition("ipi.IncomeId = @incomeId"); + builder.AddCondition("fmib.IncomeBudgetCategoryId = @BudgetIncomeId"); } using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = $@"SELECT ib.*, CONCAT(fm.Name, ' ', f.Name) as people, - fmib.incomebudgetId, fmib.sum, - fmib.incomebudgetcategoryid FROM incomeBudget ib - LEFT JOIN familymember_incomebudget fmib on fmib.incomebudgetid = ib.id - LEFT JOIN Familymember fm on fm.Id = fmib.familymemberid - LEFT JOIN Family f on f.Id = fm.familyid + var querySelect = $@"SELECT + ib.Id, + ib.FamilyMemberId, + CONCAT(fm.Name, ' ', f.Name) AS FullName, + ib.Date, + fmib.IncomeBudgetId, + fmib.IncomeBudgetCategoryId, + fmib.Sum, + i.Name AS IncomeName + FROM incomeBudget ib + LEFT JOIN familymember_incomebudget fmib ON fmib.incomebudgetid = ib.id + INNER JOIN Familymember fm ON fm.Id = ib.FamilyMemberId + LEFT JOIN Family f ON f.Id = fm.FamilyId + LEFT JOIN incomebudgetcategory i ON i.Id = fmib.IncomeBudgetCategoryId {builder.Build()}"; - // var incomeDict = new Dictionary>(); - // var peopleIncomes = connection.Query(querySelect, - // (income, peopleIncomes) => - // { - // if (!incomeDict.TryGetValue(income.Id, out var fmi)) - // { - // fmi = []; - // incomeDict.Add(income.Id, fmi); - // } + var incomeDict = new Dictionary>(); + var incomesBudget = connection.Query(querySelect, + (income, fmIncome) => + { + if (!incomeDict.TryGetValue(income.Id, out var fmi)) + { + fmi = []; + incomeDict.Add(income.Id, fmi); + } - // fmi.Add(peopleIncomes); - // return income; - // }, splitOn: "IncomeId", param: new { dateFrom, dateTo, familyMemberId, BudgetIncomeId }); - // _logger.LogDebug("Полученные объекты: {json}", + fmi.Add(fmIncome); + return income; + }, splitOn: "IncomeBudgetCategoryId", param: new { dateFrom, dateTo, familyMemberId, BudgetIncomeId }); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(incomesBudget)); - //_logger.LogDebug("Полученные объекты: {json}", - // JsonConvert.SerializeObject(incomesBudget)); - // return incomesBudget.GroupBy(x => x.Id, y => y, (key, value) => IncomeBudget.CreateOperation(value.First(), - // value.Select(z => FamilyMember_IncomeBudget.CreateElement(0, z.IncomeBudgetCategoryID, z.Id, z.Sum)))).ToList(); - return null; + return incomeDict.Select(x => + { + var pi = incomesBudget.First(y => y.Id == x.Key); + pi.SetIncomeBudget(x.Value); + return pi; + }).ToArray(); } catch (Exception ex) { -- 2.25.1 From 7b71e9de81718633158a6d49fb924d66260db790 Mon Sep 17 00:00:00 2001 From: I1nur Date: Tue, 24 Dec 2024 06:22:29 +0400 Subject: [PATCH 3/3] all done --- FamilyBudget/FamilyBudget/Reports/ChartReport.cs | 9 ++++----- FamilyBudget/FamilyBudget/Reports/PdfBuilder.cs | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/FamilyBudget/FamilyBudget/Reports/ChartReport.cs b/FamilyBudget/FamilyBudget/Reports/ChartReport.cs index 417d708..e7ba9ab 100644 --- a/FamilyBudget/FamilyBudget/Reports/ChartReport.cs +++ b/FamilyBudget/FamilyBudget/Reports/ChartReport.cs @@ -29,7 +29,7 @@ namespace FamilyBudget.Reports { new PdfBuilder(filePath) .AddHeader("Расходы") - .AddPieChart("Выбранные категории", GetData(expenseId, dateTime)) + .AddPieChart($"Траты за {dateTime:dd MMMM yyyy}", GetData(expenseId, dateTime)) .Build(); return true; } @@ -42,13 +42,12 @@ namespace FamilyBudget.Reports private List<(string Caption, double Value)> GetData(int expenseId, DateTime dateTime) { var data = _expenseBudget - .ReadExpenseBudgets() - .Where(x => x.Date.Date == dateTime.Date) + .ReadExpenseBudgets(dateFrom: dateTime.Date, dateTo: dateTime.Date.AddDays(1), BudgetExpenseId: expenseId) .GroupBy(x => x.FamilyMemberId, (key, group) => new { - Id = key, + FullName = group.FirstOrDefault()?.FullName ?? "Unknown", Count = group.Sum(x => x.FamilyMember_Expenses.FirstOrDefault(x => x.ExpenseBudgetCategoryID == expenseId)?.Sum ?? 0) }) - .Select(x => (x.Id.ToString(), (double)x.Count)) + .Select(x => (x.FullName.ToString(), (double)x.Count)) .ToList(); return data; diff --git a/FamilyBudget/FamilyBudget/Reports/PdfBuilder.cs b/FamilyBudget/FamilyBudget/Reports/PdfBuilder.cs index 3c047cc..0fa658b 100644 --- a/FamilyBudget/FamilyBudget/Reports/PdfBuilder.cs +++ b/FamilyBudget/FamilyBudget/Reports/PdfBuilder.cs @@ -35,11 +35,10 @@ namespace FamilyBudget.Reports return this; } - // Подрезаем длинные подписи и фильтруем слишком малые значения data = data - .Where(x => x.Value > 0.01) // Исключить слишком маленькие значения + .Where(x => x.Value > 0.01) .Select(x => ( - Caption: x.Caption.Length > 10 ? x.Caption.Substring(0, 10) + "..." : x.Caption, + Caption: x.Caption, Value: x.Value )).ToList(); -- 2.25.1