2 лабораторная работа

This commit is contained in:
Корсаков К. 2024-12-20 15:34:35 +04:00
parent 6d42a1dc3c
commit a1f04bea39
25 changed files with 699 additions and 203 deletions

View File

@ -8,14 +8,14 @@ namespace ProjectFamilyBudget.Entities;
public class ExpensePeopleExpense public class ExpensePeopleExpense
{ {
public int Id { get; private set; } public int PeopleExpenseId { get; private set; }
public int ExpenseId { get; private set; } public int ExpenseId { get; private set; }
public int Sum { get; private set; } public int Sum { get; private set; }
public static ExpensePeopleExpense CreateElement(int id, int expenseId, int sum) public static ExpensePeopleExpense CreateElement(int peopleExpenseId, int expenseId, int sum)
{ {
return new ExpensePeopleExpense return new ExpensePeopleExpense
{ {
Id = id, PeopleExpenseId = peopleExpenseId,
ExpenseId = expenseId, ExpenseId = expenseId,
Sum = sum Sum = sum
}; };

View File

@ -8,14 +8,14 @@ namespace ProjectFamilyBudget.Entities;
public class IncomePeopleIncome public class IncomePeopleIncome
{ {
public int Id { get; private set; } public int PeopleIncomeId { get; private set; }
public int IncomeId { get; private set; } public int IncomeId { get; private set; }
public int Sum { get; private set; } public int Sum { get; private set; }
public static IncomePeopleIncome CreateElement(int id, int incomeId, int sum) public static IncomePeopleIncome CreateElement(int peopleIncomeId,int incomeId, int sum)
{ {
return new IncomePeopleIncome return new IncomePeopleIncome
{ {
Id = id, PeopleIncomeId = peopleIncomeId,
IncomeId = incomeId, IncomeId = incomeId,
Sum = sum Sum = sum
}; };

View File

@ -10,17 +10,16 @@ public class PeopleExpense
{ {
public int Id { get; private set; } public int Id { get; private set; }
public int PeopleId { get; private set; } public int PeopleId { get; private set; }
public DateTime DataReceipt { get; private set; } public DateTime DataReciept { get; private set; }
public IEnumerable<ExpensePeopleExpense> ExpensePeopleExpenses { get; private set; } = []; public IEnumerable<ExpensePeopleExpense> ExpensePeopleExpenses { get; private set; } = [];
public static PeopleExpense CreateOperation(int id, int peopleId, IEnumerable<ExpensePeopleExpense> expensePeopleExpenses) public static PeopleExpense CreateOperation(int id, int peopleId, DateTime dataReciept,IEnumerable<ExpensePeopleExpense> expensePeopleExpenses)
{ {
return new PeopleExpense return new PeopleExpense
{ {
Id = id, Id = id,
PeopleId = peopleId, PeopleId = peopleId,
DataReceipt = DateTime.Now, DataReciept = dataReciept,
ExpensePeopleExpenses = expensePeopleExpenses ExpensePeopleExpenses = expensePeopleExpenses
}; };
} }
} }

View File

@ -1,4 +1,5 @@
using System; using ProjectFamilyBudget.Entities.Enums;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@ -10,17 +11,16 @@ public class PeopleIncome
{ {
public int Id { get; private set; } public int Id { get; private set; }
public int PeopleId { get; private set; } public int PeopleId { get; private set; }
public DateTime DataReceipt { get; private set; } public DateTime DataReciept { get; private set; }
public IEnumerable<IncomePeopleIncome> IncomePeopleIncomes { get; private set; } = []; public IEnumerable<IncomePeopleIncome> IncomePeopleIncomes { get; private set; } = [];
public static PeopleIncome CreateOperation(int id, int peopleId, IEnumerable<IncomePeopleIncome> incomePeopleIncomes) public static PeopleIncome CreateOperation(int id, int peopleId,DateTime dataReciept,IEnumerable<IncomePeopleIncome> incomePeopleIncomes)
{ {
return new PeopleIncome return new PeopleIncome
{ {
Id = id, Id = id,
PeopleId = peopleId, PeopleId = peopleId,
DataReceipt = DateTime.Now, DataReciept = dataReciept,
IncomePeopleIncomes = incomePeopleIncomes IncomePeopleIncomes = incomePeopleIncomes
}; };
} }
} }

View File

@ -1,4 +1,6 @@
using System; using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
@ -7,7 +9,6 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using ProjectFamilyBudget.Repositories;
using Unity; using Unity;
namespace ProjectFamilyBudget.Forms namespace ProjectFamilyBudget.Forms
@ -92,8 +93,7 @@ namespace ProjectFamilyBudget.Forms
MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void LoadList() => dataGridViewData.DataSource = _expense.ReadExpense; private void LoadList() => dataGridViewData.DataSource = _expense.ReadExpense();
private bool TryGetIdentifierFromSelectedRow(out int id) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {
id = 0; id = 0;

View File

@ -1,4 +1,6 @@
using System; using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
@ -7,7 +9,6 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using ProjectFamilyBudget.Repositories;
using Unity; using Unity;
namespace ProjectFamilyBudget.Forms namespace ProjectFamilyBudget.Forms
@ -93,7 +94,7 @@ namespace ProjectFamilyBudget.Forms
MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void LoadList() => dataGridViewData.DataSource = _income.ReadIncome; private void LoadList() => dataGridViewData.DataSource = _income.ReadIncome();
private bool TryGetIdentifierFromSelectedRow(out int id) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {
id = 0; id = 0;

View File

@ -30,14 +30,14 @@
{ {
label1 = new Label(); label1 = new Label();
comboBoxPeople = new ComboBox(); comboBoxPeople = new ComboBox();
label3 = new Label();
dateTimePicker = new DateTimePicker();
groupBox = new GroupBox(); groupBox = new GroupBox();
dataGridView = new DataGridView(); dataGridView = new DataGridView();
ColumnExpense = new DataGridViewComboBoxColumn(); ColumnExpense = new DataGridViewComboBoxColumn();
ColumnSum = new DataGridViewTextBoxColumn(); ColumnSum = new DataGridViewTextBoxColumn();
buttonSave = new Button(); buttonSave = new Button();
buttonCansel = new Button(); buttonCansel = new Button();
label3 = new Label();
dateTimePicker = new DateTimePicker();
groupBox.SuspendLayout(); groupBox.SuspendLayout();
((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
SuspendLayout(); SuspendLayout();
@ -60,23 +60,6 @@
comboBoxPeople.Size = new Size(212, 23); comboBoxPeople.Size = new Size(212, 23);
comboBoxPeople.TabIndex = 3; comboBoxPeople.TabIndex = 3;
// //
// label3
//
label3.AutoSize = true;
label3.Location = new Point(57, 70);
label3.Name = "label3";
label3.Size = new Size(32, 15);
label3.TabIndex = 8;
label3.Text = "Дата";
//
// dateTimePicker
//
dateTimePicker.Enabled = false;
dateTimePicker.Location = new Point(140, 64);
dateTimePicker.Name = "dateTimePicker";
dateTimePicker.Size = new Size(212, 23);
dateTimePicker.TabIndex = 9;
//
// groupBox // groupBox
// //
groupBox.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; groupBox.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
@ -135,6 +118,22 @@
buttonCansel.UseVisualStyleBackColor = true; buttonCansel.UseVisualStyleBackColor = true;
buttonCansel.Click += buttonCansel_Click; buttonCansel.Click += buttonCansel_Click;
// //
// label3
//
label3.AutoSize = true;
label3.Location = new Point(57, 70);
label3.Name = "label3";
label3.Size = new Size(32, 15);
label3.TabIndex = 8;
label3.Text = "Дата";
//
// dateTimePicker
//
dateTimePicker.Location = new Point(140, 64);
dateTimePicker.Name = "dateTimePicker";
dateTimePicker.Size = new Size(212, 23);
dateTimePicker.TabIndex = 9;
//
// FormPeopleExpense // FormPeopleExpense
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
@ -160,13 +159,13 @@
private Label label1; private Label label1;
private ComboBox comboBoxPeople; private ComboBox comboBoxPeople;
private Label label3;
private DateTimePicker dateTimePicker;
private GroupBox groupBox; private GroupBox groupBox;
private DataGridView dataGridView; private DataGridView dataGridView;
private DataGridViewComboBoxColumn ColumnExpense; private DataGridViewComboBoxColumn ColumnExpense;
private DataGridViewTextBoxColumn ColumnSum; private DataGridViewTextBoxColumn ColumnSum;
private Button buttonSave; private Button buttonSave;
private Button buttonCansel; private Button buttonCansel;
private Label label3;
private DateTimePicker dateTimePicker;
} }
} }

View File

@ -1,4 +1,6 @@
using System; using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
@ -7,8 +9,6 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
namespace ProjectFamilyBudget.Forms namespace ProjectFamilyBudget.Forms
{ {
@ -39,7 +39,7 @@ namespace ProjectFamilyBudget.Forms
{ {
throw new Exception("Имеются незаполненные поля"); throw new Exception("Имеются незаполненные поля");
} }
_peopleEpxense.CreatePeopleExpense(PeopleExpense.CreateOperation(0, (int)comboBoxPeople.SelectedValue!, _peopleEpxense.CreatePeopleExpense(PeopleExpense.CreateOperation(0, (int)comboBoxPeople.SelectedValue!, dateTimePicker.Value,
CreateListPeopleExpenseFromDataGrid())); CreateListPeopleExpenseFromDataGrid()));
Close(); Close();
} }

View File

@ -117,4 +117,10 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<metadata name="ColumnExpense.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColumnSum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root> </root>

View File

@ -1,4 +1,6 @@
using System; using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
@ -7,7 +9,7 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using ProjectFamilyBudget.Repositories; using System.Xml.Linq;
using Unity; using Unity;
namespace ProjectFamilyBudget.Forms namespace ProjectFamilyBudget.Forms
@ -74,7 +76,7 @@ namespace ProjectFamilyBudget.Forms
MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void LoadList() => dataGridViewData.DataSource = _peopleExpense.ReadPeopleExpense; private void LoadList() => dataGridViewData.DataSource = _peopleExpense.ReadPeopleExpense();
private bool TryGetIdentifierFromSelectedRow(out int id) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {
id = 0; id = 0;

View File

@ -37,8 +37,8 @@
ColumnSum = new DataGridViewTextBoxColumn(); ColumnSum = new DataGridViewTextBoxColumn();
buttonSave = new Button(); buttonSave = new Button();
buttonCansel = new Button(); buttonCansel = new Button();
dateTimePicker = new DateTimePicker();
label3 = new Label(); label3 = new Label();
dateTimePicker = new DateTimePicker();
groupBox.SuspendLayout(); groupBox.SuspendLayout();
((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
SuspendLayout(); SuspendLayout();
@ -129,14 +129,6 @@
buttonCansel.UseVisualStyleBackColor = true; buttonCansel.UseVisualStyleBackColor = true;
buttonCansel.Click += buttonCansel_Click; buttonCansel.Click += buttonCansel_Click;
// //
// dateTimePicker
//
dateTimePicker.Enabled = false;
dateTimePicker.Location = new Point(127, 62);
dateTimePicker.Name = "dateTimePicker";
dateTimePicker.Size = new Size(216, 23);
dateTimePicker.TabIndex = 6;
//
// label3 // label3
// //
label3.AutoSize = true; label3.AutoSize = true;
@ -146,6 +138,13 @@
label3.TabIndex = 7; label3.TabIndex = 7;
label3.Text = "Дата"; label3.Text = "Дата";
// //
// dateTimePicker
//
dateTimePicker.Location = new Point(127, 62);
dateTimePicker.Name = "dateTimePicker";
dateTimePicker.Size = new Size(216, 23);
dateTimePicker.TabIndex = 6;
//
// FormPeopleIncome // FormPeopleIncome
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
@ -179,7 +178,7 @@
private Button buttonCansel; private Button buttonCansel;
private DataGridViewComboBoxColumn ColumnIncome; private DataGridViewComboBoxColumn ColumnIncome;
private DataGridViewTextBoxColumn ColumnSum; private DataGridViewTextBoxColumn ColumnSum;
private DateTimePicker dateTimePicker;
private Label label3; private Label label3;
private DateTimePicker dateTimePicker;
} }
} }

View File

@ -1,4 +1,6 @@
using System; using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
@ -7,8 +9,6 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
namespace ProjectFamilyBudget.Forms namespace ProjectFamilyBudget.Forms
{ {
@ -39,7 +39,7 @@ namespace ProjectFamilyBudget.Forms
{ {
throw new Exception("Имеются незаполненные поля"); throw new Exception("Имеются незаполненные поля");
} }
_peopleIncome.CreatePeopleIncome(PeopleIncome.CreateOperation(0, (int)comboBoxPeople.SelectedValue!, _peopleIncome.CreatePeopleIncome(PeopleIncome.CreateOperation(0, (int)comboBoxPeople.SelectedValue!, dateTimePicker.Value,
CreateListPeopleIncomeFromDataGrid())); CreateListPeopleIncomeFromDataGrid()));
Close(); Close();
} }

View File

@ -1,4 +1,6 @@
using System; using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
@ -7,7 +9,6 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using ProjectFamilyBudget.Repositories;
using Unity; using Unity;
namespace ProjectFamilyBudget.Forms namespace ProjectFamilyBudget.Forms
@ -73,7 +74,7 @@ namespace ProjectFamilyBudget.Forms
MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void LoadList() => dataGridViewData.DataSource = _peopleIncome.ReadPeopleIncome; private void LoadList() => dataGridViewData.DataSource = _peopleIncome.ReadPeopleIncome();
private bool TryGetIdentifierFromSelectedRow(out int id) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {
id = 0; id = 0;

View File

@ -43,20 +43,18 @@
panel1.Controls.Add(buttonEdit); panel1.Controls.Add(buttonEdit);
panel1.Controls.Add(buttonAdd); panel1.Controls.Add(buttonAdd);
panel1.Dock = DockStyle.Right; panel1.Dock = DockStyle.Right;
panel1.Location = new Point(696, 0); panel1.Location = new Point(609, 0);
panel1.Margin = new Padding(3, 4, 3, 4);
panel1.Name = "panel1"; panel1.Name = "panel1";
panel1.Size = new Size(218, 600); panel1.Size = new Size(191, 450);
panel1.TabIndex = 0; panel1.TabIndex = 0;
// //
// buttonCansel // buttonCansel
// //
buttonCansel.BackgroundImage = Properties.Resources.minus; buttonCansel.BackgroundImage = Properties.Resources.minus;
buttonCansel.BackgroundImageLayout = ImageLayout.Zoom; buttonCansel.BackgroundImageLayout = ImageLayout.Zoom;
buttonCansel.Location = new Point(47, 333); buttonCansel.Location = new Point(41, 250);
buttonCansel.Margin = new Padding(3, 4, 3, 4);
buttonCansel.Name = "buttonCansel"; buttonCansel.Name = "buttonCansel";
buttonCansel.Size = new Size(126, 85); buttonCansel.Size = new Size(110, 64);
buttonCansel.TabIndex = 2; buttonCansel.TabIndex = 2;
buttonCansel.UseVisualStyleBackColor = true; buttonCansel.UseVisualStyleBackColor = true;
buttonCansel.Click += buttonCansel_Click; buttonCansel.Click += buttonCansel_Click;
@ -65,10 +63,9 @@
// //
buttonEdit.BackgroundImage = Properties.Resources.pen; buttonEdit.BackgroundImage = Properties.Resources.pen;
buttonEdit.BackgroundImageLayout = ImageLayout.Zoom; buttonEdit.BackgroundImageLayout = ImageLayout.Zoom;
buttonEdit.Location = new Point(47, 181); buttonEdit.Location = new Point(41, 136);
buttonEdit.Margin = new Padding(3, 4, 3, 4);
buttonEdit.Name = "buttonEdit"; buttonEdit.Name = "buttonEdit";
buttonEdit.Size = new Size(126, 85); buttonEdit.Size = new Size(110, 64);
buttonEdit.TabIndex = 1; buttonEdit.TabIndex = 1;
buttonEdit.UseVisualStyleBackColor = true; buttonEdit.UseVisualStyleBackColor = true;
buttonEdit.Click += buttonEdit_Click; buttonEdit.Click += buttonEdit_Click;
@ -77,10 +74,9 @@
// //
buttonAdd.BackgroundImage = Properties.Resources.plus; buttonAdd.BackgroundImage = Properties.Resources.plus;
buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; buttonAdd.BackgroundImageLayout = ImageLayout.Zoom;
buttonAdd.Location = new Point(47, 40); buttonAdd.Location = new Point(41, 30);
buttonAdd.Margin = new Padding(3, 4, 3, 4);
buttonAdd.Name = "buttonAdd"; buttonAdd.Name = "buttonAdd";
buttonAdd.Size = new Size(126, 85); buttonAdd.Size = new Size(110, 64);
buttonAdd.TabIndex = 0; buttonAdd.TabIndex = 0;
buttonAdd.UseVisualStyleBackColor = true; buttonAdd.UseVisualStyleBackColor = true;
buttonAdd.Click += buttonAdd_Click; buttonAdd.Click += buttonAdd_Click;
@ -95,23 +91,21 @@
dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dataGridViewData.Dock = DockStyle.Fill; dataGridViewData.Dock = DockStyle.Fill;
dataGridViewData.Location = new Point(0, 0); dataGridViewData.Location = new Point(0, 0);
dataGridViewData.Margin = new Padding(3, 4, 3, 4);
dataGridViewData.MultiSelect = false; dataGridViewData.MultiSelect = false;
dataGridViewData.Name = "dataGridViewData"; dataGridViewData.Name = "dataGridViewData";
dataGridViewData.ReadOnly = true; dataGridViewData.ReadOnly = true;
dataGridViewData.RowHeadersVisible = false; dataGridViewData.RowHeadersVisible = false;
dataGridViewData.RowHeadersWidth = 51; dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
dataGridViewData.Size = new Size(696, 600); dataGridViewData.Size = new Size(609, 450);
dataGridViewData.TabIndex = 1; dataGridViewData.TabIndex = 1;
// //
// FormPeoples // FormPeoples
// //
AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(914, 600); ClientSize = new Size(800, 450);
Controls.Add(dataGridViewData); Controls.Add(dataGridViewData);
Controls.Add(panel1); Controls.Add(panel1);
Margin = new Padding(3, 4, 3, 4);
Name = "FormPeoples"; Name = "FormPeoples";
StartPosition = FormStartPosition.CenterParent; StartPosition = FormStartPosition.CenterParent;
Text = "Люди"; Text = "Люди";

View File

@ -1,4 +1,6 @@
using System; using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Repositories;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
using System.Data; using System.Data;
@ -7,7 +9,6 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
using ProjectFamilyBudget.Repositories;
using Unity; using Unity;
namespace ProjectFamilyBudget.Forms namespace ProjectFamilyBudget.Forms
@ -91,7 +92,7 @@ namespace ProjectFamilyBudget.Forms
MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void LoadList() => dataGridViewData.DataSource = _people.ReadPeople; private void LoadList() => dataGridViewData.DataSource = _people.ReadPeople();
private bool TryGetIdentifierFromSelectedRow(out int id) private bool TryGetIdentifierFromSelectedRow(out int id)
{ {
id = 0; id = 0;

View File

@ -1,11 +1,15 @@
using Unity; using Microsoft.Extensions.Configuration;
using Unity.Lifetime; // Äëÿ óïðàâëåíèÿ âðåìåíåì æèçíè îáúåêòîâ using Microsoft.Extensions.Logging;
using ProjectFamilyBudget.Repositories; // Ïðîñòðàíñòâî èìåí äëÿ ðåïîçèòîðèåâ using ProjectFamilyBudget.Repositories;
using ProjectFamilyBudget.Repositories.Implementations; using ProjectFamilyBudget.Repositories.Implementations;
using ProjectFamilyBudget; // Ïðîñòðàíñòâî èìåí äëÿ ðåàëèçàöèé ðåïîçèòîðèåâ using Serilog;
using Unity;
using Unity.Microsoft.Logging;
internal static class Program namespace ProjectFamilyBudget
{ {
internal static class Program
{
/// <summary> /// <summary>
/// The main entry point for the application. /// The main entry point for the application.
/// </summary> /// </summary>
@ -22,13 +26,29 @@ internal static class Program
private static IUnityContainer CreateContainer() private static IUnityContainer CreateContainer()
{ {
var container = new UnityContainer(); var container = new UnityContainer();
container.AddExtension(new LoggingExtension(CreateLoggerFactory()));
container.RegisterType<IPeople, PeopleRepository>();
container.RegisterType<IIncome, IncomeRepository>();
container.RegisterType<IExpense, ExpenseRepository>();
container.RegisterType<IPeopleIncome, PeopleIncomeRepository>();
container.RegisterType<IPeopleExpense, PeopleExpenseRepository>();
container.RegisterType<IConnectionString, ConnectionString>();
container.RegisterType<IPeople, PeopleRepository>(new TransientLifetimeManager());
container.RegisterType<IIncome, IncomeRepository>(new TransientLifetimeManager());
container.RegisterType<IExpense, ExpenseRepository>(new TransientLifetimeManager());
container.RegisterType<IPeopleIncome, PeopleIncomeRepository>(new TransientLifetimeManager());
container.RegisterType<IPeopleExpense, PeopleExpenseRepository>(new TransientLifetimeManager());
return container; return container;
} }
private static LoggerFactory CreateLoggerFactory()
{
var loggerFactory = new LoggerFactory();
loggerFactory.AddSerilog(new LoggerConfiguration()
.ReadFrom.Configuration(new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build())
.CreateLogger());
return loggerFactory;
}
}
} }

View File

@ -9,7 +9,18 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Dapper" Version="2.1.35" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Npgsql" Version="8.0.5" />
<PackageReference Include="Serilog" Version="4.1.0" />
<PackageReference Include="Serilog.Extensions.Logging" Version="8.0.0" />
<PackageReference Include="Serilog.Settings.Configuration" Version="8.0.4" />
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageReference Include="Unity" Version="5.11.10" /> <PackageReference Include="Unity" Version="5.11.10" />
<PackageReference Include="Unity.Microsoft.Logging" Version="5.11.1" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@ -27,4 +38,10 @@
</EmbeddedResource> </EmbeddedResource>
</ItemGroup> </ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project> </Project>

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectFamilyBudget.Repositories;
public interface IConnectionString
{
public string ConnectionString { get; }
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProjectFamilyBudget.Repositories.Implementations;
public class ConnectionString : IConnectionString
{
string IConnectionString.ConnectionString => "Host=localhost;Port=5432;Username=postgres;Password=postgres;Database=postgres";
}

View File

@ -1,37 +1,123 @@
using System; using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Entities.Enums;
using System;
using System.Collections.Generic; 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 ProjectFamilyBudget.Entities.Enums; using Unity;
using ProjectFamilyBudget.Entities;
namespace ProjectFamilyBudget.Repositories.Implementations; namespace ProjectFamilyBudget.Repositories.Implementations;
public class ExpenseRepository : IExpense public class ExpenseRepository : IExpense
{ {
private readonly IConnectionString _connectionString;
private readonly ILogger<ExpenseRepository> _logger;
public ExpenseRepository(IConnectionString connectionString, ILogger<ExpenseRepository> logger)
{
_connectionString = connectionString;
_logger = logger;
}
public void CreateExpense(Expense expense) public void CreateExpense(Expense expense)
{ {
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(expense));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryInsert = @"
INSERT INTO Expense (ExpenseType, Name, ExpenseCategory)
VALUES (@ExpenseType, @Name, @ExpenseCategory)";
connection.Execute(queryInsert, expense);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
}
public void UpdateExpense(Expense expense)
{
_logger.LogInformation("Редактирование объекта");
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(expense));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryUpdate = @"
UPDATE Expense
SET
ExpenseType=@ExpenseType,
Name=@Name,
ExpenseCategory=@ExpenseCategory
WHERE Id=@Id";
connection.Execute(queryUpdate, expense);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при редактировании объекта");
throw;
}
} }
public void DeleteExpense(int id) public void DeleteExpense(int id)
{ {
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryDelete = @"
DELETE FROM Expense
WHERE Id=@id";
connection.Execute(queryDelete, new { id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
}
public Expense ReadExpenseById(int id)
{
_logger.LogInformation("Получение объекта по идентификатору");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = @"
SELECT * FROM Expense
WHERE Id=@id";
var expense = connection.QueryFirst<Expense>(querySelect, new { id });
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(expense));
return expense;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при поиске объекта");
throw;
}
} }
public IEnumerable<Expense> ReadExpense() public IEnumerable<Expense> ReadExpense()
{ {
return []; _logger.LogInformation("Получение всех объектов");
} try
public Expense ReadExpenseById(int id)
{ {
return Expense.CreateEntity(0, IncomeExpenseType.None, string.Empty, string.Empty); using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM Expense";
var expenses = connection.Query<Expense>(querySelect);
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(expenses));
return expenses;
} }
catch (Exception ex)
public void UpdateExpense(Expense expense)
{ {
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
} }
} }

View File

@ -1,37 +1,122 @@
using System; using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Entities.Enums;
using System;
using System.Collections.Generic; 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 ProjectFamilyBudget.Entities.Enums;
using ProjectFamilyBudget.Entities;
namespace ProjectFamilyBudget.Repositories.Implementations; namespace ProjectFamilyBudget.Repositories.Implementations;
public class IncomeRepository : IIncome public class IncomeRepository : IIncome
{ {
private readonly IConnectionString _connectionString;
private readonly ILogger<IncomeRepository> _logger;
public IncomeRepository(IConnectionString connectionString, ILogger<IncomeRepository> logger)
{
_connectionString = connectionString;
_logger = logger;
}
public void CreateIncome(Income income) public void CreateIncome(Income income)
{ {
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(income));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryInsert = @"
INSERT INTO Income (IncomeType, Name, IncomeCategory)
VALUES (@IncomeType, @Name, @IncomeCategory)";
connection.Execute(queryInsert, income);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
}
public void UpdateIncome(Income income)
{
_logger.LogInformation("Редактирование объекта");
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(income));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryUpdate = @"
UPDATE Income
SET
IncomeType=@IncomeType,
Name=@Name,
IncomeCategory=@IncomeCategory
WHERE Id=@Id";
connection.Execute(queryUpdate, income);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при редактировании объекта");
throw;
}
} }
public void DeleteIncome(int id) public void DeleteIncome(int id)
{ {
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryDelete = @"
DELETE FROM Income
WHERE Id=@id";
connection.Execute(queryDelete, new { id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
}
public Income ReadIncomeById(int id)
{
_logger.LogInformation("Получение объекта по идентификатору");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = @"
SELECT * FROM Income
WHERE Id=@id";
var income = connection.QueryFirst<Income>(querySelect, new { id });
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(income));
return income;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при поиске объекта");
throw;
}
} }
public IEnumerable<Income> ReadIncome() public IEnumerable<Income> ReadIncome()
{ {
return []; _logger.LogInformation("Получение всех объектов");
} try
public Income ReadIncomeById(int id)
{ {
return Income.CreateEntity(0, IncomeExpenseType.None, string.Empty, string.Empty); using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM Income";
var incomes = connection.Query<Income>(querySelect);
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(incomes));
return incomes;
} }
catch (Exception ex)
public void UpdateIncome(Income income)
{ {
throw new NotImplementedException(); _logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
} }
} }

View File

@ -1,26 +1,106 @@
using System; using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectFamilyBudget.Entities;
using System;
using System.Collections.Generic; 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 ProjectFamilyBudget.Entities;
namespace ProjectFamilyBudget.Repositories.Implementations; namespace ProjectFamilyBudget.Repositories.Implementations;
public class PeopleExpenseRepository : IPeopleExpense public class PeopleExpenseRepository : IPeopleExpense
{ {
public IEnumerable<PeopleExpense> ReadPeopleExpense(DateTime? dateForm = null, DateTime? dateTo = null, int? peopleId = null, int? expenseId = null) private readonly IConnectionString _connectionString;
private readonly ILogger<PeopleExpenseRepository> _logger;
public PeopleExpenseRepository(IConnectionString connectionString, ILogger<PeopleExpenseRepository> logger)
{ {
return []; _connectionString = connectionString;
_logger = logger;
} }
public void CreatePeopleExpense(PeopleExpense peopleExpense) public void CreatePeopleExpense(PeopleExpense peopleExpense)
{ {
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(peopleExpense));
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
connection.Open();
using var transaction = connection.BeginTransaction();
var queryInsert = @"
INSERT INTO PeopleExpense (PeopleId, DataReciept)
VALUES (@PeopleId, @DataReciept);
SELECT MAX(Id) FROM PeopleExpense";
var peopleExpenseId =
connection.QueryFirst<int>(queryInsert, peopleExpense, transaction);
var querySubInsert = @"
INSERT INTO ExpensePeopleExpense (ExpenseId, PeopleExpenseId, Sum)
VALUES (@ExpenseId, @PeopleExpenseId, @Sum)";
foreach (var elem in peopleExpense.ExpensePeopleExpenses)
{
connection.Execute(querySubInsert, new
{
peopleExpenseId,
elem.ExpenseId,
elem.Sum
}, transaction);
}
transaction.Commit();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
} }
public void DeletPeopleExpense(int id) public void DeletPeopleExpense(int id)
{ {
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
connection.Open();
using var transaction = connection.BeginTransaction();
var queryDeleteSub = @"
DELETE FROM ExpensePeopleExpense
WHERE PeopleExpenseId = @id";
connection.Execute(queryDeleteSub, new { id }, transaction);
var queryDelete = @"
DELETE FROM PeopleExpense
WHERE Id = @id";
connection.Execute(queryDelete, new { id }, transaction);
transaction.Commit();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
}
public IEnumerable<PeopleExpense> ReadPeopleExpense(DateTime? dateForm = null, DateTime? dateTo = null, int? peopleId = null, int? expenseId = null)
{
_logger.LogInformation("Получение всех объектов");
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM PeopleExpense";
var peopleExpenses = connection.Query<PeopleExpense>(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
JsonConvert.SerializeObject(peopleExpenses));
return peopleExpenses;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
} }
} }

View File

@ -1,29 +1,109 @@
using System; using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectFamilyBudget.Entities;
using System;
using System.Collections.Generic; 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 ProjectFamilyBudget.Entities; using static System.Runtime.InteropServices.JavaScript.JSType;
using System.Windows.Forms;
using Unity;
namespace ProjectFamilyBudget.Repositories.Implementations; namespace ProjectFamilyBudget.Repositories.Implementations;
public class PeopleIncomeRepository : IPeopleIncome public class PeopleIncomeRepository : IPeopleIncome
{ {
public IEnumerable<PeopleIncome> ReadPeopleIncome(DateTime? dateForm = null, DateTime? dateTo = null, int? peopleId = null, int? incomeId = null) private readonly IConnectionString _connectionString;
private readonly ILogger<PeopleIncomeRepository> _logger;
public PeopleIncomeRepository(IConnectionString connectionString, ILogger<PeopleIncomeRepository> logger)
{ {
return []; _connectionString = connectionString;
_logger = logger;
} }
public void CreatePeopleIncome(PeopleIncome peopleIncome) public void CreatePeopleIncome(PeopleIncome peopleIncome)
{ {
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}",
JsonConvert.SerializeObject(peopleIncome));
try
{
using var connection = new
NpgsqlConnection(_connectionString.ConnectionString);
connection.Open();
using var transaction = connection.BeginTransaction();
var queryInsert = @"
INSERT INTO PeopleIncome (PeopleId, DataReciept)
VALUES (@PeopleId, @DataReciept);
SELECT MAX(Id) FROM PeopleIncome";
var peopleIncomeId =
connection.QueryFirst<int>(queryInsert, peopleIncome, transaction);
var querySubInsert = @"
INSERT INTO IncomePeopleIncome (IncomeId, PeopleIncomeId, Sum)
VALUES (@IncomeId, @PeopleIncomeId, @Sum)";
foreach (var elem in peopleIncome.IncomePeopleIncomes)
{
connection.Execute(querySubInsert, new
{
peopleIncomeId,
elem.IncomeId,
elem.Sum
}, transaction);
}
transaction.Commit();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
} }
public void DeletPeopleIncome(int id) public void DeletPeopleIncome(int id)
{ {
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
connection.Open();
using var transaction = connection.BeginTransaction();
var queryDeleteSub = @"
DELETE FROM IncomePeopleIncome
WHERE PeopleIncomeId = @id";
connection.Execute(queryDeleteSub, new { id }, transaction);
var queryDelete = @"
DELETE FROM PeopleIncome
WHERE Id = @id";
connection.Execute(queryDelete, new { id }, transaction);
transaction.Commit();
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
}
public IEnumerable<PeopleIncome> ReadPeopleIncome(DateTime? dateForm = null, DateTime? dateTo = null, int? peopleId = null, int? incomeId = null)
{
_logger.LogInformation("Получение всех объектов");
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM PeopleIncome";
var peopleIncomes = connection.Query<PeopleIncome>(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
JsonConvert.SerializeObject(peopleIncomes));
return peopleIncomes;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
} }
} }

View File

@ -1,38 +1,125 @@
using System; using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Npgsql;
using ProjectFamilyBudget.Entities;
using ProjectFamilyBudget.Entities.Enums;
using System;
using System.Collections.Generic; 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 ProjectFamilyBudget.Entities.Enums;
using ProjectFamilyBudget.Entities;
namespace ProjectFamilyBudget.Repositories.Implementations; namespace ProjectFamilyBudget.Repositories.Implementations;
public class PeopleRepository : IPeople public class PeopleRepository : IPeople
{ {
private readonly IConnectionString _connectionString;
private readonly ILogger<PeopleRepository> _logger;
public PeopleRepository(IConnectionString connectionString, ILogger<PeopleRepository> logger)
{
_connectionString = connectionString;
_logger = logger;
}
public void CreatePeople(People people) public void CreatePeople(People people)
{ {
_logger.LogInformation("Добавление объекта");
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(people));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryInsert = @"
INSERT INTO People (Name, LastName, Age, MemberType)
VALUES (@Name, @LastName, @Age, @MemberType)";
connection.Execute(queryInsert, people);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при добавлении объекта");
throw;
}
}
public void UpdatePeople(People people)
{
_logger.LogInformation("Редактирование объекта");
_logger.LogDebug("Объект: {json}",JsonConvert.SerializeObject(people));
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryUpdate = @"
UPDATE People
SET
Name=@Name,
LastName=@LastName,
Age=@Age,
MemberType=@MemberType
WHERE Id=@Id";
connection.Execute(queryUpdate, people);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при редактировании объекта");
throw;
}
} }
public void DeletePeople(int id) public void DeletePeople(int id)
{ {
_logger.LogInformation("Удаление объекта");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var queryDelete = @"
DELETE FROM People
WHERE Id=@id";
connection.Execute(queryDelete, new { id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при удалении объекта");
throw;
}
} }
public People ReadPeopleById(int id) public People ReadPeopleById(int id)
{ {
return People.CreateEntity(0, string.Empty, string.Empty, 0, FamilyMemberType.None); _logger.LogInformation("Получение объекта по идентификатору");
_logger.LogDebug("Объект: {id}", id);
try
{
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = @"
SELECT * FROM People
WHERE Id=@id";
var people = connection.QueryFirst<People>(querySelect, new { id });
_logger.LogDebug("Найденный объект: {json}",
JsonConvert.SerializeObject(people));
return people;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при поиске объекта");
throw;
}
} }
public IEnumerable<People> ReadPeople() public IEnumerable<People> ReadPeople()
{ {
return []; _logger.LogInformation("Получение всех объектов");
} try
public void UpdatePeople(People people)
{ {
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
var querySelect = "SELECT * FROM People";
var peoples = connection.Query<People>(querySelect);
_logger.LogDebug("Полученные объекты: {json}",JsonConvert.SerializeObject(peoples));
return peoples;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка при чтении объектов");
throw;
}
} }
} }

View File

@ -0,0 +1,15 @@
{
"Serilog": {
"Using": [ "Serilog.Sinks.File" ],
"MinimumLevel": "Debug",
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Logs/budget_log.txt",
"rollingInterval": "Day"
}
}
]
}
}