diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Bus.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Bus.cs new file mode 100644 index 0000000..3bdbd21 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Bus.cs @@ -0,0 +1,20 @@ +using ProjectPassengerTransfers.Entities.Enums; +namespace ProjectPassengerTransfers.Entities; + +public class Bus +{ + public int Id { get; private set; } + public BusModel BusModel { get; private set; } + public int SeatCount { get; private set; } + public static Bus CreateEntity(int id, BusModel busModel, int + seatCount) + { + return new Bus + { + Id = id, + BusModel = busModel, + SeatCount = seatCount, + }; + } + +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Enums/BusModel.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Enums/BusModel.cs new file mode 100644 index 0000000..713bf58 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Enums/BusModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectPassengerTransfers.Entities.Enums; + +public enum BusModel +{ + None = 0, + Small = 1, + Large = 2, + TwoStoried = 3, + Excursion = 4 +} + diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Enums/PassengerType.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Enums/PassengerType.cs new file mode 100644 index 0000000..a30ccf6 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Enums/PassengerType.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectPassengerTransfers.Entities.Enums; + +[Flags] +public enum PassengerType +{ + None = 0, + Child = 1, + Student = 2, + Adult = 4, + Pensioner = 8 +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Passenger.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Passenger.cs new file mode 100644 index 0000000..38064b9 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Passenger.cs @@ -0,0 +1,21 @@ + +using ProjectPassengerTransfers.Entities.Enums; +namespace ProjectPassengerTransfers.Entities; + +public class Passenger +{ + public int Id { get; private set; } + public PassengerType PassengerType { get; private set; } + public string Name { get; private set; } = string.Empty; + public string Surname { get; private set; } = string.Empty; + public static Passenger CreateEntity(int id, PassengerType passengerType, string name, string surname) + { + return new Passenger + { + Id = id, + PassengerType = passengerType, + Name = name, + Surname = surname + }; + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Route.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Route.cs new file mode 100644 index 0000000..b206708 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Route.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectPassengerTransfers.Entities; + +public class Route +{ + public int Id { get; private set; } + public string Name { get; private set; } = string.Empty; + public string DepartureCity { get; private set; } = string.Empty; + public string ArrivalCity { get; private set; } = string.Empty; + public int Distance { get; private set; } + public static Route CreateEntity(int id, string Name, string departureCity, + string arrivalCity, int distance) + { + return new Route + { + Id = id, + Name = Name ?? string.Empty, + DepartureCity = departureCity ?? string.Empty, + ArrivalCity = arrivalCity ?? string.Empty, + Distance = distance + }; + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Ticket.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Ticket.cs new file mode 100644 index 0000000..dc9990c --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Ticket.cs @@ -0,0 +1,19 @@ +namespace ProjectPassengerTransfers.Entities; + +public class Ticket +{ + public int Id { get; private set; } + public DateTime SaleDate { get; private set; } + public int PassengerId { get; private set; } + public IEnumerable TripTickets { get; private set; } = []; + public static Ticket CreateOperation(int id, int passengerId, IEnumerable tripTickets) + { + return new Ticket + { + Id = id, + SaleDate = DateTime.Now, + PassengerId = passengerId, + TripTickets = tripTickets + }; + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Trip.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Trip.cs new file mode 100644 index 0000000..98dd800 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/Trip.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectPassengerTransfers.Entities; + +public class Trip +{ + public int Id { get; private set; } + public DateTime Departure { get; private set; } + public DateTime Arrival { get; private set; } + public int Route { get; private set; } + public int Bus { get; private set; } + + public static Trip CreateOperation(int id, int route, int bus) + { + return new Trip + { + Id = id, + Departure = DateTime.Now, + Arrival = DateTime.Now, + Route = route, + Bus = bus + }; + } + +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/TripTicket.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/TripTicket.cs new file mode 100644 index 0000000..0b4d5db --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Entities/TripTicket.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectPassengerTransfers.Entities; + +public class TripTicket +{ + public int Id { get; private set; } + public int TicketId { get; private set; } + public int Count { get; private set; } + public static TripTicket CreateElement(int id, int ticketId, int count) + { + return new TripTicket + { + Id = id, + TicketId = ticketId, + Count = count + }; + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.Designer.cs deleted file mode 100644 index 0ad1496..0000000 --- a/ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectPassengerTransfers -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.cs deleted file mode 100644 index 58c4607..0000000 --- a/ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectPassengerTransfers -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.Designer.cs new file mode 100644 index 0000000..509f578 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.Designer.cs @@ -0,0 +1,138 @@ +namespace ProjectPassengerTransfers +{ + partial class FormPassengerTransfers + { + /// + /// 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(); + ToolStripMenuItemReferences = new ToolStripMenuItem(); + ToolStripMenuItemBus = new ToolStripMenuItem(); + ToolStripMenuItemRoute = new ToolStripMenuItem(); + ToolStripMenuItemPassenger = new ToolStripMenuItem(); + ToolStripMenuItemOperations = new ToolStripMenuItem(); + ToolStripMenuItemTrip = new ToolStripMenuItem(); + ToolStripMenuItemTicket = new ToolStripMenuItem(); + ToolStripMenuItemReport = new ToolStripMenuItem(); + menuStrip1.SuspendLayout(); + SuspendLayout(); + // + // menuStrip1 + // + menuStrip1.ImageScalingSize = new Size(20, 20); + menuStrip1.Items.AddRange(new ToolStripItem[] { ToolStripMenuItemReferences, ToolStripMenuItemOperations, ToolStripMenuItemReport }); + menuStrip1.Location = new Point(0, 0); + menuStrip1.Name = "menuStrip1"; + menuStrip1.Size = new Size(782, 28); + menuStrip1.TabIndex = 0; + menuStrip1.Text = "menuStrip1"; + // + // ToolStripMenuItemReferences + // + ToolStripMenuItemReferences.DropDownItems.AddRange(new ToolStripItem[] { ToolStripMenuItemBus, ToolStripMenuItemRoute, ToolStripMenuItemPassenger }); + ToolStripMenuItemReferences.Name = "ToolStripMenuItemReferences"; + ToolStripMenuItemReferences.Size = new Size(117, 24); + ToolStripMenuItemReferences.Text = "Справочники"; + // + // ToolStripMenuItemBus + // + ToolStripMenuItemBus.Name = "ToolStripMenuItemBus"; + ToolStripMenuItemBus.Size = new Size(224, 26); + ToolStripMenuItemBus.Text = "Автобус"; + ToolStripMenuItemBus.Click += BusesToolStripMenuItem_Click; + // + // ToolStripMenuItemRoute + // + ToolStripMenuItemRoute.Name = "ToolStripMenuItemRoute"; + ToolStripMenuItemRoute.Size = new Size(224, 26); + ToolStripMenuItemRoute.Text = "Маршрут"; + ToolStripMenuItemRoute.Click += RoutesToolStripMenuItem_Click; + // + // ToolStripMenuItemPassenger + // + ToolStripMenuItemPassenger.Name = "ToolStripMenuItemPassenger"; + ToolStripMenuItemPassenger.Size = new Size(224, 26); + ToolStripMenuItemPassenger.Text = "Пассажир"; + ToolStripMenuItemPassenger.Click += PassengersToolStripMenuItem_Click; + // + // ToolStripMenuItemOperations + // + ToolStripMenuItemOperations.DropDownItems.AddRange(new ToolStripItem[] { ToolStripMenuItemTrip, ToolStripMenuItemTicket }); + ToolStripMenuItemOperations.Name = "ToolStripMenuItemOperations"; + ToolStripMenuItemOperations.Size = new Size(95, 24); + ToolStripMenuItemOperations.Text = "Операции"; + // + // ToolStripMenuItemTrip + // + ToolStripMenuItemTrip.Name = "ToolStripMenuItemTrip"; + ToolStripMenuItemTrip.Size = new Size(224, 26); + ToolStripMenuItemTrip.Text = "Поездка"; + ToolStripMenuItemTrip.Click += TripsToolStripMenuItem_Click; + // + // ToolStripMenuItemTicket + // + ToolStripMenuItemTicket.Name = "ToolStripMenuItemTicket"; + ToolStripMenuItemTicket.Size = new Size(224, 26); + ToolStripMenuItemTicket.Text = "Билет"; + ToolStripMenuItemTicket.Click += TicketsToolStripMenuItem_Click; + // + // ToolStripMenuItemReport + // + ToolStripMenuItemReport.Name = "ToolStripMenuItemReport"; + ToolStripMenuItemReport.Size = new Size(73, 24); + ToolStripMenuItemReport.Text = "Отчёты"; + // + // FormPassengerTransfers + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = Properties.Resources.vokzal; + BackgroundImageLayout = ImageLayout.Stretch; + ClientSize = new Size(782, 403); + Controls.Add(menuStrip1); + MainMenuStrip = menuStrip1; + Name = "FormPassengerTransfers"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Междугородние пассажирские перевозки"; + menuStrip1.ResumeLayout(false); + menuStrip1.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip1; + private ToolStripMenuItem ToolStripMenuItemReferences; + private ToolStripMenuItem ToolStripMenuItemOperations; + private ToolStripMenuItem ToolStripMenuItemReport; + private ToolStripMenuItem ToolStripMenuItemBus; + private ToolStripMenuItem ToolStripMenuItemRoute; + private ToolStripMenuItem ToolStripMenuItemPassenger; + private ToolStripMenuItem ToolStripMenuItemTrip; + private ToolStripMenuItem ToolStripMenuItemTicket; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.cs new file mode 100644 index 0000000..5f8108a --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.cs @@ -0,0 +1,82 @@ +using ProjectPassengerTransfers.Forms; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace ProjectPassengerTransfers +{ + public partial class FormPassengerTransfers : Form + { + private readonly IUnityContainer _container; + public FormPassengerTransfers(IUnityContainer container) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + } + 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 RoutesToolStripMenuItem_Click(object sender, EventArgs + e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void PassengersToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void TripsToolStripMenuItem_Click(object sender, + EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void TicketsToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.resx new file mode 100644 index 0000000..a0623c8 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/FormPassengerTransfers.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/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.Designer.cs new file mode 100644 index 0000000..d1e3a32 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.Designer.cs @@ -0,0 +1,121 @@ +namespace ProjectPassengerTransfers.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() + { + labelBusModel = new Label(); + labelSeatCount = new Label(); + numericUpDownSeatCount = new NumericUpDown(); + buttonSave = new Button(); + buttonDel = new Button(); + comboBoxBusModel = new ComboBox(); + ((System.ComponentModel.ISupportInitialize)numericUpDownSeatCount).BeginInit(); + SuspendLayout(); + // + // labelBusModel + // + labelBusModel.AutoSize = true; + labelBusModel.Location = new Point(12, 9); + labelBusModel.Name = "labelBusModel"; + labelBusModel.Size = new Size(129, 20); + labelBusModel.TabIndex = 0; + labelBusModel.Text = "Модель автобуса"; + // + // labelSeatCount + // + labelSeatCount.AutoSize = true; + labelSeatCount.Location = new Point(12, 65); + labelSeatCount.Name = "labelSeatCount"; + labelSeatCount.Size = new Size(126, 20); + labelSeatCount.TabIndex = 1; + labelSeatCount.Text = "Количество мест"; + // + // numericUpDownSeatCount + // + numericUpDownSeatCount.Location = new Point(166, 65); + numericUpDownSeatCount.Name = "numericUpDownSeatCount"; + numericUpDownSeatCount.Size = new Size(162, 27); + numericUpDownSeatCount.TabIndex = 3; + // + // buttonSave + // + buttonSave.Location = new Point(73, 171); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(94, 29); + buttonSave.TabIndex = 4; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonDel + // + buttonDel.Location = new Point(295, 171); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(94, 29); + buttonDel.TabIndex = 5; + buttonDel.Text = "Отменить"; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += buttonCancel_Click; + // + // comboBoxBusModel + // + comboBoxBusModel.FormattingEnabled = true; + comboBoxBusModel.Location = new Point(166, 6); + comboBoxBusModel.Name = "comboBoxBusModel"; + comboBoxBusModel.Size = new Size(162, 28); + comboBoxBusModel.TabIndex = 6; + // + // FormBus + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(461, 251); + Controls.Add(comboBoxBusModel); + Controls.Add(buttonDel); + Controls.Add(buttonSave); + Controls.Add(numericUpDownSeatCount); + Controls.Add(labelSeatCount); + Controls.Add(labelBusModel); + Name = "FormBus"; + StartPosition = FormStartPosition.CenterParent; + Text = "Автобус"; + ((System.ComponentModel.ISupportInitialize)numericUpDownSeatCount).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelBusModel; + private Label labelSeatCount; + private NumericUpDown numericUpDownSeatCount; + private Button buttonSave; + private Button buttonDel; + private ComboBox comboBoxBusModel; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.cs new file mode 100644 index 0000000..8104f7e --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using ProjectPassengerTransfers.Entities; +using ProjectPassengerTransfers.Entities.Enums; +using ProjectPassengerTransfers.Repositories; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ProjectPassengerTransfers.Entities.Enums; + +namespace ProjectPassengerTransfers.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)); + } + comboBoxBusModel.SelectedItem = bus.BusModel; + numericUpDownSeatCount.Value = bus.SeatCount; + _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)); + comboBoxBusModel.DataSource = Enum.GetValues(typeof(BusModel)); + + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxBusModel.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, (BusModel)comboBoxBusModel.SelectedItem!, Convert.ToInt32(numericUpDownSeatCount.Value)); + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.resx similarity index 93% rename from ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.resx rename to ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.resx index 1af7de1..af32865 100644 --- a/ProjectPassengerTransfers/ProjectPassengerTransfers/Form1.resx +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBus.resx @@ -1,17 +1,17 @@  - diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBuses.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBuses.Designer.cs new file mode 100644 index 0000000..9873b12 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBuses.Designer.cs @@ -0,0 +1,128 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormBuses + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel = new Panel(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonUpd); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(693, 0); + panel.Name = "panel"; + panel.Size = new Size(107, 450); + panel.TabIndex = 0; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(8, 314); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(70, 70); + buttonDel.TabIndex = 2; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += buttonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.upd; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(8, 179); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(70, 70); + buttonUpd.TabIndex = 1; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += buttonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.add1; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(8, 50); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(70, 70); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += buttonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.RowTemplate.Height = 29; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(693, 450); + dataGridView.TabIndex = 1; + // + // FormBuses + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormBuses"; + StartPosition = FormStartPosition.CenterParent; + Text = "Автобусы"; + Load += FormBuses_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBuses.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBuses.cs new file mode 100644 index 0000000..5f1ee02 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBuses.cs @@ -0,0 +1,105 @@ +using ProjectPassengerTransfers.Repositories; +using Unity; + +namespace ProjectPassengerTransfers.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 buttonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void buttonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _busRepository.DeleteBus(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridView.DataSource = _busRepository.ReadBuses(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBuses.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormBuses.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/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/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.Designer.cs new file mode 100644 index 0000000..90237f2 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.Designer.cs @@ -0,0 +1,140 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormPassenger + { + /// + /// 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() + { + checkedListBoxPassengerType = new CheckedListBox(); + labelPassengerType = new Label(); + labelName = new Label(); + labelSurname = new Label(); + textBoxSurname = new TextBox(); + textBoxName = new TextBox(); + buttonCancel = new Button(); + buttonSave = new Button(); + SuspendLayout(); + // + // checkedListBoxPassengerType + // + checkedListBoxPassengerType.FormattingEnabled = true; + checkedListBoxPassengerType.Location = new Point(120, 12); + checkedListBoxPassengerType.Name = "checkedListBoxPassengerType"; + checkedListBoxPassengerType.Size = new Size(239, 114); + checkedListBoxPassengerType.TabIndex = 0; + // + // labelPassengerType + // + labelPassengerType.AutoSize = true; + labelPassengerType.Location = new Point(0, 12); + labelPassengerType.Name = "labelPassengerType"; + labelPassengerType.Size = new Size(81, 20); + labelPassengerType.TabIndex = 1; + labelPassengerType.Text = "Категория"; + // + // labelName + // + labelName.AutoSize = true; + labelName.Location = new Point(0, 152); + labelName.Name = "labelName"; + labelName.Size = new Size(39, 20); + labelName.TabIndex = 2; + labelName.Text = "Имя"; + // + // labelSurname + // + labelSurname.AutoSize = true; + labelSurname.Location = new Point(0, 211); + labelSurname.Name = "labelSurname"; + labelSurname.Size = new Size(73, 20); + labelSurname.TabIndex = 3; + labelSurname.Text = "Фамилия"; + // + // textBoxSurname + // + textBoxSurname.Location = new Point(120, 211); + textBoxSurname.Name = "textBoxSurname"; + textBoxSurname.Size = new Size(239, 27); + textBoxSurname.TabIndex = 4; + // + // textBoxName + // + textBoxName.Location = new Point(120, 149); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(239, 27); + textBoxName.TabIndex = 5; + // + // buttonCancel + // + buttonCancel.Location = new Point(239, 288); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 6; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Location = new Point(43, 288); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(94, 29); + buttonSave.TabIndex = 7; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // FormPassenger + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(402, 352); + Controls.Add(buttonSave); + Controls.Add(buttonCancel); + Controls.Add(textBoxName); + Controls.Add(textBoxSurname); + Controls.Add(labelSurname); + Controls.Add(labelName); + Controls.Add(labelPassengerType); + Controls.Add(checkedListBoxPassengerType); + Name = "FormPassenger"; + Text = "Пассажир"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private CheckedListBox checkedListBoxPassengerType; + private Label labelPassengerType; + private Label labelName; + private Label labelSurname; + private TextBox textBoxSurname; + private TextBox textBoxName; + private Button buttonCancel; + private Button buttonSave; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.cs new file mode 100644 index 0000000..90dacac --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.cs @@ -0,0 +1,100 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +using ProjectPassengerTransfers.Entities; +using ProjectPassengerTransfers.Entities.Enums; +using ProjectPassengerTransfers.Repositories; +using ProjectPassengerTransfers.Repositories.Implementations; + +namespace ProjectPassengerTransfers.Forms +{ + public partial class FormPassenger : Form + { + private readonly IPassengerRepository _passengerRepository; + private int? _passengerId; + + public int Id + { + set + { + try + { + var passenger = _passengerRepository.ReadPassengerById(value); + if (passenger == null) + { + throw new InvalidDataException(nameof(passenger)); + } + foreach (PassengerType elem in + Enum.GetValues(typeof(PassengerType))) + { + if ((elem & passenger.PassengerType) != 0) + { + checkedListBoxPassengerType.SetItemChecked(checkedListBoxPassengerType.Items.IndexOf(elem), true); + } + } + textBoxName.Text = passenger.Name; + textBoxSurname.Text = passenger.Surname; + _passengerId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormPassenger(IPassengerRepository passengerRepository) + { + InitializeComponent(); + _passengerRepository = passengerRepository ?? throw new ArgumentNullException(nameof(passengerRepository)); + foreach (var elem in Enum.GetValues(typeof(PassengerType))) + { + checkedListBoxPassengerType.Items.Add(elem); + } + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) || string.IsNullOrWhiteSpace(textBoxSurname.Text) || checkedListBoxPassengerType.CheckedItems.Count == 0) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_passengerId.HasValue) + { + _passengerRepository.UpdatePassenger(CreatePassenger(_passengerId.Value)); + } + else + { + _passengerRepository.CreatePassenger(CreatePassenger(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Passenger CreatePassenger(int id) + { + PassengerType feedType = PassengerType.None; + foreach (var elem in checkedListBoxPassengerType.CheckedItems) + { + feedType |= (PassengerType)elem; + } + return Passenger.CreateEntity(id, feedType, textBoxName.Text, textBoxSurname.Text); + } + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassenger.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/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.Designer.cs new file mode 100644 index 0000000..e7a181a --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.Designer.cs @@ -0,0 +1,128 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormPassengers + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel = new Panel(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonUpd); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(693, 0); + panel.Name = "panel"; + panel.Size = new Size(107, 450); + panel.TabIndex = 0; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(8, 314); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(70, 70); + buttonDel.TabIndex = 2; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.upd; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(8, 179); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(70, 70); + buttonUpd.TabIndex = 1; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.add1; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(8, 50); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(70, 70); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.RowTemplate.Height = 29; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(693, 450); + dataGridView.TabIndex = 1; + // + // FormPassengers + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormPassengers"; + StartPosition = FormStartPosition.CenterParent; + Text = "Пассажиры"; + Load += FormPassengers_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.cs new file mode 100644 index 0000000..671273a --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.cs @@ -0,0 +1,108 @@ +using ProjectPassengerTransfers.Repositories; +using ProjectPassengerTransfers.Repositories.Implementations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Xml.Linq; +using Unity; + +namespace ProjectPassengerTransfers.Forms +{ + public partial class FormPassengers : Form + { + private readonly IUnityContainer _container; + private readonly IPassengerRepository _passengerRepository; + + public FormPassengers(IUnityContainer container, IPassengerRepository passengerRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _passengerRepository = passengerRepository ?? throw new ArgumentNullException(nameof(passengerRepository)); + } + + private void FormPassengers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _passengerRepository.DeletePassenger(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridView.DataSource = _passengerRepository.ReadPassengers(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormPassengers.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/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.Designer.cs new file mode 100644 index 0000000..5a25708 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.Designer.cs @@ -0,0 +1,163 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormRoute + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + labelName = new Label(); + labelDepartureCity = new Label(); + labelArrivalCity = new Label(); + labelDistance = new Label(); + numericUpDownDistance = new NumericUpDown(); + textBoxName = new TextBox(); + textBoxDepartureCity = new TextBox(); + textBoxArrivalCity = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + ((System.ComponentModel.ISupportInitialize)numericUpDownDistance).BeginInit(); + SuspendLayout(); + // + // labelName + // + labelName.AutoSize = true; + labelName.Location = new Point(16, 20); + labelName.Name = "labelName"; + labelName.Size = new Size(77, 20); + labelName.TabIndex = 0; + labelName.Text = "Название"; + // + // labelDepartureCity + // + labelDepartureCity.AutoSize = true; + labelDepartureCity.Location = new Point(16, 84); + labelDepartureCity.Name = "labelDepartureCity"; + labelDepartureCity.Size = new Size(146, 20); + labelDepartureCity.TabIndex = 1; + labelDepartureCity.Text = "Город отправления"; + // + // labelArrivalCity + // + labelArrivalCity.AutoSize = true; + labelArrivalCity.Location = new Point(16, 153); + labelArrivalCity.Name = "labelArrivalCity"; + labelArrivalCity.Size = new Size(125, 20); + labelArrivalCity.TabIndex = 2; + labelArrivalCity.Text = "Город прибытия"; + // + // labelDistance + // + labelDistance.AutoSize = true; + labelDistance.Location = new Point(16, 224); + labelDistance.Name = "labelDistance"; + labelDistance.Size = new Size(84, 20); + labelDistance.TabIndex = 3; + labelDistance.Text = "Дистанция"; + // + // numericUpDownDistance + // + numericUpDownDistance.Location = new Point(168, 217); + numericUpDownDistance.Name = "numericUpDownDistance"; + numericUpDownDistance.Size = new Size(150, 27); + numericUpDownDistance.TabIndex = 4; + // + // textBoxName + // + textBoxName.Location = new Point(168, 20); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(150, 27); + textBoxName.TabIndex = 5; + // + // textBoxDepartureCity + // + textBoxDepartureCity.Location = new Point(168, 84); + textBoxDepartureCity.Name = "textBoxDepartureCity"; + textBoxDepartureCity.Size = new Size(150, 27); + textBoxDepartureCity.TabIndex = 6; + // + // textBoxArrivalCity + // + textBoxArrivalCity.Location = new Point(168, 150); + textBoxArrivalCity.Name = "textBoxArrivalCity"; + textBoxArrivalCity.Size = new Size(150, 27); + textBoxArrivalCity.TabIndex = 7; + // + // buttonSave + // + buttonSave.Location = new Point(28, 314); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(94, 29); + buttonSave.TabIndex = 8; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(214, 314); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 9; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += buttonCancel_Click; + // + // FormRoute + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(397, 380); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxArrivalCity); + Controls.Add(textBoxDepartureCity); + Controls.Add(textBoxName); + Controls.Add(numericUpDownDistance); + Controls.Add(labelDistance); + Controls.Add(labelArrivalCity); + Controls.Add(labelDepartureCity); + Controls.Add(labelName); + Name = "FormRoute"; + Text = "Маршрут"; + ((System.ComponentModel.ISupportInitialize)numericUpDownDistance).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelName; + private Label labelDepartureCity; + private Label labelArrivalCity; + private Label labelDistance; + private NumericUpDown numericUpDownDistance; + private TextBox textBoxName; + private TextBox textBoxDepartureCity; + private TextBox textBoxArrivalCity; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.cs new file mode 100644 index 0000000..f64c7cd --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.cs @@ -0,0 +1,85 @@ +using ProjectPassengerTransfers.Entities; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +using ProjectPassengerTransfers.Entities; +using ProjectPassengerTransfers.Entities.Enums; +using ProjectPassengerTransfers.Repositories; + +namespace ProjectPassengerTransfers.Forms +{ + public partial class FormRoute : Form + { + private readonly IRouteRepository _routeRepository; + private int? _routeId; + public int Id + { + set + { + try + { + var route = _routeRepository.ReadRouteById(value); + if (route == null) + { + throw new InvalidDataException(nameof(route)); + } + textBoxName.Text = route.Name; + textBoxDepartureCity.Text = route.DepartureCity; + textBoxArrivalCity.Text = route.ArrivalCity; + numericUpDownDistance.Value = route.Distance; + _routeId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + + public FormRoute(IRouteRepository routeRepository) + { + InitializeComponent(); + _routeRepository = routeRepository ?? throw new ArgumentNullException(nameof(routeRepository)); + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) || string.IsNullOrWhiteSpace(textBoxDepartureCity.Text) || string.IsNullOrWhiteSpace(textBoxArrivalCity.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_routeId.HasValue) + { + _routeRepository.UpdateRoute(CreateRoute(_routeId.Value)); + } + else + { + _routeRepository.CreateRoute(CreateRoute(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void buttonCancel_Click(object sender, EventArgs e) => Close(); + + private Route CreateRoute(int id) => Route.CreateEntity(id, textBoxName.Text, textBoxDepartureCity.Text, textBoxArrivalCity.Text, Convert.ToInt32(numericUpDownDistance.Value)); + + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoute.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.Designer.cs new file mode 100644 index 0000000..460542d --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.Designer.cs @@ -0,0 +1,128 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormRoutes + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel = new Panel(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonUpd); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(693, 0); + panel.Name = "panel"; + panel.Size = new Size(107, 450); + panel.TabIndex = 0; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(8, 314); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(70, 70); + buttonDel.TabIndex = 2; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.upd; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(8, 179); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(70, 70); + buttonUpd.TabIndex = 1; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.add1; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(8, 50); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(70, 70); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.RowTemplate.Height = 29; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(693, 450); + dataGridView.TabIndex = 1; + // + // FormRoutes + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormRoutes"; + StartPosition = FormStartPosition.CenterParent; + Text = "Маршруты"; + Load += FormRoutes_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.cs new file mode 100644 index 0000000..3dde72f --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.cs @@ -0,0 +1,97 @@ +using ProjectPassengerTransfers.Repositories; +using Unity; + +namespace ProjectPassengerTransfers.Forms +{ + public partial class FormRoutes : Form + { + private readonly IUnityContainer _container; + private readonly IRouteRepository _routeRepository; + + public FormRoutes(IUnityContainer container, IRouteRepository routeRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _routeRepository = routeRepository ?? throw new ArgumentNullException(nameof(routeRepository)); + } + + private void FormRoutes_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _routeRepository.DeleteRoute(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridView.DataSource = _routeRepository.ReadRoutes(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormRoutes.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.Designer.cs new file mode 100644 index 0000000..952a898 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.Designer.cs @@ -0,0 +1,147 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormTicket + { + /// + /// 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() + { + groupBoxTickets = new GroupBox(); + dataGridViewTickets = new DataGridView(); + ColumnTrip = new DataGridViewComboBoxColumn(); + ColumnCount = new DataGridViewTextBoxColumn(); + comboBoxPassenger = new ComboBox(); + labelPassenger = new Label(); + buttonSave = new Button(); + buttonCancel = new Button(); + groupBoxTickets.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewTickets).BeginInit(); + SuspendLayout(); + // + // groupBoxTickets + // + groupBoxTickets.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBoxTickets.Controls.Add(dataGridViewTickets); + groupBoxTickets.Location = new Point(43, 166); + groupBoxTickets.Name = "groupBoxTickets"; + groupBoxTickets.Size = new Size(425, 243); + groupBoxTickets.TabIndex = 0; + groupBoxTickets.TabStop = false; + groupBoxTickets.Text = "Покупка билетов"; + // + // dataGridViewTickets + // + dataGridViewTickets.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewTickets.Columns.AddRange(new DataGridViewColumn[] { ColumnTrip, ColumnCount }); + dataGridViewTickets.Dock = DockStyle.Fill; + dataGridViewTickets.Location = new Point(3, 23); + dataGridViewTickets.Name = "dataGridViewTickets"; + dataGridViewTickets.RowHeadersVisible = false; + dataGridViewTickets.RowHeadersWidth = 51; + dataGridViewTickets.RowTemplate.Height = 29; + dataGridViewTickets.Size = new Size(419, 217); + dataGridViewTickets.TabIndex = 0; + // + // ColumnTrip + // + ColumnTrip.HeaderText = "Поездка"; + ColumnTrip.MinimumWidth = 6; + ColumnTrip.Name = "ColumnTrip"; + ColumnTrip.Width = 125; + // + // ColumnCount + // + ColumnCount.HeaderText = "продажа билетов"; + ColumnCount.MinimumWidth = 6; + ColumnCount.Name = "ColumnCount"; + ColumnCount.Width = 125; + // + // comboBoxPassenger + // + comboBoxPassenger.FormattingEnabled = true; + comboBoxPassenger.Location = new Point(194, 43); + comboBoxPassenger.Name = "comboBoxPassenger"; + comboBoxPassenger.Size = new Size(250, 28); + comboBoxPassenger.TabIndex = 1; + // + // labelPassenger + // + labelPassenger.AutoSize = true; + labelPassenger.Location = new Point(46, 46); + labelPassenger.Name = "labelPassenger"; + labelPassenger.Size = new Size(79, 20); + labelPassenger.TabIndex = 2; + labelPassenger.Text = "Пассажир"; + // + // buttonSave + // + buttonSave.Location = new Point(77, 428); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(94, 29); + buttonSave.TabIndex = 1; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(305, 428); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 2; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormTicket + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(517, 478); + Controls.Add(buttonSave); + Controls.Add(buttonCancel); + Controls.Add(labelPassenger); + Controls.Add(comboBoxPassenger); + Controls.Add(groupBoxTickets); + Name = "FormTicket"; + Text = "Билет"; + groupBoxTickets.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewTickets).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private GroupBox groupBoxTickets; + private DataGridView dataGridViewTickets; + private ComboBox comboBoxPassenger; + private Label labelPassenger; + private DataGridViewComboBoxColumn ColumnTrip; + private DataGridViewTextBoxColumn ColumnCount; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.cs new file mode 100644 index 0000000..c0566c6 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ProjectPassengerTransfers.Entities; +using ProjectPassengerTransfers.Repositories; + +namespace ProjectPassengerTransfers.Forms +{ + public partial class FormTicket : Form + { + private readonly ITicketRepository _ticketRepository; + public FormTicket(ITicketRepository ticketRepository, IRouteRepository routeRepository, IPassengerRepository passengerRepository) + { + InitializeComponent(); + _ticketRepository = ticketRepository ?? throw new ArgumentNullException(nameof(ticketRepository)); + comboBoxPassenger.DataSource = passengerRepository.ReadPassengers(); + comboBoxPassenger.DisplayMember = "Name"; + comboBoxPassenger.ValueMember = "Id"; + ColumnTrip.DataSource = routeRepository.ReadRoutes(); + ColumnTrip.DisplayMember = "Name"; + ColumnTrip.ValueMember = "Id"; + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (dataGridViewTickets.RowCount < 1 || comboBoxPassenger.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + _ticketRepository.CreateTicket(Ticket.CreateOperation(0, (int)comboBoxPassenger.SelectedValue!, CreateListTripTicketsFromDataGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private List + CreateListTripTicketsFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridViewTickets.Rows) + { + if (row.Cells["ColumnFeed"].Value == null || + row.Cells["ColumnCount"].Value == null) + { + continue; + } + list.Add(TripTicket.CreateElement(0, Convert.ToInt32(row.Cells["ColumnBus"].Value), Convert.ToInt32(row.Cells["ColumnCount"].Value))); + } + return list; + } + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.resx new file mode 100644 index 0000000..34df021 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTicket.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.Designer.cs new file mode 100644 index 0000000..0936fbc --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.Designer.cs @@ -0,0 +1,114 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormTickets + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel = new Panel(); + buttonDel = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonDel); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(693, 0); + panel.Name = "panel"; + panel.Size = new Size(107, 450); + panel.TabIndex = 0; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.del; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(8, 314); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(70, 70); + buttonDel.TabIndex = 3; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += buttonDel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.add1; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(8, 50); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(70, 70); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.RowTemplate.Height = 29; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(693, 450); + dataGridView.TabIndex = 1; + // + // FormTickets + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormTickets"; + StartPosition = FormStartPosition.CenterParent; + Text = "Билеты"; + Load += FormTickets_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonAdd; + private DataGridView dataGridView; + private Button buttonDel; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.cs new file mode 100644 index 0000000..523d890 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using ProjectPassengerTransfers.Entities; +using ProjectPassengerTransfers.Entities.Enums; +using ProjectPassengerTransfers.Repositories; +using Unity; + +namespace ProjectPassengerTransfers.Forms +{ + public partial class FormTickets : Form + { + private readonly IUnityContainer _container; + private readonly ITicketRepository _ticketRepository; + + public FormTickets(IUnityContainer container, ITicketRepository ticketRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _ticketRepository = ticketRepository ?? + throw new + ArgumentNullException(nameof(ticketRepository)); + } + + private void FormTickets_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _ticketRepository.DeleteTicket(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridView.DataSource = _ticketRepository.ReadTickets(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + return true; + } + + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTickets.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/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.Designer.cs new file mode 100644 index 0000000..ce38c23 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.Designer.cs @@ -0,0 +1,119 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormTrip + { + /// + /// 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() + { + comboBoxRoute = new ComboBox(); + comboBoxBus = new ComboBox(); + labelBus = new Label(); + labelRoute = new Label(); + buttonSave = new Button(); + buttonCancel = new Button(); + SuspendLayout(); + // + // comboBoxRoute + // + comboBoxRoute.FormattingEnabled = true; + comboBoxRoute.Location = new Point(178, 6); + comboBoxRoute.Name = "comboBoxRoute"; + comboBoxRoute.Size = new Size(151, 28); + comboBoxRoute.TabIndex = 0; + // + // comboBoxBus + // + comboBoxBus.FormattingEnabled = true; + comboBoxBus.Location = new Point(178, 92); + comboBoxBus.Name = "comboBoxBus"; + comboBoxBus.Size = new Size(151, 28); + comboBoxBus.TabIndex = 1; + // + // labelBus + // + labelBus.AutoSize = true; + labelBus.Location = new Point(29, 95); + labelBus.Name = "labelBus"; + labelBus.Size = new Size(65, 20); + labelBus.TabIndex = 4; + labelBus.Text = "Автобус"; + // + // labelRoute + // + labelRoute.AutoSize = true; + labelRoute.Location = new Point(29, 9); + labelRoute.Name = "labelRoute"; + labelRoute.Size = new Size(73, 20); + labelRoute.TabIndex = 5; + labelRoute.Text = "Маршрут"; + // + // buttonSave + // + buttonSave.Location = new Point(43, 225); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(94, 29); + buttonSave.TabIndex = 6; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(214, 225); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 29); + buttonCancel.TabIndex = 7; + buttonCancel.Text = "Отменить"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormTrip + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(418, 315); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelRoute); + Controls.Add(labelBus); + Controls.Add(comboBoxBus); + Controls.Add(comboBoxRoute); + Name = "FormTrip"; + Text = "Поездка"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxRoute; + private ComboBox comboBoxBus; + private Label labelBus; + private Label labelRoute; + private Button buttonSave; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.cs new file mode 100644 index 0000000..98429d3 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.cs @@ -0,0 +1,48 @@ +using ProjectPassengerTransfers.Repositories; +using ProjectPassengerTransfers.Entities; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ProjectPassengerTransfers.Forms +{ + public partial class FormTrip : Form + { + private readonly ITripRepository _tripRepository; + public FormTrip(ITripRepository tripRepository, IRouteRepository routeRepository, + IBusRepository busRepository) + { + InitializeComponent(); + _tripRepository = tripRepository ?? throw new ArgumentNullException(nameof(tripRepository)); + comboBoxRoute.DataSource = routeRepository.ReadRoutes(); + comboBoxRoute.DisplayMember = "FirstName"; + comboBoxRoute.ValueMember = "Id"; + comboBoxBus.DataSource = busRepository.ReadBuses(); + comboBoxBus.DisplayMember = "Name"; + comboBoxBus.ValueMember = "Id"; + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (comboBoxRoute.SelectedIndex < 0 || comboBoxBus.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + _tripRepository.CreateTrip(Trip.CreateOperation(0, (int)comboBoxRoute.SelectedValue!, (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/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrip.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/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.Designer.cs new file mode 100644 index 0000000..1d1844c --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.Designer.cs @@ -0,0 +1,101 @@ +namespace ProjectPassengerTransfers.Forms +{ + partial class FormTrips + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel = new Panel(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(693, 0); + panel.Name = "panel"; + panel.Size = new Size(107, 450); + panel.TabIndex = 0; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.add1; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(8, 50); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(70, 70); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.RowTemplate.Height = 29; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(693, 450); + dataGridView.TabIndex = 1; + // + // FormTrips + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel); + Name = "FormTrips"; + StartPosition = FormStartPosition.CenterParent; + Text = "Поездки"; + Load += FormTrips_Load; + Click += FormTrips_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonAdd; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.cs new file mode 100644 index 0000000..3a107d9 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.cs @@ -0,0 +1,52 @@ +using ProjectPassengerTransfers.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace ProjectPassengerTransfers.Forms +{ + public partial class FormTrips : Form + { + private readonly IUnityContainer _container; + private readonly ITripRepository _tripRepository; + public FormTrips(IUnityContainer container, ITripRepository tripRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _tripRepository = tripRepository ?? throw new ArgumentNullException(nameof(tripRepository)); + } + private void FormTrips_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() => dataGridView.DataSource = _tripRepository.ReadTrips(); + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Forms/FormTrips.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/ProjectPassengerTransfers/ProjectPassengerTransfers/Program.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Program.cs index 2a6b0d2..39452bc 100644 --- a/ProjectPassengerTransfers/ProjectPassengerTransfers/Program.cs +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Program.cs @@ -1,3 +1,7 @@ +using ProjectPassengerTransfers.Repositories; +using ProjectPassengerTransfers.Repositories.Implementations; +using Unity; + namespace ProjectPassengerTransfers { internal static class Program @@ -11,7 +15,19 @@ namespace ProjectPassengerTransfers // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(CreateContainer().Resolve()); } + + private static IUnityContainer CreateContainer() + { + var container = new UnityContainer(); + container.RegisterType(); + container.RegisterType(); + container.RegisterType(); + container.RegisterType(); + container.RegisterType(); + return container; + } + } } \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/ProjectPassengerTransfers.csproj b/ProjectPassengerTransfers/ProjectPassengerTransfers/ProjectPassengerTransfers.csproj index e1a0735..e65362d 100644 --- a/ProjectPassengerTransfers/ProjectPassengerTransfers/ProjectPassengerTransfers.csproj +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/ProjectPassengerTransfers.csproj @@ -6,6 +6,13 @@ enable true enable + preview + + + + + + \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Properties/Resources.Designer.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Properties/Resources.Designer.cs new file mode 100644 index 0000000..f64f1e3 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Properties/Resources.Designer.cs @@ -0,0 +1,113 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectPassengerTransfers.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("ProjectPassengerTransfers.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap add { + get { + object obj = ResourceManager.GetObject("add", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap add1 { + get { + object obj = ResourceManager.GetObject("add1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap del { + get { + object obj = ResourceManager.GetObject("del", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap upd { + get { + object obj = ResourceManager.GetObject("upd", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap vokzal { + get { + object obj = ResourceManager.GetObject("vokzal", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Properties/Resources.resx b/ProjectPassengerTransfers/ProjectPassengerTransfers/Properties/Resources.resx new file mode 100644 index 0000000..62b44c3 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Properties/Resources.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\del.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\vokzal.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\upd.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IBusRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IBusRepository.cs new file mode 100644 index 0000000..638ebed --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IBusRepository.cs @@ -0,0 +1,13 @@ +using ProjectPassengerTransfers.Entities; + +namespace ProjectPassengerTransfers.Repositories; + +public interface IBusRepository +{ + IEnumerable ReadBuses(); + Bus ReadBusById(int id); + void CreateBus(Bus bus); + void UpdateBus(Bus bus); + void DeleteBus(int id); + +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IPassengerRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IPassengerRepository.cs new file mode 100644 index 0000000..9216b0e --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IPassengerRepository.cs @@ -0,0 +1,12 @@ +using ProjectPassengerTransfers.Entities; + +namespace ProjectPassengerTransfers.Repositories; + +public interface IPassengerRepository +{ + IEnumerable ReadPassengers(); + Passenger ReadPassengerById(int id); + void CreatePassenger(Passenger passenger); + void UpdatePassenger(Passenger passenger); + void DeletePassenger(int id); +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IRouteRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IRouteRepository.cs new file mode 100644 index 0000000..6527e32 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/IRouteRepository.cs @@ -0,0 +1,12 @@ +using ProjectPassengerTransfers.Entities; + +namespace ProjectPassengerTransfers.Repositories; + +public interface IRouteRepository +{ + IEnumerable ReadRoutes(); + Route ReadRouteById(int id); + void CreateRoute(Route route); + void UpdateRoute(Route route); + void DeleteRoute(int id); +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/ITicketRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/ITicketRepository.cs new file mode 100644 index 0000000..76d696c --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/ITicketRepository.cs @@ -0,0 +1,12 @@ +using ProjectPassengerTransfers.Entities; + +namespace ProjectPassengerTransfers.Repositories; + +public interface ITicketRepository +{ + IEnumerable ReadTickets(DateTime? dateForm = +null,int? ticketId = null, int? passengerId = null); + void CreateTicket(Ticket ticket); + void DeleteTicket(int id); + +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/ITripRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/ITripRepository.cs new file mode 100644 index 0000000..f6b9539 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/ITripRepository.cs @@ -0,0 +1,11 @@ +using ProjectPassengerTransfers.Entities; + +namespace ProjectPassengerTransfers.Repositories; + +public interface ITripRepository +{ + IEnumerable ReadTrips(DateTime? dateForm = +null, DateTime? dateTo = null, +int? tripId = null, int? routeId = null, int? busId = null); + void CreateTrip(Trip trip); +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/BusRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/BusRepository.cs new file mode 100644 index 0000000..4152110 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/BusRepository.cs @@ -0,0 +1,25 @@ +using ProjectPassengerTransfers.Entities; +using ProjectPassengerTransfers.Entities.Enums; + +namespace ProjectPassengerTransfers.Repositories.Implementations; + +internal class BusRepository : IBusRepository +{ + public void CreateBus(Bus bus) + { + } + public void DeleteBus(int id) + { + } + public Bus ReadBusById(int id) + { + return Bus.CreateEntity(0, BusModel.None, 0); + } + public IEnumerable ReadBuses() + { + return []; + } + public void UpdateBus(Bus bus) + { + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/PassengerRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/PassengerRepository.cs new file mode 100644 index 0000000..aaa87c8 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/PassengerRepository.cs @@ -0,0 +1,25 @@ +using ProjectPassengerTransfers.Entities; +using ProjectPassengerTransfers.Entities.Enums; + +namespace ProjectPassengerTransfers.Repositories.Implementations; + +internal class PassengerRepository : IPassengerRepository +{ + public void CreatePassenger(Passenger passenger) + { + } + public void DeletePassenger(int id) + { + } + public Passenger ReadPassengerById(int id) + { + return Passenger.CreateEntity(0, PassengerType.None, string.Empty, string.Empty); + } + public IEnumerable ReadPassengers() + { + return []; + } + public void UpdatePassenger(Passenger passenger) + { + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/RouteRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/RouteRepository.cs new file mode 100644 index 0000000..9689784 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/RouteRepository.cs @@ -0,0 +1,24 @@ +using ProjectPassengerTransfers.Entities; + +namespace ProjectPassengerTransfers.Repositories.Implementations; + +internal class RouteRepository : IRouteRepository +{ + public void CreateRoute(Route route) + { + } + public void DeleteRoute(int id) + { + } + public Route ReadRouteById(int id) + { + return Route.CreateEntity(0, string.Empty, string.Empty, string.Empty, 0); + } + public IEnumerable ReadRoutes() + { + return []; + } + public void UpdateRoute(Route route) + { + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/TicketRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/TicketRepository.cs new file mode 100644 index 0000000..8a6f6c7 --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/TicketRepository.cs @@ -0,0 +1,18 @@ +using ProjectPassengerTransfers.Entities; + +namespace ProjectPassengerTransfers.Repositories.Implementations; + +internal class TicketRepository : ITicketRepository +{ + public void CreateTicket(Ticket ticket) + { + } + public void DeleteTicket(int id) + { + } + + public IEnumerable ReadTickets(DateTime? dateForm = null, int? ticketId = null, int? passengerId = null) + { + return []; + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/TripRepository.cs b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/TripRepository.cs new file mode 100644 index 0000000..4ed50bc --- /dev/null +++ b/ProjectPassengerTransfers/ProjectPassengerTransfers/Repositories/Implementations/TripRepository.cs @@ -0,0 +1,17 @@ +using ProjectPassengerTransfers.Entities; + +namespace ProjectPassengerTransfers.Repositories.Implementations; + +internal class TripRepository : ITripRepository +{ + public void CreateTrip(Trip trip) + { + } + + public IEnumerable ReadTrips(DateTime? dateForm = +null, DateTime? dateTo = null, +int? tripId = null, int? routeId = null, int? busId = null) + { + return []; + } +} diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/add.png b/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/add.png new file mode 100644 index 0000000..f469fdc Binary files /dev/null and b/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/add.png differ diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/del.png b/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/del.png new file mode 100644 index 0000000..77b3a96 Binary files /dev/null and b/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/del.png differ diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/upd.png b/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/upd.png new file mode 100644 index 0000000..6637edc Binary files /dev/null and b/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/upd.png differ diff --git a/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/vokzal.jpg b/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/vokzal.jpg new file mode 100644 index 0000000..469334a Binary files /dev/null and b/ProjectPassengerTransfers/ProjectPassengerTransfers/Resources/vokzal.jpg differ