diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs new file mode 100644 index 0000000..b0166a1 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Bus.cs @@ -0,0 +1,22 @@ +using ProjectPassengerTransportation.Entities.Enums; + +namespace ProjectPassengerTransportation.Entities; + +public class Bus +{ + public int Id { get; private set; } + + public string LicensePlate { get; private set; } = string.Empty; + + public BusType Type { get; private set; } + + public static Bus CreateEntity(int id, string licensePlate, BusType type) + { + return new Bus + { + Id = id, + LicensePlate = licensePlate, + Type = type + }; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Employee.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Employee.cs new file mode 100644 index 0000000..43cdf5f --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Employee.cs @@ -0,0 +1,25 @@ +using ProjectPassengerTransportation.Entities.Enums; + +namespace ProjectPassengerTransportation.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 EmployeePost Post { get; private set; } + + public static Employee CreateEntity(int id, string first, string last, EmployeePost post) + { + return new Employee + { + Id = id, + FirstName = first ?? string.Empty, + LastName = last ?? string.Empty, + Post = post + }; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BusType.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BusType.cs new file mode 100644 index 0000000..847aaec --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BusType.cs @@ -0,0 +1,10 @@ +namespace ProjectPassengerTransportation.Entities.Enums; + +public enum BusType +{ + None = 0, + + Bus = 1, + + Minibus = 2 +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/EmployeePost.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/EmployeePost.cs new file mode 100644 index 0000000..b16f724 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/EmployeePost.cs @@ -0,0 +1,14 @@ +namespace ProjectPassengerTransportation.Entities.Enums; + +public enum EmployeePost +{ + None = 0, + + Administration = 1, + + Engineer = 2, + + Driver = 3, + + Conductor = 4 +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs new file mode 100644 index 0000000..4c0a72f --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs @@ -0,0 +1,23 @@ +namespace ProjectPassengerTransportation.Entities; + +public class GoToService +{ + public int Id { get; private set; } + + public DateTime Date { get; private set; } + + public int Price { get; private set; } + + public int BusId { get; private set; } + + public static GoToService CreateOperation(int id, int price, int busId) + { + return new GoToService + { + Id = id, + Date = DateTime.Now, + Price = price, + BusId = busId + }; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs new file mode 100644 index 0000000..e8b4d04 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs @@ -0,0 +1,26 @@ +namespace ProjectPassengerTransportation.Entities; + +public class RouteList +{ + public int Id { get; private set; } + + public TimeOnly Start { get; private set; } + + public TimeOnly Finish { get; private set; } + + public int DriverId { get; private set; } + + public int ConductorId { get; private set; } + + public static RouteList CreateEntity(int id, TimeOnly start, TimeOnly finish, int driverId, int conductorId) + { + return new RouteList + { + Id = id, + Start = start, + Finish = finish, + DriverId = driverId, + ConductorId = conductorId + }; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShift.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShift.cs new file mode 100644 index 0000000..cfd130e --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShift.cs @@ -0,0 +1,27 @@ +namespace ProjectPassengerTransportation.Entities; + +public class StartingShift +{ + public int Id { get; private set; } + + public DateTime Date { get; private set; } + + public int RouteListId { get; private set; } + + public int BusId { get; private set; } + + public IEnumerable StartingShiftEmployees { get; private set; } = []; + + public static StartingShift CreateOperation(int id, int routeListId, int busId, + IEnumerable startingShiftEmployees) + { + return new StartingShift() + { + Id = id, + Date = DateTime.Now, + RouteListId = routeListId, + BusId = busId, + StartingShiftEmployees = startingShiftEmployees + }; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs new file mode 100644 index 0000000..3d5f342 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs @@ -0,0 +1,20 @@ +namespace ProjectPassengerTransportation.Entities; + +public class StartingShiftEmployee +{ + public int Id { get; private set; } + + public int EmployeeId { get; private set; } + + public int WorkTime { get; private set; } + + public static StartingShiftEmployee CreateElement(int id, int employeeId, int workTime) + { + return new StartingShiftEmployee + { + Id = id, + EmployeeId = employeeId, + WorkTime = workTime + }; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.Designer.cs deleted file mode 100644 index deb831b..0000000 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectPassengerTransportation -{ - 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/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.Designer.cs new file mode 100644 index 0000000..a5d0373 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.Designer.cs @@ -0,0 +1,125 @@ +namespace ProjectPassengerTransportation +{ + partial class FormPassengerTransportation + { + /// + /// 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(); + операцииToolStripMenuItem = new ToolStripMenuItem(); + отчётыToolStripMenuItem = new ToolStripMenuItem(); + работникиToolStripMenuItem = new ToolStripMenuItem(); + автобусыToolStripMenuItem = new ToolStripMenuItem(); + маршрутыToolStripMenuItem = new ToolStripMenuItem(); + началоСменыToolStripMenuItem = new ToolStripMenuItem(); + menuStrip1.SuspendLayout(); + SuspendLayout(); + // + // menuStrip1 + // + menuStrip1.ImageScalingSize = new Size(28, 28); + menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчётыToolStripMenuItem }); + menuStrip1.Location = new Point(0, 0); + menuStrip1.Name = "menuStrip1"; + menuStrip1.Size = new Size(976, 38); + menuStrip1.TabIndex = 0; + menuStrip1.Text = "menuStrip1"; + // + // справочникиToolStripMenuItem + // + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { работникиToolStripMenuItem, автобусыToolStripMenuItem, маршрутыToolStripMenuItem }); + справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; + справочникиToolStripMenuItem.Size = new Size(160, 34); + справочникиToolStripMenuItem.Text = "Справочники"; + // + // операцииToolStripMenuItem + // + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { началоСменыToolStripMenuItem }); + операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; + операцииToolStripMenuItem.Size = new Size(130, 34); + операцииToolStripMenuItem.Text = "Операции"; + // + // отчётыToolStripMenuItem + // + отчётыToolStripMenuItem.Name = "отчётыToolStripMenuItem"; + отчётыToolStripMenuItem.Size = new Size(103, 34); + отчётыToolStripMenuItem.Text = "Отчёты"; + // + // работникиToolStripMenuItem + // + работникиToolStripMenuItem.Name = "работникиToolStripMenuItem"; + работникиToolStripMenuItem.Size = new Size(315, 40); + работникиToolStripMenuItem.Text = "Работники"; + // + // автобусыToolStripMenuItem + // + автобусыToolStripMenuItem.Name = "автобусыToolStripMenuItem"; + автобусыToolStripMenuItem.Size = new Size(315, 40); + автобусыToolStripMenuItem.Text = "Автобусы"; + // + // маршрутыToolStripMenuItem + // + маршрутыToolStripMenuItem.Name = "маршрутыToolStripMenuItem"; + маршрутыToolStripMenuItem.Size = new Size(315, 40); + маршрутыToolStripMenuItem.Text = "Маршруты"; + // + // началоСменыToolStripMenuItem + // + началоСменыToolStripMenuItem.Name = "началоСменыToolStripMenuItem"; + началоСменыToolStripMenuItem.Size = new Size(315, 40); + началоСменыToolStripMenuItem.Text = "Начало смены"; + // + // FormPassengerTransportation + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = Properties.Resources._78; + BackgroundImageLayout = ImageLayout.Stretch; + ClientSize = new Size(976, 636); + Controls.Add(menuStrip1); + MainMenuStrip = menuStrip1; + Name = "FormPassengerTransportation"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Пассажирские перевозки"; + menuStrip1.ResumeLayout(false); + menuStrip1.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip1; + private ToolStripMenuItem справочникиToolStripMenuItem; + private ToolStripMenuItem работникиToolStripMenuItem; + private ToolStripMenuItem автобусыToolStripMenuItem; + private ToolStripMenuItem маршрутыToolStripMenuItem; + private ToolStripMenuItem операцииToolStripMenuItem; + private ToolStripMenuItem отчётыToolStripMenuItem; + private ToolStripMenuItem началоСменыToolStripMenuItem; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.cs similarity index 51% rename from ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.cs rename to ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.cs index deecb17..e761066 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.cs @@ -1,8 +1,8 @@ namespace ProjectPassengerTransportation { - public partial class Form1 : Form + public partial class FormPassengerTransportation : Form { - public Form1() + public FormPassengerTransportation() { InitializeComponent(); } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.resx new file mode 100644 index 0000000..a0623c8 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.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/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs new file mode 100644 index 0000000..d1e31f3 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.Designer.cs @@ -0,0 +1,123 @@ +namespace ProjectPassengerTransportation.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() + { + labelLicensePlate = new Label(); + textBoxLicensePlate = new TextBox(); + labelBusTypeName = new Label(); + buttonSave = new Button(); + buttonCancel = new Button(); + comboBoxBusType = new ComboBox(); + SuspendLayout(); + // + // labelLicensePlate + // + labelLicensePlate.AutoSize = true; + labelLicensePlate.Location = new Point(27, 34); + labelLicensePlate.Name = "labelLicensePlate"; + labelLicensePlate.Size = new Size(107, 30); + labelLicensePlate.TabIndex = 0; + labelLicensePlate.Text = "Госномер"; + // + // textBoxLicensePlate + // + textBoxLicensePlate.Location = new Point(231, 31); + textBoxLicensePlate.MaxLength = 10; + textBoxLicensePlate.Name = "textBoxLicensePlate"; + textBoxLicensePlate.Size = new Size(240, 35); + textBoxLicensePlate.TabIndex = 1; + // + // labelBusTypeName + // + labelBusTypeName.AutoSize = true; + labelBusTypeName.Location = new Point(27, 99); + labelBusTypeName.Name = "labelBusTypeName"; + labelBusTypeName.Size = new Size(180, 30); + labelBusTypeName.TabIndex = 2; + labelBusTypeName.Text = "Модель автобуса"; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(72, 164); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(135, 50); + buttonSave.TabIndex = 6; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(284, 164); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(135, 50); + buttonCancel.TabIndex = 7; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // comboBoxBusType + // + comboBoxBusType.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxBusType.FormattingEnabled = true; + comboBoxBusType.Location = new Point(231, 96); + comboBoxBusType.Name = "comboBoxBusType"; + comboBoxBusType.Size = new Size(240, 38); + comboBoxBusType.TabIndex = 8; + // + // FormBus + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(506, 226); + Controls.Add(comboBoxBusType); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelBusTypeName); + Controls.Add(textBoxLicensePlate); + Controls.Add(labelLicensePlate); + Name = "FormBus"; + StartPosition = FormStartPosition.CenterParent; + Text = "Автобус"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelLicensePlate; + private TextBox textBoxLicensePlate; + private Label labelBusTypeName; + private Button buttonSave; + private Button buttonCancel; + private ComboBox comboBoxBusType; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs new file mode 100644 index 0000000..0cc6127 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs @@ -0,0 +1,73 @@ +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Entities.Enums; +using ProjectPassengerTransportation.Repositories; + +namespace ProjectPassengerTransportation.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)); + } + + textBoxLicensePlate.Text = bus.LicensePlate; + comboBoxBusType.SelectedItem = bus.Type; + _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)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxLicensePlate.Text) || comboBoxBusType.SelectedIndex < 1) + { + 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) => Bus.CreateEntity(id, textBoxLicensePlate.Text, (BusType)comboBoxBusType.SelectedItem!); + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.resx similarity index 93% rename from ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.resx rename to ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.resx index 1af7de1..af32865 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Form1.resx +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.resx @@ -1,17 +1,17 @@  - diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBuses.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBuses.Designer.cs new file mode 100644 index 0000000..0c253b6 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBuses.Designer.cs @@ -0,0 +1,127 @@ +namespace ProjectPassengerTransportation.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() + { + panelButtons = new Panel(); + buttonDelete = new Button(); + buttonUpdate = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panelButtons.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panelButtons + // + panelButtons.Controls.Add(buttonDelete); + panelButtons.Controls.Add(buttonUpdate); + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(845, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(196, 481); + panelButtons.TabIndex = 0; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.minus; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(50, 264); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(100, 100); + buttonDelete.TabIndex = 2; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonUpdate + // + buttonUpdate.BackgroundImage = Properties.Resources.edit; + buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpdate.Location = new Point(50, 145); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(100, 100); + buttonUpdate.TabIndex = 1; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += ButtonUpdate_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(50, 29); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(100, 100); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 72; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(845, 481); + dataGridViewData.TabIndex = 1; + // + // FormBuses + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1041, 481); + Controls.Add(dataGridViewData); + Controls.Add(panelButtons); + Name = "FormBuses"; + StartPosition = FormStartPosition.CenterParent; + Text = "Автобусы"; + Load += FormBuses_Load; + panelButtons.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panelButtons; + private Button buttonDelete; + private Button buttonUpdate; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBuses.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBuses.cs new file mode 100644 index 0000000..cdd40cb --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBuses.cs @@ -0,0 +1,102 @@ +using ProjectPassengerTransportation.Repositories; +using Unity; + +namespace ProjectPassengerTransportation.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; + } + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBuses.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBuses.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/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/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.Designer.cs new file mode 100644 index 0000000..3de0bc3 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.Designer.cs @@ -0,0 +1,144 @@ +namespace ProjectPassengerTransportation.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() + { + comboBoxPost = new ComboBox(); + buttonCancel = new Button(); + buttonSave = new Button(); + textBoxLastName = new TextBox(); + labelLastName = new Label(); + textBoxFirstName = new TextBox(); + labelFirstName = new Label(); + labelPost = new Label(); + SuspendLayout(); + // + // comboBoxPost + // + comboBoxPost.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxPost.FormattingEnabled = true; + comboBoxPost.Location = new Point(232, 166); + comboBoxPost.Name = "comboBoxPost"; + comboBoxPost.Size = new Size(240, 38); + comboBoxPost.TabIndex = 0; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(297, 230); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(135, 50); + buttonCancel.TabIndex = 14; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(80, 230); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(135, 50); + buttonSave.TabIndex = 13; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // textBoxLastName + // + textBoxLastName.Location = new Point(232, 94); + textBoxLastName.Name = "textBoxLastName"; + textBoxLastName.Size = new Size(240, 35); + textBoxLastName.TabIndex = 11; + // + // labelLastName + // + labelLastName.AutoSize = true; + labelLastName.Location = new Point(28, 97); + labelLastName.Name = "labelLastName"; + labelLastName.Size = new Size(100, 30); + labelLastName.TabIndex = 10; + labelLastName.Text = "Фамилия"; + // + // textBoxFirstName + // + textBoxFirstName.Location = new Point(232, 29); + textBoxFirstName.MaxLength = 10; + textBoxFirstName.Name = "textBoxFirstName"; + textBoxFirstName.Size = new Size(240, 35); + textBoxFirstName.TabIndex = 9; + // + // labelFirstName + // + labelFirstName.AutoSize = true; + labelFirstName.Location = new Point(28, 32); + labelFirstName.Name = "labelFirstName"; + labelFirstName.Size = new Size(55, 30); + labelFirstName.TabIndex = 8; + labelFirstName.Text = "Имя"; + // + // labelPost + // + labelPost.AutoSize = true; + labelPost.Location = new Point(28, 169); + labelPost.Name = "labelPost"; + labelPost.Size = new Size(121, 30); + labelPost.TabIndex = 15; + labelPost.Text = "Должность"; + // + // FormEmployee + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(506, 302); + Controls.Add(labelPost); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxLastName); + Controls.Add(labelLastName); + Controls.Add(textBoxFirstName); + Controls.Add(labelFirstName); + Controls.Add(comboBoxPost); + Name = "FormEmployee"; + Text = "FormEmployee"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxPost; + private Button buttonCancel; + private Button buttonSave; + private TextBox textBoxLastName; + private Label labelLastName; + private TextBox textBoxFirstName; + private Label labelFirstName; + private Label labelPost; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.cs new file mode 100644 index 0000000..1300111 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.cs @@ -0,0 +1,77 @@ +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Entities.Enums; +using ProjectPassengerTransportation.Repositories; + +namespace ProjectPassengerTransportation.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.Post; + _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, (EmployeePost)comboBoxPost.SelectedItem!); + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/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/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.Designer.cs new file mode 100644 index 0000000..ada3dc0 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.Designer.cs @@ -0,0 +1,126 @@ +namespace ProjectPassengerTransportation.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() + { + dataGridViewData = new DataGridView(); + panelButtons = new Panel(); + buttonDelete = new Button(); + buttonUpdate = new Button(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + panelButtons.SuspendLayout(); + SuspendLayout(); + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 72; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(845, 481); + dataGridViewData.TabIndex = 3; + // + // panelButtons + // + panelButtons.Controls.Add(buttonDelete); + panelButtons.Controls.Add(buttonUpdate); + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(845, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(196, 481); + panelButtons.TabIndex = 2; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.minus; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(50, 264); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(100, 100); + buttonDelete.TabIndex = 2; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonUpdate + // + buttonUpdate.BackgroundImage = Properties.Resources.edit; + buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpdate.Location = new Point(50, 145); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(100, 100); + buttonUpdate.TabIndex = 1; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += ButtonUpdate_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(50, 29); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(100, 100); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormEmployees + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1041, 481); + Controls.Add(dataGridViewData); + Controls.Add(panelButtons); + Name = "FormEmployees"; + Text = "Работники"; + Load += FormEmployees_Load; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panelButtons.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panelButtons; + private Button buttonDelete; + private Button buttonUpdate; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.cs new file mode 100644 index 0000000..f7fcb92 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.cs @@ -0,0 +1,101 @@ +using ProjectPassengerTransportation.Repositories; +using Unity; + +namespace ProjectPassengerTransportation.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; + } + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/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/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.Designer.cs new file mode 100644 index 0000000..4eb5e8a --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.Designer.cs @@ -0,0 +1,228 @@ +namespace ProjectPassengerTransportation.Forms +{ + partial class FormRouteList + { + /// + /// 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() + { + buttonCancel = new Button(); + buttonSave = new Button(); + numericUpDownConductorId = new NumericUpDown(); + labelConductorId = new Label(); + labelDriverId = new Label(); + labelStart = new Label(); + numericUpDownStartHour = new NumericUpDown(); + labelHours = new Label(); + labelMinutes = new Label(); + labelFinish = new Label(); + numericUpDownStartMin = new NumericUpDown(); + numericUpDownFinishMin = new NumericUpDown(); + numericUpDownFinishHour = new NumericUpDown(); + numericUpDownDriverId = new NumericUpDown(); + ((System.ComponentModel.ISupportInitialize)numericUpDownConductorId).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownStartHour).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownStartMin).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownFinishMin).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownFinishHour).BeginInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownDriverId).BeginInit(); + SuspendLayout(); + // + // buttonCancel + // + buttonCancel.Location = new Point(267, 341); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(135, 50); + buttonCancel.TabIndex = 15; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Location = new Point(78, 341); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(135, 50); + buttonSave.TabIndex = 14; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // numericUpDownConductorId + // + numericUpDownConductorId.Location = new Point(232, 272); + numericUpDownConductorId.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDownConductorId.Name = "numericUpDownConductorId"; + numericUpDownConductorId.Size = new Size(181, 35); + numericUpDownConductorId.TabIndex = 13; + numericUpDownConductorId.Value = new decimal(new int[] { 1, 0, 0, 0 }); + // + // labelConductorId + // + labelConductorId.AutoSize = true; + labelConductorId.Location = new Point(31, 274); + labelConductorId.Name = "labelConductorId"; + labelConductorId.Size = new Size(149, 30); + labelConductorId.TabIndex = 12; + labelConductorId.Text = "ID кондуктора"; + // + // labelDriverId + // + labelDriverId.AutoSize = true; + labelDriverId.Location = new Point(31, 196); + labelDriverId.Name = "labelDriverId"; + labelDriverId.Size = new Size(128, 30); + labelDriverId.TabIndex = 10; + labelDriverId.Text = "ID водителя"; + // + // labelStart + // + labelStart.AutoSize = true; + labelStart.Location = new Point(31, 50); + labelStart.Name = "labelStart"; + labelStart.Size = new Size(162, 30); + labelStart.TabIndex = 8; + labelStart.Text = "Начало работы"; + // + // numericUpDownStartHour + // + numericUpDownStartHour.Location = new Point(232, 48); + numericUpDownStartHour.Maximum = new decimal(new int[] { 23, 0, 0, 0 }); + numericUpDownStartHour.Name = "numericUpDownStartHour"; + numericUpDownStartHour.Size = new Size(63, 35); + numericUpDownStartHour.TabIndex = 16; + numericUpDownStartHour.Value = new decimal(new int[] { 8, 0, 0, 0 }); + // + // labelHours + // + labelHours.AutoSize = true; + labelHours.Location = new Point(232, 9); + labelHours.Name = "labelHours"; + labelHours.Size = new Size(63, 30); + labelHours.TabIndex = 17; + labelHours.Text = "Часы"; + // + // labelMinutes + // + labelMinutes.AutoSize = true; + labelMinutes.Location = new Point(339, 9); + labelMinutes.Name = "labelMinutes"; + labelMinutes.Size = new Size(90, 30); + labelMinutes.TabIndex = 18; + labelMinutes.Text = "Минуты"; + // + // labelFinish + // + labelFinish.AutoSize = true; + labelFinish.Location = new Point(31, 122); + labelFinish.Name = "labelFinish"; + labelFinish.Size = new Size(150, 30); + labelFinish.TabIndex = 19; + labelFinish.Text = "Конец работы"; + // + // numericUpDownStartMin + // + numericUpDownStartMin.Location = new Point(350, 48); + numericUpDownStartMin.Maximum = new decimal(new int[] { 59, 0, 0, 0 }); + numericUpDownStartMin.Name = "numericUpDownStartMin"; + numericUpDownStartMin.Size = new Size(63, 35); + numericUpDownStartMin.TabIndex = 20; + // + // numericUpDownFinishMin + // + numericUpDownFinishMin.Location = new Point(350, 120); + numericUpDownFinishMin.Maximum = new decimal(new int[] { 59, 0, 0, 0 }); + numericUpDownFinishMin.Name = "numericUpDownFinishMin"; + numericUpDownFinishMin.Size = new Size(63, 35); + numericUpDownFinishMin.TabIndex = 22; + // + // numericUpDownFinishHour + // + numericUpDownFinishHour.Location = new Point(232, 120); + numericUpDownFinishHour.Maximum = new decimal(new int[] { 23, 0, 0, 0 }); + numericUpDownFinishHour.Name = "numericUpDownFinishHour"; + numericUpDownFinishHour.Size = new Size(63, 35); + numericUpDownFinishHour.TabIndex = 21; + numericUpDownFinishHour.Value = new decimal(new int[] { 22, 0, 0, 0 }); + // + // numericUpDownDriverId + // + numericUpDownDriverId.Location = new Point(232, 194); + numericUpDownDriverId.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDownDriverId.Name = "numericUpDownDriverId"; + numericUpDownDriverId.Size = new Size(181, 35); + numericUpDownDriverId.TabIndex = 23; + numericUpDownDriverId.Value = new decimal(new int[] { 1, 0, 0, 0 }); + // + // FormRouteList + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(476, 416); + Controls.Add(numericUpDownDriverId); + Controls.Add(numericUpDownFinishMin); + Controls.Add(numericUpDownFinishHour); + Controls.Add(numericUpDownStartMin); + Controls.Add(labelFinish); + Controls.Add(labelMinutes); + Controls.Add(labelHours); + Controls.Add(numericUpDownStartHour); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(numericUpDownConductorId); + Controls.Add(labelConductorId); + Controls.Add(labelDriverId); + Controls.Add(labelStart); + Name = "FormRouteList"; + StartPosition = FormStartPosition.CenterParent; + Text = "Маршрутный лист"; + ((System.ComponentModel.ISupportInitialize)numericUpDownConductorId).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownStartHour).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownStartMin).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownFinishMin).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownFinishHour).EndInit(); + ((System.ComponentModel.ISupportInitialize)numericUpDownDriverId).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Button buttonCancel; + private Button buttonSave; + private NumericUpDown numericUpDownConductorId; + private Label labelConductorId; + private Label labelDriverId; + private Label labelStart; + private NumericUpDown numericUpDownStartHour; + private Label labelHours; + private Label labelMinutes; + private Label labelFinish; + private NumericUpDown numericUpDownStartMin; + private NumericUpDown numericUpDownFinishMin; + private NumericUpDown numericUpDownFinishHour; + private NumericUpDown numericUpDownDriverId; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs new file mode 100644 index 0000000..e2095ce --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs @@ -0,0 +1,74 @@ +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Repositories; + +namespace ProjectPassengerTransportation.Forms +{ + public partial class FormRouteList : Form + { + private readonly IRouteListRepository _routeListRepository; + + private int? _routeListId; + + public int Id + { + set + { + try + { + var routeList = _routeListRepository.ReadRouteListById(value); + if (routeList == null) + { + throw new InvalidDataException(nameof(routeList)); + } + + numericUpDownStartHour.Value = routeList.Start.Hour; + numericUpDownStartMin.Value = routeList.Start.Minute; + numericUpDownFinishHour.Value = routeList.Finish.Hour; + numericUpDownFinishMin.Value = routeList.Finish.Minute; + numericUpDownDriverId.Value = routeList.DriverId; + numericUpDownConductorId.Value = routeList.ConductorId; + _routeListId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormRouteList(IRouteListRepository routeListRepository) + { + InitializeComponent(); + _routeListRepository = routeListRepository ?? throw new ArgumentNullException(nameof(routeListRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (_routeListId.HasValue) + { + _routeListRepository.UpdateRouteList(CreateRouteList(_routeListId.Value)); + } + + else + { + _routeListRepository.CreateRouteList(CreateRouteList(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private RouteList CreateRouteList(int id) => RouteList.CreateEntity(id, + new TimeOnly(Convert.ToInt32(numericUpDownStartHour.Value), Convert.ToInt32(numericUpDownStartMin.Value)), + new TimeOnly(Convert.ToInt32(numericUpDownFinishHour.Value), Convert.ToInt32(numericUpDownFinishMin.Value)), + Convert.ToInt32(numericUpDownDriverId.Value), Convert.ToInt32(numericUpDownConductorId.Value)); + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.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/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.Designer.cs new file mode 100644 index 0000000..d99174d --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.Designer.cs @@ -0,0 +1,127 @@ +namespace ProjectPassengerTransportation.Forms +{ + partial class FormRouteLists + { + /// + /// 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(); + panelButtons = new Panel(); + buttonDelete = new Button(); + buttonUpdate = new Button(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + panelButtons.SuspendLayout(); + SuspendLayout(); + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 72; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(845, 481); + dataGridViewData.TabIndex = 3; + // + // panelButtons + // + panelButtons.Controls.Add(buttonDelete); + panelButtons.Controls.Add(buttonUpdate); + panelButtons.Controls.Add(buttonAdd); + panelButtons.Dock = DockStyle.Right; + panelButtons.Location = new Point(845, 0); + panelButtons.Name = "panelButtons"; + panelButtons.Size = new Size(196, 481); + panelButtons.TabIndex = 2; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.minus; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(50, 264); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(100, 100); + buttonDelete.TabIndex = 2; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonUpdate + // + buttonUpdate.BackgroundImage = Properties.Resources.edit; + buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpdate.Location = new Point(50, 145); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(100, 100); + buttonUpdate.TabIndex = 1; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += ButtonUpdate_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(50, 29); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(100, 100); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormRouteLists + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1041, 481); + Controls.Add(dataGridViewData); + Controls.Add(panelButtons); + Name = "FormRouteLists"; + StartPosition = FormStartPosition.CenterParent; + Text = "Маршрутные листы"; + Load += FormRouteLists_Load; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panelButtons.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panelButtons; + private Button buttonDelete; + private Button buttonUpdate; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.cs new file mode 100644 index 0000000..e9a3e80 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.cs @@ -0,0 +1,102 @@ +using ProjectPassengerTransportation.Repositories; +using Unity; + +namespace ProjectPassengerTransportation.Forms +{ + public partial class FormRouteLists : Form + { + private readonly IUnityContainer _container; + + private readonly IRouteListRepository _routeListRepository; + + public FormRouteLists(IUnityContainer container, IRouteListRepository routeListRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _routeListRepository = routeListRepository ?? throw new ArgumentNullException(nameof(routeListRepository)); + } + + private void FormRouteLists_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 + { + _routeListRepository.DeleteRouteList(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _routeListRepository.ReadRouteLists(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteLists.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/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.Designer.cs new file mode 100644 index 0000000..47e8015 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.Designer.cs @@ -0,0 +1,175 @@ +namespace ProjectPassengerTransportation.Forms +{ + partial class FormStartingShift + { + /// + /// 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() + { + labelRouteList = new Label(); + comboBoxRouteList = new ComboBox(); + comboBoxBus = new ComboBox(); + labelBus = new Label(); + buttonCancel = new Button(); + buttonSave = new Button(); + groupBox1 = new GroupBox(); + dataGridViewData = new DataGridView(); + ColumnEmployee = new DataGridViewComboBoxColumn(); + ColumnWorkHours = new DataGridViewTextBoxColumn(); + groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // labelRouteList + // + labelRouteList.AutoSize = true; + labelRouteList.Location = new Point(29, 34); + labelRouteList.Name = "labelRouteList"; + labelRouteList.Size = new Size(103, 30); + labelRouteList.TabIndex = 0; + labelRouteList.Text = "Маршрут"; + // + // comboBoxRouteList + // + comboBoxRouteList.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxRouteList.FormattingEnabled = true; + comboBoxRouteList.Location = new Point(176, 31); + comboBoxRouteList.Name = "comboBoxRouteList"; + comboBoxRouteList.Size = new Size(245, 38); + comboBoxRouteList.TabIndex = 1; + // + // comboBoxBus + // + comboBoxBus.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxBus.FormattingEnabled = true; + comboBoxBus.Location = new Point(176, 95); + comboBoxBus.Name = "comboBoxBus"; + comboBoxBus.Size = new Size(245, 38); + comboBoxBus.TabIndex = 5; + // + // labelBus + // + labelBus.AutoSize = true; + labelBus.Location = new Point(29, 98); + labelBus.Name = "labelBus"; + labelBus.Size = new Size(91, 30); + labelBus.TabIndex = 4; + labelBus.Text = "Автобус"; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(256, 441); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(135, 50); + buttonCancel.TabIndex = 17; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(67, 441); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(135, 50); + buttonSave.TabIndex = 16; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + // + // groupBox1 + // + groupBox1.Controls.Add(dataGridViewData); + groupBox1.Location = new Point(29, 163); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new Size(392, 254); + groupBox1.TabIndex = 18; + groupBox1.TabStop = false; + groupBox1.Text = "Сотрудники"; + // + // dataGridViewData + // + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Columns.AddRange(new DataGridViewColumn[] { ColumnEmployee, ColumnWorkHours }); + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(3, 31); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 72; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(386, 220); + dataGridViewData.TabIndex = 0; + // + // ColumnEmployee + // + ColumnEmployee.HeaderText = "Работник"; + ColumnEmployee.MinimumWidth = 9; + ColumnEmployee.Name = "ColumnEmployee"; + ColumnEmployee.Width = 175; + // + // ColumnWorkHours + // + ColumnWorkHours.HeaderText = "Часы работы"; + ColumnWorkHours.MinimumWidth = 9; + ColumnWorkHours.Name = "ColumnWorkHours"; + ColumnWorkHours.Width = 175; + // + // FormStartingShift + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(456, 524); + Controls.Add(groupBox1); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(comboBoxBus); + Controls.Add(labelBus); + Controls.Add(comboBoxRouteList); + Controls.Add(labelRouteList); + Name = "FormStartingShift"; + StartPosition = FormStartPosition.CenterParent; + Text = "Начало смены"; + groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelRouteList; + private ComboBox comboBoxRouteList; + private ComboBox comboBoxBus; + private Label labelBus; + private Button buttonCancel; + private Button buttonSave; + private GroupBox groupBox1; + private DataGridView dataGridViewData; + private DataGridViewComboBoxColumn ColumnEmployee; + private DataGridViewTextBoxColumn ColumnWorkHours; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs new file mode 100644 index 0000000..0b4c4dc --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs @@ -0,0 +1,10 @@ +namespace ProjectPassengerTransportation.Forms +{ + public partial class FormStartingShift : Form + { + public FormStartingShift() + { + InitializeComponent(); + } + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.resx new file mode 100644 index 0000000..8a33517 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs index b08c960..ca5032d 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs @@ -1,3 +1,8 @@ +using ProjectPassengerTransportation.Repositories.Implementations; +using ProjectPassengerTransportation.Repositories; +using Unity.Lifetime; +using Unity; + namespace ProjectPassengerTransportation { internal static class Program @@ -11,7 +16,19 @@ namespace ProjectPassengerTransportation // 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()); + + return container; + } + } } \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/ProjectPassengerTransportation.csproj b/ProjectPassengerTransportation/ProjectPassengerTransportation/ProjectPassengerTransportation.csproj index 663fdb8..accbdf0 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/ProjectPassengerTransportation.csproj +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/ProjectPassengerTransportation.csproj @@ -8,4 +8,23 @@ enable + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Properties/Resources.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Properties/Resources.Designer.cs new file mode 100644 index 0000000..ccedf9d --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectPassengerTransportation.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("ProjectPassengerTransportation.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 _78 { + get { + object obj = ResourceManager.GetObject("78", 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)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap minus { + get { + object obj = ResourceManager.GetObject("minus", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap plus { + get { + object obj = ResourceManager.GetObject("plus", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Properties/Resources.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Properties/Resources.resx new file mode 100644 index 0000000..163719e --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/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\78.jpg;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 + + + ..\Resources\minus.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\plus.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IBusRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IBusRepository.cs new file mode 100644 index 0000000..394be70 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IBusRepository.cs @@ -0,0 +1,16 @@ +using ProjectPassengerTransportation.Entities; + +namespace ProjectPassengerTransportation.Repositories; + +public interface IBusRepository +{ + IEnumerable ReadBuses(); + + Bus ReadBusById(int busId); + + void CreateBus(Bus bus); + + void UpdateBus(Bus bus); + + void DeleteBus(int id); +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IEmployeeRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IEmployeeRepository.cs new file mode 100644 index 0000000..e7d5c8e --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IEmployeeRepository.cs @@ -0,0 +1,16 @@ +using ProjectPassengerTransportation.Entities; + +namespace ProjectPassengerTransportation.Repositories; + +public interface IEmployeeRepository +{ + IEnumerable ReadEmployees(); + + Employee ReadEmployeeById(int employeeId); + + void CreateEmployee(Employee employee); + + void UpdateEmployee(Employee employee); + + void DeleteEmployee(int id); +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IRouteListRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IRouteListRepository.cs new file mode 100644 index 0000000..67b8be1 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IRouteListRepository.cs @@ -0,0 +1,16 @@ +using ProjectPassengerTransportation.Entities; + +namespace ProjectPassengerTransportation.Repositories; + +public interface IRouteListRepository +{ + IEnumerable ReadRouteLists(); + + RouteList ReadRouteListById(int routeListId); + + void CreateRouteList(RouteList routeList); + + void UpdateRouteList(RouteList routeList); + + void DeleteRouteList(int id); +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShift.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShift.cs new file mode 100644 index 0000000..c10c3f3 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShift.cs @@ -0,0 +1,11 @@ +using ProjectPassengerTransportation.Entities; + +namespace ProjectPassengerTransportation.Repositories; + +public interface IStartingShift +{ + IEnumerable ReadShifts(DateTime? dateFrom = null, DateTime? dateTo = null, int? routeListId = null, + int? employeeId = null, int? busId = null); + + void CreateStartingShift(StartingShift startingShift); +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs new file mode 100644 index 0000000..1cbd805 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/BusRepository.cs @@ -0,0 +1,32 @@ +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Entities.Enums; + +namespace ProjectPassengerTransportation.Repositories.Implementations; + +public class BusRepository : IBusRepository +{ + public void CreateBus(Bus bus) + { + + } + + public void DeleteBus(int id) + { + + } + + public Bus ReadBusById(int busId) + { + return Bus.CreateEntity(0, string.Empty, BusType.None); + } + + public IEnumerable ReadBuses() + { + return []; + } + + public void UpdateBus(Bus bus) + { + + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/EmployeeRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/EmployeeRepository.cs new file mode 100644 index 0000000..6d6cccc --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/EmployeeRepository.cs @@ -0,0 +1,32 @@ +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Entities.Enums; + +namespace ProjectPassengerTransportation.Repositories.Implementations; + +public class EmployeeRepository : IEmployeeRepository +{ + public void CreateEmployee(Employee employee) + { + + } + + public void DeleteEmployee(int id) + { + + } + + public Employee ReadEmployeeById(int employeeId) + { + return Employee.CreateEntity(0, string.Empty, string.Empty, EmployeePost.None); + } + + public IEnumerable ReadEmployees() + { + return []; + } + + public void UpdateEmployee(Employee employee) + { + + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs new file mode 100644 index 0000000..b611ebc --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs @@ -0,0 +1,31 @@ +using ProjectPassengerTransportation.Entities; + +namespace ProjectPassengerTransportation.Repositories.Implementations; + +public class RouteListRepository : IRouteListRepository +{ + public void CreateRouteList(RouteList routeList) + { + + } + + public void DeleteRouteList(int id) + { + + } + + public RouteList ReadRouteListById(int routeListId) + { + return RouteList.CreateEntity(0, new TimeOnly(0, 0), new TimeOnly(0, 0), 0, 0); + } + + public IEnumerable ReadRouteLists() + { + return []; + } + + public void UpdateRouteList(RouteList routeList) + { + + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs new file mode 100644 index 0000000..cc17649 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs @@ -0,0 +1,17 @@ +using ProjectPassengerTransportation.Entities; + +namespace ProjectPassengerTransportation.Repositories.Implementations; + +public class StartingShiftRepository : IStartingShift +{ + public void CreateStartingShift(StartingShift startingShift) + { + + } + + public IEnumerable ReadShifts(DateTime? dateFrom = null, DateTime? dateTo = null, + int? routeListId = null, int? employeeId = null, int? busId = null) + { + return []; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/78.jpg b/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/78.jpg new file mode 100644 index 0000000..e701e95 Binary files /dev/null and b/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/78.jpg differ diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/edit.png b/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/edit.png new file mode 100644 index 0000000..e782409 Binary files /dev/null and b/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/edit.png differ diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/minus.jpg b/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/minus.jpg new file mode 100644 index 0000000..9de9451 Binary files /dev/null and b/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/minus.jpg differ diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/plus.jpg b/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/plus.jpg new file mode 100644 index 0000000..9a2bb36 Binary files /dev/null and b/ProjectPassengerTransportation/ProjectPassengerTransportation/Resources/plus.jpg differ