diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Bus.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Bus.cs
new file mode 100644
index 0000000..aed6192
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Bus.cs
@@ -0,0 +1,24 @@
+using ProjectAutoenterprise.Entities.Enums;
+namespace ProjectAutoenterprise.Entities;
+
+///
+/// Сущность-справочник "Автобус"
+///
+public class Bus
+{
+ public int Id { get; private set; }
+ public string Brand { get; private set; } = string.Empty;
+ public int Capacity { get; private set; }
+ public BusColors BusColors { get; private set; }
+
+ public static Bus CreateEntity(int id, string brand, int capacity, BusColors busColors)
+ {
+ return new Bus
+ {
+ Id = id,
+ Brand = brand,
+ Capacity = capacity,
+ BusColors = busColors
+ };
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Entities/BusRepair.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/BusRepair.cs
new file mode 100644
index 0000000..cf334f4
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/BusRepair.cs
@@ -0,0 +1,23 @@
+namespace ProjectAutoenterprise.Entities;
+
+///
+/// Сущность-операция "Ремонт автобуса"
+///
+public class BusRepair
+{
+ public int Id { get; private set; }
+ public int BusId { get; private set; }
+ public DateTime RepairDate { get; private set; }
+ public string Description { get; private set; } = string.Empty;
+
+ public static BusRepair CreateOperation(int id, int busId, string description)
+ {
+ return new BusRepair
+ {
+ Id = id,
+ BusId = busId,
+ RepairDate = DateTime.Now,
+ Description = description
+ };
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Employee.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Employee.cs
new file mode 100644
index 0000000..76d3efc
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Employee.cs
@@ -0,0 +1,26 @@
+using ProjectAutoenterprise.Entities.Enums;
+namespace ProjectAutoenterprise.Entities;
+
+///
+/// Сущность-справочник "Работник"
+///
+public class Employee
+{
+ public int Id { get; private set; }
+ public string FirstName { get; private set; } = string.Empty;
+ public string LastName { get; private set; } = string.Empty;
+ public DateTime BirthDate { get; private set; }
+ public EmployeePost EmployeePost { get; private set; }
+
+ public static Employee CreateEntity(int id, string firstName, string lastName, DateTime birthDate, EmployeePost employeePost)
+ {
+ return new Employee
+ {
+ Id = id,
+ FirstName = firstName ?? string.Empty,
+ LastName = lastName ?? string.Empty,
+ BirthDate = birthDate,
+ EmployeePost = employeePost
+ };
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Enums/BusColors.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Enums/BusColors.cs
new file mode 100644
index 0000000..10a71d3
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Enums/BusColors.cs
@@ -0,0 +1,12 @@
+namespace ProjectAutoenterprise.Entities.Enums;
+
+[Flags]
+public enum BusColors
+{
+ None = 0,
+ White = 1,
+ Yellow = 2,
+ Black = 4,
+ Blue = 8,
+ Green = 16
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Enums/EmployeePost.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Enums/EmployeePost.cs
new file mode 100644
index 0000000..01ea6e2
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Enums/EmployeePost.cs
@@ -0,0 +1,10 @@
+namespace ProjectAutoenterprise.Entities.Enums;
+
+public enum EmployeePost
+{
+ None = 0,
+ Driver = 1,
+ Conductor = 2,
+ Mechanic = 3,
+ Administrator = 4
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Itinerary.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Itinerary.cs
new file mode 100644
index 0000000..dcf4aac
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Itinerary.cs
@@ -0,0 +1,30 @@
+namespace ProjectAutoenterprise.Entities;
+
+///
+/// Сущность-операция "Маршрутный лист"
+///
+public class Itinerary
+{
+ public int Id { get; private set; }
+ public int BusId { get; private set; }
+ public IEnumerable ItineraryRoutes { get; private set; } = [];
+ public int DriverId { get; private set; }
+ public int ConductorId { get; private set; }
+ public DateTime ItineraryDate { get; private set; }
+ public string Description { get; private set; } = string.Empty;
+
+ public static Itinerary CreateOperation(int id, int busId, int driverId, int conductorId, DateTime itineraryDate, string description,
+ IEnumerable itineraryRoutes)
+ {
+ return new Itinerary
+ {
+ Id = id,
+ BusId = busId,
+ ItineraryRoutes = itineraryRoutes,
+ DriverId = driverId,
+ ConductorId = conductorId,
+ ItineraryDate = itineraryDate,
+ Description = description ?? string.Empty
+ };
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Entities/ItineraryRoutes.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/ItineraryRoutes.cs
new file mode 100644
index 0000000..b1f147a
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/ItineraryRoutes.cs
@@ -0,0 +1,19 @@
+namespace ProjectAutoenterprise.Entities;
+
+///
+/// Сущность-элемент "Маршрутный лист - Маршрут" реализующий связь многие ко многим между сущностями "Маршрутный лист" и "Маршрут"
+///
+public class ItineraryRoute
+{
+ public int ItineraryId { get; private set; }
+ public int RouteId { get; private set; }
+
+ public static ItineraryRoute CreateElement(int itineraryId, int routeId)
+ {
+ return new ItineraryRoute
+ {
+ ItineraryId = itineraryId,
+ RouteId = routeId
+ };
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Route.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Route.cs
new file mode 100644
index 0000000..3aaafec
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Entities/Route.cs
@@ -0,0 +1,21 @@
+namespace ProjectAutoenterprise.Entities;
+
+///
+/// Сущность-справочник "Маршрут"
+///
+public class Route
+{
+ public int Id { get; private set; }
+ public string BeginRoutePoint { get; private set; } = string.Empty;
+ public string EndRoutePoint { get; private set; } = string.Empty;
+
+ public static Route CreateEntity(int id, string beginRoutePoint, string endRoutePoint)
+ {
+ return new Route
+ {
+ Id = id,
+ BeginRoutePoint = beginRoutePoint ?? string.Empty,
+ EndRoutePoint = endRoutePoint ?? string.Empty
+ };
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Form1.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Form1.Designer.cs
deleted file mode 100644
index 802375d..0000000
--- a/ProjectAutoenterprise/ProjectAutoenterprise/Form1.Designer.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-namespace ProjectAutoenterprise
-{
- 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
- }
-}
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Form1.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Form1.cs
deleted file mode 100644
index 69f6ded..0000000
--- a/ProjectAutoenterprise/ProjectAutoenterprise/Form1.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace ProjectAutoenterprise
-{
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- }
-}
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.Designer.cs
new file mode 100644
index 0000000..aa28baa
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.Designer.cs
@@ -0,0 +1,138 @@
+namespace ProjectAutoenterprise
+{
+ partial class FormAutoenterprise
+ {
+ ///
+ /// 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();
+ ToolStripMenuItemRoutes = new ToolStripMenuItem();
+ ToolStripMenuItemEmployees = new ToolStripMenuItem();
+ ToolStripMenuItemBuses = new ToolStripMenuItem();
+ ToolStripMenuItemOperation = new ToolStripMenuItem();
+ ToolStripMenuItemBusRepairs = new ToolStripMenuItem();
+ ToolStripMenuItemCreatreItinerary = new ToolStripMenuItem();
+ ToolStripMenuItemReport = new ToolStripMenuItem();
+ menuStrip1.SuspendLayout();
+ SuspendLayout();
+ //
+ // menuStrip1
+ //
+ menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, ToolStripMenuItemOperation, ToolStripMenuItemReport });
+ menuStrip1.Location = new Point(0, 0);
+ menuStrip1.Name = "menuStrip1";
+ menuStrip1.Size = new Size(784, 24);
+ menuStrip1.TabIndex = 0;
+ menuStrip1.Text = "menuStrip1";
+ //
+ // справочникиToolStripMenuItem
+ //
+ справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { ToolStripMenuItemRoutes, ToolStripMenuItemEmployees, ToolStripMenuItemBuses });
+ справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem";
+ справочникиToolStripMenuItem.Size = new Size(94, 20);
+ справочникиToolStripMenuItem.Text = "Справочники";
+ //
+ // ToolStripMenuItemRoutes
+ //
+ ToolStripMenuItemRoutes.Name = "ToolStripMenuItemRoutes";
+ ToolStripMenuItemRoutes.Size = new Size(180, 22);
+ ToolStripMenuItemRoutes.Text = "Маршруты";
+ ToolStripMenuItemRoutes.Click += ToolStripMenuItemRoutes_Click;
+ //
+ // ToolStripMenuItemEmployees
+ //
+ ToolStripMenuItemEmployees.Name = "ToolStripMenuItemEmployees";
+ ToolStripMenuItemEmployees.Size = new Size(180, 22);
+ ToolStripMenuItemEmployees.Text = "Работники";
+ ToolStripMenuItemEmployees.Click += ToolStripMenuItemEmployees_Click;
+ //
+ // ToolStripMenuItemBuses
+ //
+ ToolStripMenuItemBuses.Name = "ToolStripMenuItemBuses";
+ ToolStripMenuItemBuses.Size = new Size(180, 22);
+ ToolStripMenuItemBuses.Text = "Автобусы";
+ ToolStripMenuItemBuses.Click += ToolStripMenuItemBuses_Click;
+ //
+ // ToolStripMenuItemOperation
+ //
+ ToolStripMenuItemOperation.DropDownItems.AddRange(new ToolStripItem[] { ToolStripMenuItemBusRepairs, ToolStripMenuItemCreatreItinerary });
+ ToolStripMenuItemOperation.Name = "ToolStripMenuItemOperation";
+ ToolStripMenuItemOperation.Size = new Size(75, 20);
+ ToolStripMenuItemOperation.Text = "Операции";
+ //
+ // ToolStripMenuItemBusRepairs
+ //
+ ToolStripMenuItemBusRepairs.Name = "ToolStripMenuItemBusRepairs";
+ ToolStripMenuItemBusRepairs.Size = new Size(240, 22);
+ ToolStripMenuItemBusRepairs.Text = "Ремонт автобусов";
+ ToolStripMenuItemBusRepairs.Click += ToolStripMenuItemBusRepairs_Click;
+ //
+ // ToolStripMenuItemCreatreItinerary
+ //
+ ToolStripMenuItemCreatreItinerary.Name = "ToolStripMenuItemCreatreItinerary";
+ ToolStripMenuItemCreatreItinerary.Size = new Size(240, 22);
+ ToolStripMenuItemCreatreItinerary.Text = "Создание маршрутного листа";
+ ToolStripMenuItemCreatreItinerary.Click += ToolStripMenuItemCreatreItinerary_Click;
+ //
+ // ToolStripMenuItemReport
+ //
+ ToolStripMenuItemReport.Name = "ToolStripMenuItemReport";
+ ToolStripMenuItemReport.Size = new Size(60, 20);
+ ToolStripMenuItemReport.Text = "Отчеты";
+ //
+ // FormAutoenterprise
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ BackgroundImage = Properties.Resources.Background_image;
+ BackgroundImageLayout = ImageLayout.Stretch;
+ ClientSize = new Size(784, 411);
+ Controls.Add(menuStrip1);
+ MainMenuStrip = menuStrip1;
+ MinimumSize = new Size(400, 225);
+ Name = "FormAutoenterprise";
+ StartPosition = FormStartPosition.CenterScreen;
+ Text = "Автопредприятие";
+ menuStrip1.ResumeLayout(false);
+ menuStrip1.PerformLayout();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private MenuStrip menuStrip1;
+ private ToolStripMenuItem справочникиToolStripMenuItem;
+ private ToolStripMenuItem ToolStripMenuItemRoutes;
+ private ToolStripMenuItem ToolStripMenuItemEmployees;
+ private ToolStripMenuItem ToolStripMenuItemBuses;
+ private ToolStripMenuItem ToolStripMenuItemOperation;
+ private ToolStripMenuItem ToolStripMenuItemBusRepairs;
+ private ToolStripMenuItem ToolStripMenuItemReport;
+ private ToolStripMenuItem ToolStripMenuItemCreatreItinerary;
+ }
+}
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.cs b/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.cs
new file mode 100644
index 0000000..a3f3571
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.cs
@@ -0,0 +1,88 @@
+using ProjectAutoenterprise.Forms;
+using Unity;
+namespace ProjectAutoenterprise;
+
+///
+///
+///
+public partial class FormAutoenterprise : Form
+{
+ private readonly IUnityContainer _container;
+ public FormAutoenterprise(IUnityContainer container)
+ {
+ InitializeComponent();
+ _container = container ??
+ throw new ArgumentNullException(nameof(container));
+ }
+
+ ///
+ /// "" ()
+ ///
+ private void ToolStripMenuItemRoutes_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ ///
+ /// "" ()
+ ///
+ private void ToolStripMenuItemEmployees_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ ///
+ /// "" ()
+ ///
+ private void ToolStripMenuItemBuses_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ ///
+ /// " " ()
+ ///
+ private void ToolStripMenuItemBusRepairs_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ _container.Resolve().ShowDialog();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ ///
+ /// " " ()
+ ///
+ private void ToolStripMenuItemCreatreItinerary_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/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.resx b/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.resx
new file mode 100644
index 0000000..b48baf1
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/FormAutoenterprise.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/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.Designer.cs
new file mode 100644
index 0000000..b139da9
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.Designer.cs
@@ -0,0 +1,151 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormBus
+ {
+ ///
+ /// 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()
+ {
+ checkedListBoxBusColors = new CheckedListBox();
+ label1 = new Label();
+ label2 = new Label();
+ label3 = new Label();
+ numericUpDownCapacity = new NumericUpDown();
+ textBoxBrand = new TextBox();
+ buttonSave = new Button();
+ buttonCancel = new Button();
+ ((System.ComponentModel.ISupportInitialize)numericUpDownCapacity).BeginInit();
+ SuspendLayout();
+ //
+ // checkedListBoxBusColors
+ //
+ checkedListBoxBusColors.FormattingEnabled = true;
+ checkedListBoxBusColors.Location = new Point(78, 40);
+ checkedListBoxBusColors.Name = "checkedListBoxBusColors";
+ checkedListBoxBusColors.Size = new Size(158, 94);
+ checkedListBoxBusColors.TabIndex = 0;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label1.Location = new Point(16, 40);
+ label1.Name = "label1";
+ label1.Size = new Size(56, 21);
+ label1.TabIndex = 1;
+ label1.Text = "Цвета:";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label2.Location = new Point(12, 9);
+ label2.Name = "label2";
+ label2.Size = new Size(60, 21);
+ label2.TabIndex = 2;
+ label2.Text = "Марка:";
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label3.Location = new Point(-1, 137);
+ label3.Name = "label3";
+ label3.Size = new Size(106, 21);
+ label3.TabIndex = 3;
+ label3.Text = "Вместимость:";
+ //
+ // numericUpDownCapacity
+ //
+ numericUpDownCapacity.Location = new Point(111, 140);
+ numericUpDownCapacity.Maximum = new decimal(new int[] { 99, 0, 0, 0 });
+ numericUpDownCapacity.Name = "numericUpDownCapacity";
+ numericUpDownCapacity.Size = new Size(51, 23);
+ numericUpDownCapacity.TabIndex = 4;
+ //
+ // textBoxBrand
+ //
+ textBoxBrand.Location = new Point(78, 11);
+ textBoxBrand.Name = "textBoxBrand";
+ textBoxBrand.Size = new Size(158, 23);
+ textBoxBrand.TabIndex = 5;
+ //
+ // buttonSave
+ //
+ buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
+ buttonSave.Location = new Point(12, 173);
+ buttonSave.Name = "buttonSave";
+ buttonSave.Size = new Size(111, 30);
+ buttonSave.TabIndex = 6;
+ buttonSave.Text = "Сохранить";
+ buttonSave.UseVisualStyleBackColor = true;
+ buttonSave.Click += ButtonSave_Click;
+ //
+ // buttonCancel
+ //
+ buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonCancel.Location = new Point(163, 173);
+ buttonCancel.Name = "buttonCancel";
+ buttonCancel.Size = new Size(112, 30);
+ buttonCancel.TabIndex = 7;
+ buttonCancel.Text = "Отмена";
+ buttonCancel.UseVisualStyleBackColor = true;
+ buttonCancel.Click += ButtonCancel_Click;
+ //
+ // FormBus
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(284, 211);
+ Controls.Add(buttonCancel);
+ Controls.Add(buttonSave);
+ Controls.Add(textBoxBrand);
+ Controls.Add(numericUpDownCapacity);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(checkedListBoxBusColors);
+ MaximumSize = new Size(300, 250);
+ MinimumSize = new Size(300, 250);
+ Name = "FormBus";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Автобус";
+ ((System.ComponentModel.ISupportInitialize)numericUpDownCapacity).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private CheckedListBox checkedListBoxBusColors;
+ private Label label1;
+ private Label label2;
+ private Label label3;
+ private NumericUpDown numericUpDownCapacity;
+ private TextBox textBoxBrand;
+ private Button buttonSave;
+ private Button buttonCancel;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.cs
new file mode 100644
index 0000000..a11287e
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.cs
@@ -0,0 +1,84 @@
+using ProjectAutoenterprise.Entities;
+using ProjectAutoenterprise.Entities.Enums;
+using ProjectAutoenterprise.Repositories;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormBus : Form
+{
+ private readonly IBusRepository _busRepository;
+ private int? _busId;
+ public int Id
+ {
+ set
+ {
+ try
+ {
+ var bus = _busRepository.ReadBusById(value);
+ if (bus == null)
+ {
+ throw new InvalidDataException(nameof(bus));
+ }
+ foreach (BusColors elem in Enum.GetValues(typeof(BusColors)))
+ {
+ if ((elem & bus.BusColors) != 0)
+ {
+ checkedListBoxBusColors.SetItemChecked(checkedListBoxBusColors.Items.IndexOf(elem), true);
+ }
+ }
+ textBoxBrand.Text = bus.Brand;
+ numericUpDownCapacity.Value = Convert.ToDecimal(bus.Capacity);
+ _busId = value;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ }
+ }
+ public FormBus(IBusRepository busRepository)
+ {
+ InitializeComponent();
+ _busRepository = busRepository ??
+ throw new ArgumentNullException(nameof(busRepository));
+ foreach (var elem in Enum.GetValues(typeof(BusColors)))
+ {
+ checkedListBoxBusColors.Items.Add(elem);
+ }
+ }
+ private void ButtonSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(textBoxBrand.Text) ||
+ Convert.ToInt32(numericUpDownCapacity.Value) == 0 ||
+ checkedListBoxBusColors.CheckedItems.Count == 0)
+ {
+ throw new Exception("Имеются незаполненные поля");
+ }
+ if (_busId.HasValue)
+ {
+ _busRepository.UpdateBus(CreateBus(_busId.Value));
+ }
+ else
+ {
+ _busRepository.CreateBus(CreateBus(0));
+ }
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void ButtonCancel_Click(object sender, EventArgs e) => Close();
+ private Bus CreateBus(int id)
+ {
+ BusColors busColors = BusColors.White;
+ foreach (var elem in checkedListBoxBusColors.CheckedItems)
+ {
+ busColors |= (BusColors)elem;
+ }
+ return Bus.CreateEntity(id, textBoxBrand.Text, Convert.ToInt32(numericUpDownCapacity.Value), busColors);
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Form1.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.resx
similarity index 92%
rename from ProjectAutoenterprise/ProjectAutoenterprise/Form1.resx
rename to ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.resx
index 1af7de1..8b2ff64 100644
--- a/ProjectAutoenterprise/ProjectAutoenterprise/Form1.resx
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBus.resx
@@ -1,17 +1,17 @@
-
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.Designer.cs
new file mode 100644
index 0000000..8423dd5
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.Designer.cs
@@ -0,0 +1,155 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormBusRepair
+ {
+ ///
+ /// 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();
+ label2 = new Label();
+ label3 = new Label();
+ dateTimePickerRepairDate = new DateTimePicker();
+ textBoxDescription = new TextBox();
+ buttonCancel = new Button();
+ buttonSave = new Button();
+ comboBoxBus = new ComboBox();
+ SuspendLayout();
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label1.Location = new Point(26, 9);
+ label1.Name = "label1";
+ label1.Size = new Size(98, 21);
+ label1.TabIndex = 0;
+ label1.Text = "ID Автобуса:";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label2.Location = new Point(12, 47);
+ label2.Name = "label2";
+ label2.Size = new Size(112, 21);
+ label2.TabIndex = 1;
+ label2.Text = "Дата ремонта:";
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label3.Location = new Point(40, 85);
+ label3.Name = "label3";
+ label3.Size = new Size(84, 21);
+ label3.TabIndex = 2;
+ label3.Text = "Описание:";
+ //
+ // dateTimePickerRepairDate
+ //
+ dateTimePickerRepairDate.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ dateTimePickerRepairDate.Enabled = false;
+ dateTimePickerRepairDate.Location = new Point(130, 47);
+ dateTimePickerRepairDate.Name = "dateTimePickerRepairDate";
+ dateTimePickerRepairDate.Size = new Size(195, 23);
+ dateTimePickerRepairDate.TabIndex = 4;
+ //
+ // textBoxDescription
+ //
+ textBoxDescription.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ textBoxDescription.Location = new Point(130, 87);
+ textBoxDescription.Multiline = true;
+ textBoxDescription.Name = "textBoxDescription";
+ textBoxDescription.Size = new Size(195, 143);
+ textBoxDescription.TabIndex = 5;
+ //
+ // buttonCancel
+ //
+ buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonCancel.Location = new Point(210, 239);
+ buttonCancel.Name = "buttonCancel";
+ buttonCancel.Size = new Size(112, 30);
+ buttonCancel.TabIndex = 9;
+ buttonCancel.Text = "Отмена";
+ buttonCancel.UseVisualStyleBackColor = true;
+ buttonCancel.Click += ButtonCancel_Click;
+ //
+ // buttonSave
+ //
+ buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
+ buttonSave.Location = new Point(10, 239);
+ buttonSave.Name = "buttonSave";
+ buttonSave.Size = new Size(111, 30);
+ buttonSave.TabIndex = 8;
+ buttonSave.Text = "Сохранить";
+ buttonSave.UseVisualStyleBackColor = true;
+ buttonSave.Click += ButtonSave_Click;
+ //
+ // comboBoxBus
+ //
+ comboBoxBus.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ comboBoxBus.DropDownStyle = ComboBoxStyle.DropDownList;
+ comboBoxBus.FormattingEnabled = true;
+ comboBoxBus.Location = new Point(130, 11);
+ comboBoxBus.Name = "comboBoxBus";
+ comboBoxBus.Size = new Size(195, 23);
+ comboBoxBus.TabIndex = 10;
+ //
+ // FormBusRepair
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(334, 281);
+ Controls.Add(comboBoxBus);
+ Controls.Add(buttonCancel);
+ Controls.Add(buttonSave);
+ Controls.Add(textBoxDescription);
+ Controls.Add(dateTimePickerRepairDate);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ MaximumSize = new Size(800, 400);
+ MinimumSize = new Size(350, 320);
+ Name = "FormBusRepair";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Ремонт автобусов";
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Label label1;
+ private Label label2;
+ private Label label3;
+ private NumericUpDown numericUpDown1;
+ private DateTimePicker dateTimePickerRepairDate;
+ private TextBox textBoxDescription;
+ private Button buttonCancel;
+ private Button buttonSave;
+ private ComboBox comboBoxBus;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.cs
new file mode 100644
index 0000000..9e615ef
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.cs
@@ -0,0 +1,34 @@
+using ProjectAutoenterprise.Entities;
+using ProjectAutoenterprise.Repositories;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormBusRepair : Form
+{
+ private readonly IBusRepairRepository _busRepairRepository;
+ public FormBusRepair(IBusRepairRepository busRepairRepository, IBusRepository busRepository)
+ {
+ InitializeComponent();
+ _busRepairRepository = busRepairRepository ??
+ throw new ArgumentNullException(nameof(busRepairRepository));
+ comboBoxBus.DataSource = busRepository.ReadBuses();
+ comboBoxBus.DisplayMember = "Id";
+ comboBoxBus.ValueMember = "Id";
+ }
+ private void ButtonSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (comboBoxBus.SelectedIndex < 0)
+ {
+ throw new Exception("Имеются незаполненные поля");
+ }
+ _busRepairRepository.CreateBusRepair(BusRepair.CreateOperation(0, (int)comboBoxBus.SelectedValue!, textBoxDescription.Text));
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void ButtonCancel_Click(object sender, EventArgs e) => Close();
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepair.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/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.Designer.cs
new file mode 100644
index 0000000..eb71e7f
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.Designer.cs
@@ -0,0 +1,99 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormBusRepairs
+ {
+ ///
+ /// 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()
+ {
+ panel = new Panel();
+ buttonAdd = new Button();
+ dataGridViewData = new DataGridView();
+ panel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit();
+ SuspendLayout();
+ //
+ // panel
+ //
+ panel.Controls.Add(buttonAdd);
+ panel.Dock = DockStyle.Right;
+ panel.Location = new Point(682, 0);
+ panel.Name = "panel";
+ panel.Size = new Size(102, 411);
+ panel.TabIndex = 2;
+ //
+ // buttonAdd
+ //
+ buttonAdd.BackgroundImage = Properties.Resources.Add;
+ buttonAdd.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonAdd.Location = new Point(20, 12);
+ buttonAdd.Name = "buttonAdd";
+ buttonAdd.Size = new Size(70, 70);
+ buttonAdd.TabIndex = 1;
+ 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.BackgroundColor = Color.WhiteSmoke;
+ 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.Size = new Size(682, 411);
+ dataGridViewData.TabIndex = 3;
+ //
+ // FormBusRepairs
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(784, 411);
+ Controls.Add(dataGridViewData);
+ Controls.Add(panel);
+ MinimumSize = new Size(400, 300);
+ Name = "FormBusRepairs";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "FormBusRepairs";
+ Load += FormBusRepairs_Load;
+ panel.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private Panel panel;
+ private Button buttonAdd;
+ private DataGridView dataGridViewData;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.cs
new file mode 100644
index 0000000..28d15da
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.cs
@@ -0,0 +1,41 @@
+using ProjectAutoenterprise.Repositories;
+using Unity;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormBusRepairs : Form
+{
+ private readonly IUnityContainer _container;
+ private readonly IBusRepairRepository _busRepairRepository;
+ public FormBusRepairs(IUnityContainer container, IBusRepairRepository busRepairRepository)
+ {
+ InitializeComponent();
+ _container = container ??
+ throw new ArgumentNullException(nameof(container));
+ _busRepairRepository = busRepairRepository ??
+ throw new ArgumentNullException(nameof(busRepairRepository));
+ }
+ private void FormBusRepairs_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 LoadList() => dataGridViewData.DataSource = _busRepairRepository.ReadBusRepairs();
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBusRepairs.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/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.Designer.cs
new file mode 100644
index 0000000..a55c9e3
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.Designer.cs
@@ -0,0 +1,127 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormBuses
+ {
+ ///
+ /// 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()
+ {
+ panel = new Panel();
+ buttonUpdate = new Button();
+ buttonDelete = new Button();
+ buttonAdd = new Button();
+ dataGridViewData = new DataGridView();
+ panel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit();
+ SuspendLayout();
+ //
+ // panel
+ //
+ panel.Controls.Add(buttonUpdate);
+ panel.Controls.Add(buttonDelete);
+ panel.Controls.Add(buttonAdd);
+ panel.Dock = DockStyle.Right;
+ panel.Location = new Point(682, 0);
+ panel.Name = "panel";
+ panel.Size = new Size(102, 411);
+ panel.TabIndex = 1;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.BackgroundImage = Properties.Resources.Edit;
+ buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonUpdate.Location = new Point(20, 196);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(70, 70);
+ buttonUpdate.TabIndex = 3;
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += ButtonUpdate_Click;
+ //
+ // buttonDelete
+ //
+ buttonDelete.BackgroundImage = Properties.Resources.Delete;
+ buttonDelete.BackgroundImageLayout = ImageLayout.Center;
+ buttonDelete.Location = new Point(20, 104);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(70, 70);
+ buttonDelete.TabIndex = 2;
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += ButtonDelete_Click;
+ //
+ // buttonAdd
+ //
+ buttonAdd.BackgroundImage = Properties.Resources.Add;
+ buttonAdd.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonAdd.Location = new Point(20, 12);
+ buttonAdd.Name = "buttonAdd";
+ buttonAdd.Size = new Size(70, 70);
+ buttonAdd.TabIndex = 1;
+ 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.BackgroundColor = Color.WhiteSmoke;
+ 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.Size = new Size(682, 411);
+ dataGridViewData.TabIndex = 2;
+ //
+ // FormBuses
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(784, 411);
+ Controls.Add(dataGridViewData);
+ Controls.Add(panel);
+ MinimumSize = new Size(400, 300);
+ Name = "FormBuses";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Автобусы";
+ Load += FormBuses_Load;
+ panel.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private Panel panel;
+ private Button buttonUpdate;
+ private Button buttonDelete;
+ private Button buttonAdd;
+ private DataGridView dataGridViewData;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.cs
new file mode 100644
index 0000000..fb93d8e
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.cs
@@ -0,0 +1,90 @@
+using ProjectAutoenterprise.Repositories;
+using Unity;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormBuses : Form
+{
+ private readonly IUnityContainer _container;
+ private readonly IBusRepository _busRepository;
+ public FormBuses(IUnityContainer container, IBusRepository busRepository)
+ {
+ InitializeComponent();
+ _container = container ??
+ throw new ArgumentNullException(nameof(container));
+ _busRepository = busRepository ??
+ throw new ArgumentNullException(nameof(busRepository));
+ }
+ private void FormBuses_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 ButtonUpdate_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 ButtonDelete_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+ if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes)
+ {
+ return;
+ }
+ try
+ {
+ _busRepository.DeleteBus(findId);
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void LoadList() => dataGridViewData.DataSource = _busRepository.ReadBuses();
+ 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;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormBuses.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/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.Designer.cs
new file mode 100644
index 0000000..a2db882
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.Designer.cs
@@ -0,0 +1,176 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormEmployee
+ {
+ ///
+ /// 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();
+ label2 = new Label();
+ label3 = new Label();
+ label4 = new Label();
+ buttonSave = new Button();
+ buttonCancel = new Button();
+ comboBoxPost = new ComboBox();
+ textBoxFirstName = new TextBox();
+ textBoxLastName = new TextBox();
+ dateTimePickerBirthDate = new DateTimePicker();
+ SuspendLayout();
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label1.Location = new Point(58, 9);
+ label1.Name = "label1";
+ label1.Size = new Size(78, 21);
+ label1.TabIndex = 0;
+ label1.Text = "Фамилия:";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label2.Location = new Point(92, 42);
+ label2.Name = "label2";
+ label2.Size = new Size(44, 21);
+ label2.TabIndex = 1;
+ label2.Text = "Имя:";
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label3.Location = new Point(12, 75);
+ label3.Name = "label3";
+ label3.Size = new Size(124, 21);
+ label3.TabIndex = 2;
+ label3.Text = "Дата рождения:";
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label4.Location = new Point(43, 108);
+ label4.Name = "label4";
+ label4.Size = new Size(93, 21);
+ label4.TabIndex = 3;
+ label4.Text = "Должность:";
+ //
+ // buttonSave
+ //
+ buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
+ buttonSave.Location = new Point(12, 147);
+ buttonSave.Name = "buttonSave";
+ buttonSave.Size = new Size(140, 30);
+ buttonSave.TabIndex = 5;
+ buttonSave.Text = "Сохранить";
+ buttonSave.UseVisualStyleBackColor = true;
+ buttonSave.Click += ButtonSave_Click;
+ //
+ // buttonCancel
+ //
+ buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonCancel.Location = new Point(235, 147);
+ buttonCancel.Name = "buttonCancel";
+ buttonCancel.Size = new Size(140, 30);
+ buttonCancel.TabIndex = 6;
+ buttonCancel.Text = "Отмена";
+ buttonCancel.UseVisualStyleBackColor = true;
+ buttonCancel.Click += ButtonCancel_Click;
+ //
+ // comboBoxPost
+ //
+ comboBoxPost.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ comboBoxPost.DropDownStyle = ComboBoxStyle.DropDownList;
+ comboBoxPost.FormattingEnabled = true;
+ comboBoxPost.Location = new Point(142, 110);
+ comboBoxPost.Name = "comboBoxPost";
+ comboBoxPost.Size = new Size(230, 23);
+ comboBoxPost.TabIndex = 7;
+ //
+ // textBoxFirstName
+ //
+ textBoxFirstName.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ textBoxFirstName.Location = new Point(142, 44);
+ textBoxFirstName.Name = "textBoxFirstName";
+ textBoxFirstName.Size = new Size(230, 23);
+ textBoxFirstName.TabIndex = 9;
+ //
+ // textBoxLastName
+ //
+ textBoxLastName.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ textBoxLastName.Location = new Point(141, 11);
+ textBoxLastName.Name = "textBoxLastName";
+ textBoxLastName.Size = new Size(230, 23);
+ textBoxLastName.TabIndex = 10;
+ //
+ // dateTimePickerBirthDate
+ //
+ dateTimePickerBirthDate.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ dateTimePickerBirthDate.Location = new Point(142, 75);
+ dateTimePickerBirthDate.Name = "dateTimePickerBirthDate";
+ dateTimePickerBirthDate.Size = new Size(230, 23);
+ dateTimePickerBirthDate.TabIndex = 11;
+ //
+ // FormEmployee
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(384, 191);
+ Controls.Add(dateTimePickerBirthDate);
+ Controls.Add(textBoxLastName);
+ Controls.Add(textBoxFirstName);
+ Controls.Add(comboBoxPost);
+ Controls.Add(buttonCancel);
+ Controls.Add(buttonSave);
+ Controls.Add(label4);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ MaximumSize = new Size(500, 230);
+ MinimumSize = new Size(400, 230);
+ Name = "FormEmployee";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Работник";
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Label label1;
+ private Label label2;
+ private Label label3;
+ private Label label4;
+ private Button buttonSave;
+ private Button buttonCancel;
+ private ComboBox comboBoxPost;
+ private TextBox textBoxFirstName;
+ private TextBox textBoxLastName;
+ private DateTimePicker dateTimePickerBirthDate;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.cs
new file mode 100644
index 0000000..c5d6203
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.cs
@@ -0,0 +1,70 @@
+using ProjectAutoenterprise.Entities.Enums;
+using ProjectAutoenterprise.Entities;
+using ProjectAutoenterprise.Repositories;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormEmployee : Form
+{
+ private readonly IEmployeeRepository _employeeRepository;
+ private int? _employeeId;
+ public int Id
+ {
+ set
+ {
+ try
+ {
+ var employee = _employeeRepository.ReadEmployeeById(value);
+ if (employee == null)
+ {
+ throw new InvalidDataException(nameof(employee));
+ }
+ textBoxFirstName.Text = employee.FirstName;
+ textBoxLastName.Text = employee.LastName;
+ comboBoxPost.SelectedItem = employee.EmployeePost;
+ _employeeId = value;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ }
+ }
+
+ public FormEmployee(IEmployeeRepository employeeRepository)
+ {
+ InitializeComponent();
+ _employeeRepository = employeeRepository ??
+ throw new ArgumentNullException(nameof(employeeRepository));
+ comboBoxPost.DataSource = Enum.GetValues(typeof(EmployeePost));
+ }
+
+ private void ButtonSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(textBoxFirstName.Text) ||
+ string.IsNullOrWhiteSpace(textBoxLastName.Text) ||
+ comboBoxPost.SelectedIndex < 1)
+ {
+ throw new Exception("Имеются незаполненные поля");
+ }
+ if (_employeeId.HasValue)
+ {
+ _employeeRepository.UpdateEmployee(CreateEmployee(_employeeId.Value));
+ }
+ else
+ {
+ _employeeRepository.CreateEmployee(CreateEmployee(0));
+ }
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void ButtonCancel_Click(object sender, EventArgs e) => Close();
+ private Employee CreateEmployee(int id) => Employee.CreateEntity(id, textBoxFirstName.Text, textBoxLastName.Text,
+ dateTimePickerBirthDate.Value, (EmployeePost)comboBoxPost.SelectedItem!);
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployee.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/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.Designer.cs
new file mode 100644
index 0000000..112e9c5
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.Designer.cs
@@ -0,0 +1,127 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormEmployees
+ {
+ ///
+ /// 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()
+ {
+ panel = new Panel();
+ buttonUpdate = new Button();
+ buttonDelete = new Button();
+ buttonAdd = new Button();
+ dataGridViewData = new DataGridView();
+ panel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit();
+ SuspendLayout();
+ //
+ // panel
+ //
+ panel.Controls.Add(buttonUpdate);
+ panel.Controls.Add(buttonDelete);
+ panel.Controls.Add(buttonAdd);
+ panel.Dock = DockStyle.Right;
+ panel.Location = new Point(682, 0);
+ panel.Name = "panel";
+ panel.Size = new Size(102, 411);
+ panel.TabIndex = 0;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.BackgroundImage = Properties.Resources.Edit;
+ buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonUpdate.Location = new Point(20, 197);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(70, 70);
+ buttonUpdate.TabIndex = 3;
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += ButtonUpdate_Click;
+ //
+ // buttonDelete
+ //
+ buttonDelete.BackgroundImage = Properties.Resources.Delete;
+ buttonDelete.BackgroundImageLayout = ImageLayout.Center;
+ buttonDelete.Location = new Point(20, 104);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(70, 70);
+ buttonDelete.TabIndex = 2;
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += ButtonDelete_Click;
+ //
+ // buttonAdd
+ //
+ buttonAdd.BackgroundImage = Properties.Resources.Add;
+ buttonAdd.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonAdd.Location = new Point(20, 12);
+ buttonAdd.Name = "buttonAdd";
+ buttonAdd.Size = new Size(70, 70);
+ buttonAdd.TabIndex = 1;
+ 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.BackgroundColor = Color.WhiteSmoke;
+ 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.Size = new Size(682, 411);
+ dataGridViewData.TabIndex = 1;
+ //
+ // FormEmployees
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(784, 411);
+ Controls.Add(dataGridViewData);
+ Controls.Add(panel);
+ MinimumSize = new Size(400, 300);
+ Name = "FormEmployees";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Работники";
+ Load += FormEmployees_Load;
+ panel.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private Panel panel;
+ private DataGridView dataGridViewData;
+ private Button buttonAdd;
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.cs
new file mode 100644
index 0000000..339e587
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.cs
@@ -0,0 +1,90 @@
+using ProjectAutoenterprise.Repositories;
+using Unity;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormEmployees : Form
+{
+ private readonly IUnityContainer _container;
+ private readonly IEmployeeRepository _employeeRepository;
+ public FormEmployees(IUnityContainer container, IEmployeeRepository employeeRepository)
+ {
+ InitializeComponent();
+ _container = container ??
+ throw new ArgumentNullException(nameof(container));
+ _employeeRepository = employeeRepository ??
+ throw new ArgumentNullException(nameof(employeeRepository));
+ }
+ private void FormEmployees_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 ButtonUpdate_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 ButtonDelete_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+ if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes)
+ {
+ return;
+ }
+ try
+ {
+ _employeeRepository.DeleteEmployee(findId);
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void LoadList() => dataGridViewData.DataSource = _employeeRepository.ReadEmployees();
+ 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;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormEmployees.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/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.Designer.cs
new file mode 100644
index 0000000..5d64ac1
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.Designer.cs
@@ -0,0 +1,113 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormItineraries
+ {
+ ///
+ /// 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()
+ {
+ panel = new Panel();
+ buttonDelete = new Button();
+ buttonAdd = new Button();
+ dataGridViewData = new DataGridView();
+ panel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit();
+ SuspendLayout();
+ //
+ // panel
+ //
+ panel.Controls.Add(buttonDelete);
+ panel.Controls.Add(buttonAdd);
+ panel.Dock = DockStyle.Right;
+ panel.Location = new Point(682, 0);
+ panel.Name = "panel";
+ panel.Size = new Size(102, 411);
+ panel.TabIndex = 2;
+ //
+ // buttonDelete
+ //
+ buttonDelete.BackgroundImage = Properties.Resources.Delete;
+ buttonDelete.BackgroundImageLayout = ImageLayout.Center;
+ buttonDelete.Location = new Point(20, 104);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(70, 70);
+ buttonDelete.TabIndex = 2;
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += ButtonDelete_Click;
+ //
+ // buttonAdd
+ //
+ buttonAdd.BackgroundImage = Properties.Resources.Add;
+ buttonAdd.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonAdd.Location = new Point(20, 12);
+ buttonAdd.Name = "buttonAdd";
+ buttonAdd.Size = new Size(70, 70);
+ buttonAdd.TabIndex = 1;
+ 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.BackgroundColor = Color.WhiteSmoke;
+ 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.Size = new Size(682, 411);
+ dataGridViewData.TabIndex = 3;
+ //
+ // FormItineraries
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(784, 411);
+ Controls.Add(dataGridViewData);
+ Controls.Add(panel);
+ MinimumSize = new Size(400, 300);
+ Name = "FormItineraries";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Маршрутные листы";
+ Load += FormItinerarys_Load;
+ panel.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit();
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private Panel panel;
+ private Button buttonDelete;
+ private Button buttonAdd;
+ private DataGridView dataGridViewData;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.cs
new file mode 100644
index 0000000..81b73e8
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.cs
@@ -0,0 +1,77 @@
+using ProjectAutoenterprise.Repositories;
+using Unity;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormItineraries : Form
+{
+ private readonly IUnityContainer _container;
+ private readonly IItineraryRepository _itineraryRepository;
+ public FormItineraries(IUnityContainer container, IItineraryRepository itineraryRepository)
+ {
+ InitializeComponent();
+ _container = container ??
+ throw new ArgumentNullException(nameof(container));
+ _itineraryRepository = itineraryRepository ??
+ throw new ArgumentNullException(nameof(itineraryRepository));
+ }
+
+ private void FormItinerarys_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 ButtonDelete_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+ if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes)
+ {
+ return;
+ }
+ try
+ {
+ _itineraryRepository.DeleteItinerary(findId);
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void LoadList() => dataGridViewData.DataSource = _itineraryRepository.ReadItinerary();
+
+ 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;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItineraries.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/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.Designer.cs
new file mode 100644
index 0000000..90b5519
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.Designer.cs
@@ -0,0 +1,241 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormItinerary
+ {
+ ///
+ /// 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()
+ {
+ groupBoxRoutes = new GroupBox();
+ dataGridViewRoutes = new DataGridView();
+ comboBoxBus = new ComboBox();
+ label1 = new Label();
+ comboBoxDriver = new ComboBox();
+ label2 = new Label();
+ comboBoxConductor = new ComboBox();
+ label3 = new Label();
+ dateTimePickerDate = new DateTimePicker();
+ label4 = new Label();
+ textBoxDescription = new TextBox();
+ label5 = new Label();
+ buttonCancel = new Button();
+ buttonSave = new Button();
+ ColumnRoute = new DataGridViewComboBoxColumn();
+ groupBoxRoutes.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)dataGridViewRoutes).BeginInit();
+ SuspendLayout();
+ //
+ // groupBoxRoutes
+ //
+ groupBoxRoutes.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ groupBoxRoutes.Controls.Add(dataGridViewRoutes);
+ groupBoxRoutes.Location = new Point(333, 12);
+ groupBoxRoutes.Name = "groupBoxRoutes";
+ groupBoxRoutes.Size = new Size(259, 202);
+ groupBoxRoutes.TabIndex = 0;
+ groupBoxRoutes.TabStop = false;
+ groupBoxRoutes.Text = "Маршруты";
+ //
+ // dataGridViewRoutes
+ //
+ dataGridViewRoutes.BackgroundColor = Color.WhiteSmoke;
+ dataGridViewRoutes.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridViewRoutes.Columns.AddRange(new DataGridViewColumn[] { ColumnRoute });
+ dataGridViewRoutes.Dock = DockStyle.Fill;
+ dataGridViewRoutes.Location = new Point(3, 19);
+ dataGridViewRoutes.Name = "dataGridViewRoutes";
+ dataGridViewRoutes.Size = new Size(253, 180);
+ dataGridViewRoutes.TabIndex = 0;
+ //
+ // comboBoxBus
+ //
+ comboBoxBus.DropDownStyle = ComboBoxStyle.DropDownList;
+ comboBoxBus.FormattingEnabled = true;
+ comboBoxBus.Location = new Point(122, 31);
+ comboBoxBus.Name = "comboBoxBus";
+ comboBoxBus.Size = new Size(195, 23);
+ comboBoxBus.TabIndex = 12;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label1.Location = new Point(36, 29);
+ label1.Name = "label1";
+ label1.Size = new Size(71, 21);
+ label1.TabIndex = 11;
+ label1.Text = "Автобус:";
+ //
+ // comboBoxDriver
+ //
+ comboBoxDriver.DropDownStyle = ComboBoxStyle.DropDownList;
+ comboBoxDriver.FormattingEnabled = true;
+ comboBoxDriver.Location = new Point(122, 86);
+ comboBoxDriver.Name = "comboBoxDriver";
+ comboBoxDriver.Size = new Size(195, 23);
+ comboBoxDriver.TabIndex = 14;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label2.Location = new Point(27, 84);
+ label2.Name = "label2";
+ label2.Size = new Size(80, 21);
+ label2.TabIndex = 13;
+ label2.Text = "Водитель:";
+ //
+ // comboBoxConductor
+ //
+ comboBoxConductor.DropDownStyle = ComboBoxStyle.DropDownList;
+ comboBoxConductor.FormattingEnabled = true;
+ comboBoxConductor.Location = new Point(122, 141);
+ comboBoxConductor.Name = "comboBoxConductor";
+ comboBoxConductor.Size = new Size(195, 23);
+ comboBoxConductor.TabIndex = 16;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label3.Location = new Point(17, 139);
+ label3.Name = "label3";
+ label3.Size = new Size(90, 21);
+ label3.TabIndex = 15;
+ label3.Text = "Кондуктор:";
+ //
+ // dateTimePickerDate
+ //
+ dateTimePickerDate.Enabled = false;
+ dateTimePickerDate.Location = new Point(122, 196);
+ dateTimePickerDate.Name = "dateTimePickerDate";
+ dateTimePickerDate.Size = new Size(195, 23);
+ dateTimePickerDate.TabIndex = 18;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label4.Location = new Point(60, 194);
+ label4.Name = "label4";
+ label4.Size = new Size(47, 21);
+ label4.TabIndex = 17;
+ label4.Text = "Дата:";
+ //
+ // textBoxDescription
+ //
+ textBoxDescription.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ textBoxDescription.Location = new Point(122, 251);
+ textBoxDescription.Multiline = true;
+ textBoxDescription.Name = "textBoxDescription";
+ textBoxDescription.Size = new Size(467, 108);
+ textBoxDescription.TabIndex = 20;
+ //
+ // label5
+ //
+ label5.AutoSize = true;
+ label5.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label5.Location = new Point(32, 249);
+ label5.Name = "label5";
+ label5.Size = new Size(84, 21);
+ label5.TabIndex = 19;
+ label5.Text = "Описание:";
+ //
+ // buttonCancel
+ //
+ buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonCancel.Location = new Point(477, 399);
+ buttonCancel.Name = "buttonCancel";
+ buttonCancel.Size = new Size(112, 30);
+ buttonCancel.TabIndex = 22;
+ buttonCancel.Text = "Отмена";
+ buttonCancel.UseVisualStyleBackColor = true;
+ buttonCancel.Click += ButtonCancel_Click;
+ //
+ // buttonSave
+ //
+ buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
+ buttonSave.Location = new Point(17, 399);
+ buttonSave.Name = "buttonSave";
+ buttonSave.Size = new Size(111, 30);
+ buttonSave.TabIndex = 21;
+ buttonSave.Text = "Сохранить";
+ buttonSave.UseVisualStyleBackColor = true;
+ buttonSave.Click += ButtonSave_Click;
+ //
+ // ColumnRoute
+ //
+ ColumnRoute.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
+ ColumnRoute.HeaderText = "Маршрут";
+ ColumnRoute.Name = "ColumnRoute";
+ //
+ // FormItinerary
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(604, 441);
+ Controls.Add(buttonCancel);
+ Controls.Add(buttonSave);
+ Controls.Add(textBoxDescription);
+ Controls.Add(label5);
+ Controls.Add(dateTimePickerDate);
+ Controls.Add(label4);
+ Controls.Add(comboBoxConductor);
+ Controls.Add(label3);
+ Controls.Add(comboBoxDriver);
+ Controls.Add(label2);
+ Controls.Add(comboBoxBus);
+ Controls.Add(label1);
+ Controls.Add(groupBoxRoutes);
+ MaximumSize = new Size(800, 500);
+ MinimumSize = new Size(620, 480);
+ Name = "FormItinerary";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Маршрутный лист";
+ groupBoxRoutes.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)dataGridViewRoutes).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private GroupBox groupBoxRoutes;
+ private DataGridView dataGridViewRoutes;
+ private ComboBox comboBoxBus;
+ private Label label1;
+ private ComboBox comboBoxDriver;
+ private Label label2;
+ private ComboBox comboBoxConductor;
+ private Label label3;
+ private DateTimePicker dateTimePickerDate;
+ private Label label4;
+ private TextBox textBoxDescription;
+ private Label label5;
+ private Button buttonCancel;
+ private Button buttonSave;
+ private DataGridViewComboBoxColumn ColumnRoute;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.cs
new file mode 100644
index 0000000..02105ef
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.cs
@@ -0,0 +1,71 @@
+using ProjectAutoenterprise.Entities;
+using ProjectAutoenterprise.Entities.Enums;
+using ProjectAutoenterprise.Repositories;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormItinerary : Form
+{
+ private readonly IItineraryRepository _itineraryRepository;
+ public FormItinerary(IItineraryRepository itineraryRepository,
+ IBusRepository busRepository, IEmployeeRepository employeeRepository, IRouteRepository routeRepository)
+ {
+ InitializeComponent();
+ _itineraryRepository = itineraryRepository ??
+ throw new ArgumentNullException(nameof(itineraryRepository));
+
+ comboBoxBus.DataSource = busRepository.ReadBuses();
+ comboBoxBus.DisplayMember = "Brand";
+ comboBoxBus.ValueMember = "Id";
+
+ comboBoxDriver.DataSource = employeeRepository.ReadEmployees(EmployeePost.Driver);
+ comboBoxDriver.DisplayMember = "FirstName";
+ comboBoxDriver.ValueMember = "Id";
+
+ comboBoxConductor.DataSource = employeeRepository.ReadEmployees(EmployeePost.Conductor);
+ comboBoxConductor.DisplayMember = "FirstName";
+ comboBoxConductor.ValueMember = "Id";
+
+ ColumnRoute.DataSource = routeRepository.ReadRoutes();
+ ColumnRoute.DisplayMember = "Id";
+ ColumnRoute.ValueMember = "Id";
+ }
+ private void ButtonSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (dataGridViewRoutes.RowCount < 1 ||
+ comboBoxDriver.SelectedIndex < 0 ||
+ comboBoxConductor.SelectedIndex < 0)
+ {
+ throw new Exception("Имеются незаполненные поля");
+ }
+ _itineraryRepository.CreateItinerary(Itinerary.CreateOperation(
+ 0,
+ (int)comboBoxBus.SelectedValue!,
+ (int)comboBoxDriver.SelectedValue!,
+ (int)comboBoxConductor.SelectedValue!,
+ dateTimePickerDate.Value,
+ textBoxDescription.Text,
+ CreateListItineraryRoutesFromDataGrid()));
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ private void ButtonCancel_Click(object sender, EventArgs e) => Close();
+ private List CreateListItineraryRoutesFromDataGrid()
+ {
+ var list = new List();
+ foreach (DataGridViewRow row in dataGridViewRoutes.Rows)
+ {
+ if (row.Cells["ColumnRoute"].Value == null)
+ {
+ continue;
+ }
+ list.Add(ItineraryRoute.CreateElement(0,Convert.ToInt32(row.Cells["ColumnRoute"].Value)));
+ }
+ return list;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.resx
new file mode 100644
index 0000000..83d146b
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormItinerary.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
+
+
+ True
+
+
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.Designer.cs
new file mode 100644
index 0000000..364034e
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.Designer.cs
@@ -0,0 +1,125 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormRoute
+ {
+ ///
+ /// 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();
+ label2 = new Label();
+ textBoxBeginRoutePoint = new TextBox();
+ textBoxEndRoutePoint = new TextBox();
+ buttonSave = new Button();
+ buttonCancel = new Button();
+ SuspendLayout();
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label1.Location = new Point(12, 9);
+ label1.Name = "label1";
+ label1.Size = new Size(216, 21);
+ label1.TabIndex = 0;
+ label1.Text = "Начальная точка маршрута: ";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point, 204);
+ label2.Location = new Point(20, 43);
+ label2.Name = "label2";
+ label2.Size = new Size(208, 21);
+ label2.TabIndex = 1;
+ label2.Text = "Конечная точка маршрута: ";
+ //
+ // textBoxBeginRoutePoint
+ //
+ textBoxBeginRoutePoint.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ textBoxBeginRoutePoint.Location = new Point(234, 12);
+ textBoxBeginRoutePoint.Name = "textBoxBeginRoutePoint";
+ textBoxBeginRoutePoint.Size = new Size(265, 23);
+ textBoxBeginRoutePoint.TabIndex = 2;
+ //
+ // textBoxEndRoutePoint
+ //
+ textBoxEndRoutePoint.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
+ textBoxEndRoutePoint.Location = new Point(234, 45);
+ textBoxEndRoutePoint.Name = "textBoxEndRoutePoint";
+ textBoxEndRoutePoint.Size = new Size(265, 23);
+ textBoxEndRoutePoint.TabIndex = 3;
+ //
+ // buttonSave
+ //
+ buttonSave.Location = new Point(12, 80);
+ buttonSave.Name = "buttonSave";
+ buttonSave.Size = new Size(140, 30);
+ buttonSave.TabIndex = 4;
+ buttonSave.Text = "Сохранить";
+ buttonSave.UseVisualStyleBackColor = true;
+ buttonSave.Click += ButtonSave_Click;
+ //
+ // buttonCancel
+ //
+ buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
+ buttonCancel.Location = new Point(359, 80);
+ buttonCancel.Name = "buttonCancel";
+ buttonCancel.Size = new Size(140, 30);
+ buttonCancel.TabIndex = 5;
+ buttonCancel.Text = "Отмена";
+ buttonCancel.UseVisualStyleBackColor = true;
+ buttonCancel.Click += ButtonCancel_Click;
+ //
+ // FormRoute
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(514, 121);
+ Controls.Add(buttonCancel);
+ Controls.Add(buttonSave);
+ Controls.Add(textBoxEndRoutePoint);
+ Controls.Add(textBoxBeginRoutePoint);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ MaximumSize = new Size(600, 160);
+ MinimumSize = new Size(530, 160);
+ Name = "FormRoute";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Маршрут";
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Label label1;
+ private Label label2;
+ private TextBox textBoxBeginRoutePoint;
+ private TextBox textBoxEndRoutePoint;
+ private Button buttonSave;
+ private Button buttonCancel;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.cs
new file mode 100644
index 0000000..0335fe7
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.cs
@@ -0,0 +1,67 @@
+using ProjectAutoenterprise.Entities;
+using ProjectAutoenterprise.Repositories;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormRoute : Form
+{
+ private readonly IRouteRepository _routeRepository;
+ private int? _routeId;
+ public int Id
+ {
+ set
+ {
+ try
+ {
+ var route = _routeRepository.ReadRouteById(value);
+ if (route == null)
+ {
+ throw new InvalidDataException(nameof(route));
+ }
+ textBoxBeginRoutePoint.Text = route.BeginRoutePoint;
+ textBoxEndRoutePoint.Text = route.EndRoutePoint;
+ _routeId = value;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ }
+ }
+
+ public FormRoute(IRouteRepository routeRepository)
+ {
+ InitializeComponent();
+ _routeRepository = routeRepository ??
+ throw new ArgumentNullException(nameof(routeRepository));
+ }
+
+ private void ButtonSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(textBoxBeginRoutePoint.Text) || string.IsNullOrWhiteSpace(textBoxEndRoutePoint.Text))
+ {
+ throw new Exception("Имеются незаполненные поля");
+ }
+ if (_routeId.HasValue)
+ {
+ _routeRepository.UpdateRoute(CreateRoute(_routeId.Value));
+ }
+ else
+ {
+ _routeRepository.CreateRoute(CreateRoute(0));
+ }
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void ButtonCancel_Click(object sender, EventArgs e) => Close();
+
+ private Route CreateRoute(int id) => Route.CreateEntity(id, textBoxBeginRoutePoint.Text, textBoxEndRoutePoint.Text);
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoute.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/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.Designer.cs
new file mode 100644
index 0000000..9d776cc
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.Designer.cs
@@ -0,0 +1,127 @@
+namespace ProjectAutoenterprise.Forms
+{
+ partial class FormRoutes
+ {
+ ///
+ /// 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()
+ {
+ dataGridViewData = new DataGridView();
+ panel = new Panel();
+ buttonUpdate = new Button();
+ buttonDelete = new Button();
+ buttonAdd = new Button();
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit();
+ panel.SuspendLayout();
+ SuspendLayout();
+ //
+ // dataGridViewData
+ //
+ dataGridViewData.AllowUserToAddRows = false;
+ dataGridViewData.AllowUserToDeleteRows = false;
+ dataGridViewData.AllowUserToResizeColumns = false;
+ dataGridViewData.AllowUserToResizeRows = false;
+ dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
+ dataGridViewData.BackgroundColor = Color.WhiteSmoke;
+ 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.Size = new Size(681, 411);
+ dataGridViewData.TabIndex = 0;
+ //
+ // panel
+ //
+ panel.Controls.Add(buttonUpdate);
+ panel.Controls.Add(buttonDelete);
+ panel.Controls.Add(buttonAdd);
+ panel.Dock = DockStyle.Right;
+ panel.Location = new Point(681, 0);
+ panel.Name = "panel";
+ panel.Size = new Size(103, 411);
+ panel.TabIndex = 1;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.BackgroundImage = Properties.Resources.Edit;
+ buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonUpdate.Location = new Point(14, 191);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(70, 70);
+ buttonUpdate.TabIndex = 2;
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += ButtonUpdate_Click;
+ //
+ // buttonDelete
+ //
+ buttonDelete.BackgroundImage = Properties.Resources.Delete;
+ buttonDelete.BackgroundImageLayout = ImageLayout.Center;
+ buttonDelete.Location = new Point(14, 101);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(70, 70);
+ buttonDelete.TabIndex = 1;
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += ButtonDelete_Click;
+ //
+ // buttonAdd
+ //
+ buttonAdd.BackgroundImage = Properties.Resources.Add;
+ buttonAdd.BackgroundImageLayout = ImageLayout.Stretch;
+ buttonAdd.Location = new Point(14, 12);
+ buttonAdd.Name = "buttonAdd";
+ buttonAdd.Size = new Size(70, 70);
+ buttonAdd.TabIndex = 0;
+ buttonAdd.UseVisualStyleBackColor = true;
+ buttonAdd.Click += ButtonAdd_Click;
+ //
+ // FormRoutes
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(784, 411);
+ Controls.Add(dataGridViewData);
+ Controls.Add(panel);
+ MinimumSize = new Size(400, 300);
+ Name = "FormRoutes";
+ StartPosition = FormStartPosition.CenterParent;
+ Text = "Маршруты";
+ Load += FormRoutes_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit();
+ panel.ResumeLayout(false);
+ ResumeLayout(false);
+ }
+
+ #endregion
+
+ private DataGridView dataGridViewData;
+ private Panel panel;
+ private Button buttonUpdate;
+ private Button buttonDelete;
+ private Button buttonAdd;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.cs
new file mode 100644
index 0000000..b9beda6
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.cs
@@ -0,0 +1,97 @@
+using ProjectAutoenterprise.Repositories;
+using Unity;
+namespace ProjectAutoenterprise.Forms;
+
+public partial class FormRoutes : Form
+{
+ private readonly IUnityContainer _container;
+ private readonly IRouteRepository _routeRepository;
+ public FormRoutes(IUnityContainer container, IRouteRepository routeRepository)
+ {
+ InitializeComponent();
+ _container = container ??
+ throw new ArgumentNullException(nameof(container));
+ _routeRepository = routeRepository ??
+ throw new ArgumentNullException(nameof(routeRepository));
+ }
+
+ private void FormRoutes_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 ButtonDelete_Click(object sender, EventArgs e)
+ {
+ if (!TryGetIdentifierFromSelectedRow(out var findId))
+ {
+ return;
+ }
+ if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes)
+ {
+ return;
+ }
+ try
+ {
+ _routeRepository.DeleteRoute(findId);
+ LoadList();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void ButtonUpdate_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 LoadList() => dataGridViewData.DataSource = _routeRepository.ReadRoutes();
+
+ 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;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Forms/FormRoutes.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/ProjectAutoenterprise/ProjectAutoenterprise/Program.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Program.cs
index 7e1c0ef..7ddbc3e 100644
--- a/ProjectAutoenterprise/ProjectAutoenterprise/Program.cs
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Program.cs
@@ -1,3 +1,8 @@
+using ProjectAutoenterprise.Repositories.Implementations;
+using ProjectAutoenterprise.Repositories;
+using Unity;
+using Unity.Lifetime;
+
namespace ProjectAutoenterprise
{
internal static class Program
@@ -11,7 +16,17 @@ namespace ProjectAutoenterprise
// 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(new TransientLifetimeManager());
+ container.RegisterType(new TransientLifetimeManager());
+ container.RegisterType(new TransientLifetimeManager());
+ container.RegisterType(new TransientLifetimeManager());
+ container.RegisterType(new TransientLifetimeManager());
+ return container;
}
}
}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/ProjectAutoenterprise.csproj b/ProjectAutoenterprise/ProjectAutoenterprise/ProjectAutoenterprise.csproj
index 663fdb8..accbdf0 100644
--- a/ProjectAutoenterprise/ProjectAutoenterprise/ProjectAutoenterprise.csproj
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/ProjectAutoenterprise.csproj
@@ -8,4 +8,23 @@
enable
+
+
+
+
+
+
+ True
+ True
+ Resources.resx
+
+
+
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+
+
+
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Properties/Resources.Designer.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..03b14a9
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Properties/Resources.Designer.cs
@@ -0,0 +1,103 @@
+//------------------------------------------------------------------------------
+//
+// Этот код создан программой.
+// Исполняемая версия:4.0.30319.42000
+//
+// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+// повторной генерации кода.
+//
+//------------------------------------------------------------------------------
+
+namespace ProjectAutoenterprise.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("ProjectAutoenterprise.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 Add {
+ get {
+ object obj = ResourceManager.GetObject("Add", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Background_image {
+ get {
+ object obj = ResourceManager.GetObject("Background_image", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Delete {
+ get {
+ object obj = ResourceManager.GetObject("Delete", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Edit {
+ get {
+ object obj = ResourceManager.GetObject("Edit", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+ }
+}
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Properties/Resources.resx b/ProjectAutoenterprise/ProjectAutoenterprise/Properties/Resources.resx
new file mode 100644
index 0000000..77a5135
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Properties/Resources.resx
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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\Delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Background_image.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\Edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IBusRepairRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IBusRepairRepository.cs
new file mode 100644
index 0000000..ce13e7b
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IBusRepairRepository.cs
@@ -0,0 +1,9 @@
+using ProjectAutoenterprise.Entities;
+namespace ProjectAutoenterprise.Repositories;
+
+public interface IBusRepairRepository
+{
+ void CreateBusRepair(BusRepair busRepair);
+ IEnumerable ReadBusRepairs(DateTime? dateForm = null, DateTime? dateTo = null,
+ int? busId = null, string? description = null);
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IBusRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IBusRepository.cs
new file mode 100644
index 0000000..6e88cc1
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IBusRepository.cs
@@ -0,0 +1,11 @@
+using ProjectAutoenterprise.Entities;
+namespace ProjectAutoenterprise.Repositories;
+
+public interface IBusRepository
+{
+ IEnumerable ReadBuses();
+ Bus ReadBusById(int id);
+ void CreateBus(Bus bus);
+ void UpdateBus(Bus bus);
+ void DeleteBus(int id);
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IEmployeeRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IEmployeeRepository.cs
new file mode 100644
index 0000000..6877deb
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IEmployeeRepository.cs
@@ -0,0 +1,14 @@
+using ProjectAutoenterprise.Entities;
+using ProjectAutoenterprise.Entities.Enums;
+
+namespace ProjectAutoenterprise.Repositories;
+
+public interface IEmployeeRepository
+{
+ IEnumerable ReadEmployees();
+ IEnumerable ReadEmployees(EmployeePost employeePost);
+ Employee ReadEmployeeById(int id);
+ void CreateEmployee(Employee employee);
+ void UpdateEmployee(Employee employee);
+ void DeleteEmployee(int id);
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IItineraryRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IItineraryRepository.cs
new file mode 100644
index 0000000..3655c6e
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IItineraryRepository.cs
@@ -0,0 +1,10 @@
+using ProjectAutoenterprise.Entities;
+namespace ProjectAutoenterprise.Repositories;
+
+public interface IItineraryRepository
+{
+ IEnumerable ReadItinerary(DateTime? dateForm = null, DateTime? dateTo = null,
+ int? driverId = null, int? conductorId = null);
+ void CreateItinerary(Itinerary itinerary);
+ void DeleteItinerary(int id);
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IRouteRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IRouteRepository.cs
new file mode 100644
index 0000000..ab13336
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/IRouteRepository.cs
@@ -0,0 +1,11 @@
+using ProjectAutoenterprise.Entities;
+namespace ProjectAutoenterprise.Repositories;
+
+public interface IRouteRepository
+{
+ IEnumerable ReadRoutes();
+ Route ReadRouteById(int id);
+ void CreateRoute(Route route);
+ void UpdateRoute(Route route);
+ void DeleteRoute(int id);
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/BusRepairRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/BusRepairRepository.cs
new file mode 100644
index 0000000..b62c689
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/BusRepairRepository.cs
@@ -0,0 +1,15 @@
+using ProjectAutoenterprise.Entities;
+
+namespace ProjectAutoenterprise.Repositories.Implementations;
+
+internal class BusRepairRepository : IBusRepairRepository
+{
+ public void CreateBusRepair(BusRepair busRepair)
+ {
+ }
+ public IEnumerable ReadBusRepairs(DateTime? dateForm = null, DateTime? dateTo = null,
+ int? busId = null, string? description = null)
+ {
+ return [];
+ }
+}
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/BusRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/BusRepository.cs
new file mode 100644
index 0000000..471f8cd
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/BusRepository.cs
@@ -0,0 +1,23 @@
+using ProjectAutoenterprise.Entities;
+namespace ProjectAutoenterprise.Repositories.Implementations;
+
+internal class BusRepository : IBusRepository
+{
+ public void CreateBus(Bus bus)
+ {
+ }
+ public void DeleteBus(int id)
+ {
+ }
+ public Bus ReadBusById(int id)
+ {
+ return Bus.CreateEntity(0, string.Empty, 0, 0);
+ }
+ public IEnumerable ReadBuses()
+ {
+ return [];
+ }
+ public void UpdateBus(Bus bus)
+ {
+ }
+}
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/EmployeeRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/EmployeeRepository.cs
new file mode 100644
index 0000000..c9bc573
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/EmployeeRepository.cs
@@ -0,0 +1,36 @@
+using ProjectAutoenterprise.Entities;
+using ProjectAutoenterprise.Entities.Enums;
+namespace ProjectAutoenterprise.Repositories.Implementations;
+
+internal class EmployeeRepository : IEmployeeRepository
+{
+ public void CreateEmployee(Employee employee)
+ {
+
+ }
+
+ public void DeleteEmployee(int id)
+ {
+
+ }
+
+ public Employee ReadEmployeeById(int id)
+ {
+ return Employee.CreateEntity(0, string.Empty, string.Empty, DateTime.MinValue, EmployeePost.None);
+ }
+
+ public IEnumerable ReadEmployees()
+ {
+ return [];
+ }
+
+ public IEnumerable ReadEmployees(EmployeePost employeePost)
+ {
+ return [];
+ }
+
+ public void UpdateEmployee(Employee employee)
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/ItineraryRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/ItineraryRepository.cs
new file mode 100644
index 0000000..3686668
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/ItineraryRepository.cs
@@ -0,0 +1,18 @@
+using ProjectAutoenterprise.Entities;
+
+namespace ProjectAutoenterprise.Repositories.Implementations;
+
+internal class ItineraryRepository : IItineraryRepository
+{
+ public void CreateItinerary(Itinerary itinerary)
+ {
+ }
+ public void DeleteItinerary(int id)
+ {
+ }
+ public IEnumerable ReadItinerary(DateTime? dateForm = null, DateTime? dateTo = null,
+ int? driverId = null, int? conductorId = null)
+ {
+ return [];
+ }
+}
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/RouteRepository.cs b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/RouteRepository.cs
new file mode 100644
index 0000000..2a4bb07
--- /dev/null
+++ b/ProjectAutoenterprise/ProjectAutoenterprise/Repositories/Implementations/RouteRepository.cs
@@ -0,0 +1,23 @@
+using ProjectAutoenterprise.Entities;
+namespace ProjectAutoenterprise.Repositories.Implementations;
+
+internal class RouteRepository : IRouteRepository
+{
+ public void CreateRoute(Route route)
+ {
+ }
+ public void DeleteRoute(int id)
+ {
+ }
+ public Route ReadRouteById(int id)
+ {
+ return Route.CreateEntity(0, string.Empty, string.Empty);
+ }
+ public IEnumerable ReadRoutes()
+ {
+ return [];
+ }
+ public void UpdateRoute(Route route)
+ {
+ }
+}
\ No newline at end of file
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Add.png b/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Add.png
new file mode 100644
index 0000000..cb697fe
Binary files /dev/null and b/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Add.png differ
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Background_image.bmp b/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Background_image.bmp
new file mode 100644
index 0000000..90f382d
Binary files /dev/null and b/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Background_image.bmp differ
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Delete.png b/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Delete.png
new file mode 100644
index 0000000..b0098af
Binary files /dev/null and b/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Delete.png differ
diff --git a/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Edit.png b/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Edit.png
new file mode 100644
index 0000000..704f2c1
Binary files /dev/null and b/ProjectAutoenterprise/ProjectAutoenterprise/Resources/Edit.png differ
diff --git a/ProjectAutoenterprise/Resources/Add.png b/ProjectAutoenterprise/Resources/Add.png
new file mode 100644
index 0000000..cb697fe
Binary files /dev/null and b/ProjectAutoenterprise/Resources/Add.png differ
diff --git a/ProjectAutoenterprise/Resources/Background_image.bmp b/ProjectAutoenterprise/Resources/Background_image.bmp
new file mode 100644
index 0000000..90f382d
Binary files /dev/null and b/ProjectAutoenterprise/Resources/Background_image.bmp differ
diff --git a/ProjectAutoenterprise/Resources/Delete.png b/ProjectAutoenterprise/Resources/Delete.png
new file mode 100644
index 0000000..b0098af
Binary files /dev/null and b/ProjectAutoenterprise/Resources/Delete.png differ
diff --git a/ProjectAutoenterprise/Resources/Edit.png b/ProjectAutoenterprise/Resources/Edit.png
new file mode 100644
index 0000000..704f2c1
Binary files /dev/null and b/ProjectAutoenterprise/Resources/Edit.png differ