diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BrokenElements.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BrokenElements.cs new file mode 100644 index 0000000..18585b5 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/Enums/BrokenElements.cs @@ -0,0 +1,15 @@ +namespace ProjectPassengerTransportation.Entities.Enums; + +[Flags] +public enum BrokenElements +{ + None = 0, + + Wheels = 1, + + Headlights = 2, + + Engine = 4, + + Transmission = 8 +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs index 4c0a72f..1b56cec 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/GoToService.cs @@ -1,4 +1,6 @@ -namespace ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Entities.Enums; + +namespace ProjectPassengerTransportation.Entities; public class GoToService { @@ -6,16 +8,19 @@ public class GoToService public DateTime Date { get; private set; } + public BrokenElements BrokenElements { 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) + public static GoToService CreateOperation(int id, BrokenElements brokenElements, int price, int busId) { return new GoToService { Id = id, Date = DateTime.Now, + BrokenElements = brokenElements, Price = price, BusId = busId }; diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs index e8b4d04..65b8e3c 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/RouteList.cs @@ -8,19 +8,13 @@ public class RouteList 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) + public static RouteList CreateEntity(int id, TimeOnly start, TimeOnly finish) { return new RouteList { Id = id, Start = start, - Finish = finish, - DriverId = driverId, - ConductorId = conductorId + Finish = finish }; } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs index 3d5f342..f1735ba 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Entities/StartingShiftEmployee.cs @@ -2,19 +2,19 @@ public class StartingShiftEmployee { - public int Id { get; private set; } + public int StartingShiftId { get; private set; } public int EmployeeId { get; private set; } - public int WorkTime { get; private set; } + public int WorkHours { get; private set; } - public static StartingShiftEmployee CreateElement(int id, int employeeId, int workTime) + public static StartingShiftEmployee CreateElement(int startingShiftId, int employeeId, int workHours) { return new StartingShiftEmployee { - Id = id, + StartingShiftId = startingShiftId, EmployeeId = employeeId, - WorkTime = workTime + WorkHours = workHours }; } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.Designer.cs index a5d0373..bdf115b 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.Designer.cs @@ -30,12 +30,13 @@ { menuStrip1 = new MenuStrip(); справочникиToolStripMenuItem = new ToolStripMenuItem(); + EmployeesToolStripMenuItem = new ToolStripMenuItem(); + BusesToolStripMenuItem = new ToolStripMenuItem(); + RouteListsToolStripMenuItem = new ToolStripMenuItem(); операцииToolStripMenuItem = new ToolStripMenuItem(); + StartingShiftsToolStripMenuItem = new ToolStripMenuItem(); + GoToServicesToolStripMenuItem = new ToolStripMenuItem(); отчётыToolStripMenuItem = new ToolStripMenuItem(); - работникиToolStripMenuItem = new ToolStripMenuItem(); - автобусыToolStripMenuItem = new ToolStripMenuItem(); - маршрутыToolStripMenuItem = new ToolStripMenuItem(); - началоСменыToolStripMenuItem = new ToolStripMenuItem(); menuStrip1.SuspendLayout(); SuspendLayout(); // @@ -51,48 +52,59 @@ // // справочникиToolStripMenuItem // - справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { работникиToolStripMenuItem, автобусыToolStripMenuItem, маршрутыToolStripMenuItem }); + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { EmployeesToolStripMenuItem, BusesToolStripMenuItem, RouteListsToolStripMenuItem }); справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; справочникиToolStripMenuItem.Size = new Size(160, 34); справочникиToolStripMenuItem.Text = "Справочники"; // + // EmployeesToolStripMenuItem + // + EmployeesToolStripMenuItem.Name = "EmployeesToolStripMenuItem"; + EmployeesToolStripMenuItem.Size = new Size(236, 40); + EmployeesToolStripMenuItem.Text = "Работники"; + EmployeesToolStripMenuItem.Click += EmployeesToolStripMenuItem_Click; + // + // BusesToolStripMenuItem + // + BusesToolStripMenuItem.Name = "BusesToolStripMenuItem"; + BusesToolStripMenuItem.Size = new Size(236, 40); + BusesToolStripMenuItem.Text = "Автобусы"; + BusesToolStripMenuItem.Click += BusesToolStripMenuItem_Click; + // + // RouteListsToolStripMenuItem + // + RouteListsToolStripMenuItem.Name = "RouteListsToolStripMenuItem"; + RouteListsToolStripMenuItem.Size = new Size(236, 40); + RouteListsToolStripMenuItem.Text = "Маршруты"; + RouteListsToolStripMenuItem.Click += RouteListsToolStripMenuItem_Click; + // // операцииToolStripMenuItem // - операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { началоСменыToolStripMenuItem }); + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { StartingShiftsToolStripMenuItem, GoToServicesToolStripMenuItem }); операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; операцииToolStripMenuItem.Size = new Size(130, 34); операцииToolStripMenuItem.Text = "Операции"; // + // StartingShiftsToolStripMenuItem + // + StartingShiftsToolStripMenuItem.Name = "StartingShiftsToolStripMenuItem"; + StartingShiftsToolStripMenuItem.Size = new Size(315, 40); + StartingShiftsToolStripMenuItem.Text = "Начало смены"; + StartingShiftsToolStripMenuItem.Click += StartingShiftsToolStripMenuItem_Click; + // + // GoToServicesToolStripMenuItem + // + GoToServicesToolStripMenuItem.Name = "GoToServicesToolStripMenuItem"; + GoToServicesToolStripMenuItem.Size = new Size(315, 40); + GoToServicesToolStripMenuItem.Text = "Тех. обслуживание"; + GoToServicesToolStripMenuItem.Click += GoToServicesToolStripMenuItem_Click; + // // отчёты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); @@ -115,11 +127,12 @@ private MenuStrip menuStrip1; private ToolStripMenuItem справочникиToolStripMenuItem; - private ToolStripMenuItem работникиToolStripMenuItem; - private ToolStripMenuItem автобусыToolStripMenuItem; - private ToolStripMenuItem маршрутыToolStripMenuItem; + private ToolStripMenuItem EmployeesToolStripMenuItem; + private ToolStripMenuItem BusesToolStripMenuItem; + private ToolStripMenuItem RouteListsToolStripMenuItem; private ToolStripMenuItem операцииToolStripMenuItem; private ToolStripMenuItem отчётыToolStripMenuItem; - private ToolStripMenuItem началоСменыToolStripMenuItem; + private ToolStripMenuItem StartingShiftsToolStripMenuItem; + private ToolStripMenuItem GoToServicesToolStripMenuItem; } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.cs index e761066..764a3e8 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/FormPassengerTransportation.cs @@ -1,10 +1,76 @@ +using ProjectPassengerTransportation.Forms; +using Unity; + namespace ProjectPassengerTransportation { public partial class FormPassengerTransportation : Form { - public FormPassengerTransportation() + private readonly IUnityContainer _container; + + public FormPassengerTransportation(IUnityContainer container) { InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + } + + private void EmployeesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void BusesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void RouteListsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void StartingShiftsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void GoToServicesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs index 0cc6127..de4146e 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormBus.cs @@ -38,6 +38,7 @@ namespace ProjectPassengerTransportation.Forms { InitializeComponent(); _busRepository = busRepository ?? throw new ArgumentNullException(nameof(busRepository)); + comboBoxBusType.DataSource = Enum.GetValues(typeof(BusType)); } private void ButtonSave_Click(object sender, EventArgs e) diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.Designer.cs index 3de0bc3..1ffd92b 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployee.Designer.cs @@ -50,7 +50,7 @@ // buttonCancel // buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonCancel.Location = new Point(297, 230); + buttonCancel.Location = new Point(297, 224); buttonCancel.Name = "buttonCancel"; buttonCancel.Size = new Size(135, 50); buttonCancel.TabIndex = 14; @@ -61,7 +61,7 @@ // buttonSave // buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; - buttonSave.Location = new Point(80, 230); + buttonSave.Location = new Point(80, 224); buttonSave.Name = "buttonSave"; buttonSave.Size = new Size(135, 50); buttonSave.TabIndex = 13; @@ -115,7 +115,7 @@ // AutoScaleDimensions = new SizeF(12F, 30F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(506, 302); + ClientSize = new Size(506, 296); Controls.Add(labelPost); Controls.Add(buttonCancel); Controls.Add(buttonSave); @@ -125,6 +125,7 @@ Controls.Add(labelFirstName); Controls.Add(comboBoxPost); Name = "FormEmployee"; + StartPosition = FormStartPosition.CenterParent; Text = "FormEmployee"; ResumeLayout(false); PerformLayout(); diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.Designer.cs index ada3dc0..1f69ef7 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormEmployees.Designer.cs @@ -108,6 +108,7 @@ Controls.Add(dataGridViewData); Controls.Add(panelButtons); Name = "FormEmployees"; + StartPosition = FormStartPosition.CenterParent; Text = "Работники"; Load += FormEmployees_Load; ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.Designer.cs new file mode 100644 index 0000000..7677995 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.Designer.cs @@ -0,0 +1,169 @@ +namespace ProjectPassengerTransportation.Forms +{ + partial class FormGoToService + { + /// + /// 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() + { + comboBoxBus = new ComboBox(); + labelBus = new Label(); + buttonCancel = new Button(); + buttonSave = new Button(); + labelPrice = new Label(); + numericUpDownPrice = new NumericUpDown(); + checkedListBoxBrokenElements = new CheckedListBox(); + labelBrokenElement = new Label(); + dateTimePickerServiceDate = new DateTimePicker(); + labelDate = new Label(); + ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).BeginInit(); + SuspendLayout(); + // + // comboBoxBus + // + comboBoxBus.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxBus.FormattingEnabled = true; + comboBoxBus.Location = new Point(168, 389); + comboBoxBus.Name = "comboBoxBus"; + comboBoxBus.Size = new Size(245, 38); + comboBoxBus.TabIndex = 9; + // + // labelBus + // + labelBus.AutoSize = true; + labelBus.Location = new Point(25, 392); + labelBus.Name = "labelBus"; + labelBus.Size = new Size(91, 30); + labelBus.TabIndex = 8; + labelBus.Text = "Автобус"; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(241, 459); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(135, 50); + buttonCancel.TabIndex = 19; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(64, 459); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(135, 50); + buttonSave.TabIndex = 18; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // labelPrice + // + labelPrice.AutoSize = true; + labelPrice.Location = new Point(25, 312); + labelPrice.Name = "labelPrice"; + labelPrice.Size = new Size(116, 30); + labelPrice.TabIndex = 20; + labelPrice.Text = "Стоимость"; + // + // numericUpDownPrice + // + numericUpDownPrice.Location = new Point(168, 310); + numericUpDownPrice.Name = "numericUpDownPrice"; + numericUpDownPrice.Size = new Size(245, 35); + numericUpDownPrice.TabIndex = 21; + // + // checkedListBoxBrokenElements + // + checkedListBoxBrokenElements.FormattingEnabled = true; + checkedListBoxBrokenElements.Location = new Point(168, 102); + checkedListBoxBrokenElements.Name = "checkedListBoxBrokenElements"; + checkedListBoxBrokenElements.Size = new Size(247, 164); + checkedListBoxBrokenElements.TabIndex = 22; + // + // labelBrokenElement + // + labelBrokenElement.Location = new Point(25, 102); + labelBrokenElement.Name = "labelBrokenElement"; + labelBrokenElement.Size = new Size(128, 68); + labelBrokenElement.TabIndex = 23; + labelBrokenElement.Text = "Сломанная деталь"; + // + // dateTimePickerServiceDate + // + dateTimePickerServiceDate.Enabled = false; + dateTimePickerServiceDate.Location = new Point(168, 27); + dateTimePickerServiceDate.Name = "dateTimePickerServiceDate"; + dateTimePickerServiceDate.Size = new Size(247, 35); + dateTimePickerServiceDate.TabIndex = 24; + // + // labelDate + // + labelDate.AutoSize = true; + labelDate.Location = new Point(25, 31); + labelDate.Name = "labelDate"; + labelDate.Size = new Size(59, 30); + labelDate.TabIndex = 25; + labelDate.Text = "Дата"; + // + // FormGoToService + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(441, 521); + Controls.Add(labelDate); + Controls.Add(dateTimePickerServiceDate); + Controls.Add(labelBrokenElement); + Controls.Add(checkedListBoxBrokenElements); + Controls.Add(numericUpDownPrice); + Controls.Add(labelPrice); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(comboBoxBus); + Controls.Add(labelBus); + Name = "FormGoToService"; + StartPosition = FormStartPosition.CenterParent; + Text = "Тех. обслуживание"; + ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxBus; + private Label labelBus; + private Button buttonCancel; + private Button buttonSave; + private Label labelPrice; + private NumericUpDown numericUpDownPrice; + private CheckedListBox checkedListBoxBrokenElements; + private Label labelBrokenElement; + private DateTimePicker dateTimePickerServiceDate; + private Label labelDate; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.cs new file mode 100644 index 0000000..e39c947 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.cs @@ -0,0 +1,53 @@ +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Entities.Enums; +using ProjectPassengerTransportation.Repositories; + +namespace ProjectPassengerTransportation.Forms +{ + public partial class FormGoToService : Form + { + private readonly IGoToServiceRepository _goToServiceRepository; + + public FormGoToService(IGoToServiceRepository goToServiceRepository, IBusRepository busRepository) + { + InitializeComponent(); + _goToServiceRepository = goToServiceRepository ?? throw new ArgumentNullException(nameof(goToServiceRepository)); + comboBoxBus.DataSource = busRepository.ReadBuses(); + comboBoxBus.DisplayMember = "LicensePlate"; + comboBoxBus.ValueMember = "Id"; + foreach (var elem in Enum.GetValues(typeof(BrokenElements))) + { + checkedListBoxBrokenElements.Items.Add(elem); + } + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxBus.SelectedIndex < 0 || checkedListBoxBrokenElements.CheckedItems.Count == 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + BrokenElements brokenElements = BrokenElements.None; + foreach (var elem in checkedListBoxBrokenElements.CheckedItems) + { + brokenElements |= (BrokenElements)elem; + } + + _goToServiceRepository.CreateGoToService(GoToService.CreateOperation(0, + brokenElements, + Convert.ToInt32(numericUpDownPrice.Value), + (int)comboBoxBus.SelectedValue!)); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToService.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/FormGoToServices.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToServices.Designer.cs new file mode 100644 index 0000000..56120cc --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToServices.Designer.cs @@ -0,0 +1,113 @@ +namespace ProjectPassengerTransportation.Forms +{ + partial class FormGoToServices + { + /// + /// 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(); + 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 = 5; + // + // panelButtons + // + panelButtons.Controls.Add(buttonDelete); + 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 = 4; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.minus; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(50, 150); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(100, 100); + buttonDelete.TabIndex = 2; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_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; + // + // FormGoToServices + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1041, 481); + Controls.Add(dataGridViewData); + Controls.Add(panelButtons); + Name = "FormGoToServices"; + StartPosition = FormStartPosition.CenterParent; + Text = "Тех. обслуживания"; + Load += FormGoToServices_Load; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panelButtons.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panelButtons; + private Button buttonDelete; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToServices.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToServices.cs new file mode 100644 index 0000000..95a02e3 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToServices.cs @@ -0,0 +1,79 @@ +using ProjectPassengerTransportation.Repositories; +using Unity; + +namespace ProjectPassengerTransportation.Forms; + +public partial class FormGoToServices : Form +{ + private readonly IUnityContainer _container; + + private readonly IGoToServiceRepository _goToServiceRepository; + + public FormGoToServices(IUnityContainer container, IGoToServiceRepository goToServiceRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _goToServiceRepository = goToServiceRepository ?? throw new ArgumentNullException(nameof(goToServiceRepository)); + } + + private void FormGoToServices_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 + { + _goToServiceRepository.DeleteGoToService(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewData.DataSource = _goToServiceRepository.ReadServices(); + + 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/FormGoToServices.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToServices.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormGoToServices.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 index 4eb5e8a..5eabce9 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.Designer.cs @@ -30,9 +30,6 @@ { buttonCancel = new Button(); buttonSave = new Button(); - numericUpDownConductorId = new NumericUpDown(); - labelConductorId = new Label(); - labelDriverId = new Label(); labelStart = new Label(); numericUpDownStartHour = new NumericUpDown(); labelHours = new Label(); @@ -41,18 +38,16 @@ 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.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(267, 201); buttonCancel.Name = "buttonCancel"; buttonCancel.Size = new Size(135, 50); buttonCancel.TabIndex = 15; @@ -62,7 +57,8 @@ // // buttonSave // - buttonSave.Location = new Point(78, 341); + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(78, 201); buttonSave.Name = "buttonSave"; buttonSave.Size = new Size(135, 50); buttonSave.TabIndex = 14; @@ -70,33 +66,6 @@ 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; @@ -167,21 +136,11 @@ 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); + ClientSize = new Size(476, 265); Controls.Add(numericUpDownFinishMin); Controls.Add(numericUpDownFinishHour); Controls.Add(numericUpDownStartMin); @@ -191,19 +150,14 @@ 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(); } @@ -212,9 +166,6 @@ private Button buttonCancel; private Button buttonSave; - private NumericUpDown numericUpDownConductorId; - private Label labelConductorId; - private Label labelDriverId; private Label labelStart; private NumericUpDown numericUpDownStartHour; private Label labelHours; @@ -223,6 +174,5 @@ 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 index e2095ce..8d835c0 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormRouteList.cs @@ -25,8 +25,6 @@ namespace ProjectPassengerTransportation.Forms 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) @@ -68,7 +66,6 @@ namespace ProjectPassengerTransportation.Forms 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)); + new TimeOnly(Convert.ToInt32(numericUpDownFinishHour.Value), Convert.ToInt32(numericUpDownFinishMin.Value))); } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.Designer.cs index 47e8015..e0884db 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.Designer.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.Designer.cs @@ -34,18 +34,20 @@ labelBus = new Label(); buttonCancel = new Button(); buttonSave = new Button(); - groupBox1 = new GroupBox(); - dataGridViewData = new DataGridView(); - ColumnEmployee = new DataGridViewComboBoxColumn(); + groupBoxEmployees = new GroupBox(); + dataGridViewEmployees = new DataGridView(); + ColumnEmployees = new DataGridViewComboBoxColumn(); ColumnWorkHours = new DataGridViewTextBoxColumn(); - groupBox1.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + labelDate = new Label(); + dateTimePickerShiftDate = new DateTimePicker(); + groupBoxEmployees.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewEmployees).BeginInit(); SuspendLayout(); // // labelRouteList // labelRouteList.AutoSize = true; - labelRouteList.Location = new Point(29, 34); + labelRouteList.Location = new Point(36, 97); labelRouteList.Name = "labelRouteList"; labelRouteList.Size = new Size(103, 30); labelRouteList.TabIndex = 0; @@ -55,7 +57,7 @@ // comboBoxRouteList.DropDownStyle = ComboBoxStyle.DropDownList; comboBoxRouteList.FormattingEnabled = true; - comboBoxRouteList.Location = new Point(176, 31); + comboBoxRouteList.Location = new Point(183, 94); comboBoxRouteList.Name = "comboBoxRouteList"; comboBoxRouteList.Size = new Size(245, 38); comboBoxRouteList.TabIndex = 1; @@ -64,7 +66,7 @@ // comboBoxBus.DropDownStyle = ComboBoxStyle.DropDownList; comboBoxBus.FormattingEnabled = true; - comboBoxBus.Location = new Point(176, 95); + comboBoxBus.Location = new Point(183, 158); comboBoxBus.Name = "comboBoxBus"; comboBoxBus.Size = new Size(245, 38); comboBoxBus.TabIndex = 5; @@ -72,7 +74,7 @@ // labelBus // labelBus.AutoSize = true; - labelBus.Location = new Point(29, 98); + labelBus.Location = new Point(36, 161); labelBus.Name = "labelBus"; labelBus.Size = new Size(91, 30); labelBus.TabIndex = 4; @@ -81,55 +83,57 @@ // buttonCancel // buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonCancel.Location = new Point(256, 441); + buttonCancel.Location = new Point(256, 513); buttonCancel.Name = "buttonCancel"; buttonCancel.Size = new Size(135, 50); buttonCancel.TabIndex = 17; buttonCancel.Text = "Отмена"; buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; // // buttonSave // buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; - buttonSave.Location = new Point(67, 441); + buttonSave.Location = new Point(67, 513); buttonSave.Name = "buttonSave"; buttonSave.Size = new Size(135, 50); buttonSave.TabIndex = 16; buttonSave.Text = "Сохранить"; buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; // - // groupBox1 + // groupBoxEmployees // - 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 = "Сотрудники"; + groupBoxEmployees.Controls.Add(dataGridViewEmployees); + groupBoxEmployees.Location = new Point(36, 226); + groupBoxEmployees.Name = "groupBoxEmployees"; + groupBoxEmployees.Size = new Size(392, 254); + groupBoxEmployees.TabIndex = 18; + groupBoxEmployees.TabStop = false; + groupBoxEmployees.Text = "Сотрудники"; // - // dataGridViewData + // dataGridViewEmployees // - 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; + dataGridViewEmployees.AllowUserToResizeColumns = false; + dataGridViewEmployees.AllowUserToResizeRows = false; + dataGridViewEmployees.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewEmployees.Columns.AddRange(new DataGridViewColumn[] { ColumnEmployees, ColumnWorkHours }); + dataGridViewEmployees.Dock = DockStyle.Fill; + dataGridViewEmployees.Location = new Point(3, 31); + dataGridViewEmployees.MultiSelect = false; + dataGridViewEmployees.Name = "dataGridViewEmployees"; + dataGridViewEmployees.RowHeadersVisible = false; + dataGridViewEmployees.RowHeadersWidth = 72; + dataGridViewEmployees.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewEmployees.Size = new Size(386, 220); + dataGridViewEmployees.TabIndex = 0; // - // ColumnEmployee + // ColumnEmployees // - ColumnEmployee.HeaderText = "Работник"; - ColumnEmployee.MinimumWidth = 9; - ColumnEmployee.Name = "ColumnEmployee"; - ColumnEmployee.Width = 175; + ColumnEmployees.HeaderText = "Работник"; + ColumnEmployees.MinimumWidth = 9; + ColumnEmployees.Name = "ColumnEmployees"; + ColumnEmployees.Width = 175; // // ColumnWorkHours // @@ -138,12 +142,31 @@ ColumnWorkHours.Name = "ColumnWorkHours"; ColumnWorkHours.Width = 175; // + // labelDate + // + labelDate.AutoSize = true; + labelDate.Location = new Point(36, 32); + labelDate.Name = "labelDate"; + labelDate.Size = new Size(59, 30); + labelDate.TabIndex = 27; + labelDate.Text = "Дата"; + // + // dateTimePickerShiftDate + // + dateTimePickerShiftDate.Enabled = false; + dateTimePickerShiftDate.Location = new Point(179, 28); + dateTimePickerShiftDate.Name = "dateTimePickerShiftDate"; + dateTimePickerShiftDate.Size = new Size(247, 35); + dateTimePickerShiftDate.TabIndex = 26; + // // FormStartingShift // AutoScaleDimensions = new SizeF(12F, 30F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(456, 524); - Controls.Add(groupBox1); + ClientSize = new Size(456, 596); + Controls.Add(labelDate); + Controls.Add(dateTimePickerShiftDate); + Controls.Add(groupBoxEmployees); Controls.Add(buttonCancel); Controls.Add(buttonSave); Controls.Add(comboBoxBus); @@ -153,8 +176,8 @@ Name = "FormStartingShift"; StartPosition = FormStartPosition.CenterParent; Text = "Начало смены"; - groupBox1.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + groupBoxEmployees.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewEmployees).EndInit(); ResumeLayout(false); PerformLayout(); } @@ -167,9 +190,11 @@ private Label labelBus; private Button buttonCancel; private Button buttonSave; - private GroupBox groupBox1; - private DataGridView dataGridViewData; - private DataGridViewComboBoxColumn ColumnEmployee; + private GroupBox groupBoxEmployees; + private DataGridView dataGridViewEmployees; + private Label labelDate; + private DateTimePicker dateTimePickerShiftDate; + private DataGridViewComboBoxColumn ColumnEmployees; private DataGridViewTextBoxColumn ColumnWorkHours; } } \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs index 0b4c4dc..c246c3d 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.cs @@ -1,10 +1,70 @@ -namespace ProjectPassengerTransportation.Forms +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Repositories; + +namespace ProjectPassengerTransportation.Forms { public partial class FormStartingShift : Form { - public FormStartingShift() + private readonly IStartingShiftRepository _startingShiftRepository; + public FormStartingShift(IStartingShiftRepository startingShiftRepository, + IRouteListRepository routeListRepository, + IBusRepository busRepository, + IEmployeeRepository employeeRepository) { InitializeComponent(); + _startingShiftRepository = startingShiftRepository ?? throw new ArgumentNullException(nameof(startingShiftRepository)); + comboBoxRouteList.DataSource = routeListRepository.ReadRouteLists(); + comboBoxRouteList.DisplayMember = "Id"; + comboBoxRouteList.ValueMember = "Id"; + comboBoxBus.DataSource = busRepository.ReadBuses(); + comboBoxBus.DisplayMember = "LicensePlate"; + comboBoxBus.ValueMember = "Id"; + ColumnEmployees.DataSource = employeeRepository.ReadEmployees(); + ColumnEmployees.DisplayMember = "FirstName"; + ColumnEmployees.ValueMember = "Id"; + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (dataGridViewEmployees.RowCount < 1 || + comboBoxRouteList.SelectedIndex < 0 || + comboBoxBus.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + _startingShiftRepository.CreateStartingShift(StartingShift.CreateOperation(0, + (int)comboBoxRouteList.SelectedValue!, + (int)comboBoxBus.SelectedValue!, + CreateListStartingShiftEmployeeFromDataGrid())); + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private List CreateListStartingShiftEmployeeFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridViewEmployees.Rows) + { + if (row.Cells["ColumnFeed"].Value == null || + row.Cells["ColumnCount"].Value == null) + { + continue; + } + list.Add(StartingShiftEmployee.CreateElement(0, + Convert.ToInt32(row.Cells["ColumnEmployees"].Value), + Convert.ToInt32(row.Cells["ColumnWorkHours"].Value))); + } + return list; } } } diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.resx index 8a33517..bffc86f 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.resx +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShift.resx @@ -117,7 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.Designer.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.Designer.cs new file mode 100644 index 0000000..ebf0698 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.Designer.cs @@ -0,0 +1,99 @@ +namespace ProjectPassengerTransportation.Forms +{ + partial class FormStartingShifts + { + /// + /// 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(); + 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 = 5; + // + // panelButtons + // + 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 = 4; + // + // 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; + // + // FormStartingShifts + // + AutoScaleDimensions = new SizeF(12F, 30F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1041, 481); + Controls.Add(dataGridViewData); + Controls.Add(panelButtons); + Name = "FormStartingShifts"; + StartPosition = FormStartPosition.CenterParent; + Text = "Смены"; + Load += FormStartingShifts_Load; + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + panelButtons.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewData; + private Panel panelButtons; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.cs new file mode 100644 index 0000000..9e27d9f --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.cs @@ -0,0 +1,44 @@ +using ProjectPassengerTransportation.Repositories; +using Unity; + +namespace ProjectPassengerTransportation.Forms; + +public partial class FormStartingShifts : Form +{ + private readonly IUnityContainer _container; + private readonly IStartingShiftRepository _startingShiftRepository; + + public FormStartingShifts(IUnityContainer container, IStartingShiftRepository startingShiftRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _startingShiftRepository = startingShiftRepository ?? throw new ArgumentNullException(nameof(startingShiftRepository)); + } + + private void FormStartingShifts_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 = _startingShiftRepository.ReadShifts(); +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.resx b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Forms/FormStartingShifts.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/Program.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs index ca5032d..ca70ad9 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Program.cs @@ -26,9 +26,10 @@ namespace ProjectPassengerTransportation 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/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IGoToServiceRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IGoToServiceRepository.cs new file mode 100644 index 0000000..78dbeea --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IGoToServiceRepository.cs @@ -0,0 +1,14 @@ +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Entities.Enums; + +namespace ProjectPassengerTransportation.Repositories; + +public interface IGoToServiceRepository +{ + IEnumerable ReadServices(DateTime? dateFrom = null, DateTime? dateTo = null, + BrokenElements BrokenElements = BrokenElements.None, int? price = null, int? busId = null); + + void DeleteGoToService(int id); + + void CreateGoToService(GoToService goToService); +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShift.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShiftRepository.cs similarity index 89% rename from ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShift.cs rename to ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShiftRepository.cs index c10c3f3..5cea988 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShift.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/IStartingShiftRepository.cs @@ -2,7 +2,7 @@ namespace ProjectPassengerTransportation.Repositories; -public interface IStartingShift +public interface IStartingShiftRepository { IEnumerable ReadShifts(DateTime? dateFrom = null, DateTime? dateTo = null, int? routeListId = null, int? employeeId = null, int? busId = null); diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/GoToServiceRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/GoToServiceRepository.cs new file mode 100644 index 0000000..62618ae --- /dev/null +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/GoToServiceRepository.cs @@ -0,0 +1,22 @@ +using ProjectPassengerTransportation.Entities; +using ProjectPassengerTransportation.Entities.Enums; + +namespace ProjectPassengerTransportation.Repositories.Implementations; + +public class GoToServiceRepository : IGoToServiceRepository +{ + public void CreateGoToService(GoToService goToService) + { + + } + + public void DeleteGoToService(int id) + { + + } + + public IEnumerable ReadServices(DateTime? dateFrom = null, DateTime? dateTo = null, BrokenElements BrokenElements = BrokenElements.None, int? price = null, int? busId = null) + { + return []; + } +} diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs index b611ebc..e0e1ed1 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/RouteListRepository.cs @@ -16,7 +16,7 @@ public class RouteListRepository : IRouteListRepository public RouteList ReadRouteListById(int routeListId) { - return RouteList.CreateEntity(0, new TimeOnly(0, 0), new TimeOnly(0, 0), 0, 0); + return RouteList.CreateEntity(0, new TimeOnly(0, 0), new TimeOnly(0, 0)); } public IEnumerable ReadRouteLists() diff --git a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs index cc17649..828e725 100644 --- a/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs +++ b/ProjectPassengerTransportation/ProjectPassengerTransportation/Repositories/Implementations/StartingShiftRepository.cs @@ -2,7 +2,7 @@ namespace ProjectPassengerTransportation.Repositories.Implementations; -public class StartingShiftRepository : IStartingShift +public class StartingShiftRepository : IStartingShiftRepository { public void CreateStartingShift(StartingShift startingShift) {