stll has errors

This commit is contained in:
I1nur 2024-12-24 00:38:23 +04:00
parent 6d3fd79a5d
commit 9e0c116449
21 changed files with 159 additions and 70 deletions

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -9,8 +10,15 @@ namespace FamilyBudget.Entities
public class ExpenseBudget public class ExpenseBudget
{ {
public int Id { get; private set; } public int Id { get; private set; }
[Browsable(false)]
public int FamilyMemberId { get; private set; } public int FamilyMemberId { get; private set; }
[DisplayName("Семья")]
public string Name { get; private set; } = string.Empty;
[DisplayName("Дата")]
public DateTime Date { get; private set; } 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_ExpenseBudget> FamilyMember_Expenses { get; private set; } = []; public IEnumerable<FamilyMember_ExpenseBudget> FamilyMember_Expenses { get; private set; } = [];
public static ExpenseBudget СreateOperation(int id, int familyMemberId, IEnumerable<FamilyMember_ExpenseBudget> familyMember_Expenses) public static ExpenseBudget СreateOperation(int id, int familyMemberId, IEnumerable<FamilyMember_ExpenseBudget> familyMember_Expenses)
@ -24,15 +32,13 @@ namespace FamilyBudget.Entities
}; };
} }
public static ExpenseBudget CreateOperation(TempExpenseBudgetMember tempExpenseBudgetMember, IEnumerable<FamilyMember_ExpenseBudget> FamilyMember_Expenses) public void setExpenseBudget(IEnumerable<FamilyMember_ExpenseBudget> familyMember_Expenses)
{ {
return new ExpenseBudget if (familyMember_Expenses != null && familyMember_Expenses.Any())
{ {
Id = tempExpenseBudgetMember.Id, FamilyMember_Expenses = familyMember_Expenses;
FamilyMemberId = tempExpenseBudgetMember.FamilyMemberId, }
Date = tempExpenseBudgetMember.Date,
FamilyMember_Expenses = FamilyMember_Expenses
};
} }
} }
} }

View File

@ -1,6 +1,7 @@
using FamilyBudget.Entities.Enums; using FamilyBudget.Entities.Enums;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -10,8 +11,11 @@ namespace FamilyBudget.Entities
public class ExpenseBudgetCategory public class ExpenseBudgetCategory
{ {
public int Id { get; private set; } public int Id { get; private set; }
[DisplayName("Тип расхода")]
public string Name { get; private set; } = string.Empty; public string Name { get; private set; } = string.Empty;
[DisplayName("Название")]
public ExpenseCategoryType ExpenseCategoryType { get; private set; } public ExpenseCategoryType ExpenseCategoryType { get; private set; }
[DisplayName("Категория")]
public static ExpenseBudgetCategory CreateEntity(int id, string name, ExpenseCategoryType expenseCategoryType) public static ExpenseBudgetCategory CreateEntity(int id, string name, ExpenseCategoryType expenseCategoryType)
{ {
return new ExpenseBudgetCategory return new ExpenseBudgetCategory

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -9,6 +10,7 @@ namespace FamilyBudget.Entities
public class Family public class Family
{ {
public int Id { get; private set; } public int Id { get; private set; }
[DisplayName("Фамилия")]
public string Name { get; private set; } = string.Empty; public string Name { get; private set; } = string.Empty;
public static Family CreateEntity(int id, string name) public static Family CreateEntity(int id, string name)
{ {

View File

@ -1,6 +1,8 @@
using FamilyBudget.Entities.Enums; using DocumentFormat.OpenXml.Wordprocessing;
using FamilyBudget.Entities.Enums;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -10,8 +12,15 @@ namespace FamilyBudget.Entities
public class FamilyMember public class FamilyMember
{ {
public int Id { get; set; } public int Id { get; set; }
[DisplayName("Имя")]
public string Name { get; private set; } = string.Empty; public string Name { get; private set; } = string.Empty;
[Browsable(false)]
public int FamilyId { get; private set; } 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 FamilyMemberType MemberType { get; private set; }
public static FamilyMember CreateEntity(int id, string name, int familyId, FamilyMemberType memberType) public static FamilyMember CreateEntity(int id, string name, int familyId, FamilyMemberType memberType)

View File

@ -12,6 +12,7 @@ namespace FamilyBudget.Entities
public int ExpenseBudgetId { get; private set; } public int ExpenseBudgetId { get; private set; }
public int ExpenseCategoryID { get; private set; } public int ExpenseCategoryID { get; private set; }
public int Sum { 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) public static FamilyMember_ExpenseBudget CreateElement(int id, int expenseCategoryID, int expenseBudgetId, int sum)
{ {
return new FamilyMember_ExpenseBudget() return new FamilyMember_ExpenseBudget()

View File

@ -12,6 +12,7 @@ namespace FamilyBudget.Entities
public int IncomeBudgetId { get; private set;} public int IncomeBudgetId { get; private set;}
public int IncomeBudgetCategoryId { get; private set; } public int IncomeBudgetCategoryId { get; private set; }
public int Sum { 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) public static FamilyMember_IncomeBudget CreateElement(int id, int incomeBudgetCategoryId, int incomeBudgetId, int sum)
{ {
return new FamilyMember_IncomeBudget() return new FamilyMember_IncomeBudget()

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -9,8 +10,16 @@ namespace FamilyBudget.Entities
public class IncomeBudget public class IncomeBudget
{ {
public int Id { get; private set; } public int Id { get; private set; }
[Browsable(false)]
public int FamilyMemberId { get; private set; } public int FamilyMemberId { get; private set; }
[DisplayName("Семья")]
public string FamilyName { get; private set; } = string.Empty;
[DisplayName("Дата")]
public DateTime Date { get; private set; } 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_IncomeBudget> FamilyMember_Incomes { get; private set; } = []; public IEnumerable<FamilyMember_IncomeBudget> FamilyMember_Incomes { get; private set; } = [];
public static IncomeBudget CreateOperation(int id, int familyMemberId, IEnumerable<FamilyMember_IncomeBudget> FamilyMember_Incomes) public static IncomeBudget CreateOperation(int id, int familyMemberId, IEnumerable<FamilyMember_IncomeBudget> FamilyMember_Incomes)
@ -24,15 +33,13 @@ namespace FamilyBudget.Entities
}; };
} }
public static IncomeBudget CreateOperation(TempIncomeBudgetMember tempIncomeBudgetMember, IEnumerable<FamilyMember_IncomeBudget> FamilyMember_Incomes) public void setIncomeBudget(IEnumerable<FamilyMember_IncomeBudget> familyMember_Incomes)
{ {
return new IncomeBudget if (familyMember_Incomes != null && familyMember_Incomes.Any())
{ {
Id = tempIncomeBudgetMember.Id, FamilyMember_Incomes = familyMember_Incomes;
FamilyMemberId = tempIncomeBudgetMember.FamilyMemberId, }
FamilyMember_Incomes = FamilyMember_Incomes,
Date = tempIncomeBudgetMember.Date
};
} }
} }
} }

View File

@ -1,6 +1,7 @@
using FamilyBudget.Entities.Enums; using FamilyBudget.Entities.Enums;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -10,8 +11,11 @@ namespace FamilyBudget.Entities
public class IncomeBudgetCategory public class IncomeBudgetCategory
{ {
public int Id { get; private set; } public int Id { get; private set; }
[DisplayName("Тип дохода")]
public string Name { get; private set; } = string.Empty; public string Name { get; private set; } = string.Empty;
[DisplayName("Название")]
public IncomeCategoryType IncomeCategoryType { get; private set; } public IncomeCategoryType IncomeCategoryType { get; private set; }
[DisplayName("Категория")]
public static IncomeBudgetCategory CreateEntity(int id, string name, IncomeCategoryType incomeCategoryType) public static IncomeBudgetCategory CreateEntity(int id, string name, IncomeCategoryType incomeCategoryType)
{ {
return new IncomeBudgetCategory return new IncomeBudgetCategory

View File

@ -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; }
}
}

View File

@ -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; }
}
}

View File

@ -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) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {

View File

@ -23,7 +23,7 @@ namespace FamilyBudget.Forms
_expenseBudgetRepository = expenseBudgetRepository ?? throw new ArgumentNullException(nameof( _expenseBudgetRepository = expenseBudgetRepository ?? throw new ArgumentNullException(nameof(
expenseBudgetRepository)); expenseBudgetRepository));
comboBoxFamilyMember.DataSource = familyMemberRepository.ReadFamilyMembers(); comboBoxFamilyMember.DataSource = familyMemberRepository.ReadFamilyMembers();
comboBoxFamilyMember.DisplayMember = "Name"; comboBoxFamilyMember.DisplayMember = "FullName";
comboBoxFamilyMember.ValueMember = "Id"; comboBoxFamilyMember.ValueMember = "Id";
ColumnExpanseName.DataSource = expenses.ReadExpenseBudgetCategories(); ColumnExpanseName.DataSource = expenses.ReadExpenseBudgetCategories();

View File

@ -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) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {

View File

@ -23,7 +23,7 @@ namespace FamilyBudget.Forms
_incomeBudgetRepository = incomeBudgetRepository ?? throw new ArgumentNullException(nameof( _incomeBudgetRepository = incomeBudgetRepository ?? throw new ArgumentNullException(nameof(
incomeBudgetRepository)); incomeBudgetRepository));
comboBoxFamilyMember.DataSource = familyMemberRepository.ReadFamilyMembers(); comboBoxFamilyMember.DataSource = familyMemberRepository.ReadFamilyMembers();
comboBoxFamilyMember.DisplayMember = "Name"; comboBoxFamilyMember.DisplayMember = "FullName";
comboBoxFamilyMember.ValueMember = "Id"; comboBoxFamilyMember.ValueMember = "Id";
ColumnIncomeName.DataSource = incomes.ReadIncomeBudgetCategories(); ColumnIncomeName.DataSource = incomes.ReadIncomeBudgetCategories();

View File

@ -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) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {

View File

@ -95,6 +95,7 @@
dataGridViewIncomes.Name = "dataGridViewIncomes"; dataGridViewIncomes.Name = "dataGridViewIncomes";
dataGridViewIncomes.ReadOnly = true; dataGridViewIncomes.ReadOnly = true;
dataGridViewIncomes.RowHeadersVisible = false; dataGridViewIncomes.RowHeadersVisible = false;
dataGridViewIncomes.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridViewIncomes.Size = new Size(664, 450); dataGridViewIncomes.Size = new Size(664, 450);
dataGridViewIncomes.TabIndex = 1; dataGridViewIncomes.TabIndex = 1;
// //

View File

@ -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) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {

View File

@ -98,11 +98,10 @@ namespace FamilyBudget.Repositories.Implementations
using var connection = new NpgsqlConnection(_connectionString.ConnectionString); using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = @"SELECT eb.*, fmeb.expensebudgetId, fmeb.sum, fmeb.ExpensebudgetCategoryId FROM ExpenseBudget eb var querySelect = @"SELECT eb.*, fmeb.expensebudgetId, fmeb.sum, fmeb.ExpensebudgetCategoryId FROM ExpenseBudget eb
INNER JOIN familymember_expensebudget fmeb on fmeb.expensebudgetid = eb.id"; INNER JOIN familymember_expensebudget fmeb on fmeb.expensebudgetid = eb.id";
var expensesBudget = connection.Query<TempExpenseBudgetMember>(querySelect); var expensesBudget = connection.Query<FamilyMember>(querySelect);
_logger.LogDebug("Полученные объекты: {json}", //_logger.LogDebug("Полученные объекты: {json}",
JsonConvert.SerializeObject(expensesBudget)); //JsonConvert.SerializeObject(expensesBudget));
return expensesBudget.GroupBy(x => x.Id, y => y, (key, value) => ExpenseBudget.CreateOperation(value.First(), return null;
value.Select(z => FamilyMember_ExpenseBudget.CreateElement(0, z.ExpenseBudgetCategoryID, z.Id, z.Sum)))).ToList();
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -8,6 +8,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms;
namespace FamilyBudget.Repositories.Implementations namespace FamilyBudget.Repositories.Implementations
{ {
@ -93,7 +94,8 @@ namespace FamilyBudget.Repositories.Implementations
try try
{ {
using var connection = new NpgsqlConnection(_connectionString.ConnectionString); 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<FamilyMember>(querySelect); var familyMembers = connection.Query<FamilyMember>(querySelect);
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(familyMembers)); _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(familyMembers));
return familyMembers; return familyMembers;

View File

@ -1,8 +1,10 @@
using Dapper; using Dapper;
using DocumentFormat.OpenXml.Office2013.Word;
using FamilyBudget.Entities; using FamilyBudget.Entities;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using Npgsql; using Npgsql;
using ProjectFamilyBudget.Repositories.Implementations;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -94,15 +96,51 @@ namespace FamilyBudget.Repositories.Implementations
_logger.LogInformation("Получение всех объектов"); _logger.LogInformation("Получение всех объектов");
try 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); using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = @"SELECT ib.*, fmib.incomebudgetId, fmib.sum, fmib.incomebudgetcategoryid FROM incomeBudget ib var querySelect = $@"SELECT ib.*, CONCAT(fm.Name, ' ', f.Name) as people,
INNER JOIN familymember_incomebudget fmib on fmib.incomebudgetid = ib.id"; fmib.incomebudgetId, fmib.sum,
var incomesBudget = connection.Query<TempIncomeBudgetMember>(querySelect); 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<int, List<FamilyMember_IncomeBudget>>();
// var peopleIncomes = connection.Query<FamilyMember, Family, IncomeBudget, FamilyMember_IncomeBudget>(querySelect,
// (income, peopleIncomes) =>
// {
// if (!incomeDict.TryGetValue(income.Id, out var fmi))
// {
// fmi = [];
// incomeDict.Add(income.Id, fmi);
// }
_logger.LogDebug("Полученные объекты: {json}", // fmi.Add(peopleIncomes);
JsonConvert.SerializeObject(incomesBudget)); // return income;
return incomesBudget.GroupBy(x => x.Id, y => y, (key, value) => IncomeBudget.CreateOperation(value.First(), // }, splitOn: "IncomeId", param: new { dateFrom, dateTo, familyMemberId, BudgetIncomeId });
value.Select(z => FamilyMember_IncomeBudget.CreateElement(0, z.IncomeBudgetCategoryID, z.Id, z.Sum)))).ToList(); // _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) catch (Exception ex)
{ {

View File

@ -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}";
}
}