From 69e9e6b69eb16d1032f2b3dbbc0621adcfe45028 Mon Sep 17 00:00:00 2001 From: Petek1234 <149153720+Petek1234@users.noreply.github.com> Date: Mon, 18 Nov 2024 22:27:10 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=201=20=D1=86=D0=B5?= =?UTF-8?q?=D0=BB=D0=B8=D0=BA=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GasStation/GasStation/Entities/Cashier.cs | 33 + .../GasStation/Entities/Enums/CashierPost.cs | 18 + .../GasStation/Entities/Enums/FuelType.cs | 20 + GasStation/GasStation/Entities/Fuel.cs | 29 + .../GasStation/Entities/FuelFuelSale.cs | 17 + GasStation/GasStation/Entities/FuelSale.cs | 37 + GasStation/GasStation/Entities/Suppliers.cs | 24 + .../GasStation/Entities/SuppliersFuel.cs | 33 + .../GasStation/Entities/SuppliersFuelFuel.cs | 12 + GasStation/GasStation/Form1.Designer.cs | 39 - GasStation/GasStation/Form1.cs | 10 - .../GasStation/FormGasStation.Designer.cs | 137 ++++ GasStation/GasStation/FormGasStation.cs | 81 ++ GasStation/GasStation/FormGasStation.resx | 123 +++ .../GasStation/Forms/FormCashier.Designer.cs | 142 ++++ GasStation/GasStation/Forms/FormCashier.cs | 84 ++ .../{Form1.resx => Forms/FormCashier.resx} | 54 +- .../GasStation/Forms/FormCashiers.Designer.cs | 128 ++++ GasStation/GasStation/Forms/FormCashiers.cs | 111 +++ GasStation/GasStation/Forms/FormCashiers.resx | 197 +++++ .../GasStation/Forms/FormFuel.Designer.cs | 121 +++ GasStation/GasStation/Forms/FormFuel.cs | 82 ++ GasStation/GasStation/Forms/FormFuel.resx | 120 +++ .../GasStation/Forms/FormFuelSale.Designer.cs | 172 +++++ GasStation/GasStation/Forms/FormFuelSale.cs | 72 ++ GasStation/GasStation/Forms/FormFuelSale.resx | 126 +++ .../Forms/FormFuelSales.Designer.cs | 113 +++ GasStation/GasStation/Forms/FormFuelSales.cs | 90 +++ .../GasStation/Forms/FormFuelSales.resx | 120 +++ .../GasStation/Forms/FormFuels.Designer.cs | 128 ++++ GasStation/GasStation/Forms/FormFuels.cs | 112 +++ GasStation/GasStation/Forms/FormFuels.resx | 197 +++++ .../GasStation/Forms/FormSupplier.Designer.cs | 95 +++ GasStation/GasStation/Forms/FormSupplier.cs | 85 +++ GasStation/GasStation/Forms/FormSupplier.resx | 120 +++ .../Forms/FormSupplierFuel.Designer.cs | 172 +++++ .../GasStation/Forms/FormSupplierFuel.cs | 74 ++ .../GasStation/Forms/FormSupplierFuel.resx | 126 +++ .../Forms/FormSupplierFuels.Designer.cs | 113 +++ .../GasStation/Forms/FormSupplierFuels.cs | 90 +++ .../GasStation/Forms/FormSupplierFuels.resx | 120 +++ .../Forms/FormSuppliers.Designer.cs | 129 ++++ GasStation/GasStation/Forms/FormSuppliers.cs | 110 +++ .../GasStation/Forms/FormSuppliers.resx | 716 ++++++++++++++++++ GasStation/GasStation/GasStation.csproj | 29 + GasStation/GasStation/Program.cs | 20 +- .../Properties/Resources.Designer.cs | 113 +++ .../GasStation/Properties/Resources.resx | 136 ++++ .../Repositories/ICashierRepository.cs | 21 + .../Repositories/IFuelRepository.cs | 21 + .../Repositories/IFuelSalesRepository.cs | 18 + .../Repositories/ISupplierRepository.cs | 21 + .../Repositories/ISuppliersFuelRepository.cs | 18 + .../Implementations/CashierRepository.cs | 34 + .../Implementations/FuelRepository.cs | 34 + .../Implementations/FuelSalesRepository.cs | 24 + .../Implementations/SupplierRepository.cs | 34 + .../SuppliersFuelRepository.cs | 24 + .../GasStation/Resources/Заправка.jpg | Bin 0 -> 77112 bytes .../GasStation/Resources/Карандаш.jpg | Bin 0 -> 14993 bytes .../GasStation/Resources/Минус.jpg | Bin 0 -> 17669 bytes GasStation/GasStation/Resources/Плюс.jpg | Bin 0 -> 30884 bytes .../GasStation/Resources/Плюсик.jpg | Bin 0 -> 9544 bytes 63 files changed, 5202 insertions(+), 77 deletions(-) create mode 100644 GasStation/GasStation/Entities/Cashier.cs create mode 100644 GasStation/GasStation/Entities/Enums/CashierPost.cs create mode 100644 GasStation/GasStation/Entities/Enums/FuelType.cs create mode 100644 GasStation/GasStation/Entities/Fuel.cs create mode 100644 GasStation/GasStation/Entities/FuelFuelSale.cs create mode 100644 GasStation/GasStation/Entities/FuelSale.cs create mode 100644 GasStation/GasStation/Entities/Suppliers.cs create mode 100644 GasStation/GasStation/Entities/SuppliersFuel.cs create mode 100644 GasStation/GasStation/Entities/SuppliersFuelFuel.cs delete mode 100644 GasStation/GasStation/Form1.Designer.cs delete mode 100644 GasStation/GasStation/Form1.cs create mode 100644 GasStation/GasStation/FormGasStation.Designer.cs create mode 100644 GasStation/GasStation/FormGasStation.cs create mode 100644 GasStation/GasStation/FormGasStation.resx create mode 100644 GasStation/GasStation/Forms/FormCashier.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormCashier.cs rename GasStation/GasStation/{Form1.resx => Forms/FormCashier.resx} (92%) create mode 100644 GasStation/GasStation/Forms/FormCashiers.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormCashiers.cs create mode 100644 GasStation/GasStation/Forms/FormCashiers.resx create mode 100644 GasStation/GasStation/Forms/FormFuel.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormFuel.cs create mode 100644 GasStation/GasStation/Forms/FormFuel.resx create mode 100644 GasStation/GasStation/Forms/FormFuelSale.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormFuelSale.cs create mode 100644 GasStation/GasStation/Forms/FormFuelSale.resx create mode 100644 GasStation/GasStation/Forms/FormFuelSales.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormFuelSales.cs create mode 100644 GasStation/GasStation/Forms/FormFuelSales.resx create mode 100644 GasStation/GasStation/Forms/FormFuels.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormFuels.cs create mode 100644 GasStation/GasStation/Forms/FormFuels.resx create mode 100644 GasStation/GasStation/Forms/FormSupplier.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormSupplier.cs create mode 100644 GasStation/GasStation/Forms/FormSupplier.resx create mode 100644 GasStation/GasStation/Forms/FormSupplierFuel.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormSupplierFuel.cs create mode 100644 GasStation/GasStation/Forms/FormSupplierFuel.resx create mode 100644 GasStation/GasStation/Forms/FormSupplierFuels.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormSupplierFuels.cs create mode 100644 GasStation/GasStation/Forms/FormSupplierFuels.resx create mode 100644 GasStation/GasStation/Forms/FormSuppliers.Designer.cs create mode 100644 GasStation/GasStation/Forms/FormSuppliers.cs create mode 100644 GasStation/GasStation/Forms/FormSuppliers.resx create mode 100644 GasStation/GasStation/Properties/Resources.Designer.cs create mode 100644 GasStation/GasStation/Properties/Resources.resx create mode 100644 GasStation/GasStation/Repositories/ICashierRepository.cs create mode 100644 GasStation/GasStation/Repositories/IFuelRepository.cs create mode 100644 GasStation/GasStation/Repositories/IFuelSalesRepository.cs create mode 100644 GasStation/GasStation/Repositories/ISupplierRepository.cs create mode 100644 GasStation/GasStation/Repositories/ISuppliersFuelRepository.cs create mode 100644 GasStation/GasStation/Repositories/Implementations/CashierRepository.cs create mode 100644 GasStation/GasStation/Repositories/Implementations/FuelRepository.cs create mode 100644 GasStation/GasStation/Repositories/Implementations/FuelSalesRepository.cs create mode 100644 GasStation/GasStation/Repositories/Implementations/SupplierRepository.cs create mode 100644 GasStation/GasStation/Repositories/Implementations/SuppliersFuelRepository.cs create mode 100644 GasStation/GasStation/Resources/Заправка.jpg create mode 100644 GasStation/GasStation/Resources/Карандаш.jpg create mode 100644 GasStation/GasStation/Resources/Минус.jpg create mode 100644 GasStation/GasStation/Resources/Плюс.jpg create mode 100644 GasStation/GasStation/Resources/Плюсик.jpg diff --git a/GasStation/GasStation/Entities/Cashier.cs b/GasStation/GasStation/Entities/Cashier.cs new file mode 100644 index 0000000..23003f4 --- /dev/null +++ b/GasStation/GasStation/Entities/Cashier.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities.Enums; + +namespace GasStation.Entities; + +public class Cashier +{ + public int Id { get; private set; } + + public string FirstName { get; private set; } = string.Empty; + + public string LastName { get; private set; } = string.Empty; + + public CashierPost CashierPost { get; private set; } + + public static Cashier CreateEntity(int id, string first, string last, CashierPost cashierPost) + { + return new Cashier + { + Id = id, + + FirstName = first ?? string.Empty, + + LastName = last ?? string.Empty, + + CashierPost = cashierPost + }; + } +} diff --git a/GasStation/GasStation/Entities/Enums/CashierPost.cs b/GasStation/GasStation/Entities/Enums/CashierPost.cs new file mode 100644 index 0000000..0cb92fb --- /dev/null +++ b/GasStation/GasStation/Entities/Enums/CashierPost.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GasStation.Entities.Enums; + +public enum CashierPost +{ + None = 0, + + Ordinary = 1, + + Senior = 2, + + Head = 3 +} diff --git a/GasStation/GasStation/Entities/Enums/FuelType.cs b/GasStation/GasStation/Entities/Enums/FuelType.cs new file mode 100644 index 0000000..78a3270 --- /dev/null +++ b/GasStation/GasStation/Entities/Enums/FuelType.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GasStation.Entities.Enums; + +public enum FuelType +{ + None, + + Fuel_92, + + Fuel_95, + + Fuel_100, + + Fuel_diesel +} diff --git a/GasStation/GasStation/Entities/Fuel.cs b/GasStation/GasStation/Entities/Fuel.cs new file mode 100644 index 0000000..cfb5757 --- /dev/null +++ b/GasStation/GasStation/Entities/Fuel.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities.Enums; + +namespace GasStation.Entities; + +public class Fuel +{ + public int Id { get; private set; } + + public int Cost { get; private set; } + + public FuelType Type { get; private set; } + + public static Fuel CreateEntity(int id, int cost, FuelType type) + { + return new Fuel + { + Id = id, + + Cost = cost, + + Type = type + }; + } +} diff --git a/GasStation/GasStation/Entities/FuelFuelSale.cs b/GasStation/GasStation/Entities/FuelFuelSale.cs new file mode 100644 index 0000000..489b21b --- /dev/null +++ b/GasStation/GasStation/Entities/FuelFuelSale.cs @@ -0,0 +1,17 @@ +namespace ProjectGasStation.Entities; + +public class FuelFuelSale +{ + public int Id { get; private set; } + + public int FuelId { get; private set; } + + public int Quantity { get; private set; } + + public decimal Price { get; private set; } + + public static FuelFuelSale CreateFuelFuelSale(int id, int fuelId, int quantity, decimal price) + { + return new FuelFuelSale { Id = id, FuelId = fuelId, Quantity = quantity, Price = price }; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Entities/FuelSale.cs b/GasStation/GasStation/Entities/FuelSale.cs new file mode 100644 index 0000000..fc44dbb --- /dev/null +++ b/GasStation/GasStation/Entities/FuelSale.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectGasStation.Entities; + +namespace GasStation.Entities; + +public class FuelSale +{ + public int Id { get; private set; } + + public int CashierId { get; private set; } + + public DateTime SaleDate { get; private set; } + + public decimal TotalPrice { get; private set; } + + public IEnumerable FuelFuelSale { get; private set; } = []; + + public static FuelSale CreateElement(int id, int cashierId, DateTime saleDate, decimal totalPrice, IEnumerable fuelFuelSale) + { + return new FuelSale + { + Id = id, + + CashierId = cashierId, + + SaleDate = saleDate, + + TotalPrice = totalPrice, + + FuelFuelSale = fuelFuelSale + }; + } +} diff --git a/GasStation/GasStation/Entities/Suppliers.cs b/GasStation/GasStation/Entities/Suppliers.cs new file mode 100644 index 0000000..24b3d18 --- /dev/null +++ b/GasStation/GasStation/Entities/Suppliers.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GasStation.Entities; + +public class Supplier +{ + public int Id { get; private set; } + + public string Brand { get; private set; } = string.Empty; + + public static Supplier CreateEntity(int id, string brand) + { + return new Supplier + { + Id = id, + + Brand = brand ?? string.Empty + }; + } +} diff --git a/GasStation/GasStation/Entities/SuppliersFuel.cs b/GasStation/GasStation/Entities/SuppliersFuel.cs new file mode 100644 index 0000000..74bf7d6 --- /dev/null +++ b/GasStation/GasStation/Entities/SuppliersFuel.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectGasStation.Entities; + +namespace GasStation.Entities; + +public class SuppliersFuel +{ + public int Id { get; private set; } + + public int SuppliersId { get; private set; } + + public DateTime Date { get; private set; } + + public IEnumerable SuppliersFuelFuel { get; private set; } = []; + + public static SuppliersFuel CreateElement(int id, int suppliersId, DateTime date, IEnumerable suppliersFuelFuel) + { + return new SuppliersFuel + { + Id = id, + + SuppliersId = suppliersId, + + Date = date, + + SuppliersFuelFuel = suppliersFuelFuel + }; + } +} diff --git a/GasStation/GasStation/Entities/SuppliersFuelFuel.cs b/GasStation/GasStation/Entities/SuppliersFuelFuel.cs new file mode 100644 index 0000000..df25514 --- /dev/null +++ b/GasStation/GasStation/Entities/SuppliersFuelFuel.cs @@ -0,0 +1,12 @@ +namespace ProjectGasStation.Entities; + +public class SuppliersFuelFuel +{ + public int Id { get; private set; } + public int FuelId { get; private set; } + public int Quantity { get; private set; } + public static SuppliersFuelFuel CreateSuppliersFuelFuel(int id, int fuelId, int quantity) + { + return new SuppliersFuelFuel { Id = id, FuelId = fuelId, Quantity = quantity }; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Form1.Designer.cs b/GasStation/GasStation/Form1.Designer.cs deleted file mode 100644 index a16eab0..0000000 --- a/GasStation/GasStation/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace GasStation -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} \ No newline at end of file diff --git a/GasStation/GasStation/Form1.cs b/GasStation/GasStation/Form1.cs deleted file mode 100644 index 313e0cf..0000000 --- a/GasStation/GasStation/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace GasStation -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/GasStation/GasStation/FormGasStation.Designer.cs b/GasStation/GasStation/FormGasStation.Designer.cs new file mode 100644 index 0000000..9022b2f --- /dev/null +++ b/GasStation/GasStation/FormGasStation.Designer.cs @@ -0,0 +1,137 @@ +namespace GasStation +{ + partial class FormGasStation + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + menuStrip1 = new MenuStrip(); + справочникиToolStripMenuItem = new ToolStripMenuItem(); + ToolStripMenuItemCashier = new ToolStripMenuItem(); + ToolStripMenuItemFuels = new ToolStripMenuItem(); + ToolStripMenuItemSuppliers = new ToolStripMenuItem(); + операцииToolStripMenuItem = new ToolStripMenuItem(); + ToolStripMenuItemFuelSale = new ToolStripMenuItem(); + ToolStripMenuItemSuppliersFuel = new ToolStripMenuItem(); + отчётыToolStripMenuItem = new ToolStripMenuItem(); + menuStrip1.SuspendLayout(); + SuspendLayout(); + // + // menuStrip1 + // + menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчётыToolStripMenuItem }); + menuStrip1.Location = new Point(0, 0); + menuStrip1.Name = "menuStrip1"; + menuStrip1.Size = new Size(784, 24); + menuStrip1.TabIndex = 0; + menuStrip1.Text = "menuStrip"; + // + // справочникиToolStripMenuItem + // + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ToolStripMenuItemCashier, ToolStripMenuItemFuels, ToolStripMenuItemSuppliers }); + справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; + справочникиToolStripMenuItem.Size = new Size(97, 20); + справочникиToolStripMenuItem.Text = "Справочники"; + // + // ToolStripMenuItemCashier + // + ToolStripMenuItemCashier.Name = "ToolStripMenuItemCashier"; + ToolStripMenuItemCashier.Size = new Size(180, 22); + ToolStripMenuItemCashier.Text = "Кассиры"; + ToolStripMenuItemCashier.Click += ToolStripMenuItemCashier_Click; + // + // ToolStripMenuItemFuels + // + ToolStripMenuItemFuels.Name = "ToolStripMenuItemFuels"; + ToolStripMenuItemFuels.Size = new Size(180, 22); + ToolStripMenuItemFuels.Text = "Топливо"; + ToolStripMenuItemFuels.Click += ToolStripMenuItemFuels_Click; + // + // ToolStripMenuItemSuppliers + // + ToolStripMenuItemSuppliers.Name = "ToolStripMenuItemSuppliers"; + ToolStripMenuItemSuppliers.Size = new Size(180, 22); + ToolStripMenuItemSuppliers.Text = "Поставщики"; + ToolStripMenuItemSuppliers.Click += ToolStripMenuItemSuppliers_Click; + // + // операцииToolStripMenuItem + // + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ToolStripMenuItemFuelSale, ToolStripMenuItemSuppliersFuel }); + операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; + операцииToolStripMenuItem.Size = new Size(79, 20); + операцииToolStripMenuItem.Text = "Операции"; + // + // ToolStripMenuItemFuelSale + // + ToolStripMenuItemFuelSale.Name = "ToolStripMenuItemFuelSale"; + ToolStripMenuItemFuelSale.Size = new Size(180, 22); + ToolStripMenuItemFuelSale.Text = "Продажи топлива"; + ToolStripMenuItemFuelSale.Click += ToolStripMenuItemFuelSale_Click; + // + // ToolStripMenuItemSuppliersFuel + // + ToolStripMenuItemSuppliersFuel.Name = "ToolStripMenuItemSuppliersFuel"; + ToolStripMenuItemSuppliersFuel.Size = new Size(180, 22); + ToolStripMenuItemSuppliersFuel.Text = "Поставки топлива"; + ToolStripMenuItemSuppliersFuel.Click += ToolStripMenuItemSuppliersFuel_Click; + // + // отчётыToolStripMenuItem + // + отчётыToolStripMenuItem.Name = "отчётыToolStripMenuItem"; + отчётыToolStripMenuItem.Size = new Size(62, 20); + отчётыToolStripMenuItem.Text = "Отчёты"; + // + // FormGasStation + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = Properties.Resources.Заправка; + BackgroundImageLayout = ImageLayout.Stretch; + ClientSize = new Size(784, 411); + Controls.Add(menuStrip1); + MainMenuStrip = menuStrip1; + Name = "FormGasStation"; + StartPosition = FormStartPosition.CenterScreen; + Text = "GasStation"; + menuStrip1.ResumeLayout(false); + menuStrip1.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip1; + private ToolStripMenuItem справочникиToolStripMenuItem; + private ToolStripMenuItem ToolStripMenuItemCashier; + private ToolStripMenuItem операцииToolStripMenuItem; + private ToolStripMenuItem отчётыToolStripMenuItem; + private ToolStripMenuItem ToolStripMenuItemFuels; + private ToolStripMenuItem ToolStripMenuItemSuppliers; + private ToolStripMenuItem ToolStripMenuItemFuelSale; + private ToolStripMenuItem ToolStripMenuItemSuppliersFuel; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/FormGasStation.cs b/GasStation/GasStation/FormGasStation.cs new file mode 100644 index 0000000..98b0e7e --- /dev/null +++ b/GasStation/GasStation/FormGasStation.cs @@ -0,0 +1,81 @@ +using GasStation.Forms; +using Unity; + +namespace GasStation; + +public partial class FormGasStation : Form +{ + private readonly IUnityContainer _container; + + public FormGasStation(IUnityContainer container) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + } + + private void ToolStripMenuItemCashier_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ToolStripMenuItemFuels_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void ToolStripMenuItemSuppliers_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ToolStripMenuItemFuelSale_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ToolStripMenuItemSuppliersFuel_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } +} \ No newline at end of file diff --git a/GasStation/GasStation/FormGasStation.resx b/GasStation/GasStation/FormGasStation.resx new file mode 100644 index 0000000..b48baf1 --- /dev/null +++ b/GasStation/GasStation/FormGasStation.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormCashier.Designer.cs b/GasStation/GasStation/Forms/FormCashier.Designer.cs new file mode 100644 index 0000000..043427d --- /dev/null +++ b/GasStation/GasStation/Forms/FormCashier.Designer.cs @@ -0,0 +1,142 @@ +namespace GasStation.Forms +{ + partial class FormCashier + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + comboBoxPost = new ComboBox(); + textBoxFirstName = new TextBox(); + textBoxLastName = new TextBox(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + label1 = new Label(); + label2 = new Label(); + label3 = new Label(); + SuspendLayout(); + // + // comboBoxPost + // + comboBoxPost.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxPost.FormattingEnabled = true; + comboBoxPost.Location = new Point(159, 107); + comboBoxPost.Name = "comboBoxPost"; + comboBoxPost.Size = new Size(145, 23); + comboBoxPost.TabIndex = 0; + // + // textBoxFirstName + // + textBoxFirstName.Location = new Point(159, 23); + textBoxFirstName.Name = "textBoxFirstName"; + textBoxFirstName.Size = new Size(145, 23); + textBoxFirstName.TabIndex = 1; + // + // textBoxLastName + // + textBoxLastName.Location = new Point(159, 64); + textBoxLastName.Name = "textBoxLastName"; + textBoxLastName.Size = new Size(145, 23); + textBoxLastName.TabIndex = 2; + // + // ButtonSave + // + ButtonSave.Location = new Point(69, 168); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(87, 25); + ButtonSave.TabIndex = 3; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Location = new Point(185, 168); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(96, 25); + ButtonCancel.TabIndex = 4; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(29, 26); + label1.Name = "label1"; + label1.Size = new Size(35, 15); + label1.TabIndex = 5; + label1.Text = "Имя:"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(29, 67); + label2.Name = "label2"; + label2.Size = new Size(65, 15); + label2.TabIndex = 6; + label2.Text = "Фамилия:"; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(29, 110); + label3.Name = "label3"; + label3.Size = new Size(75, 15); + label3.TabIndex = 7; + label3.Text = "Должность:"; + // + // FormCashier + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(340, 212); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(textBoxLastName); + Controls.Add(textBoxFirstName); + Controls.Add(comboBoxPost); + Name = "FormCashier"; + StartPosition = FormStartPosition.CenterParent; + Text = "Кассир"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxPost; + private TextBox textBoxFirstName; + private TextBox textBoxLastName; + private Button ButtonSave; + private Button ButtonCancel; + private Label label1; + private Label label2; + private Label label3; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormCashier.cs b/GasStation/GasStation/Forms/FormCashier.cs new file mode 100644 index 0000000..94a1c25 --- /dev/null +++ b/GasStation/GasStation/Forms/FormCashier.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using GasStation.Entities; +using GasStation.Entities.Enums; +using GasStation.Repositories; +using GasStation.Repositories.Implementations; + +namespace GasStation.Forms; + +public partial class FormCashier : Form +{ + public readonly ICashierRepository _cashierRepository; + + private int? _cashierId; + + public int Id + { + set + { + try + { + var cashier = _cashierRepository.ReadCashierById(value); + if (cashier == null) + { + throw new InvalidDataException(nameof(cashier)); + } + + textBoxFirstName.Text = cashier.FirstName; + textBoxLastName.Text = cashier.LastName; + comboBoxPost.SelectedItem = cashier.CashierPost; + _cashierId = cashier.Id; + } + + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormCashier(ICashierRepository cashierRepository) + { + InitializeComponent(); + _cashierRepository = cashierRepository ?? throw new ArgumentNullException(nameof(cashierRepository)); + comboBoxPost.DataSource = Enum.GetValues(typeof(CashierPost)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxFirstName.Text) || string.IsNullOrWhiteSpace(textBoxLastName.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_cashierId.HasValue) + { + _cashierRepository.UpdateCashier(CreateCashier(_cashierId.Value)); + } + else + { + _cashierRepository.CreateCashier(CreateCashier(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Cashier CreateCashier(int id) => Cashier.CreateEntity(id, textBoxFirstName.Text, textBoxLastName.Text,(CashierPost)comboBoxPost.SelectedItem!); +} diff --git a/GasStation/GasStation/Form1.resx b/GasStation/GasStation/Forms/FormCashier.resx similarity index 92% rename from GasStation/GasStation/Form1.resx rename to GasStation/GasStation/Forms/FormCashier.resx index 1af7de1..8b2ff64 100644 --- a/GasStation/GasStation/Form1.resx +++ b/GasStation/GasStation/Forms/FormCashier.resx @@ -1,17 +1,17 @@  - diff --git a/GasStation/GasStation/Forms/FormCashiers.Designer.cs b/GasStation/GasStation/Forms/FormCashiers.Designer.cs new file mode 100644 index 0000000..1d4603a --- /dev/null +++ b/GasStation/GasStation/Forms/FormCashiers.Designer.cs @@ -0,0 +1,128 @@ +namespace GasStation.Forms +{ + partial class FormCashiers + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormCashiers)); + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonUpd); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(623, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(114, 413); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.Минус; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(18, 184); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(80, 80); + ButtonDel.TabIndex = 2; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonUpd + // + ButtonUpd.BackgroundImage = (Image)resources.GetObject("ButtonUpd.BackgroundImage"); + ButtonUpd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonUpd.Location = new Point(18, 98); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(80, 80); + ButtonUpd.TabIndex = 1; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.Плюс; + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(18, 12); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(80, 80); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowTemplate.Height = 25; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(623, 413); + dataGridView.TabIndex = 1; + // + // FormCashiers + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(737, 413); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormCashiers"; + StartPosition = FormStartPosition.CenterParent; + Text = "Кассиры"; + Load += FormCashiers_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonUpd; + private Button ButtonAdd; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormCashiers.cs b/GasStation/GasStation/Forms/FormCashiers.cs new file mode 100644 index 0000000..9784008 --- /dev/null +++ b/GasStation/GasStation/Forms/FormCashiers.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Xml.Linq; +using GasStation.Repositories; +using Unity; + +namespace GasStation.Forms; + +public partial class FormCashiers : Form +{ + private readonly IUnityContainer _container; + private readonly ICashierRepository _cashierRepository; + + public FormCashiers(IUnityContainer container, ICashierRepository cashierRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _cashierRepository = cashierRepository ?? throw new ArgumentNullException(nameof(cashierRepository)); + } + + private void FormCashiers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _cashierRepository.DeleteCashier(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridView.DataSource = _cashierRepository.ReadCashiers(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + + } +} diff --git a/GasStation/GasStation/Forms/FormCashiers.resx b/GasStation/GasStation/Forms/FormCashiers.resx new file mode 100644 index 0000000..dc19de2 --- /dev/null +++ b/GasStation/GasStation/Forms/FormCashiers.resx @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + oUIOarX/AceT4DvUQEgWAAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormFuel.Designer.cs b/GasStation/GasStation/Forms/FormFuel.Designer.cs new file mode 100644 index 0000000..7cd2f3e --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuel.Designer.cs @@ -0,0 +1,121 @@ +namespace GasStation.Forms +{ + partial class FormFuel + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + numericUpDownCost = new NumericUpDown(); + comboBoxType = new ComboBox(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + label1 = new Label(); + label2 = new Label(); + ((System.ComponentModel.ISupportInitialize)numericUpDownCost).BeginInit(); + SuspendLayout(); + // + // numericUpDownCost + // + numericUpDownCost.Location = new Point(113, 19); + numericUpDownCost.Name = "numericUpDownCost"; + numericUpDownCost.Size = new Size(158, 23); + numericUpDownCost.TabIndex = 0; + // + // comboBoxType + // + comboBoxType.FormattingEnabled = true; + comboBoxType.Location = new Point(113, 64); + comboBoxType.Name = "comboBoxType"; + comboBoxType.Size = new Size(158, 23); + comboBoxType.TabIndex = 1; + // + // ButtonSave + // + ButtonSave.Location = new Point(37, 107); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(96, 25); + ButtonSave.TabIndex = 2; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Location = new Point(148, 107); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(96, 25); + ButtonCancel.TabIndex = 3; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(12, 23); + label1.Name = "label1"; + label1.Size = new Size(40, 15); + label1.TabIndex = 4; + label1.Text = "Цена:"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(12, 67); + label2.Name = "label2"; + label2.Size = new Size(83, 15); + label2.TabIndex = 5; + label2.Text = "Вид топлива:"; + // + // FormFuel + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(286, 148); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(comboBoxType); + Controls.Add(numericUpDownCost); + Name = "FormFuel"; + StartPosition = FormStartPosition.CenterParent; + Text = "Топливо"; + ((System.ComponentModel.ISupportInitialize)numericUpDownCost).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private NumericUpDown numericUpDownCost; + private ComboBox comboBoxType; + private Button ButtonSave; + private Button ButtonCancel; + private Label label1; + private Label label2; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormFuel.cs b/GasStation/GasStation/Forms/FormFuel.cs new file mode 100644 index 0000000..2a17e2a --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuel.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using GasStation.Entities; +using GasStation.Entities.Enums; +using GasStation.Repositories; +using GasStation.Repositories.Implementations; + +namespace GasStation.Forms; + +public partial class FormFuel : Form +{ + private readonly IFuelRepository _fuelRepository; + + private int? _fuelId; + + public int Id + { + set + { + try + { + var fuel = _fuelRepository.ReadFuelById(value); + if (fuel == null) + { + throw new InvalidDataException(nameof(fuel)); + } + + numericUpDownCost.Value = (decimal)fuel.Cost; + comboBoxType.SelectedItem = fuel.Type; + _fuelId = fuel.Id; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormFuel(IFuelRepository fuelRepository) + { + InitializeComponent(); + _fuelRepository = fuelRepository ?? throw new ArgumentNullException(nameof(fuelRepository)); + comboBoxType.DataSource = Enum.GetValues(typeof(FuelType)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (numericUpDownCost.Value == 0 || comboBoxType.SelectedIndex < 1) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_fuelId.HasValue) + { + _fuelRepository.UpdateFuel(CreateFuel(_fuelId.Value)); + } + else + { + _fuelRepository.CreateFuel(CreateFuel(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Fuel CreateFuel(int id) => Fuel.CreateEntity(id, (int)numericUpDownCost.Value, (FuelType)comboBoxType.SelectedItem!); +} diff --git a/GasStation/GasStation/Forms/FormFuel.resx b/GasStation/GasStation/Forms/FormFuel.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormFuelSale.Designer.cs b/GasStation/GasStation/Forms/FormFuelSale.Designer.cs new file mode 100644 index 0000000..69ef3de --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuelSale.Designer.cs @@ -0,0 +1,172 @@ +namespace GasStation.Forms +{ + partial class FormFuelSale + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + comboBoxCashier = new ComboBox(); + dateTimePickerDate = new DateTimePicker(); + groupBox1 = new GroupBox(); + dataGridView = new DataGridView(); + ColumnFuel = new DataGridViewComboBoxColumn(); + ColumnQuantity = new DataGridViewTextBoxColumn(); + label1 = new Label(); + label2 = new Label(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // comboBoxCashier + // + comboBoxCashier.FormattingEnabled = true; + comboBoxCashier.Location = new Point(105, 12); + comboBoxCashier.Name = "comboBoxCashier"; + comboBoxCashier.Size = new Size(173, 23); + comboBoxCashier.TabIndex = 0; + // + // dateTimePickerDate + // + dateTimePickerDate.Location = new Point(105, 58); + dateTimePickerDate.Name = "dateTimePickerDate"; + dateTimePickerDate.Size = new Size(173, 23); + dateTimePickerDate.TabIndex = 1; + // + // groupBox1 + // + groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox1.Controls.Add(dataGridView); + groupBox1.Location = new Point(12, 101); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new Size(270, 245); + groupBox1.TabIndex = 2; + groupBox1.TabStop = false; + groupBox1.Text = "Топливо"; + // + // dataGridView + // + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnFuel, ColumnQuantity }); + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(3, 19); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.RowHeadersVisible = false; + dataGridView.RowTemplate.Height = 25; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(264, 223); + dataGridView.TabIndex = 0; + // + // ColumnFuel + // + ColumnFuel.HeaderText = "Топливо"; + ColumnFuel.Name = "ColumnFuel"; + // + // ColumnQuantity + // + ColumnQuantity.HeaderText = "Количество"; + ColumnQuantity.Name = "ColumnQuantity"; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(3, 17); + label1.Name = "label1"; + label1.Size = new Size(68, 15); + label1.TabIndex = 3; + label1.Text = "Продавец:"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(3, 64); + label2.Name = "label2"; + label2.Size = new Size(91, 15); + label2.TabIndex = 4; + label2.Text = "Дата продажи:"; + // + // ButtonSave + // + ButtonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + ButtonSave.Location = new Point(15, 358); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(118, 31); + ButtonSave.TabIndex = 5; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + ButtonCancel.Location = new Point(162, 358); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(118, 31); + ButtonCancel.TabIndex = 6; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // FormFuelSale + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(292, 401); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(groupBox1); + Controls.Add(dateTimePickerDate); + Controls.Add(comboBoxCashier); + Name = "FormFuelSale"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormFuelSale"; + groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxCashier; + private DateTimePicker dateTimePickerDate; + private GroupBox groupBox1; + private Label label1; + private Label label2; + private DataGridView dataGridView; + private Button ButtonSave; + private Button ButtonCancel; + private DataGridViewComboBoxColumn ColumnFuel; + private DataGridViewTextBoxColumn ColumnQuantity; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormFuelSale.cs b/GasStation/GasStation/Forms/FormFuelSale.cs new file mode 100644 index 0000000..de69446 --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuelSale.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using GasStation.Entities; +using GasStation.Repositories; +using ProjectGasStation.Entities; + +namespace GasStation.Forms; + +public partial class FormFuelSale : Form +{ + private readonly IFuelSalesRepository _fuelSalesRepository; + + public FormFuelSale(IFuelSalesRepository fuelSalesRepository, + ICashierRepository cashierRepository, + IFuelRepository fuelRepository) + { + InitializeComponent(); + _fuelSalesRepository = fuelSalesRepository ?? throw new ArgumentNullException(nameof(fuelSalesRepository)); + + comboBoxCashier.DataSource = cashierRepository.ReadCashiers(); + comboBoxCashier.DisplayMember = "FirstName"; + comboBoxCashier.ValueMember = "Id"; + + ColumnFuel.DataSource = fuelRepository.ReadFuels(); + ColumnFuel.DisplayMember = "Type"; + ColumnFuel.ValueMember = "Id"; + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (dataGridView.RowCount < 1 || comboBoxCashier.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + _fuelSalesRepository.CreateFuelSale(FuelSale.CreateElement(0, + (int)comboBoxCashier.SelectedValue!, dateTimePickerDate.Value, 0, CreateListFuelFuelSaleFromDataGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private List CreateListFuelFuelSaleFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["ColumnFuel"].Value == null || row.Cells["ColumnQuantity"].Value == null) + { + continue; + } + list.Add(FuelFuelSale.CreateFuelFuelSale(0, + Convert.ToInt32(row.Cells["ColumnFuel"].Value), + Convert.ToInt32(row.Cells["ColumnQuantity"].Value), 0)); + } + return list; + } +} diff --git a/GasStation/GasStation/Forms/FormFuelSale.resx b/GasStation/GasStation/Forms/FormFuelSale.resx new file mode 100644 index 0000000..a5f58c2 --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuelSale.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormFuelSales.Designer.cs b/GasStation/GasStation/Forms/FormFuelSales.Designer.cs new file mode 100644 index 0000000..8cf242b --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuelSales.Designer.cs @@ -0,0 +1,113 @@ +namespace GasStation.Forms +{ + partial class FormFuelSales + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(623, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(114, 413); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.Минус; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(22, 98); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(80, 80); + ButtonDel.TabIndex = 1; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.Плюс; + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(22, 12); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(80, 80); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowTemplate.Height = 25; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(623, 413); + dataGridViewData.TabIndex = 1; + // + // FormFuelSales + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(737, 413); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormFuelSales"; + StartPosition = FormStartPosition.CenterParent; + Text = "Продажи"; + Load += FormFuels_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormFuelSales.cs b/GasStation/GasStation/Forms/FormFuelSales.cs new file mode 100644 index 0000000..3fe5779 --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuelSales.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using GasStation.Repositories; +using GasStation.Repositories.Implementations; +using Unity; + +namespace GasStation.Forms; + +public partial class FormFuelSales : Form +{ + private readonly IUnityContainer _container; + private readonly IFuelSalesRepository _fuelSalesRepository; + + public FormFuelSales(IUnityContainer container, IFuelSalesRepository fuelSalesRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _fuelSalesRepository = fuelSalesRepository ?? throw new ArgumentNullException(nameof(fuelSalesRepository)); + } + + private void FormFuels_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _fuelSalesRepository.DeleteFuelSale(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _fuelSalesRepository.ReadFuelSale(); + + 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; + } +} diff --git a/GasStation/GasStation/Forms/FormFuelSales.resx b/GasStation/GasStation/Forms/FormFuelSales.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuelSales.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormFuels.Designer.cs b/GasStation/GasStation/Forms/FormFuels.Designer.cs new file mode 100644 index 0000000..42ada1a --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuels.Designer.cs @@ -0,0 +1,128 @@ +namespace GasStation.Forms +{ + partial class FormFuels + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormFuels)); + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonUpd); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(623, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(114, 413); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.Минус; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(21, 184); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(80, 80); + ButtonDel.TabIndex = 2; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonUpd + // + ButtonUpd.BackgroundImage = (Image)resources.GetObject("ButtonUpd.BackgroundImage"); + ButtonUpd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonUpd.Location = new Point(21, 98); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(80, 80); + ButtonUpd.TabIndex = 1; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.Плюс; + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(21, 12); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(80, 80); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowTemplate.Height = 25; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(623, 413); + dataGridView.TabIndex = 1; + // + // FormFuels + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(737, 413); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormFuels"; + StartPosition = FormStartPosition.CenterParent; + Text = "Топливо"; + Load += FormFuels_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonUpd; + private Button ButtonAdd; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormFuels.cs b/GasStation/GasStation/Forms/FormFuels.cs new file mode 100644 index 0000000..4587ab8 --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuels.cs @@ -0,0 +1,112 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Xml.Linq; +using GasStation.Repositories; +using GasStation.Repositories.Implementations; +using Unity; + +namespace GasStation.Forms; + +public partial class FormFuels : Form +{ + private readonly IUnityContainer _container; + + private readonly IFuelRepository _fuelRepository; + + public FormFuels(IUnityContainer container, IFuelRepository fuelRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _fuelRepository = fuelRepository ?? throw new ArgumentNullException(nameof(fuelRepository)); + } + + private void FormFuels_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _fuelRepository.DeleteFuel(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridView.DataSource = _fuelRepository.ReadFuels(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } +} diff --git a/GasStation/GasStation/Forms/FormFuels.resx b/GasStation/GasStation/Forms/FormFuels.resx new file mode 100644 index 0000000..dc19de2 --- /dev/null +++ b/GasStation/GasStation/Forms/FormFuels.resx @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + oUIOarX/AceT4DvUQEgWAAAAAElFTkSuQmCC + + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormSupplier.Designer.cs b/GasStation/GasStation/Forms/FormSupplier.Designer.cs new file mode 100644 index 0000000..49a830c --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplier.Designer.cs @@ -0,0 +1,95 @@ +namespace GasStation.Forms +{ + partial class FormSupplier + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + textBoxBrand = new TextBox(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(39, 43); + label1.Name = "label1"; + label1.Size = new Size(116, 15); + label1.TabIndex = 0; + label1.Text = "Бренд поставщика"; + // + // textBoxBrand + // + textBoxBrand.Location = new Point(191, 40); + textBoxBrand.Name = "textBoxBrand"; + textBoxBrand.Size = new Size(125, 23); + textBoxBrand.TabIndex = 1; + // + // ButtonSave + // + ButtonSave.Location = new Point(39, 116); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(116, 30); + ButtonSave.TabIndex = 2; + ButtonSave.Text = "Сохранить"; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Location = new Point(191, 116); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(125, 30); + ButtonCancel.TabIndex = 3; + ButtonCancel.Text = "Отмена"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // FormSuppliers + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(366, 189); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(textBoxBrand); + Controls.Add(label1); + Name = "FormSuppliers"; + StartPosition = FormStartPosition.CenterParent; + Text = "Поставщики"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private TextBox textBoxBrand; + private Button ButtonSave; + private Button ButtonCancel; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormSupplier.cs b/GasStation/GasStation/Forms/FormSupplier.cs new file mode 100644 index 0000000..9422a6b --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplier.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics.Contracts; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using GasStation.Entities; +using GasStation.Repositories; +using GasStation.Repositories.Implementations; + +namespace GasStation.Forms; + +public partial class FormSupplier : Form +{ + + private readonly ISupplierRepository _supplierRepository; + + private int? _supplierlId; + + public int Id + { + set + { + try + { + var supplier = _supplierRepository.ReadSupplierById(value); + + if (supplier == null) + { + + throw new InvalidDataException(nameof(supplier)); + } + + textBoxBrand.Text = supplier.Brand; + + _supplierlId = value; + } + + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormSupplier(ISupplierRepository supplierRepository) + { + InitializeComponent(); + _supplierRepository = supplierRepository ?? throw new ArgumentNullException(nameof(supplierRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxBrand.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_supplierlId.HasValue) + { + _supplierRepository.UpdateSupplier(CreateSupplier(_supplierlId.Value)); + } + else + { + _supplierRepository.CreateSupplier(CreateSupplier(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click (object sender, EventArgs e) => Close(); + + private Supplier CreateSupplier(int id) => Supplier.CreateEntity(id, textBoxBrand.Text); +} diff --git a/GasStation/GasStation/Forms/FormSupplier.resx b/GasStation/GasStation/Forms/FormSupplier.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplier.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormSupplierFuel.Designer.cs b/GasStation/GasStation/Forms/FormSupplierFuel.Designer.cs new file mode 100644 index 0000000..34a4877 --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplierFuel.Designer.cs @@ -0,0 +1,172 @@ +namespace GasStation.Forms +{ + partial class FormSupplierFuel + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + comboBoxSuppliers = new ComboBox(); + label1 = new Label(); + dateTimePickerData = new DateTimePicker(); + label2 = new Label(); + ButtonSave = new Button(); + ButtonCancel = new Button(); + groupBox = new GroupBox(); + dataGridView = new DataGridView(); + ColumnFuel = new DataGridViewComboBoxColumn(); + ColumnQuantity = new DataGridViewTextBoxColumn(); + groupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // comboBoxSuppliers + // + comboBoxSuppliers.FormattingEnabled = true; + comboBoxSuppliers.Location = new Point(119, 16); + comboBoxSuppliers.Name = "comboBoxSuppliers"; + comboBoxSuppliers.Size = new Size(209, 23); + comboBoxSuppliers.TabIndex = 0; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(13, 21); + label1.Name = "label1"; + label1.Size = new Size(76, 15); + label1.TabIndex = 1; + label1.Text = "Поставщик:"; + // + // dateTimePickerData + // + dateTimePickerData.Location = new Point(119, 60); + dateTimePickerData.Name = "dateTimePickerData"; + dateTimePickerData.Size = new Size(209, 23); + dateTimePickerData.TabIndex = 2; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(15, 63); + label2.Name = "label2"; + label2.Size = new Size(36, 15); + label2.TabIndex = 3; + label2.Text = "Дата:"; + // + // ButtonSave + // + ButtonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + ButtonSave.Location = new Point(13, 370); + ButtonSave.Name = "ButtonSave"; + ButtonSave.Size = new Size(117, 22); + ButtonSave.TabIndex = 5; + ButtonSave.Text = "Сохранить"; + ButtonSave.UseVisualStyleBackColor = true; + ButtonSave.Click += ButtonSave_Click; + // + // ButtonCancel + // + ButtonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + ButtonCancel.Location = new Point(210, 370); + ButtonCancel.Name = "ButtonCancel"; + ButtonCancel.Size = new Size(117, 22); + ButtonCancel.TabIndex = 6; + ButtonCancel.Text = "Отменить"; + ButtonCancel.UseVisualStyleBackColor = true; + ButtonCancel.Click += ButtonCancel_Click; + // + // groupBox + // + groupBox.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox.Controls.Add(dataGridView); + groupBox.Location = new Point(12, 89); + groupBox.Name = "groupBox"; + groupBox.Size = new Size(318, 272); + groupBox.TabIndex = 7; + groupBox.TabStop = false; + groupBox.Text = "Топливо"; + // + // dataGridView + // + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnFuel, ColumnQuantity }); + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(3, 19); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.RowHeadersVisible = false; + dataGridView.RowTemplate.Height = 25; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(312, 250); + dataGridView.TabIndex = 0; + // + // ColumnFuel + // + ColumnFuel.HeaderText = "Топливо"; + ColumnFuel.Name = "ColumnFuel"; + // + // ColumnQuantity + // + ColumnQuantity.HeaderText = "Количество"; + ColumnQuantity.Name = "ColumnQuantity"; + // + // FormSupplierFuel + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(342, 399); + Controls.Add(groupBox); + Controls.Add(ButtonCancel); + Controls.Add(ButtonSave); + Controls.Add(label2); + Controls.Add(dateTimePickerData); + Controls.Add(label1); + Controls.Add(comboBoxSuppliers); + Name = "FormSupplierFuel"; + StartPosition = FormStartPosition.CenterParent; + Text = "FormSupplierFuel"; + groupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxSuppliers; + private Label label1; + private DateTimePicker dateTimePickerData; + private Label label2; + private Button ButtonSave; + private Button ButtonCancel; + private GroupBox groupBox; + private DataGridView dataGridView; + private DataGridViewComboBoxColumn ColumnFuel; + private DataGridViewTextBoxColumn ColumnQuantity; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormSupplierFuel.cs b/GasStation/GasStation/Forms/FormSupplierFuel.cs new file mode 100644 index 0000000..d2f5a90 --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplierFuel.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using GasStation.Entities; +using GasStation.Repositories; +using ProjectGasStation.Entities; + +namespace GasStation.Forms; + +public partial class FormSupplierFuel : Form +{ + private readonly ISuppliersFuelRepository _suppliersFuelRepository; + + public FormSupplierFuel( + ISuppliersFuelRepository suppliersFuelRepository, + ISupplierRepository supplierRepository, + IFuelRepository fuelRepository) + { + InitializeComponent(); + _suppliersFuelRepository = suppliersFuelRepository ?? throw new ArgumentNullException(nameof(suppliersFuelRepository)); + + comboBoxSuppliers.DataSource = supplierRepository.ReadSuppliers(); + comboBoxSuppliers.DisplayMember = "Name"; + comboBoxSuppliers.ValueMember = "Id"; + + ColumnFuel.DataSource = fuelRepository.ReadFuels(); + ColumnFuel.DisplayMember = "Type"; + ColumnFuel.ValueMember = "Id"; + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxSuppliers.SelectedIndex < 0 || dataGridView.RowCount < 1) + { + throw new Exception("Имеются незаполненные поля"); + } + _suppliersFuelRepository.CreateSuppliersFuel(SuppliersFuel.CreateElement(0, + (int)comboBoxSuppliers.SelectedValue!, dateTimePickerData.Value, CreateListContractorFuelFuelFromDataGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private List CreateListContractorFuelFuelFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["ColumnFuel"].Value == null || + row.Cells["ColumnQuantity"].Value == null) + { + continue; + } + list.Add(SuppliersFuelFuel.CreateSuppliersFuelFuel(0, + Convert.ToInt32(row.Cells["ColumnFuel"].Value), + Convert.ToInt32(row.Cells["ColumnQuantity"].Value))); + } + return list; + } +} diff --git a/GasStation/GasStation/Forms/FormSupplierFuel.resx b/GasStation/GasStation/Forms/FormSupplierFuel.resx new file mode 100644 index 0000000..a5f58c2 --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplierFuel.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormSupplierFuels.Designer.cs b/GasStation/GasStation/Forms/FormSupplierFuels.Designer.cs new file mode 100644 index 0000000..20e6d34 --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplierFuels.Designer.cs @@ -0,0 +1,113 @@ +namespace GasStation.Forms +{ + partial class FormSupplierFuels + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(623, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(114, 413); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.Минус; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(22, 98); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(80, 80); + ButtonDel.TabIndex = 1; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = Properties.Resources.Плюс; + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(22, 12); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(80, 80); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowTemplate.Height = 25; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(623, 413); + dataGridViewData.TabIndex = 1; + // + // FormSupplierFuels + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(737, 413); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Name = "FormSupplierFuels"; + StartPosition = FormStartPosition.CenterParent; + Text = "Поставки"; + Load += FormSuppliers_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormSupplierFuels.cs b/GasStation/GasStation/Forms/FormSupplierFuels.cs new file mode 100644 index 0000000..65993eb --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplierFuels.cs @@ -0,0 +1,90 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using GasStation.Repositories; +using Unity; + +namespace GasStation.Forms; + +public partial class FormSupplierFuels : Form +{ + private readonly IUnityContainer _container; + private readonly ISuppliersFuelRepository _suppliersFuelRepository; + + public FormSupplierFuels(IUnityContainer container, ISuppliersFuelRepository suppliersFuelRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _suppliersFuelRepository = suppliersFuelRepository ?? throw new ArgumentNullException(nameof(suppliersFuelRepository)); + } + + private void FormSuppliers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _suppliersFuelRepository.DeleteSuppliersFuel(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _suppliersFuelRepository.ReadSuppliersFuels(); + + 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; + + } +} diff --git a/GasStation/GasStation/Forms/FormSupplierFuels.resx b/GasStation/GasStation/Forms/FormSupplierFuels.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/GasStation/GasStation/Forms/FormSupplierFuels.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormSuppliers.Designer.cs b/GasStation/GasStation/Forms/FormSuppliers.Designer.cs new file mode 100644 index 0000000..64aafdd --- /dev/null +++ b/GasStation/GasStation/Forms/FormSuppliers.Designer.cs @@ -0,0 +1,129 @@ +namespace GasStation.Forms +{ + partial class FormSuppliers + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormSuppliers)); + panel1 = new Panel(); + ButtonDel = new Button(); + ButtonUpd = new Button(); + ButtonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(ButtonDel); + panel1.Controls.Add(ButtonUpd); + panel1.Controls.Add(ButtonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(623, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(114, 413); + panel1.TabIndex = 0; + // + // ButtonDel + // + ButtonDel.BackgroundImage = Properties.Resources.Минус; + ButtonDel.BackgroundImageLayout = ImageLayout.Stretch; + ButtonDel.Location = new Point(19, 184); + ButtonDel.Name = "ButtonDel"; + ButtonDel.Size = new Size(80, 80); + ButtonDel.TabIndex = 2; + ButtonDel.UseVisualStyleBackColor = true; + ButtonDel.Click += ButtonDel_Click; + // + // ButtonUpd + // + ButtonUpd.BackgroundImage = (Image)resources.GetObject("ButtonUpd.BackgroundImage"); + ButtonUpd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonUpd.ForeColor = SystemColors.ControlText; + ButtonUpd.Location = new Point(19, 98); + ButtonUpd.Name = "ButtonUpd"; + ButtonUpd.Size = new Size(80, 80); + ButtonUpd.TabIndex = 1; + ButtonUpd.UseVisualStyleBackColor = true; + ButtonUpd.Click += ButtonUpd_Click; + // + // ButtonAdd + // + ButtonAdd.BackgroundImage = (Image)resources.GetObject("ButtonAdd.BackgroundImage"); + ButtonAdd.BackgroundImageLayout = ImageLayout.Stretch; + ButtonAdd.Location = new Point(19, 12); + ButtonAdd.Name = "ButtonAdd"; + ButtonAdd.Size = new Size(80, 80); + ButtonAdd.TabIndex = 0; + ButtonAdd.UseVisualStyleBackColor = true; + ButtonAdd.Click += ButtonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowTemplate.Height = 25; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(623, 413); + dataGridView.TabIndex = 1; + // + // FormSuppliers + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(737, 413); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormSuppliers"; + StartPosition = FormStartPosition.CenterParent; + Text = "Поставщики"; + Load += FormSuppliers_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button ButtonDel; + private Button ButtonAdd; + private DataGridView dataGridView; + private Button ButtonUpd; + } +} \ No newline at end of file diff --git a/GasStation/GasStation/Forms/FormSuppliers.cs b/GasStation/GasStation/Forms/FormSuppliers.cs new file mode 100644 index 0000000..c21201b --- /dev/null +++ b/GasStation/GasStation/Forms/FormSuppliers.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Xml.Linq; +using GasStation.Repositories; +using Unity; + +namespace GasStation.Forms; + +public partial class FormSuppliers : Form +{ + private readonly IUnityContainer _container; + private readonly ISupplierRepository _supplierRepository; + + public FormSuppliers(IUnityContainer container, ISupplierRepository supplierRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _supplierRepository = supplierRepository ?? throw new ArgumentNullException(nameof(supplierRepository)); + } + + private void FormSuppliers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _supplierRepository.DeleteSupplier(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridView.DataSource = _supplierRepository.ReadSuppliers(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } +} diff --git a/GasStation/GasStation/Forms/FormSuppliers.resx b/GasStation/GasStation/Forms/FormSuppliers.resx new file mode 100644 index 0000000..a974b94 --- /dev/null +++ b/GasStation/GasStation/Forms/FormSuppliers.resx @@ -0,0 +1,716 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + oUIOarX/AceT4DvUQEgWAAAAAElFTkSuQmCC + + + + + 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 + K31V8e7Vof5St9VfHu1aH+UrfVXx7tWh/lK31V8e7Vof5St9VfHu1aH+UrfVXx7tWh/lK31V8e7Vof5S + t9VfHu1aH+UrfVXx7tWh/lK31V8e7Vof5St9VfHu1aH+UrfVXx7tWh/lK31V8e7Vof5St9VfGltd6e1X + PUw5a07SU0aPJ0kRjFnJAtfuq7lc0dl9dVUU71glpZ5IZAKZiA8ZKnHu1aH+UrfVXx7tWh/lK31V8e7V + of5St9VfHu1aH+UrfVXx7tWh/lK31V8e7Vof5St9VfHu1aH+UrfVXx7tWh/lK31V8e7Vof5St9VfHu1a + H+UrfVXx7tWh/lK31V8e7Vof5St9VfHu1aH+UrfVXx7tWh/lK31V8e7Vof5St9VfHu1aH+UrfVXx7tWh + /lK31V8e7Vof5St9VfDctOiUUlTXseoCmI/rjPuW6sniaHIqA01/+pqbMw/djFx9pxNNPVTy1FRK808r + FpJXO0zk9ZPeTwOOTaA0+hMhTtokf/XdubMj+nUdid4y/fB6GPNy703/AAmQzgbkqZ4yf30Df+3x/kJ+ + G87/AISn++3daq+NmoPpas/FPj0x2YnPYpxp2A0Wm8opuDRZfTofNsxgc1bunI7FA7xl72SQecc3LbTG + fRqSgb6bMKeQ+hrx/wDu8f5CfhvO/wCEp/vt3WqvjZqD6WrPxT48lO1XNBTKLtPNHEPS7BcKAoAAsALA + c1Qbzyem3eMt/vXHat/s5uUWgau0LnkKi7LSNKPTCRJ/7cKQVB8e5Dp4YM5zsu4X/g6f77YBDAEG4PA9 + zqr42ag+lqz8U+PaHojmGs8hgAvatWUjzQAyH7vOx2nY9rE4kmhiIDuqkjgTgEEAg3BFwe6pH2KhD23H + NVU8dXTTU8guk0bIw8zCxx0ElMz08m54HaJ/Sh2T3tV2mtfHvCpOyVH6pvxOCCCQeo+IFlUgFgL8LnHI + WHfN8/jQWlamg23I8H37Yy8BWmiTfFEVVG85F27nVXxs1B9LVn4p7+q7TWvj3hUnZKj9U34nBBBIPUe+ + 8jFAKvWclQRuo6CRgf2pSEH8r80jbMbN2A4LohUM6qTwBIF8Rh3240X9MXbpXYX2Bew9O7himspljS3R + RlVQ+e127pW2GVuwg8/KDl39l63zqECyyzioT0TgOf5k96UbR7OsnC7PhAEdS368Ex3B37uC9QwSSST3 + 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 + + + \ No newline at end of file diff --git a/GasStation/GasStation/GasStation.csproj b/GasStation/GasStation/GasStation.csproj index e1a0735..f2b439c 100644 --- a/GasStation/GasStation/GasStation.csproj +++ b/GasStation/GasStation/GasStation.csproj @@ -8,4 +8,33 @@ enable + + True + False + + + + True + False + + + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/GasStation/GasStation/Program.cs b/GasStation/GasStation/Program.cs index 3efb72f..e6e7fb9 100644 --- a/GasStation/GasStation/Program.cs +++ b/GasStation/GasStation/Program.cs @@ -1,3 +1,8 @@ +using GasStation.Repositories.Implementations; +using GasStation.Repositories; +using Unity.Lifetime; +using Unity; + namespace GasStation { internal static class Program @@ -11,7 +16,20 @@ namespace GasStation // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(CreateContainer().Resolve()); + } + + private static IUnityContainer CreateContainer() + { + var container = new UnityContainer(); + + container.RegisterType (); + container.RegisterType (); + container.RegisterType (); + container.RegisterType (); + container.RegisterType (); + + return container; } } } \ No newline at end of file diff --git a/GasStation/GasStation/Properties/Resources.Designer.cs b/GasStation/GasStation/Properties/Resources.Designer.cs new file mode 100644 index 0000000..f6c9267 --- /dev/null +++ b/GasStation/GasStation/Properties/Resources.Designer.cs @@ -0,0 +1,113 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace GasStation.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GasStation.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Заправка { + get { + object obj = ResourceManager.GetObject("Заправка", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Карандаш { + get { + object obj = ResourceManager.GetObject("Карандаш", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Минус { + get { + object obj = ResourceManager.GetObject("Минус", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Плюс { + get { + object obj = ResourceManager.GetObject("Плюс", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Плюсик { + get { + object obj = ResourceManager.GetObject("Плюсик", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/GasStation/GasStation/Properties/Resources.resx b/GasStation/GasStation/Properties/Resources.resx new file mode 100644 index 0000000..3cfc203 --- /dev/null +++ b/GasStation/GasStation/Properties/Resources.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Плюсик.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Карандаш.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Заправка.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Минус.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Плюс.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/GasStation/GasStation/Repositories/ICashierRepository.cs b/GasStation/GasStation/Repositories/ICashierRepository.cs new file mode 100644 index 0000000..e858f5f --- /dev/null +++ b/GasStation/GasStation/Repositories/ICashierRepository.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; + +namespace GasStation.Repositories; + +public interface ICashierRepository +{ + IEnumerable ReadCashiers(); + + Cashier ReadCashierById(int id); + + void CreateCashier(Cashier cashier); + + void UpdateCashier(Cashier cashier); + + void DeleteCashier(int id); +} diff --git a/GasStation/GasStation/Repositories/IFuelRepository.cs b/GasStation/GasStation/Repositories/IFuelRepository.cs new file mode 100644 index 0000000..5d80d21 --- /dev/null +++ b/GasStation/GasStation/Repositories/IFuelRepository.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; + +namespace GasStation.Repositories; + +public interface IFuelRepository +{ + IEnumerable ReadFuels(); + + Fuel ReadFuelById(int id); + + void CreateFuel(Fuel fuel); + + void UpdateFuel(Fuel fuel); + + void DeleteFuel(int id); +} diff --git a/GasStation/GasStation/Repositories/IFuelSalesRepository.cs b/GasStation/GasStation/Repositories/IFuelSalesRepository.cs new file mode 100644 index 0000000..686c6d4 --- /dev/null +++ b/GasStation/GasStation/Repositories/IFuelSalesRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; + +namespace GasStation.Repositories; + +public interface IFuelSalesRepository +{ + IEnumerable ReadFuelSale(DateTime? dateFrom = null, DateTime? dateTo = null, int? gasStationId = null, + int? fuelId = null, int ? cashierId = null); + + void CreateFuelSale(FuelSale fuelSale); + + void DeleteFuelSale(int id); +} diff --git a/GasStation/GasStation/Repositories/ISupplierRepository.cs b/GasStation/GasStation/Repositories/ISupplierRepository.cs new file mode 100644 index 0000000..a1acea5 --- /dev/null +++ b/GasStation/GasStation/Repositories/ISupplierRepository.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; + +namespace GasStation.Repositories; + +public interface ISupplierRepository +{ + IEnumerable ReadSuppliers(); + + Supplier ReadSupplierById(int id); + + void CreateSupplier(Supplier supplier); + + void UpdateSupplier(Supplier supplier); + + void DeleteSupplier(int id); +} diff --git a/GasStation/GasStation/Repositories/ISuppliersFuelRepository.cs b/GasStation/GasStation/Repositories/ISuppliersFuelRepository.cs new file mode 100644 index 0000000..b457bbc --- /dev/null +++ b/GasStation/GasStation/Repositories/ISuppliersFuelRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; + +namespace GasStation.Repositories; + +public interface ISuppliersFuelRepository +{ + IEnumerable ReadSuppliersFuels(DateTime? dateFrom = null, DateTime? dateTo = null, int? suppliersId = null, + int? fuelId = null); + + void CreateSuppliersFuel(SuppliersFuel suppliersFuel); + + void DeleteSuppliersFuel(int id); +} diff --git a/GasStation/GasStation/Repositories/Implementations/CashierRepository.cs b/GasStation/GasStation/Repositories/Implementations/CashierRepository.cs new file mode 100644 index 0000000..d264b5e --- /dev/null +++ b/GasStation/GasStation/Repositories/Implementations/CashierRepository.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; +using GasStation.Entities.Enums; + +namespace GasStation.Repositories.Implementations; + +public class CashierRepository : ICashierRepository +{ + public void CreateCashier(Cashier cashier) + { + } + + public void DeleteCashier(int id) + { + } + + public Cashier ReadCashierById(int id) + { + return Cashier.CreateEntity(0, string.Empty, string.Empty, CashierPost.None); + } + + public IEnumerable ReadCashiers() + { + return []; + } + + public void UpdateCashier(Cashier cashier) + { + } +} diff --git a/GasStation/GasStation/Repositories/Implementations/FuelRepository.cs b/GasStation/GasStation/Repositories/Implementations/FuelRepository.cs new file mode 100644 index 0000000..ac9ff6e --- /dev/null +++ b/GasStation/GasStation/Repositories/Implementations/FuelRepository.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; +using GasStation.Entities.Enums; + +namespace GasStation.Repositories.Implementations; + +public class FuelRepository : IFuelRepository +{ + public void CreateFuel(Fuel fuel) + { + } + + public void DeleteFuel(int id) + { + } + + public Fuel ReadFuelById(int id) + { + return Fuel.CreateEntity(0, 0, FuelType.Fuel_diesel); + } + + public IEnumerable ReadFuels() + { + return []; + } + + public void UpdateFuel(Fuel fuel) + { + } +} diff --git a/GasStation/GasStation/Repositories/Implementations/FuelSalesRepository.cs b/GasStation/GasStation/Repositories/Implementations/FuelSalesRepository.cs new file mode 100644 index 0000000..c031429 --- /dev/null +++ b/GasStation/GasStation/Repositories/Implementations/FuelSalesRepository.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; + +namespace GasStation.Repositories.Implementations; + +public class FuelSalesRepository : IFuelSalesRepository +{ + public void CreateFuelSale(FuelSale fuelSale) + { + } + + public void DeleteFuelSale(int id) + { + } + + public IEnumerable ReadFuelSale(DateTime? dateFrom = null, DateTime? dateTo = null, int? gasStationId = null, int? fuelId = null, int? cashierId = null) + { + return []; + } +} diff --git a/GasStation/GasStation/Repositories/Implementations/SupplierRepository.cs b/GasStation/GasStation/Repositories/Implementations/SupplierRepository.cs new file mode 100644 index 0000000..9d7b63f --- /dev/null +++ b/GasStation/GasStation/Repositories/Implementations/SupplierRepository.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics.Contracts; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; + +namespace GasStation.Repositories.Implementations; + +public class SupplierRepository : ISupplierRepository +{ + public void CreateSupplier(Supplier supplier) + { + } + + public void DeleteSupplier(int id) + { + } + + public Supplier ReadSupplierById(int id) + { + return Supplier.CreateEntity(0, string.Empty); + } + + public IEnumerable ReadSuppliers() + { + return []; + } + + public void UpdateSupplier(Supplier supplier) + { + } +} diff --git a/GasStation/GasStation/Repositories/Implementations/SuppliersFuelRepository.cs b/GasStation/GasStation/Repositories/Implementations/SuppliersFuelRepository.cs new file mode 100644 index 0000000..a198f70 --- /dev/null +++ b/GasStation/GasStation/Repositories/Implementations/SuppliersFuelRepository.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using GasStation.Entities; + +namespace GasStation.Repositories.Implementations; + +public class SuppliersFuelRepository : ISuppliersFuelRepository +{ + public void CreateSuppliersFuel(SuppliersFuel suppliersFuel) + { + } + + public void DeleteSuppliersFuel(int id) + { + } + + public IEnumerable ReadSuppliersFuels(DateTime? dateFrom = null, DateTime? dateTo = null, int? suppliersId = null, int? fuelId = null) + { + return []; + } +} diff --git a/GasStation/GasStation/Resources/Заправка.jpg b/GasStation/GasStation/Resources/Заправка.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3cdfe3eb7137c36a4c0f23e9ad6a24b6c5b3bd6c GIT binary patch literal 77112 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 QC;+08iU3+ED4-Aj+1}L2j{pDw literal 0 HcmV?d00001 diff --git a/GasStation/GasStation/Resources/Карандаш.jpg b/GasStation/GasStation/Resources/Карандаш.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9cd6de059181becafe26addcce73d69eb7db707d GIT binary patch literal 14993 zcmd6M2|SeF+xI=2J&i3(mLW;PpvBJE$sXAfCdSgwZiEy=QYhIY36(Z}3DH8<3K3eA zt!#;s2$B6cGlum4@qYf#^Stl#KIbzt_c`bKUf1=#u5;aI?q#WMsRu&u*Vfa9V4#V^ z#35*@7fRC#baRFvJv}jq4uT*g#0-N&`#?_xd{e{W&?aysf-esY1;M~E41Bjz`%$1z zZYBgzM>ltjo}ZUHp5TP>^2AuWx)BK&b-d$WF1}v=o=zAGf+Nw(7o+Fy?(awR#S`7U zJT*Psh`vD>Jtw@U*D-Nmn{0mNxYUcPcO??N6|h)OKS{ik*AarGqn8IZ5buqZmXyLm zN~(e0z&wG7IYMx8^HdfZEv*p3xH%~cS?)EIGW6CUxVq^c_a&GeH!^oT{+FY?laQ(k zgHoVEpog~yfr!ThdboS~DFiADQH(2qK6x4|q{2Y2%9d{>ZEO1D*O;sSrp%n;HL{0a)aRC5UMoLOf zLP|zLMt;>9Fm}Mr#g+Jn$A4CiF9id%oE#Na@PCw|5N0*;3L3ryCpSQck}=G3%CK%` zL@&p`C?FxszvNOu&CicO)YDWJ+9SV5ey_aDZaH!?sLT{B2}jI`cp@cL%R%~q3MUtp zo8PKYO5WWGE_ipWyPG4y(~ls5ckv}qlvMqR9`+u9l)r~EC_=oao1+Nc!&{L&?dRq1 z>qt;`@$zzUC#=po0x{mr#Z#G_OR!)dJg@``ns_4K(9P4$(`7Z;>nzYQFGu_ltfrx! zgvkM8T|IR@b1h8?Eh`Nz6LT{ywF4TuT1Gm0Mp}ACnp#$RMmjf_acPL3zgk!tz?|Q2A5w z-~j^_a%FF{=#-jTU33?Z)f$rc@2|TO_Kz6IRQ@IOT#D6&fyE3$LXPC+3lHR(O_iYh89+a)#iG?a8@l~okUMqmt#jLe&udC_QIMNuJ9 z#s73$s)ktTU~_OM1dIiOv%nB6u%)LE5BM`gfWK)Z282}u;GJEp?tfyso-}DWWjew}#`56=4wqJE2jvKW>`xM7E0&+b!Rw)`ReMOt* zV7(Ki_w(aJY#C{NFoONXMe~6xm#+lpW~kBKi)lXfRk1eved_vXSo9J7>w2k{%65mc z^|okz8uZFrg4DVrHZU%IE-koDj+tRNHflJ1;4!Os%=77>#h85h^{qn$Zq_fnwXjBF z#*MHBWtD(tub8GKC}=S;Z+rud7cv81l(^4G9IM5@JI1SRJNY$ZK{n{q`e;~^vwn+( ziO&`uTGODX-btC(F1YoP2z2AcvRhes_aBZ*$T1Z@p8fP?eIRs%tME&lA3vjhOl;!i zX8GJfJHE9WXW8miCtQ6`=f>n27+tA6>lDcY+7sx72iZ z^JxvTJU^}y-9%bng*H}F_T>kiOm9EC+xgqdkEulRfBe-W^I~{7aieJaW8x=d%?7&@ zul&@y7jI|Ge|gxeroNlE_2=!^>pOvdJgc8czcc<_V$g>3rIwn`{=A>>l{0k)7gTL0 zHz20u<6G|hwXBr)`;bu9g!$z47}>o8vzvmP)^`Exk4c`8Jvh*o-MS0OV(#yz`}dQe zfGMZA_2D3F%f=6u7mu7VzlAn!y&m1so*3$kTOW+5<=pkzGq<5Y>J<Jew3!EF+II-eJI2)_sD*?zuntrR)khIQCAHeI=hdJ2$8Y=tr%! zJ=VkSF-DTrarCD7gF+hXW7tcnMp1*@>;y> zN)Ptk0Lw2oylY@2w|TkFiV=T#8a{cn0d_O5fAaWL>maCiN<9=m5c$|eS|3as3lbcB zbYdmJ9i53@p1Ad~lmtI14w_o7-z*Q0`Uej%>tkX4v4tUa9rJVRCK$b}q)XKWhMnf0 z6wj<@n6zr2iUy49XM+D)hcU1UV*qe<5)6ieVL%Twuz0FikC1;X9ummTnm`y71hHa7 zk)kjRn1CSKSWn}I5B3+2UZtF)t1)80H3g1>fQPe-fG@OMEr{K!PgLwuyg!dm_Wzh7 zmnb!ZXb6LYQxqUw=m1b5fg`!WnrnmF7rvKSrKSG#n>ik4xU!fe7#fg5qM&dbKncZN z7c~$S#8H)4k~4K4iR&483D|zSbn|x8*EDTPx!~X!G>8`1h2Q|HdtH?NG(_bF`2^0s z8vGD@5;OL-IQL3{)VHmmbUo^XkdXRWvIby;Ovb=*?8xdBcF?ZRgM-rr&DZ%kYw}rJ z6>6X5yEq$Wq#@y3APiZB9%6;ILqJCug20E|;LJ>mO?GiXHXi~nR?pa7nV(di7j!_= zQDit_NEev}>9Qk9D|m=GRAr_tc(B9uH)n+~C=wvTDyoYl=?a7EU||N<)xaT$_lipLO#7{i z)$dBCn|1Qj1T}%BxcxAp>u@y;D?JVwrjCQ)IEdO9ewAI}Pc+4zjxK%Q{QdyA5Ckmr z=rNbzztO-vwZVFRHLENpHst#ZxV#RY?89WigsOzY)kKBO!__cxtT-gea19qwRSo)K zSQpu0rP)lQgHRm3ur(%5PgM94Tn~y%0LcX1szC$Jv|Jp12TGbmDiv!5Dp;3aO7(EPc~I>4K9L);FJa~ zxDgb6@YoE2WI;QyVgyatq-9V-yS>2$IUTr6hoRteF8+UeJi6;tFq}k)QP6+zH~zhJ3UYyQKVvDoKA(gJq_WMyTazbLi{v3X46 z>=JS3NhO?-PI%t%CAn2QvnD^En{TY3izfWlD;_w?QXlC_Zus8OEW*IA7sHtsDie?e z(|hzZ&l@K!-uV3a^A`SD8Y2Un=aqDP{hdGZg|-N3>LtdO(4Y*etGjXa^)v90Yf1r` zuMYk?cvet>d3;2!s(O5gTV54o{C0;)YJFi83np*0myqJRH=bo&{6_NCit@(Bv1Cit zRHN+Ovyhg3lCDustfSJMlJXa#Hf*CsyOo3_bN>3(UpC&gNJ7&gw}d|XsQC1Den~WI z#N4;8$h(%d9E&ouj8b`8=lZ zrFPNhdmcyKY|KW}!Wntn0-XncO1D|jzXg(@gU0?8ce_zr+r_hIYh66~U+-d5^QTHinkdhB&>D|+8+$Ux^ z&j0vcyd^qYfm=bK=qt>%IP8_XqRQ1rvqN_~_(^OK-0Nx)(sVKBeEi{u`fpn3dQFD-yK{cBCvK?VgQ_0pWcdXpcQmfO%{Y6l#ap!ei0 zUTs;&-fCo}LqZZqnVP zq!oI8yLmzO*)ZCO_~65Q%iW}cIUcdwjv6d*X8Hpa+EH59-PBx`yj@eP6CO>$fiUfA=gT z-Y05WyXS+Ynwt8=H| z>(>&RuY6Tkf!>pVeY;8g9AdVok=?px_esmMy{EqzRB2rfV$9S!a^v~7Nd68DDN`5W zxJP3aV(v%ee2(v49*$Fn_>rq%qx98dyn-U5X?WO{rF~>+I(b8*2<5KMkvF=c1YO%7 zHJr|13yYB#KHbbKHRZ87z4_moZlf9jXuj&-M!NoW`sEcl{I?FoLkjhxS|;UmTmXak zrv%P@fxTynT$y{dE+?peUS_bY+}v~~H_a8MB&y0ZniVHPzcBn4s*1ABgae*PnPIVEnfeS;%dfrFV6dI*=?6j&{zBcyw zDnMQBSavV=`vl;Z&E`^VK3gsoU3q;T&oK;S>V8ubs{Ho=U6DO7De=rkLglyYT(crewywP{&R>g{S*&3Vrm*my3Z-x znla9kr`mp}^wa3*l=l;xj7ue+Utg!+#747pZ;#WfO8Zcl5>|d_#I51z(MJQzFi+>H z`xZQ(xn;Z_m2d6GbxTYYUcS$CQ$b9Aaq8&Z8O6ET6tli038gQW&kQ6DWD(>GFN67) z6H5?JZn@FoVouWQYhsq#AKs{^m|b~!u)W;BJuZl%WpFE*Bhn@^#c=FJ-KUQV-|Cby z78dk(=AfD{nH#=tZfX2TwmMB_YIo1~T)ZL0wmC>0$81RNgUQ(YHcGFc`A(nX~w zej{m_a8{j}IYo#V_uM)~4k1_K8Tb88k^LSZQ1~6}CGwF`n;hllez@V``KcbauzPOa zdkIfOE;pm}-z-LPUJ*rbp0zr@=~B@R^X7<9rokB#)uh4dnAxFc(?#;dR*nr8!NZ}a z^}`gS6Q zNJOL{tWbdO;m*MNl5sE*9xFG*DyWtIp%(Ez@&4jptk&|TteV?&UL$K!ET@nNX80q; zn#Ezo#Ku6`RH;$kS7-7dCD9a1Xcu2!=-xBP%qEih;-&3x5Ep1&HQA4!%I?~HWsvk& zeMjit3*s;3Etu58na9%I{mLGhDE=MN>vUF=xLKUG*{_nWc}k#h=QqXAN?YG}ZeecW z>|yeCG`(~>`_V`Ac^2M@wiDAz(D{Wk6Er0FA?+L**gkkF4b3Ywy7j5eM-5j#2F_t| zhh#$8VjxWQoa)0p5NpR?(Jn1NIz8EIG%gu%qoXiX=Hu2*;nrJstZK4 zFO!A-t`O|myuzns{tQVuKDH6WNJVjdqYwpxZYWrUhT`T>h{h;MIdM#i?DL<4Z}Utb zWh9I4xH({X%>a2UVrArQhcanXY|*=!_yz#I?GQJapE=ME5gj-ld{RP&F;uhP{E1@_ z44aFHK1@A5ramPkSsvTt7tP zd#qeP*bo+7swAM>04@RU?4o#=S>oc~MuMr+m?Q%M$b5tW%1$pOuf)7IY=3_K{ zUqnNtRR4wWA^NV`Asp2BXm8vS)E?y8-&1?6g!waM>g42{AKW8oI=Jb~h4F)?S`(V5 z&N34tT*}0L8TJH{Dx*cOQa@t1%JCgFh1-8RSuR0aQ0%5!l+TGOfguO#z+P?zjGf1V z&6D!3lk)I|`Y4uqZA?ALIQ%(YJ3=u64CZ74*r-F`Us2YStb{`nGQ*S2Qj zk8YL|bDz{7GrtF7^^ELMmA}V-^akRpPc;59^LxO|y*-Bp_j~+DZ|HuV=KVireh(PZ z#k1Of5C7=Fdkgm)lKzKU4l=o-$xi6eexO{d1l?10UX_ zOMh>D8Ke*;Osd~N21}T!)4INakT3Lkz(!PI-8}K?=QdE}9&s(uu3TRT%WQ9pB(5)m zxEJb9s&62JWp*W$SZyHWUZ|INNLpV=R(u_}z6^M*m)NM5|34@S{2!>Y0IJ(Jijl0i z(OR(qMd6JURsS1`3I8uV?iAi&sbHa92?@9rAu>Tv7<^WSoD20UiZCz_o=SsX%(9fC z=s@nngySF*I9(vv{S`}OMG>+Li1ws(FO<~7ahrqz2sDJfZ9;+r1R>*KJ3LA{JxaPC z)Wz`tq1`PSZo&zM_jHlr+TA1V&`P8bTX|DNz41s%=Ty8y9Nl)W zsRhzXiXfO{M{)ha-z6^>M?|8KaM>j&q;e$^z%cN<*#HC?6rFtSN>bapPztgBUV4F4 zuk4aHu4y7Od(<%J7uOgCiiD3(wilM1E&6^56Mk$73WZjfQs~wf7g~$Cwl5lz)DA8D zf)bX4SpHS^k#Z`Q+1|ZJjmGOi5BbH`npVd;^|UV2GZmAu*bS`)u?(P9z45AW;SG|l zqO*>EwLqxKurPWdHOz7W1-vl=_blMvf8~t^ z1YT!gq^ktg@KUDPCf=`BpJk$#po_4v4@;2W4dX|XZa7ie6RH#UN$iM+KOQVhIM6~ML&6R{0PBqf!n4eG;=-?LF zLvOJ-9Y!L4wT9%}AVsF~IJiZoXUXob$suKP3A))3YdEkP%dD7rdJ{v!Li$8-!Vad(xS zGbf2?vg+~XtRal3HXP+Mta2&~_@U#d&6{Hm2M#bmVMqbsNn!thk?o$ORfDNZ0Y}!8 ze87Gs?yj;+3)w0R{_tm}8kq(1e+Wi%E9u&DEUG>;nPJ=uWuAcgX8c=IM}sw-c%Q_qlF8Yt6*@5q6#jRs@6%}hbd8Pc|;tq z3OIm~MU+`CcU>|se-vA86G{LZ&cISR6t7U$V>%9=%nXwIk3oNY3Cij@rkiotTXZH! zwZ&UO*y!%VOzfUeYWM3zWgwVry8H0!Y)wtrDw{)7AkoS`%b+fL{23lLmxQsw_a#n43lWY}3;!WB(d$mvYF}kwH4)ORf z)*5elYffoCET*6>^n$7oM}w^gLLzA>&rQhN77St$1P>t5c%N4o6Nj+uvG@Y1s$SfW z)%U8Z=n1dOj}P(oR0SEqnvbFQJ&Q+@c;AG@VkNHFMa|UYv<=FGXF#K($q@c>@#|+Y z10RM$GZYT-4q|$|`3Bf_o?ypISQQx8H@LJsu-+N{9^d4ifgp{d46aoQ^@|G49C?_M zVf;R;wJT3$&+P5PmpZp3zZ{n2zJVP3rmo1ae?Ib!6{8O zw>@dU8tZ~bCpa8-AfDapx`&H=Ocg(#scrffPSUu$ zPlx;O_jR^ojp}s>iO;FKzF#LSQXu*C5_HP31(wf?5G?q4;L$exUl!wqyost@4Ab8^ z-JHc9ht6;@-eb8+P1(U?Dt9o}?=zZJe7wUtwpw)6eWtmbb2{(&Z0#t{vDgl4a%^xBEt3Vi z^5W$85ix0^YRI?ZgY(k`)0^LLMPvuw{NNn2Tb0Wq(&alBExPYY@5Ef!4`*I*19+>4 z;qTnMr-?Q%rra9@Vm!iveNXwwAV%eUjOdFEvz)!R=QfYdE-agjH=7xC{4Q{l6UAKi z(Y~THY9yGy`~7T<`tzDJrZ(F{T{5$b(ZOe$hrc-;EoIx)d`hrED#4|nDN|#%UH52# zl$B=BgY%YQdE8nOhu{`}Sk$4k6k9k!dSeUSNCb#o79myIp7 z(b1GBOwaE9az(gx#$jf`mFCjjr)9tt3nn$P#$pp4{Cd4mL0)@fS|BdlrJ`|gj)chb zxYlrA>J!WL8yp5XZkxHLKNK(Y8QQ08&U}S)yYtN;fjKpb)iH6CRXnESxq*8wxO(&L zVTm$nbUBclS9)O_zOTTZ*cifn^WlkwpAK&hb~w2c)rHx3Q;$B4Vimq;)*NE8?M=$K zOTW|sjuNBMhfR3mv~gy69?#KIgQ(arR{B`?y+<^oxKGY~({nGXbltuuoT2N<4OON$ zT`D27_uTG`$cQMwYIdG8Aj4R5rWUN?cWALTe+e6+Z9QdZ=@u{D!n}{Y#zI&(Ud%dV zj#YT*A@{hdPL_bhroD%6Xx8H7`q(zv?c^p@SP1LA>e>ByWR0R+M2%%-gU4(^l!6t_ zi4RYp*?V9)0Wp%#QxTrhUtSNs{`eA@HW7Rr_S2!R^;jAkAJl)=VDAap&YyulyF^ZW z{75=!CG*?S;rV}+%SPXio2J*_=zGoqNBKr~s=)ryd>cd13F> z+JEC)eWvUKz?|v)a$LXF_+*_8W}Z;_>F?0U;`O1Ayt}w{WVVd>A&nZ;HjsS-A|h5$ zsc4F41@L5F9=C?Q}^(^9JA@I1FZNMxug+d${yq4E38Y9K!T?duCEOqKTk zVRtcPN5g~hu5wOE+j7nUcbzGnD7CeVE>H{dwz%se^`eV{mPc zz|xVDuG$~tC!SPI@YS<|6Vp*>bAdi zL5dx!p@)1Cx&&P+J0ng?i@3!hqr_qT`s>hso0&A06ahLwHniEk>Offx=YycasEa)N zUq!!Y{j?h|e@b2E2RTh4h_iurEE$q_Jv&f#0dAv%kQ9#O@^lu$`bv@I6e1S^l znEzsHeKM;`YPj&6KKjRu>VrPphu(B(46cU`9ZpBTRu5PyyL@=B8MkhHz`M&!(1C?V zr~1Brkx9=orNe|%KSDV^YuyDMlo-qpId6$=RKoM*bl_jxyLqw#sGe#xv`XrsWpX>) geS<(gC1uqnUKGd%+0~1jP*L16^ChTCb*cS70Pf^R#Q*>R literal 0 HcmV?d00001 diff --git a/GasStation/GasStation/Resources/Минус.jpg b/GasStation/GasStation/Resources/Минус.jpg new file mode 100644 index 0000000000000000000000000000000000000000..36301606778e2326d5e5ed39a76bfc3827a1ee03 GIT binary patch literal 17669 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 UyN|C$b&2$$00Ok&qlWkY3j@8g761SM literal 0 HcmV?d00001 diff --git a/GasStation/GasStation/Resources/Плюс.jpg b/GasStation/GasStation/Resources/Плюс.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3899f3c94a9b16163dcdec6d4657d78b48a69ea GIT binary patch literal 30884 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 literal 0 HcmV?d00001 diff --git a/GasStation/GasStation/Resources/Плюсик.jpg b/GasStation/GasStation/Resources/Плюсик.jpg new file mode 100644 index 0000000000000000000000000000000000000000..126edfb8d6a55a9281753640ec7d68327b268b43 GIT binary patch literal 9544 zcmbVybyyqS_HJ-W@fMd-0!0&w6%A6XKyh~{4#7QmDNwvAOV$p`5g=Gynw!06;-*fV)}1JHP`> ztVhJeB#$0FA|WLqA*CcCB_|^%BO|9Ir$By?QBsnSKVhaLr(~odp{3`fXJlamgTdra zxcRx+`ItdqHWVBj9DF={Dnddk4n{gg5a>Aw!~sIS{_O4>AQ1RJdVi1ov%mWeAi@SL z0T$6vhybWWC}>0|cO3v~000#g?cUUXUTBzDsOT6d*vPZ52mvT)s3@3NxY+1ee=b4+ zprWA@J;lHz<`h@KdPHyH6d3!Mi(B2<@ApAL$3R8HM4sb9+JlOMijIc;k0~gqXhi6o#E+hetC%=pJf`R3Rt=0L zsd#w+e3O01bB6%nq9H9ILL&l*0veSmoqsW7jctpWYE+eCywL@W_7qV0E$@SG8z->xy zrfla#Yx--v;EBLZ0{yqKt-wm@nxC`Q-dZJY?qwU*Zc{SNvUmhI<=@rC#)gSNBE{u? zKT0GF&glmrpYH&@eqrts!!|5EsP>?4JPI$&4fFjRC2`H{!ZL5JU06N5>LxA>4*?^q zGaDCkpyOGaR3?Cr2Xqx%8tnwMWg4lX9Bo6e@gyt9aokge;oZGKfi1URV4x3|0m`MfxO<;mkssZNofdhJlnmQ zaErG54uG=)wuERHTx==E%sDV-6ikiUYx;g18l3rPpWn}CnN0P@*F zTl|?h?d)X}ZxS>tm;eJoM_H7_eb5E=wbWZ;9e0)W*{LJ2WIXQKQCp9e51)#beUI1> zntLcy0V`sOfoA+tg2zD9$%Co=@WY8VzumHp@Pl$-O#1HOlw98(ywN4HeBzT=mH4O_ zz^}g&_@XOPudL%lJH+DeKaR34vRYVTHi6)o-x6jI5qPH6P2O4oQ(rikh53&qp}N-$ z)m%Mrq=^`ul58+Oa^1?C#o{UtdVZk5sPF7Ywg{W+U)c=qsJ6b26JEh1avV37v z=)(iX`@NDdtW%5Mz*?2#IRAKOOviBZ{OJZngDEg!)6TT+wMf{+gjw0;R27L0wAeyN z=UbZ;&!oA8B!Q^S`THvwQn#g{YSu|<1I8cYaH9t&A7$Z~vz<8}4gpLrKC7+r9 zhr0-tyA}hw-&1d5B)|F&6*KGFdZUbXN%=KP*tGf!Grp$N+BS^Tx^LyPcNebVUf>s( zG_u66T{X$Hd`37)W@$p^)2l+z%wZCTbY}ty>$K)-V*DLELT5(5q zenYEiyQDvuaxpVU7g?1V&hvkj>rc9p&=Wk^V9l$yp4wDt zkTo~(FnpRSFs~vlW<3@GRpf_(C)-Ct4ph@$|2laVrN6yZe*mWbIb>xE91Wh1zKm|& z-J+7=Z?&0#LUqDw6b@=Em`tKZJId9jpY%-Bpsdj31&Wz%26RBhIAVl*aDV5fA_DkR zSA4C|lw|O%&|22N8Ma)DNpX(}C5!P;SdQ}>&qreIiu`Q-maN<&%5^$Sas9*ER>Y zVSQGVD%*L~|MUw&b{aq#`usb4{+e0+sRb}$_oHD+MV0AuV8DaolJj3sL4 z#wCZg6<^vY{r<^@HT=|EMAPf+F}FqYL>K9dx)7f<2{ZEMv?Hf$QPZ!ijCAV)RvdzBvhX)H z&gh;mn`Tntlg3f0J}1pQPXcadwKezmMjlKheC+C5=QKU$W^B^3Kvy zf>IO$_da;l1BZwY{XO1<^a#tavb1Eg)R3aHx4Z!Z2eI^W_cs;V1=NPZw>Gj7`ZUxd z{M2~wfrR3eT|eB5Kyr1SJQg*A@Te59aNE$?XkmtKVSlQfZBhRvtTsy8V~8KP$v&a%E9b(2vc9rxJ5dvcjTVct^$ zK>D;(ECJ%n$7YdXF5_k!Os_0nRaH%2%6LtMlg1wi_UaY7Rs`A>^ywKao$wjt<5@9A

0RTfzHsL^Q%_Se-_3R(^~urbMNMV64sD272mQgVAM<5%Y+`hGdac z;Kr%PvE`U~1$c3R4#%^h-s0#d2u<<3L*JJBaJ%pJWKtgXG2;c;YEz>-74(~?4i07< z;!n4oXv`SgC?-U5wM#4*hU5t(1Po?stNO^+XO%cE#$jcbSgzhc;Vx)*O;Q|K-fUOe506~`q>%0H*PR3OwgH^^ye`sLX)vFZm~BUh{OG|Bbx%Q~|K%u~K9apZUN?i+duS27N(#HWS3j1&Du zSM45M`HVUwNi<2ng1(OVUSJ9ONP-0R0}|L`Q~Uo7tVG+OVX&zfnXtScQ^}xNg=lNk z?t?eOt!Qz1-3}Hw@$uYqsl;`3gs1>9Y!nox0o=tsxhS%W2c^_m+hna}5Hh}XMx8Oe zR(43TgN#4e)0>mx@Pklz;Q-oZX8-%!M`sRAaQq0GB3=^bja8Roc%lXA@SFC6fPU+p8(p5t}lr zd?>RKO^ji_X}w>4*7JYbMJ2tk{^3EYWKBP&;XL2SH5WTRHg2e~o!ehLnBpptsFcd- z8jchOVA$#geL6joPyY{0u}Jd#h$PQHwRl5DaSEN8QdE-7LZpo3caQ#@^38a*C~Y7E{a>K#dKLcIU1LrRQ7iG9{&J#mgU$ zbJY@4A9ix*ony`|)youm+E}*gncEqpk?>ux%#HOLOlaZ0SpA542YA{DcMr6$NtEPY zkB!JLPktj+oW=`tArzW)#?oxDr;(SQv5+nu9caRr$Y_kAzOTsl`e^k}ZN4wbk+H~b zP#Ti`i0*r7tCHp4Pe}R&9I|1`p3K)s3}*D6h|_#HWq1n^Q=@)<yll9)0n(BK!x_K1RpK)+C4U^Ix)oHg7mQSJb1a(_DSCun* zfb@UN#!<@)hdQTDixX zhY(0AWa$#v2pr#9dk}nJ5otPN)w0c~HPQc~vaDWTi_0h#y6h~3pDSGEv|vXsLf&mt zW7Pig7_45)(?56zXc_suQO@0eug+qTi4b(p5`;)yagW5G6hNx9CZu|f|EQyr7cf!1 ze+M}9>XS*xo1v6)c8tk)_IMl9C$jBq#f~>vsTXcZHEsjKZchQ+KYP(#`FV66Qpjrb?*G zNv=q|LW}alZdrES7(CosdqYbgKYXmH!0+-iMAzbH=Z4E*%=lr``iv;oP+xm^Zgzw# z-DybGt(29{D3Nq&3!Y<4?04@8pF}-mJ^kxlp_vE;>Kc4#q-{6pD||r279SPKK3q<< zT`G#*l%;wS_GtJ3$A~O++@V*0O`?^OI{bFxN?4#tcKOGxo}X-Q`L0B)5u!yVv)$E? z4Qs7xH8&pFmGo{hvbmw9M&t@^8DD?(NjS3ot+n~*Ai4iT<%>MgHSX246y#7$v08{0 z@oSL8a>5-TVK~nD{z7L~oaaKOE zaZp1Lu6C;?a{o+5**(R(Mp?I{*@treeU`lfyf?)s0wli0Cr(xUe1*X50&kXV+f)jW zi>VdeJ~}R0;)J*+;??1}nr@MTlwY{GDLK;OM|%W*aiPqucYyxau1UiF##$#$wrL6= zvQG77Np6@OPLW4cytKczhK*+hETO=&l4D@Bz_&m8NXeSf@u$xEPxH9BVS8D)@%XgZ zIl->3ZuBQZ>8|43@FV&?SeZIfkx?V35Ouv2jMS7uSMbZ+Lr$GhpZy=-a;{>2RA~kl zV59truYU_QLR7S%O#ii0L#uMO+f-p*Q8~lV;bQE|?_$^w&e1>hY7RyR(T`mMz;7U`9-5+zo#8H>x{ptP6s9-ieekQSuX*DzzPA>^xUHRxxDnKSAcF{* zFO9tIG;ApW0_D{v2|vaXyG*Di-6!;)8H4j{ein~YhhwIdH#NDJ3)vpxr%$qNOM&|T zf!}>`N1}>_C4zM8cH@Yl*3An~8^44mf=o@K-XTd*x^}o48pxN$^ht?7uCp7uAIqT+cR&>R9e4lE`iCegtvx2 z6<829v(U<;?afnZ$AQAGS)1xVO|kQ+w`fu3wT*P&LdPx|=SwcjIs8I{g#G_##)zi! z{HHNPLttX#!u%A>cDC1%AoNY`N6npHGbQhGCJBVx4$`PqedR_hDa4SzLlAYCQKT16 za03>YWTSwUeD1}E7p{XBDasc-Q5RKVt-E{_33Tn4kDi`TE8Uyff zk+;y`r4G|I@D8A)An_8Pvx~t$(T)(-3u`L6Frgd-*)EomL@l~7S<4I0lDCp?IgN^R z5$Gs}(CCMqK?UoGn~9FZQ$i%5CiEtob3!MzXBf5`_^b=DE_y~ZO8teJ>(Ux~Hq&O1 zEf3N=0ONHWEGkBIU~Kqp$3PTgT7w#2)g9p3IRu*Z@P$NIRrWeq;Z-${PsS=$GDITa?;$6JF!l*dq{BIRRoTFEqcTPQ>)C|Rn z(T@Q=#4Zt{WXpEB!i%(8;}FqErb4lw=$-%78f7)q33{Z{i&ZjrTITj>rJ^d`Agx~y zWQfO%0eSdfKmVB}OcU>h&b<`E&TngI(H!24^D$FZ{e}z`?>&8o3yn=H^m0moOC_%` z39YbfHGPM_`gqY>Tw6=4KUHRM!3f+UXK@g zNX?3Fj1``T8L}Tg|A$tvf?vsu2?(_!HT%-TP15f1Zc`IkWWqe|#uYVm_~g)Wnpk#~ z8T1GtssST3f0gwQZK8Jc0?*NNqb?32o zgN<=EMQ;KOhdh|0B2o7sLDj*kDVOoD@}v}JA1h_)kpu@pF#&qYlyB!nVqJyB#A|hW zgw5ECjn^c3%)U+!x7|ECFH^9qZ^ODaOcU*{4!Lo7Yyz$r>6 zzs3c06H-QfaS7%8f|i`^R`e~}Qx8~bKG(Yh4f97&eiRWoA?%#D+U*+~6n2s(L^V`u zRn+0R;Cx=SwG>0Or^9-f<7I{!rLN%VLJgimokA<9jv$03@T9aq{X9t_VQDDgMkA5K z$1Yqj=QoC5R#9*q9OkQ7w|F_P04`kl_QoLA++H(>CytP{a5fKZ=o^no*p6)zap~m5 z=>cT26Ol4L(eKYSU2a3?>fk~nPz2iFFol01;=TuP3Mh-fGMXNLJd%N7bHw9nq! zT^|KHcuOgJ`2qEj`WZx=5%F#8?BCd&6$o=9gEW+R;GUC{X&_&3dA%)~qSGi9Bh>jl zYs6$qnZBQ89q}Oh+igVBOEAU4tEDq--qUo6w4!SDoeUgZ8-uED`;8yCfhCcg0lcMF zwqoM|Qh*z%I!;?=gdwht$c-V{2@XTqF{WRo112A)MwPt#qAk~7&t&gD8GmkIOduvi z7JO0+j9&9qz}Ylyc@y_{-Nth*?6+GeE;i6=5*vZjqo~mj83`m~g=cJLtfghrYQy*X zjHxupQ9VPxX+wY7{Y=lrGksX~c3dV}=$r>yCRpI|^cXavPXxtBH`es)($f}J{wt0S z3bC(DnfRUlopeU2#^Wd@V1QAoACHG|v98uHL#~x{boUD{I3c;GTG^QD;ebDLIT*$P zd3=B>aj)qr4EqQo>aJcbSR^J%L}OPwTRVLe{oSr)B^w(g?77xrs#+@}k8gHsSxM*i zs9!_CrJSL%rKC0$fZ6&5FMw5{uh*+eL{W1XGUH+4ZWoT@IEOo2mFKtsr6ibl7}(W4 zQ7w)ZN=4X^Jn#0~aEf7=PTbRe(uvoDE0pGv^_(jso@@1hgngg|DxU9=DXDD5r{5mxBkh{nh?abhnKVRHJu_YNZ?R`r(-d-fPcamkl`$ zDNLN5W!APS&_${DKyA8hHb{O3MKW`3BR2;6-_?+{gn&u_azmT=%k{WRVZ)BLy80Vb zJSfhx;{eLOgj7$-F0c}Ig|p$SAO>mHV(8UJw2trCf=vF3=QdPe&39~3M9UdBv2X+B zF`4M$)JnQb2ev^S&LlMtA;5??57bt=bzgWpJxQ+DJOT7ov!A`1Uv%Jh6*b2_8qyv& zcAKhn{=sSP`Oj)sgdah;UJ3%j1agx1-%R60Xg_&VYsAHg63tKdd@pDqpub+=1Fe%* z*VPZ&(9NY%0Id;k%l=M4kma69c*L-hi73K8n@N=W@|31w0wSFnvmCvKXBd-wDB-_T zv|0QtFI6FUq_0hUTKcRGZgHRqHD_H*97!fj+fLGwRsxph_JeRU#!s_!D)CRx#yR&x zm!7Sdux=;9g2P;6v*4PAZwweDszP6EGpFZr3oy)7zF3RibZ;MkYRFrsI}}Rq3UB)p zU#A5xdm`5x{;3AYCVsPn#e|e?=|cg!nNh)|s4e%g0kBq$`cU_eGq{qFQCkZ`pWHTk zAsGyDgJpc=7u%SY$D9<{b{V%P$_E%tS3-&QbFTIYX9e?mjL7sBa_wM z0QEc;9rosu;e-un(Z?qmSy`)Tq^j|Ks!9 zu$i@Ez1!QqC7%Os85%1B&)FqAD*~a+bd(rkWjtuWLz?%vwDUm6fHM)rrUC-P-KWL@ zksF2G3=L)~B-roGviw4~AvorN8vr4J7JK?*vR#j8{w8iB%n`vh+@N-{Tr*@20tBGO0 zw`Hf6US9ecZE=>kW?!bdMf?7+L5~GY?kYn-xBB4MlWa5&`^#=jzCQP%D4+hWdbsJP zr-tONXE<1RbdVB;lDEV}KlC9=f8dFkw^D_z8a&D`|7WH=j#k7WgOYu0t>Iey^rhfg z7R0+c_$?Y{mw4TDfCDWdg>}?Q4NA#boFWEbS|NnrHA^^?N{=>DnY@kNsXY%cLygV< z4l_!F%G|^(HuTFc+f+wbcqj>DhzoNeJ6Fq)2rec^?guY;W{AX|hfTJ9M5Cy*-Or(6 z-8+DkR|1#o`2I)|U)NI6V)WMrl`RaF1SYHr%mQj1@Qc%7cEz@ZI>k^pcTsh=FIqV*W&OVV##(;culZSn<2F7m^ zU4w2_vpGln6rxND$~WY>KGA|F;t+fH>`}SHNJhR9vvQmb(+f>`EWV59HJO^f?f^&8 zXD6R;QW51EIs2j`c}i6klie5W^{k%R#?j9zBJK0PerMZeWy2ngRM#YmK*;iwFiDua zAYU2{IP$TB!Z^iDu`9aq6VS{Y>6Qs85m-(;Vx9rB5z3ol^tnc=Xo3b!M)hc{QLoUY zO6d3qDY3DXWT-1P<+_?a+c@IW1WSb5;;yTxYFh=HH{)3|FmxE9Me{q)_&@DhDG1ht z@ypu>3-OTjuWd@&UhtHd59sTE_nop5n(z&+E{Y#fup7@4wVZA?{OsPqx1HTWp};0K zo3*^4jS4AlQ=g$3(be@fZPdw{p>7WZ33t4$9f(~|%Yjz0spF{)2r_t{lT2~h)=dd^ z&IcXUh)=0-ZpCi=R7>WYb1CtiDcPbv4s(eS0JEj_rhQ|f8rMNBGQv_~t2?2l`bCIU z<3R~c>e&Yol%D2r>tUS^tbPAr@xmr1PV@%)~h{Tlcs>oH-MUyesOigkj+0p@(({2^v9 zRp3fTq*7jpk`De^K97hl91{>1|8`tCREIe9<7Ux+Zp8*X4b#@({5Qnosq(M zQQjpJ-T7ptwNm>n9nDYQ?78V}pPa)|zCBCtci_DPIPK{srt%WMZR&qUOeg#XjgRhe SfDMYhm_-Lx+`syFGye