Лабораторная работа №2
This commit is contained in:
parent
ab5e73553b
commit
113cd58d30
@ -7,24 +7,24 @@ using ProjectOpticsSalon.Entites.Enums;
|
|||||||
|
|
||||||
namespace ProjectOpticsSalon.Entites;
|
namespace ProjectOpticsSalon.Entites;
|
||||||
|
|
||||||
public class Order
|
public class MakeOrder
|
||||||
{
|
{
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
|
||||||
public double Price { get; private set; } = 0;
|
public double Price { get; private set; } = 0;
|
||||||
|
|
||||||
public DateTime Date { get; private set; }
|
public DateTime OrderDate { get; private set; }
|
||||||
|
|
||||||
public int ClientId { get; private set; }
|
public int ClientId { get; private set; }
|
||||||
public OrderStatus OrderStatus { get; private set; }
|
public OrderStatus OrderStatus { get; private set; }
|
||||||
public IEnumerable<Product> Products { get; private set; } = [];
|
public IEnumerable<Order_Product> Products { get; private set; } = [];
|
||||||
public static Order CreateOrder(int id, double price, int client, OrderStatus orderStatus, IEnumerable<Product> products)
|
public static MakeOrder CreateOrder(int id, double price, int client, OrderStatus orderStatus, IEnumerable<Order_Product> products)
|
||||||
{
|
{
|
||||||
return new Order
|
return new MakeOrder
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
Price = price,
|
Price = price,
|
||||||
Date = DateTime.Now,
|
OrderDate = DateTime.Now,
|
||||||
ClientId = client,
|
ClientId = client,
|
||||||
OrderStatus = orderStatus,
|
OrderStatus = orderStatus,
|
||||||
Products = products
|
Products = products
|
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectOpticsSalon.Entites;
|
||||||
|
|
||||||
|
public class Order_Product
|
||||||
|
{
|
||||||
|
public int OrderId { get; private set; }
|
||||||
|
public int ProductId { get; private set;}
|
||||||
|
public static Order_Product CreateElement(int orderId, int productId)
|
||||||
|
{
|
||||||
|
return new Order_Product { OrderId = orderId, ProductId = productId };
|
||||||
|
}
|
||||||
|
}
|
@ -11,16 +11,16 @@ public class Production
|
|||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
public double ComponentsPrice { get; private set; }
|
public double ComponentsPrice { get; private set; }
|
||||||
public double WorkPrice { get; private set; }
|
public double WorkPrice { get; private set; }
|
||||||
public Product Product { get; private set; }
|
public int ProductId { get; private set; }
|
||||||
public DateTime Date { get; private set; }
|
public DateTime Date { get; private set; }
|
||||||
public static Production CreateProduction(int id, double componentsPrice, double workPrice, Product product)
|
public static Production CreateProduction(int id, double componentsPrice, double workPrice, int productId)
|
||||||
{
|
{
|
||||||
return new Production
|
return new Production
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
ComponentsPrice = componentsPrice,
|
ComponentsPrice = componentsPrice,
|
||||||
WorkPrice = workPrice,
|
WorkPrice = workPrice,
|
||||||
Product = product,
|
ProductId = productId,
|
||||||
Date = DateTime.Now
|
Date = DateTime.Now
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ public partial class FormClient : Form
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var client = _clientRepository.ReadClientById(value);
|
var client = _clientRepository.ReadClientById(value);
|
||||||
if (client != null)
|
if (client == null)
|
||||||
{
|
{
|
||||||
throw new InvalidDataException(nameof(client));
|
throw new InvalidDataException(nameof(client));
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,7 @@ namespace ProjectOpticsSalon.Forms
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var lens = _lensRepository.ReadLensById(value);
|
var lens = _lensRepository.ReadLensById(value);
|
||||||
if (lens != null)
|
if (lens == null)
|
||||||
{
|
{
|
||||||
throw new InvalidDataException(nameof(lens));
|
throw new InvalidDataException(nameof(lens));
|
||||||
}
|
}
|
||||||
|
@ -31,8 +31,6 @@
|
|||||||
label1 = new Label();
|
label1 = new Label();
|
||||||
groupBox1 = new GroupBox();
|
groupBox1 = new GroupBox();
|
||||||
dataGridViewData = new DataGridView();
|
dataGridViewData = new DataGridView();
|
||||||
ColumnProduct = new DataGridViewComboBoxColumn();
|
|
||||||
ColumnMaterial = new DataGridViewTextBoxColumn();
|
|
||||||
comboBoxClient = new ComboBox();
|
comboBoxClient = new ComboBox();
|
||||||
buttonCancel = new Button();
|
buttonCancel = new Button();
|
||||||
buttonSave = new Button();
|
buttonSave = new Button();
|
||||||
@ -40,6 +38,7 @@
|
|||||||
comboBoxStatus = new ComboBox();
|
comboBoxStatus = new ComboBox();
|
||||||
maskedTextBoxPrice = new MaskedTextBox();
|
maskedTextBoxPrice = new MaskedTextBox();
|
||||||
label3 = new Label();
|
label3 = new Label();
|
||||||
|
ColumnProduct = new DataGridViewComboBoxColumn();
|
||||||
groupBox1.SuspendLayout();
|
groupBox1.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit();
|
((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
@ -69,7 +68,7 @@
|
|||||||
dataGridViewData.AllowUserToResizeColumns = false;
|
dataGridViewData.AllowUserToResizeColumns = false;
|
||||||
dataGridViewData.AllowUserToResizeRows = false;
|
dataGridViewData.AllowUserToResizeRows = false;
|
||||||
dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||||
dataGridViewData.Columns.AddRange(new DataGridViewColumn[] { ColumnProduct, ColumnMaterial });
|
dataGridViewData.Columns.AddRange(new DataGridViewColumn[] { ColumnProduct });
|
||||||
dataGridViewData.Dock = DockStyle.Fill;
|
dataGridViewData.Dock = DockStyle.Fill;
|
||||||
dataGridViewData.Location = new Point(3, 23);
|
dataGridViewData.Location = new Point(3, 23);
|
||||||
dataGridViewData.MultiSelect = false;
|
dataGridViewData.MultiSelect = false;
|
||||||
@ -80,20 +79,6 @@
|
|||||||
dataGridViewData.Size = new Size(270, 288);
|
dataGridViewData.Size = new Size(270, 288);
|
||||||
dataGridViewData.TabIndex = 0;
|
dataGridViewData.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// ColumnProduct
|
|
||||||
//
|
|
||||||
ColumnProduct.HeaderText = "Продукт";
|
|
||||||
ColumnProduct.MinimumWidth = 6;
|
|
||||||
ColumnProduct.Name = "ColumnProduct";
|
|
||||||
ColumnProduct.Width = 125;
|
|
||||||
//
|
|
||||||
// ColumnMaterial
|
|
||||||
//
|
|
||||||
ColumnMaterial.HeaderText = "Материал";
|
|
||||||
ColumnMaterial.MinimumWidth = 6;
|
|
||||||
ColumnMaterial.Name = "ColumnMaterial";
|
|
||||||
ColumnMaterial.Width = 125;
|
|
||||||
//
|
|
||||||
// comboBoxClient
|
// comboBoxClient
|
||||||
//
|
//
|
||||||
comboBoxClient.DropDownStyle = ComboBoxStyle.DropDownList;
|
comboBoxClient.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||||
@ -159,6 +144,13 @@
|
|||||||
label3.TabIndex = 11;
|
label3.TabIndex = 11;
|
||||||
label3.Text = "Статус";
|
label3.Text = "Статус";
|
||||||
//
|
//
|
||||||
|
// ColumnProduct
|
||||||
|
//
|
||||||
|
ColumnProduct.HeaderText = "Продукт";
|
||||||
|
ColumnProduct.MinimumWidth = 6;
|
||||||
|
ColumnProduct.Name = "ColumnProduct";
|
||||||
|
ColumnProduct.Width = 125;
|
||||||
|
//
|
||||||
// FormOrder
|
// FormOrder
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(8F, 20F);
|
AutoScaleDimensions = new SizeF(8F, 20F);
|
||||||
@ -189,11 +181,10 @@
|
|||||||
private ComboBox comboBoxClient;
|
private ComboBox comboBoxClient;
|
||||||
private Button buttonCancel;
|
private Button buttonCancel;
|
||||||
private Button buttonSave;
|
private Button buttonSave;
|
||||||
private DataGridViewComboBoxColumn ColumnProduct;
|
|
||||||
private DataGridViewTextBoxColumn ColumnMaterial;
|
|
||||||
private Label label2;
|
private Label label2;
|
||||||
private ComboBox comboBoxStatus;
|
private ComboBox comboBoxStatus;
|
||||||
private MaskedTextBox maskedTextBoxPrice;
|
private MaskedTextBox maskedTextBoxPrice;
|
||||||
private Label label3;
|
private Label label3;
|
||||||
|
private DataGridViewComboBoxColumn ColumnProduct;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -40,27 +40,29 @@ namespace ProjectOpticsSalon.Forms
|
|||||||
|
|
||||||
private void buttonSave_Click(object sender, EventArgs e)
|
private void buttonSave_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (dataGridViewData.Rows.Count < 1 || comboBoxClient.SelectedIndex < 0)
|
if (dataGridViewData.Rows.Count < 1 || comboBoxClient.SelectedIndex < 0 ||
|
||||||
|
string.IsNullOrWhiteSpace(maskedTextBoxPrice.Text))
|
||||||
{
|
{
|
||||||
throw new Exception("Имеются незаполненные поля");
|
throw new Exception("Имеются незаполненные поля");
|
||||||
}
|
}
|
||||||
|
|
||||||
_orderRepository.CreateOrder(Order.CreateOrder(0, Convert.ToDouble(maskedTextBoxPrice.Text), (int)comboBoxClient.SelectedItem!,(OrderStatus)comboBoxStatus.SelectedItem!, CreateListProducts()));
|
_orderRepository.CreateOrder(MakeOrder.CreateOrder(0, Convert.ToDouble(maskedTextBoxPrice.Text), (int)comboBoxClient.SelectedValue!,(OrderStatus)comboBoxStatus.SelectedItem!, CreateListProducts()));
|
||||||
|
Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buttonCancel_Click(object sender, EventArgs e) => Close();
|
private void buttonCancel_Click(object sender, EventArgs e) => Close();
|
||||||
|
|
||||||
private List<Product> CreateListProducts()
|
private List<Order_Product> CreateListProducts()
|
||||||
{
|
{
|
||||||
var list = new List<Product>();
|
var list = new List<Order_Product>();
|
||||||
foreach (DataGridViewRow row in dataGridViewData.Rows)
|
foreach (DataGridViewRow row in dataGridViewData.Rows)
|
||||||
{
|
{
|
||||||
if (row.Cells["ColumnProduct"].Value == null || row.Cells["ColumnMaterial"].Value == null)
|
if (row.Cells["ColumnProduct"].Value == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
list.Add(Product.CreateProduct(0, (ProductType)row.Cells["ColumnType"].Value,(FrameMaterial)row.Cells["ColumnMaterial"].Value, 0,0));
|
list.Add(Order_Product.CreateElement(0, Convert.ToInt32(row.Cells["ColumnProduct"].Value)));
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,4 @@
|
|||||||
<metadata name="ColumnProduct.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="ColumnProduct.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="ColumnMaterial.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
</root>
|
</root>
|
@ -55,17 +55,5 @@ namespace ProjectOpticsSalon.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void LoadList() => dataGridViewData.DataSource = _orderRepository.ReadOrder();
|
private void LoadList() => dataGridViewData.DataSource = _orderRepository.ReadOrder();
|
||||||
|
|
||||||
private bool TryGetIdentifierFromSelectedRow(out int id)
|
|
||||||
{
|
|
||||||
id = 0;
|
|
||||||
if (dataGridViewData.SelectedRows.Count < 1)
|
|
||||||
{
|
|
||||||
MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ namespace ProjectOpticsSalon.Forms
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var product = _productRepository.ReadProductById(value);
|
var product = _productRepository.ReadProductById(value);
|
||||||
if (product != null)
|
if (product == null)
|
||||||
{
|
{
|
||||||
throw new InvalidDataException(nameof(product));
|
throw new InvalidDataException(nameof(product));
|
||||||
}
|
}
|
||||||
@ -40,8 +40,8 @@ namespace ProjectOpticsSalon.Forms
|
|||||||
}
|
}
|
||||||
|
|
||||||
comboBoxFrameMaterial.SelectedItem = product.FrameMaterial;
|
comboBoxFrameMaterial.SelectedItem = product.FrameMaterial;
|
||||||
comboBoxLeftLens.SelectedIndex = product.LeftLensId;
|
comboBoxLeftLens.SelectedValue = product.LeftLensId;
|
||||||
comboBoxRightLens.SelectedIndex = product.RightLensId;
|
comboBoxRightLens.SelectedValue = product.RightLensId;
|
||||||
_productId = value;
|
_productId = value;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -63,9 +63,11 @@ namespace ProjectOpticsSalon.Forms
|
|||||||
|
|
||||||
comboBoxLeftLens.DataSource = lensRepository.ReadLens();
|
comboBoxLeftLens.DataSource = lensRepository.ReadLens();
|
||||||
comboBoxLeftLens.DisplayMember = "Id";
|
comboBoxLeftLens.DisplayMember = "Id";
|
||||||
|
comboBoxLeftLens.ValueMember = "Id";
|
||||||
|
|
||||||
comboBoxRightLens.DataSource = lensRepository.ReadLens();
|
comboBoxRightLens.DataSource = lensRepository.ReadLens();
|
||||||
comboBoxRightLens.DisplayMember= "Id";
|
comboBoxRightLens.DisplayMember= "Id";
|
||||||
|
comboBoxRightLens.ValueMember = "Id";
|
||||||
|
|
||||||
foreach (var elem in Enum.GetValues(typeof(FrameMaterial)))
|
foreach (var elem in Enum.GetValues(typeof(FrameMaterial)))
|
||||||
{
|
{
|
||||||
|
@ -61,9 +61,9 @@
|
|||||||
label3.AutoSize = true;
|
label3.AutoSize = true;
|
||||||
label3.Location = new Point(84, 185);
|
label3.Location = new Point(84, 185);
|
||||||
label3.Name = "label3";
|
label3.Name = "label3";
|
||||||
label3.Size = new Size(66, 20);
|
label3.Size = new Size(83, 20);
|
||||||
label3.TabIndex = 2;
|
label3.TabIndex = 2;
|
||||||
label3.Text = "Продукт";
|
label3.Text = "ID продукт";
|
||||||
//
|
//
|
||||||
// maskedTextBoxComponentsPrice
|
// maskedTextBoxComponentsPrice
|
||||||
//
|
//
|
||||||
|
@ -25,14 +25,14 @@ namespace ProjectOpticsSalon.Forms
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
var production = _productionRepository.ReadProductionById(value);
|
var production = _productionRepository.ReadProductionById(value);
|
||||||
if (production != null)
|
if (production == null)
|
||||||
{
|
{
|
||||||
throw new InvalidDataException(nameof(production));
|
throw new InvalidDataException(nameof(production));
|
||||||
}
|
}
|
||||||
|
|
||||||
maskedTextBoxComponentsPrice.Text = production.ComponentsPrice.ToString();
|
maskedTextBoxComponentsPrice.Text = production.ComponentsPrice.ToString();
|
||||||
maskedTextBoxWorkPrice.Text = production.WorkPrice.ToString();
|
maskedTextBoxWorkPrice.Text = production.WorkPrice.ToString();
|
||||||
comboBoxProduct.SelectedItem = production.Product;
|
comboBoxProduct.SelectedItem = production.ProductId;
|
||||||
|
|
||||||
_productionId = value;
|
_productionId = value;
|
||||||
}
|
}
|
||||||
@ -62,7 +62,8 @@ namespace ProjectOpticsSalon.Forms
|
|||||||
{
|
{
|
||||||
throw new Exception("Имеются незаполненные поля");
|
throw new Exception("Имеются незаполненные поля");
|
||||||
}
|
}
|
||||||
_productionRepository.CreateProduction(Production.CreateProduction(0, Convert.ToDouble(maskedTextBoxComponentsPrice.Text), Convert.ToDouble(maskedTextBoxWorkPrice.Text), (Product)comboBoxProduct.SelectedItem!));
|
_productionRepository.CreateProduction(Production.CreateProduction(0, Convert.ToDouble(maskedTextBoxComponentsPrice.Text), Convert.ToDouble(maskedTextBoxWorkPrice.Text), (int)comboBoxProduct.SelectedValue!));
|
||||||
|
Close();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using ProjectOpticsSalon.Repositories;
|
using ProjectOpticsSalon.Repositories;
|
||||||
using ProjectOpticsSalon.Repositories.Implementations;
|
using ProjectOpticsSalon.Repositories.Implementations;
|
||||||
|
using Serilog;
|
||||||
using Unity;
|
using Unity;
|
||||||
|
using Unity.Microsoft.Logging;
|
||||||
|
|
||||||
namespace ProjectOpticsSalon
|
namespace ProjectOpticsSalon
|
||||||
{
|
{
|
||||||
@ -21,12 +25,27 @@ namespace ProjectOpticsSalon
|
|||||||
private static IUnityContainer CreateContainer()
|
private static IUnityContainer CreateContainer()
|
||||||
{
|
{
|
||||||
var container = new UnityContainer();
|
var container = new UnityContainer();
|
||||||
|
container.AddExtension(new LoggingExtension(CreateLoggerFactory()));
|
||||||
|
|
||||||
container.RegisterType<IClientRepository, ClientRepository>();
|
container.RegisterType<IClientRepository, ClientRepository>();
|
||||||
container.RegisterType<ILensRepository, LensRepository>();
|
container.RegisterType<ILensRepository, LensRepository>();
|
||||||
container.RegisterType<IOrderRepository, OrderRepository>();
|
container.RegisterType<IOrderRepository, OrderRepository>();
|
||||||
container.RegisterType<IProductionRepository, ProductionRepository>();
|
container.RegisterType<IProductionRepository, ProductionRepository>();
|
||||||
container.RegisterType<IProductRepository, ProductRepository>();
|
container.RegisterType<IProductRepository, ProductRepository>();
|
||||||
|
container.RegisterType<IConnectionString, ConnectionString>();
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,7 +9,20 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Dapper" Version="2.1.35" />
|
||||||
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.2" />
|
||||||
|
<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="9.0.2" />
|
||||||
|
<PackageReference Include="Serilog" Version="4.2.0" />
|
||||||
|
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.0" />
|
||||||
|
<PackageReference Include="Serilog.Settings.Configuration" Version="9.0.0" />
|
||||||
|
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
|
||||||
|
<PackageReference Include="System.Data.SqlClient" Version="4.9.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 +40,10 @@
|
|||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="appsettings.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectOpticsSalon.Repositories
|
||||||
|
{
|
||||||
|
public interface IConnectionString
|
||||||
|
{
|
||||||
|
public string ConnectionString { get;}
|
||||||
|
}
|
||||||
|
}
|
@ -9,8 +9,6 @@ namespace ProjectOpticsSalon.Repositories;
|
|||||||
|
|
||||||
public interface IOrderRepository
|
public interface IOrderRepository
|
||||||
{
|
{
|
||||||
IEnumerable<Order> ReadOrder();
|
IEnumerable<MakeOrder> ReadOrder();
|
||||||
Order ReadOrderById(int id);
|
void CreateOrder(MakeOrder order);
|
||||||
void CreateOrder(Order order);
|
|
||||||
void UpdateOrder(Order order);
|
|
||||||
}
|
}
|
@ -1,4 +1,8 @@
|
|||||||
using ProjectOpticsSalon.Entites;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectOpticsSalon.Entites;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -9,25 +13,107 @@ namespace ProjectOpticsSalon.Repositories.Implementations;
|
|||||||
|
|
||||||
public class ClientRepository : IClientRepository
|
public class ClientRepository : IClientRepository
|
||||||
{
|
{
|
||||||
|
private readonly IConnectionString _connectionString;
|
||||||
|
private readonly ILogger<ClientRepository> _logger;
|
||||||
|
public ClientRepository(IConnectionString connectionString, ILogger<ClientRepository> logger)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
public void CreateClient(Client client)
|
public void CreateClient(Client client)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(client));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryInsert = @"INSERT INTO Client (Name) VALUES (@Name)";
|
||||||
|
connection.Execute(queryInsert, client);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteClient(int id)
|
public void DeleteClient(int id)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Удаление объекта");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryDelete = @"
|
||||||
|
DELETE FROM Client
|
||||||
|
WHERE Id=@id";
|
||||||
|
connection.Execute(queryDelete, new { id });
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Client ReadClientById(int id)
|
public Client ReadClientById(int id)
|
||||||
{
|
{
|
||||||
return Client.CreateClient(0,string.Empty);
|
_logger.LogInformation("Получение объекта по идентификатору");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = @"
|
||||||
|
SELECT * FROM Client
|
||||||
|
WHERE Id=@id";
|
||||||
|
var client = connection.QueryFirst<Client>(querySelect, new { id });
|
||||||
|
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(client));
|
||||||
|
return client;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Client> ReadClients()
|
public IEnumerable<Client> ReadClients()
|
||||||
{
|
{
|
||||||
return [];
|
_logger.LogInformation("Получение всех объектов");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = "SELECT * FROM Client";
|
||||||
|
var clients = connection.Query<Client>(querySelect);
|
||||||
|
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(clients));
|
||||||
|
return clients;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateClient(Client client)
|
public void UpdateClient(Client client)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Редактирование объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(client));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryUpdate = @"
|
||||||
|
UPDATE Client
|
||||||
|
SET
|
||||||
|
Name=@Name
|
||||||
|
WHERE Id=@Id";
|
||||||
|
connection.Execute(queryUpdate, client);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при редактировании объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectOpticsSalon.Repositories.Implementations;
|
||||||
|
|
||||||
|
internal class ConnectionString : IConnectionString
|
||||||
|
{
|
||||||
|
string IConnectionString.ConnectionString => "Host=localhost;Port=5432;Username=postgres;Password=postgres;Database=opticssalon";
|
||||||
|
}
|
@ -1,4 +1,8 @@
|
|||||||
using ProjectOpticsSalon.Entites;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectOpticsSalon.Entites;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -9,25 +13,110 @@ namespace ProjectOpticsSalon.Repositories.Implementations;
|
|||||||
|
|
||||||
public class LensRepository : ILensRepository
|
public class LensRepository : ILensRepository
|
||||||
{
|
{
|
||||||
|
private readonly IConnectionString _connectionString;
|
||||||
|
private readonly ILogger<LensRepository> _logger;
|
||||||
|
|
||||||
|
public LensRepository(IConnectionString connectionString, ILogger<LensRepository> logger)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
public void CreateLens(Lens lens)
|
public void CreateLens(Lens lens)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(lens));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
connection.Open();
|
||||||
|
var queryInsert = @"INSERT INTO Lens (Dioptres, Astigmatism) VALUES (@Dioptres, @Astigmatism)";
|
||||||
|
connection.Execute(queryInsert, lens);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteLens(int id)
|
public void DeleteLens(int id)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Удаление объекта");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryDelete = @"
|
||||||
|
DELETE FROM Lens
|
||||||
|
WHERE Id=@id";
|
||||||
|
connection.Execute(queryDelete, new { id });
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Lens> ReadLens()
|
public IEnumerable<Lens> ReadLens()
|
||||||
{
|
{
|
||||||
return [];
|
_logger.LogInformation("Получение всех объектов");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = "SELECT * FROM Lens";
|
||||||
|
var lenses = connection.Query<Lens>(querySelect);
|
||||||
|
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(lenses));
|
||||||
|
return lenses;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Lens ReadLensById(int id)
|
public Lens ReadLensById(int id)
|
||||||
{
|
{
|
||||||
return Lens.CreateLens(0,0,0);
|
_logger.LogInformation("Получение объекта по идентификатору");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = @"
|
||||||
|
SELECT * FROM Lens
|
||||||
|
WHERE Id=@id";
|
||||||
|
var lens = connection.QueryFirst<Lens>(querySelect, new { id });
|
||||||
|
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(lens));
|
||||||
|
return lens;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateLens(Lens lens)
|
public void UpdateLens(Lens lens)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Редактирование объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(lens));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryUpdate = @"
|
||||||
|
UPDATE Lens
|
||||||
|
SET
|
||||||
|
Dioptres=@Dioptres,
|
||||||
|
Astigmatism=@Astigmatism
|
||||||
|
WHERE Id=@Id";
|
||||||
|
connection.Execute(queryUpdate, lens);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при редактировании объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
using ProjectOpticsSalon.Entites;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectOpticsSalon.Entites;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -9,21 +13,65 @@ namespace ProjectOpticsSalon.Repositories.Implementations;
|
|||||||
|
|
||||||
public class OrderRepository : IOrderRepository
|
public class OrderRepository : IOrderRepository
|
||||||
{
|
{
|
||||||
public void CreateOrder(Order order)
|
private readonly IConnectionString _connectionString;
|
||||||
|
|
||||||
|
private readonly ILogger<OrderRepository> _logger;
|
||||||
|
public OrderRepository(IConnectionString connectionString, ILogger<OrderRepository> logger)
|
||||||
{
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
public void CreateOrder(MakeOrder order)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(order));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
connection.Open();
|
||||||
|
using var transaction = connection.BeginTransaction();
|
||||||
|
var queryInsert = @"
|
||||||
|
INSERT INTO MakeOrder (Price, OrderDate, ClientId, OrderStatus)
|
||||||
|
VALUES (@Price, @OrderDate, @ClientId, @OrderStatus);
|
||||||
|
SELECT MAX(Id) FROM MakeOrder";
|
||||||
|
var orderId = connection.QueryFirst<int>(queryInsert, order, transaction);
|
||||||
|
var querySubInsert = @"
|
||||||
|
INSERT INTO Order_Product (OrderId, ProductId)
|
||||||
|
VALUES (@OrderId, @ProductId)";
|
||||||
|
foreach (var elem in order.Products)
|
||||||
|
{
|
||||||
|
connection.Execute(querySubInsert, new
|
||||||
|
{
|
||||||
|
orderId,
|
||||||
|
elem.ProductId
|
||||||
|
}, transaction);
|
||||||
|
}
|
||||||
|
transaction.Commit();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Order> ReadOrder()
|
public IEnumerable<MakeOrder> ReadOrder()
|
||||||
{
|
{
|
||||||
return [];
|
_logger.LogInformation("Получение всех объектов");
|
||||||
}
|
|
||||||
|
|
||||||
public Order ReadOrderById(int id)
|
try
|
||||||
{
|
{
|
||||||
return Order.CreateOrder(0,0,0,0,[]);
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
}
|
var querySelect = @"SELECT * FROM MakeOrder";
|
||||||
|
var orders = connection.Query<MakeOrder>(querySelect);
|
||||||
public void UpdateOrder(Order order)
|
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(orders));
|
||||||
{
|
return orders;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
using ProjectOpticsSalon.Entites;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectOpticsSalon.Entites;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -9,25 +13,110 @@ namespace ProjectOpticsSalon.Repositories.Implementations;
|
|||||||
|
|
||||||
public class ProductRepository : IProductRepository
|
public class ProductRepository : IProductRepository
|
||||||
{
|
{
|
||||||
|
private readonly IConnectionString _connectionString;
|
||||||
|
private readonly ILogger<ProductRepository> _logger;
|
||||||
|
public ProductRepository(IConnectionString connectionString, ILogger<ProductRepository> logger)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
public void CreateProduct(Product product)
|
public void CreateProduct(Product product)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(product));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryInsert = @"INSERT INTO Product (ProductType, FrameMaterial, LeftLensId, RightLensId) VALUES (@ProductType, @FrameMaterial, @LeftLensId, @RightLensId)";
|
||||||
|
connection.Execute(queryInsert, product);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DeleteProduct(int id)
|
public void DeleteProduct(int id)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Удаление объекта");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryDelete = @"
|
||||||
|
DELETE FROM Product
|
||||||
|
WHERE Id=@id";
|
||||||
|
connection.Execute(queryDelete, new { id });
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при удалении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Product ReadProductById(int id)
|
public Product ReadProductById(int id)
|
||||||
{
|
{
|
||||||
return Product.CreateProduct(0,0,0,0,0);
|
_logger.LogInformation("Получение объекта по идентификатору");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = @"
|
||||||
|
SELECT * FROM Product
|
||||||
|
WHERE Id=@id";
|
||||||
|
var product = connection.QueryFirst<Product>(querySelect, new { id });
|
||||||
|
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(product));
|
||||||
|
return product;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Product> ReadProducts()
|
public IEnumerable<Product> ReadProducts()
|
||||||
{
|
{
|
||||||
return [];
|
_logger.LogInformation("Получение всех объектов");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = "SELECT * FROM Product";
|
||||||
|
var products = connection.Query<Product>(querySelect);
|
||||||
|
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(products));
|
||||||
|
return products;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateProduct(Product product)
|
public void UpdateProduct(Product product)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Редактирование объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(product));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryUpdate = @"
|
||||||
|
UPDATE Product
|
||||||
|
SET
|
||||||
|
ProductType=@ProductType,
|
||||||
|
FrameMaterial=@FrameMaterial,
|
||||||
|
LeftLensId=@LeftLensId,
|
||||||
|
RightLensId=@RightLensId
|
||||||
|
WHERE Id=@Id";
|
||||||
|
connection.Execute(queryUpdate, product);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при редактировании объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
using ProjectOpticsSalon.Entites;
|
using Dapper;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Npgsql;
|
||||||
|
using ProjectOpticsSalon.Entites;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -9,21 +13,91 @@ namespace ProjectOpticsSalon.Repositories.Implementations;
|
|||||||
|
|
||||||
public class ProductionRepository : IProductionRepository
|
public class ProductionRepository : IProductionRepository
|
||||||
{
|
{
|
||||||
|
private readonly IConnectionString _connectionString;
|
||||||
|
private readonly ILogger<ProductionRepository> _logger;
|
||||||
|
public ProductionRepository(IConnectionString connectionString, ILogger<ProductionRepository> logger)
|
||||||
|
{
|
||||||
|
_connectionString = connectionString;
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
public void CreateProduction(Production production)
|
public void CreateProduction(Production production)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Добавление объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(production));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryInsert = @"INSERT INTO Production (ComponentsPrice, WorkPrice, ProductId, Date) VALUES (@ComponentsPrice, @WorkPrice, @ProductId, @Date)";
|
||||||
|
connection.Execute(queryInsert, production);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при добавлении объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<Production> ReadProduction()
|
public IEnumerable<Production> ReadProduction()
|
||||||
{
|
{
|
||||||
return [];
|
_logger.LogInformation("Получение всех объектов");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = "SELECT * FROM Production";
|
||||||
|
var productions = connection.Query<Production>(querySelect);
|
||||||
|
_logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(productions));
|
||||||
|
return productions;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при чтении объектов");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Production ReadProductionById(int id)
|
public Production ReadProductionById(int id)
|
||||||
{
|
{
|
||||||
return Production.CreateProduction(0,0,0,null);
|
_logger.LogInformation("Получение объекта по идентификатору");
|
||||||
|
_logger.LogDebug("Объект: {id}", id);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var querySelect = @"
|
||||||
|
SELECT * FROM Production
|
||||||
|
WHERE Id=@id";
|
||||||
|
var production = connection.QueryFirst<Production>(querySelect, new { id });
|
||||||
|
_logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(production));
|
||||||
|
return production;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при поиске объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateProduction(Production production)
|
public void UpdateProduction(Production production)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Редактирование объекта");
|
||||||
|
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(production));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
|
||||||
|
var queryUpdate = @"
|
||||||
|
UPDATE Production
|
||||||
|
SET
|
||||||
|
ComponentsPrice=@ComponentsPrice,
|
||||||
|
WorkPrice=@WorkPrice,
|
||||||
|
ProductId=@ProductId,
|
||||||
|
Date=@Date
|
||||||
|
WHERE Id=@Id";
|
||||||
|
connection.Execute(queryUpdate, production);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Ошибка при редактировании объекта");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
15
ProjectOpticsSalon/ProjectOpticsSalon/appsettings.json
Normal file
15
ProjectOpticsSalon/ProjectOpticsSalon/appsettings.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"Serilog": {
|
||||||
|
"Using": [ "Serilog.Sinks.File" ],
|
||||||
|
"MinimumLevel": "Debug",
|
||||||
|
"WriteTo": [
|
||||||
|
{
|
||||||
|
"Name": "File",
|
||||||
|
"Args": {
|
||||||
|
"path": "Logs/optics_log.txt",
|
||||||
|
"rollingInterval": "Day"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user