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