diff --git a/ProjectAirline/Entities/Airplane.cs b/ProjectAirline/Entities/Airplane.cs new file mode 100644 index 0000000..8227096 --- /dev/null +++ b/ProjectAirline/Entities/Airplane.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirline.Entities; + +public class Airplane +{ + public int Id { get; private set; } + public string Country { get; private set; } = string.Empty; + public string Model { get; private set; } = string.Empty; + public int Capacity { get; private set; } + + public static Airplane CreateEntity(int id, string country, string model, int capacity) + { + return new Airplane + { + Id = id, + Country = country ?? string.Empty, + Model = model ?? string.Empty, + Capacity = capacity + + }; + + } + +} diff --git a/ProjectAirline/Entities/Airport.cs b/ProjectAirline/Entities/Airport.cs deleted file mode 100644 index c9e5c2d..0000000 --- a/ProjectAirline/Entities/Airport.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace YourNamespace.Entities -{ - public class Airport - { - public int Id { get; private set; } - public string Name { get; private set; } - public string Location { get; private set; } - - public static Airport CreateEntity(int id, string name, string location) - { - return new Airport - { - Id = id, - Name = name ?? string.Empty, - Location = location ?? string.Empty - }; - } - } -} \ No newline at end of file diff --git a/ProjectAirline/Entities/Employee.cs b/ProjectAirline/Entities/Employee.cs index e5fff89..3a3abcf 100644 --- a/ProjectAirline/Entities/Employee.cs +++ b/ProjectAirline/Entities/Employee.cs @@ -1,23 +1,29 @@ -using YourNamespace.Entities.Enums; +using ProjectAirline.Entities.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; -namespace YourNamespace.Entities +namespace ProjectAirline.Entities; + +public class Employee { - public class Employee + public int Id { get; private set; } + public string FirstName { get; private set; } = string.Empty; + public string LastName { get; private set; } = string.Empty; + public string ContactInformation { get; private set; } = string.Empty; + public EmployeePost EmployeePost { get; private set; } + public static Employee CreateEntity(int id, string first, string last, string contactInfo, + EmployeePost employeePost) { - public int Id { get; private set; } - public string FirstName { get; private set; } - public string LastName { get; private set; } - public EmployeePost EmployeePost { get; private set; } - - public static Employee CreateEntity(int id, string firstName, string lastName, EmployeePost employeePost) + return new Employee { - return new Employee - { - Id = id, - FirstName = firstName ?? string.Empty, - LastName = lastName ?? string.Empty, - EmployeePost = employeePost - }; - } + Id = id, + FirstName = first ?? string.Empty, + LastName = last ?? string.Empty, + ContactInformation = contactInfo ?? string.Empty, + EmployeePost = employeePost + }; } -} \ No newline at end of file +} diff --git a/ProjectAirline/Entities/EmployeeFlight.cs b/ProjectAirline/Entities/EmployeeFlight.cs new file mode 100644 index 0000000..14ab603 --- /dev/null +++ b/ProjectAirline/Entities/EmployeeFlight.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirline.Entities; + +public class EmployeeFlight +{ + public int Id { get; private set; } + public int EmployeeId { get; private set; } + public int FlightId { get; private set; } + public int HoursWorked { get; private set; } + public static EmployeeFlight CreateOperation(int id, int employeeId, int flightId, int hoursWorked) + { + return new EmployeeFlight + { + Id = id, + EmployeeId = employeeId, + FlightId = flightId, + HoursWorked = hoursWorked + }; + } +} diff --git a/ProjectAirline/Entities/Enums/EmployeePost.cs b/ProjectAirline/Entities/Enums/EmployeePost.cs index 8d600e5..ee03ae6 100644 --- a/ProjectAirline/Entities/Enums/EmployeePost.cs +++ b/ProjectAirline/Entities/Enums/EmployeePost.cs @@ -1,10 +1,18 @@ -namespace YourNamespace.Entities.Enums +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirline.Entities.Enums; + +public enum EmployeePost { - public enum EmployeePost - { - None = 0, - Pilot = 1, - Stewardess = 2, - GroundStaff = 3 - } -} \ No newline at end of file + None = 0, + + FlightAttendant = 1, + + FlightEngineer = 2, + + Pilot = 3 +} diff --git a/ProjectAirline/Entities/Enums/FoodPreferences.cs b/ProjectAirline/Entities/Enums/FoodPreferences.cs new file mode 100644 index 0000000..06e66ce --- /dev/null +++ b/ProjectAirline/Entities/Enums/FoodPreferences.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirline.Entities.Enums; +[Flags] +public enum FoodPreferences +{ + None = 0, + + SpicyFood = 1, + + Meat = 2, + + Sweets = 4, + + BitterFood = 8 +} diff --git a/ProjectAirline/Entities/Flight.cs b/ProjectAirline/Entities/Flight.cs index a10ac84..9772fe6 100644 --- a/ProjectAirline/Entities/Flight.cs +++ b/ProjectAirline/Entities/Flight.cs @@ -1,25 +1,37 @@ -namespace YourNamespace.Entities -{ - public class Flight - { - public int Id { get; private set; } - public int FlightNumber { get; private set; } - public DateTime DepartureDateTime { get; private set; } - public DateTime ArrivalDateTime { get; private set; } - public int PlaneId { get; private set; } - public int AirportId { get; private set; } +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; - public static Flight CreateEntity(int id, int flightNumber, DateTime departureDateTime, DateTime arrivalDateTime, int planeId, int airportId) +namespace ProjectAirline.Entities; + +public class Flight +{ + public int Id { get; private set; } + public int AirplaneID { get; private set; } + public DateTime DepartureTime { get; private set; } + public DateTime ArrivalTime { get; private set; } + public string Destination { get; private set; } = string.Empty; + public string DeparturePoint { get; private set; } = string.Empty; + public int TicketPrice { get; private set; } + public IEnumerable EmployeeFlights { get; private set; } = []; + public static Flight CreateOperation(int id, int airPlaneID, string destination, string departurePoint, int ticketPrice, + IEnumerable employeeFlights) + { + return new Flight { - return new Flight - { - Id = id, - FlightNumber = flightNumber, - DepartureDateTime = departureDateTime, - ArrivalDateTime = arrivalDateTime, - PlaneId = planeId, - AirportId = airportId - }; - } + Id = id, + AirplaneID = airPlaneID, + DepartureTime = DateTime.Now, + ArrivalTime = DateTime.Now, + Destination = destination ?? string.Empty, + DeparturePoint = departurePoint ?? string.Empty, + TicketPrice = ticketPrice, + EmployeeFlights = employeeFlights + }; } -} \ No newline at end of file + + + +} diff --git a/ProjectAirline/Entities/Passanger.cs b/ProjectAirline/Entities/Passanger.cs index 3a4ad40..6b1d422 100644 --- a/ProjectAirline/Entities/Passanger.cs +++ b/ProjectAirline/Entities/Passanger.cs @@ -1,21 +1,28 @@ -namespace YourNamespace.Entities -{ - public class Passenger - { - public int Id { get; private set; } - public string FirstName { get; private set; } - public string LastName { get; private set; } - public string PassportNumber { get; private set; } +using ProjectAirline.Entities.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; - public static Passenger CreateEntity(int id, string firstName, string lastName, string passportNumber) +namespace ProjectAirline.Entities; + +public class Passenger +{ + public int Id { get; private set; } + public FoodPreferences FoodPreferences { get; private set; } + public string FirstName { get; private set; } = string.Empty; + public string LastName { get; private set; } = string.Empty; + public DateTime DateBirth { get; private set; } + public static Passenger CreateEntity(int id, FoodPreferences foodPreferences, string first, string last) + { + return new Passenger { - return new Passenger - { - Id = id, - FirstName = firstName ?? string.Empty, - LastName = lastName ?? string.Empty, - PassportNumber = passportNumber ?? string.Empty - }; - } + Id = id, + FoodPreferences = foodPreferences, + FirstName = first ?? string.Empty, + LastName = last ?? string.Empty, + DateBirth = DateTime.Now + }; } -} \ No newline at end of file +} diff --git a/ProjectAirline/Entities/Plane.cs b/ProjectAirline/Entities/Plane.cs deleted file mode 100644 index 5c56be4..0000000 --- a/ProjectAirline/Entities/Plane.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace YourNamespace.Entities -{ - public class Plane - { - public int Id { get; private set; } - public string Model { get; private set; } - public int Capacity { get; private set; } - - public static Plane CreateEntity(int id, string model, int capacity) - { - return new Plane - { - Id = id, - Model = model ?? string.Empty, - Capacity = capacity - }; - } - } -} \ No newline at end of file diff --git a/ProjectAirline/Entities/Ticket.cs b/ProjectAirline/Entities/Ticket.cs index a69e467..4e488e6 100644 --- a/ProjectAirline/Entities/Ticket.cs +++ b/ProjectAirline/Entities/Ticket.cs @@ -1,23 +1,30 @@ -namespace YourNamespace.Entities -{ - public class Ticket - { - public int Id { get; private set; } - public int PassengerId { get; private set; } - public int FlightId { get; private set; } - public DateTime DateBuy { get; private set; } - public int TicketPrice { get; private set; } +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; - public static Ticket CreateEntity(int id, int passengerId, int flightId, DateTime dateBuy, int ticketPrice) +namespace ProjectAirline.Entities; + +public class Ticket +{ + public int Id { get; private set; } + public int FlightID { get; private set; } + public int PassengerID { get; private set; } + + public int TicketPrice { get; private set; } + public DateTime DateBuy { get; private set; } + public static Ticket CreateTicket(int id, int flightID, int passengerID, int ticketPrice) + { + return new Ticket { - return new Ticket - { - Id = id, - PassengerId = passengerId, - FlightId = flightId, - DateBuy = dateBuy, - TicketPrice = ticketPrice - }; - } + Id = id, + FlightID = flightID, + PassengerID = passengerID, + TicketPrice = ticketPrice, + DateBuy = DateTime.Now + }; } -} \ No newline at end of file + + +} diff --git a/ProjectAirline/Forms/FormAirline.Designer.cs b/ProjectAirline/Forms/FormAirline.Designer.cs new file mode 100644 index 0000000..31c4bd4 --- /dev/null +++ b/ProjectAirline/Forms/FormAirline.Designer.cs @@ -0,0 +1,138 @@ +namespace ProjectAirline +{ + partial class FormAirline + { + /// + /// 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() + { + menuStrip = new MenuStrip(); + справочникиToolStripMenuItem = new ToolStripMenuItem(); + AirplaneToolStripMenuItem = new ToolStripMenuItem(); + EmployeeToolStripMenuItem = new ToolStripMenuItem(); + PassengerToolStripMenuItem = new ToolStripMenuItem(); + операцииToolStripMenuItem = new ToolStripMenuItem(); + FlightToolStripMenuItem = new ToolStripMenuItem(); + TicketToolStripMenuItem = new ToolStripMenuItem(); + отчетыToolStripMenuItem = new ToolStripMenuItem(); + menuStrip.SuspendLayout(); + SuspendLayout(); + // + // menuStrip + // + menuStrip.ImageScalingSize = new Size(20, 20); + menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчетыToolStripMenuItem }); + menuStrip.Location = new Point(0, 0); + menuStrip.Name = "menuStrip"; + menuStrip.Size = new Size(782, 28); + menuStrip.TabIndex = 0; + menuStrip.Text = "menuStrip1"; + // + // справочникиToolStripMenuItem + // + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { AirplaneToolStripMenuItem, EmployeeToolStripMenuItem, PassengerToolStripMenuItem }); + справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; + справочникиToolStripMenuItem.Size = new Size(117, 24); + справочникиToolStripMenuItem.Text = "Справочники"; + // + // AirplaneToolStripMenuItem + // + AirplaneToolStripMenuItem.Name = "AirplaneToolStripMenuItem"; + AirplaneToolStripMenuItem.Size = new Size(173, 26); + AirplaneToolStripMenuItem.Text = "Самолёты"; + AirplaneToolStripMenuItem.Click += AirplaneToolStripMenuItem_Click; + // + // EmployeeToolStripMenuItem + // + EmployeeToolStripMenuItem.Name = "EmployeeToolStripMenuItem"; + EmployeeToolStripMenuItem.Size = new Size(173, 26); + EmployeeToolStripMenuItem.Text = "Работники"; + EmployeeToolStripMenuItem.Click += EmployeeToolStripMenuItem_Click; + // + // PassengerToolStripMenuItem + // + PassengerToolStripMenuItem.Name = "PassengerToolStripMenuItem"; + PassengerToolStripMenuItem.Size = new Size(173, 26); + PassengerToolStripMenuItem.Text = "Пассажиры"; + PassengerToolStripMenuItem.Click += PassengerToolStripMenuItem_Click; + // + // операцииToolStripMenuItem + // + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { FlightToolStripMenuItem, TicketToolStripMenuItem }); + операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; + операцииToolStripMenuItem.Size = new Size(95, 24); + операцииToolStripMenuItem.Text = "Операции"; + // + // FlightToolStripMenuItem + // + FlightToolStripMenuItem.Name = "FlightToolStripMenuItem"; + FlightToolStripMenuItem.Size = new Size(211, 26); + FlightToolStripMenuItem.Text = "Рейсы"; + FlightToolStripMenuItem.Click += FlightToolStripMenuItem_Click; + // + // TicketToolStripMenuItem + // + TicketToolStripMenuItem.Name = "TicketToolStripMenuItem"; + TicketToolStripMenuItem.Size = new Size(211, 26); + TicketToolStripMenuItem.Text = "Покупка билетов"; + TicketToolStripMenuItem.Click += TicketToolStripMenuItem_Click; + // + // отчетыToolStripMenuItem + // + отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem"; + отчетыToolStripMenuItem.Size = new Size(73, 24); + отчетыToolStripMenuItem.Text = "Отчеты"; + // + // FormAirline + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = Properties.Resources.samolet; + BackgroundImageLayout = ImageLayout.Stretch; + ClientSize = new Size(782, 453); + Controls.Add(menuStrip); + MainMenuStrip = menuStrip; + Name = "FormAirline"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Авиалинии"; + menuStrip.ResumeLayout(false); + menuStrip.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip; + private ToolStripMenuItem справочникиToolStripMenuItem; + private ToolStripMenuItem операцииToolStripMenuItem; + private ToolStripMenuItem отчетыToolStripMenuItem; + private ToolStripMenuItem AirplaneToolStripMenuItem; + private ToolStripMenuItem EmployeeToolStripMenuItem; + private ToolStripMenuItem PassengerToolStripMenuItem; + private ToolStripMenuItem FlightToolStripMenuItem; + private ToolStripMenuItem TicketToolStripMenuItem; + } +} diff --git a/ProjectAirline/Forms/FormMain.cs b/ProjectAirline/Forms/FormAirline.cs similarity index 64% rename from ProjectAirline/Forms/FormMain.cs rename to ProjectAirline/Forms/FormAirline.cs index d4a4cba..c34cfad 100644 --- a/ProjectAirline/Forms/FormMain.cs +++ b/ProjectAirline/Forms/FormAirline.cs @@ -1,24 +1,23 @@ -using System; -using System.Windows.Forms; +using ProjectAirline.Forms; using Unity; -namespace YourNamespace.Forms +namespace ProjectAirline { - public partial class FormMain : Form + public partial class FormAirline : Form { private readonly IUnityContainer _container; - public FormMain(IUnityContainer container) + public FormAirline(IUnityContainer container) { InitializeComponent(); _container = container ?? throw new ArgumentNullException(nameof(container)); } - private void PassengersToolStripMenuItem_Click(object sender, EventArgs e) + private void AirplaneToolStripMenuItem_Click(object sender, EventArgs e) { try { - _container.Resolve().ShowDialog(); + _container.Resolve().ShowDialog(); } catch (Exception ex) { @@ -26,7 +25,7 @@ namespace YourNamespace.Forms } } - private void EmployeesToolStripMenuItem_Click(object sender, EventArgs e) + private void EmployeeToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -38,7 +37,19 @@ namespace YourNamespace.Forms } } - private void FlightsToolStripMenuItem_Click(object sender, EventArgs e) + private void PassengerToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void FlightToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -50,19 +61,7 @@ namespace YourNamespace.Forms } } - private void PlanesToolStripMenuItem_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) + private void TicketToolStripMenuItem_Click(object sender, EventArgs e) { try { @@ -73,17 +72,5 @@ namespace YourNamespace.Forms MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - - private void AirportsToolStripMenuItem_Click(object sender, EventArgs e) - { - try - { - _container.Resolve().ShowDialog(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormPlane.resx b/ProjectAirline/Forms/FormAirline.resx similarity index 91% rename from ProjectAirline/Forms/FormPlane.resx rename to ProjectAirline/Forms/FormAirline.resx index 1af7de1..6c82d08 100644 --- a/ProjectAirline/Forms/FormPlane.resx +++ b/ProjectAirline/Forms/FormAirline.resx @@ -1,17 +1,17 @@  - @@ -117,4 +117,7 @@ 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/ProjectAirline/Forms/FormAirplane.Designer.cs b/ProjectAirline/Forms/FormAirplane.Designer.cs new file mode 100644 index 0000000..22eb57a --- /dev/null +++ b/ProjectAirline/Forms/FormAirplane.Designer.cs @@ -0,0 +1,142 @@ +namespace ProjectAirline.Forms +{ + partial class FormAirplane + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + label2 = new Label(); + label3 = new Label(); + textBoxCountry = new TextBox(); + textBoxModel = new TextBox(); + numericUpDownCapacity = new NumericUpDown(); + buttonAdd = new Button(); + buttonCancel = new Button(); + ((System.ComponentModel.ISupportInitialize)numericUpDownCapacity).BeginInit(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(31, 41); + label1.Name = "label1"; + label1.Size = new Size(61, 20); + label1.TabIndex = 0; + label1.Text = "Страна:"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(31, 106); + label2.Name = "label2"; + label2.Size = new Size(66, 20); + label2.TabIndex = 1; + label2.Text = "Модель:"; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(31, 167); + label3.Name = "label3"; + label3.Size = new Size(103, 20); + label3.TabIndex = 2; + label3.Text = "Вместимость:"; + // + // textBoxCountry + // + textBoxCountry.Location = new Point(155, 41); + textBoxCountry.Name = "textBoxCountry"; + textBoxCountry.Size = new Size(150, 27); + textBoxCountry.TabIndex = 3; + // + // textBoxModel + // + textBoxModel.Location = new Point(155, 99); + textBoxModel.Name = "textBoxModel"; + textBoxModel.Size = new Size(150, 27); + textBoxModel.TabIndex = 4; + // + // numericUpDownCapacity + // + numericUpDownCapacity.Location = new Point(155, 165); + numericUpDownCapacity.Name = "numericUpDownCapacity"; + numericUpDownCapacity.Size = new Size(150, 27); + numericUpDownCapacity.TabIndex = 5; + // + // buttonAdd + // + buttonAdd.Location = new Point(45, 244); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(101, 43); + buttonAdd.TabIndex = 6; + buttonAdd.Text = "Сохранить"; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // buttonCancel + // + buttonCancel.Location = new Point(177, 244); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(100, 43); + buttonCancel.TabIndex = 7; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // FormAirplane + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(403, 356); + Controls.Add(buttonCancel); + Controls.Add(buttonAdd); + Controls.Add(numericUpDownCapacity); + Controls.Add(textBoxModel); + Controls.Add(textBoxCountry); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(label1); + Name = "FormAirplane"; + StartPosition = FormStartPosition.CenterParent; + Text = "Самолёт"; + ((System.ComponentModel.ISupportInitialize)numericUpDownCapacity).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private Label label2; + private Label label3; + private TextBox textBoxCountry; + private TextBox textBoxModel; + private NumericUpDown numericUpDownCapacity; + private Button buttonAdd; + private Button buttonCancel; + } +} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormAirplane.cs b/ProjectAirline/Forms/FormAirplane.cs new file mode 100644 index 0000000..e145fa1 --- /dev/null +++ b/ProjectAirline/Forms/FormAirplane.cs @@ -0,0 +1,78 @@ +using ProjectAirline.Entities; +using ProjectAirline.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; + +namespace ProjectAirline.Forms +{ + public partial class FormAirplane : Form + { + private readonly IAirplaneRepository _airplaneRepository; + private int? _airplaneId; + public int Id + { + set + { + try + { + var airplane = _airplaneRepository.ReadAirplaneById(value); + if (airplane == null) + { + throw new InvalidDataException(nameof(airplane)); + } + textBoxCountry.Text = airplane.Country; + textBoxModel.Text = airplane.Model; + numericUpDownCapacity.Value = airplane.Capacity; + _airplaneId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + public FormAirplane(IAirplaneRepository airplaneRepository) + { + InitializeComponent(); + _airplaneRepository = airplaneRepository ?? throw new ArgumentNullException(nameof(airplaneRepository)); + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxCountry.Text) || string.IsNullOrWhiteSpace(textBoxModel.Text)) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_airplaneId.HasValue) + { + _airplaneRepository.UpdateAirplane(CreateAirplane(_airplaneId.Value)); + } + else + { + _airplaneRepository.CreateAirplane(CreateAirplane(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Airplane CreateAirplane(int id) => Airplane.CreateEntity(id, textBoxCountry.Text, + textBoxModel.Text, Convert.ToInt32(numericUpDownCapacity.Value)); + + } +} diff --git a/ProjectAirline/Forms/FormAirport.resx b/ProjectAirline/Forms/FormAirplane.resx similarity index 100% rename from ProjectAirline/Forms/FormAirport.resx rename to ProjectAirline/Forms/FormAirplane.resx diff --git a/ProjectAirline/Forms/FormAirplanes.Designer.cs b/ProjectAirline/Forms/FormAirplanes.Designer.cs new file mode 100644 index 0000000..bbffe77 --- /dev/null +++ b/ProjectAirline/Forms/FormAirplanes.Designer.cs @@ -0,0 +1,131 @@ +namespace ProjectAirline.Forms +{ + partial class FormAirplanes + { + /// + /// 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAirplanes)); + panel1 = new Panel(); + buttonUpd = new Button(); + buttonDel = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonUpd); + panel1.Controls.Add(buttonDel); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(612, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(187, 468); + panel1.TabIndex = 0; + // + // buttonUpd + // + buttonUpd.BackColor = SystemColors.ButtonHighlight; + buttonUpd.BackgroundImage = (Image)resources.GetObject("buttonUpd.BackgroundImage"); + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(57, 203); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(88, 79); + buttonUpd.TabIndex = 2; + buttonUpd.UseVisualStyleBackColor = false; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonDel + // + buttonDel.BackColor = SystemColors.ButtonHighlight; + buttonDel.BackgroundImage = (Image)resources.GetObject("buttonDel.BackgroundImage"); + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(57, 120); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(88, 77); + buttonDel.TabIndex = 1; + buttonDel.UseVisualStyleBackColor = false; + buttonDel.Click += ButtonDel_Click; + // + // buttonAdd + // + buttonAdd.BackColor = SystemColors.ButtonHighlight; + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(57, 40); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(88, 74); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = false; + 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.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(612, 468); + dataGridView.TabIndex = 1; + // + // FormAirplanes + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(799, 468); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormAirplanes"; + StartPosition = FormStartPosition.CenterParent; + Text = "Самолёты"; + Load += FormAirplanes_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button buttonUpd; + private Button buttonDel; + private Button buttonAdd; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormAirports.cs b/ProjectAirline/Forms/FormAirplanes.cs similarity index 66% rename from ProjectAirline/Forms/FormAirports.cs rename to ProjectAirline/Forms/FormAirplanes.cs index 9380497..44cd0a1 100644 --- a/ProjectAirline/Forms/FormAirports.cs +++ b/ProjectAirline/Forms/FormAirplanes.cs @@ -1,23 +1,30 @@ -using System; +using ProjectAirline.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 System.Xml.Linq; using Unity; -using YourNamespace.Repositories; -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { - public partial class FormAirports : Form + public partial class FormAirplanes : Form { private readonly IUnityContainer _container; - private readonly IAirportRepository _airportRepository; + private readonly IAirplaneRepository _airplaneRepository; - public FormAirports(IUnityContainer container, IAirportRepository airportRepository) + public FormAirplanes(IUnityContainer container, IAirplaneRepository airplaneRepository) { InitializeComponent(); _container = container ?? throw new ArgumentNullException(nameof(container)); - _airportRepository = airportRepository ?? throw new ArgumentNullException(nameof(airportRepository)); + _airplaneRepository = airplaneRepository ?? throw new ArgumentNullException(nameof(airplaneRepository)); } - - private void FormAirports_Load(object sender, EventArgs e) + private void FormAirplanes_Load(object sender, EventArgs e) { try { @@ -25,7 +32,8 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -33,7 +41,7 @@ namespace YourNamespace.Forms { try { - _container.Resolve().ShowDialog(); + _container.Resolve().ShowDialog(); LoadList(); } catch (Exception ex) @@ -42,25 +50,6 @@ namespace YourNamespace.Forms } } - 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)) @@ -73,7 +62,7 @@ namespace YourNamespace.Forms } try { - _airportRepository.DeleteAirport(findId); + _airplaneRepository.DeleteAirplane(findId); LoadList(); } catch (Exception ex) @@ -82,18 +71,36 @@ namespace YourNamespace.Forms } } - private void LoadList() => dataGridViewData.DataSource = _airportRepository.ReadAirports(); - + 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 LoadList() => dataGridView.DataSource = _airplaneRepository.ReadAirplanes(); private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; - if (dataGridViewData.SelectedRows.Count < 1) + if (dataGridView.SelectedRows.Count < 1) { MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } - id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); return true; } + } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormAirplanes.resx b/ProjectAirline/Forms/FormAirplanes.resx new file mode 100644 index 0000000..f289bed --- /dev/null +++ b/ProjectAirline/Forms/FormAirplanes.resx @@ -0,0 +1,470 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + 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 + q93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d + 5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQVia + RIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa + Xm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSM + fQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW + 9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq9zwW9MAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZ + FZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsj + q93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuQAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAsFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAFQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAUAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU4AEYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAADJ4E4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJ88AEAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAvOckggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp4EAkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAEgAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkgEAkYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAgAkkksoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEgdzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + EEA5uzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEk4JuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk/ + PJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJ + uzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuz + oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuz4AAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAKkPJuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJryAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AKkvmJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkokeoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK + 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 + YsTyO4+SUvkJVWbq3j/xx//Z + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Z + + + \ No newline at end of file diff --git a/ProjectAirline/Forms/FormAirport.Designer.cs b/ProjectAirline/Forms/FormAirport.Designer.cs deleted file mode 100644 index 0a4bb68..0000000 --- a/ProjectAirline/Forms/FormAirport.Designer.cs +++ /dev/null @@ -1,118 +0,0 @@ -namespace YourNamespace.Forms -{ - partial class FormAirport - { - /// - /// 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.labelName = new System.Windows.Forms.Label(); - this.labelLocation = new System.Windows.Forms.Label(); - this.textBoxName = new System.Windows.Forms.TextBox(); - this.textBoxLocation = new System.Windows.Forms.TextBox(); - this.buttonSave = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // labelName - // - this.labelName.AutoSize = true; - this.labelName.Location = new System.Drawing.Point(12, 22); - this.labelName.Name = "labelName"; - this.labelName.Size = new System.Drawing.Size(57, 13); - this.labelName.TabIndex = 0; - this.labelName.Text = "Название:"; - // - // labelLocation - // - this.labelLocation.AutoSize = true; - this.labelLocation.Location = new System.Drawing.Point(12, 58); - this.labelLocation.Name = "labelLocation"; - this.labelLocation.Size = new System.Drawing.Size(48, 13); - this.labelLocation.TabIndex = 1; - this.labelLocation.Text = "Место:"; - // - // textBoxName - // - this.textBoxName.Location = new System.Drawing.Point(111, 19); - this.textBoxName.Name = "textBoxName"; - this.textBoxName.Size = new System.Drawing.Size(200, 20); - this.textBoxName.TabIndex = 2; - // - // textBoxLocation - // - this.textBoxLocation.Location = new System.Drawing.Point(111, 55); - this.textBoxLocation.Name = "textBoxLocation"; - this.textBoxLocation.Size = new System.Drawing.Size(200, 20); - this.textBoxLocation.TabIndex = 3; - // - // buttonSave - // - this.buttonSave.Location = new System.Drawing.Point(155, 91); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 23); - this.buttonSave.TabIndex = 4; - this.buttonSave.Text = "Сохранить"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click); - // - // buttonCancel - // - this.buttonCancel.Location = new System.Drawing.Point(236, 91); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); - this.buttonCancel.TabIndex = 5; - this.buttonCancel.Text = "Отмена"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); - // - // FormAirport - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(324, 126); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.textBoxLocation); - this.Controls.Add(this.textBoxName); - this.Controls.Add(this.labelLocation); - this.Controls.Add(this.labelName); - this.Name = "FormAirport"; - this.Text = "Редактирование аэропорта"; - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label labelName; - private System.Windows.Forms.Label labelLocation; - private System.Windows.Forms.TextBox textBoxName; - private System.Windows.Forms.TextBox textBoxLocation; - private System.Windows.Forms.Button buttonSave; - private System.Windows.Forms.Button buttonCancel; - } -} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormAirport.cs b/ProjectAirline/Forms/FormAirport.cs deleted file mode 100644 index 455eb1c..0000000 --- a/ProjectAirline/Forms/FormAirport.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Windows.Forms; -using YourNamespace.Entities; -using YourNamespace.Repositories; - -namespace YourNamespace.Forms -{ - public partial class FormAirport : Form - { - private readonly IAirportRepository _airportRepository; - private int? _airportId; - - public int Id - { - set - { - try - { - var airport = _airportRepository.ReadAirportById(value); - if (airport == null) - { - throw new InvalidDataException(nameof(airport)); - } - textBoxName.Text = airport.Name; - textBoxLocation.Text = airport.Location; - _airportId = value; - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - } - } - - public FormAirport(IAirportRepository airportRepository) - { - InitializeComponent(); - _airportRepository = airportRepository ?? throw new ArgumentNullException(nameof(airportRepository)); - } - - private void ButtonSave_Click(object sender, EventArgs e) - { - try - { - if (string.IsNullOrWhiteSpace(textBoxName.Text) || string.IsNullOrWhiteSpace(textBoxLocation.Text)) - { - throw new Exception("Имеются незаполненные поля"); - } - if (_airportId.HasValue) - { - _airportRepository.UpdateAirport(CreateAirport(_airportId.Value)); - } - else - { - _airportRepository.CreateAirport(CreateAirport(0)); - } - Close(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - - private Airport CreateAirport(int id) => Airport.CreateEntity(id, textBoxName.Text, textBoxLocation.Text); - } -} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormAirports.Designer.cs b/ProjectAirline/Forms/FormAirports.Designer.cs deleted file mode 100644 index ffd1ff8..0000000 --- a/ProjectAirline/Forms/FormAirports.Designer.cs +++ /dev/null @@ -1,106 +0,0 @@ -namespace YourNamespace.Forms -{ - partial class FormAirports - { - /// - /// 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.dataGridViewData = new System.Windows.Forms.DataGridView(); - this.buttonAdd = new System.Windows.Forms.Button(); - this.buttonUpd = new System.Windows.Forms.Button(); - this.buttonDel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).BeginInit(); - this.SuspendLayout(); // Вызов SuspendLayout - // - // dataGridViewData - // - this.dataGridViewData.AllowUserToAddRows = false; - this.dataGridViewData.AllowUserToDeleteRows = false; - this.dataGridViewData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewData.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewData.Location = new System.Drawing.Point(0, 0); - this.dataGridViewData.MultiSelect = false; - this.dataGridViewData.Name = "dataGridViewData"; - this.dataGridViewData.ReadOnly = true; - this.dataGridViewData.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewData.Size = new System.Drawing.Size(800, 450); - this.dataGridViewData.TabIndex = 0; - // - // buttonAdd - // - this.buttonAdd.Location = new System.Drawing.Point(12, 12); - this.buttonAdd.Name = "buttonAdd"; - this.buttonAdd.Size = new System.Drawing.Size(75, 23); - this.buttonAdd.TabIndex = 1; - this.buttonAdd.Text = "Добавить"; - this.buttonAdd.UseVisualStyleBackColor = true; - this.buttonAdd.Click += new System.EventHandler(this.ButtonAdd_Click); - // - // buttonUpd - // - this.buttonUpd.Location = new System.Drawing.Point(93, 12); - this.buttonUpd.Name = "buttonUpd"; - this.buttonUpd.Size = new System.Drawing.Size(75, 23); - this.buttonUpd.TabIndex = 2; - this.buttonUpd.Text = "Изменить"; - this.buttonUpd.UseVisualStyleBackColor = true; - this.buttonUpd.Click += new System.EventHandler(this.ButtonUpd_Click); - // - // buttonDel - // - this.buttonDel.Location = new System.Drawing.Point(174, 12); - this.buttonDel.Name = "buttonDel"; - this.buttonDel.Size = new System.Drawing.Size(75, 23); - this.buttonDel.TabIndex = 3; - this.buttonDel.Text = "Удалить"; - this.buttonDel.UseVisualStyleBackColor = true; - this.buttonDel.Click += new System.EventHandler(this.ButtonDel_Click); - // - // FormAirports - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Controls.Add(this.buttonDel); - this.Controls.Add(this.buttonUpd); - this.Controls.Add(this.buttonAdd); - this.Controls.Add(this.dataGridViewData); - this.Name = "FormAirports"; - this.Text = "Аэропорты"; - this.Load += new System.EventHandler(this.FormAirports_Load); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).EndInit(); - this.ResumeLayout(false); // Вызов ResumeLayout - - } - - #endregion - - private System.Windows.Forms.DataGridView dataGridViewData; - private System.Windows.Forms.Button buttonAdd; - private System.Windows.Forms.Button buttonUpd; - private System.Windows.Forms.Button buttonDel; - } -} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormEmployee.Designer.cs b/ProjectAirline/Forms/FormEmployee.Designer.cs index eb0082c..8f77f92 100644 --- a/ProjectAirline/Forms/FormEmployee.Designer.cs +++ b/ProjectAirline/Forms/FormEmployee.Designer.cs @@ -1,4 +1,4 @@ -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { partial class FormEmployee { @@ -28,114 +28,136 @@ /// private void InitializeComponent() { - this.labelFirstName = new System.Windows.Forms.Label(); - this.labelLastName = new System.Windows.Forms.Label(); - this.labelPost = new System.Windows.Forms.Label(); - this.textBoxFirstName = new System.Windows.Forms.TextBox(); - this.textBoxLastName = new System.Windows.Forms.TextBox(); - this.comboBoxPost = new System.Windows.Forms.ComboBox(); - this.buttonSave = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.SuspendLayout(); - // - // labelFirstName - // - this.labelFirstName.AutoSize = true; - this.labelFirstName.Location = new System.Drawing.Point(12, 22); - this.labelFirstName.Name = "labelFirstName"; - this.labelFirstName.Size = new System.Drawing.Size(32, 13); - this.labelFirstName.TabIndex = 0; - this.labelFirstName.Text = "Имя:"; - // - // labelLastName - // - this.labelLastName.AutoSize = true; - this.labelLastName.Location = new System.Drawing.Point(12, 58); - this.labelLastName.Name = "labelLastName"; - this.labelLastName.Size = new System.Drawing.Size(59, 13); - this.labelLastName.TabIndex = 1; - this.labelLastName.Text = "Фамилия:"; - // - // labelPost - // - this.labelPost.AutoSize = true; - this.labelPost.Location = new System.Drawing.Point(12, 94); - this.labelPost.Name = "labelPost"; - this.labelPost.Size = new System.Drawing.Size(65, 13); - this.labelPost.TabIndex = 2; - this.labelPost.Text = "Должность:"; - // - // textBoxFirstName - // - this.textBoxFirstName.Location = new System.Drawing.Point(111, 19); - this.textBoxFirstName.Name = "textBoxFirstName"; - this.textBoxFirstName.Size = new System.Drawing.Size(200, 20); - this.textBoxFirstName.TabIndex = 3; - // - // textBoxLastName - // - this.textBoxLastName.Location = new System.Drawing.Point(111, 55); - this.textBoxLastName.Name = "textBoxLastName"; - this.textBoxLastName.Size = new System.Drawing.Size(200, 20); - this.textBoxLastName.TabIndex = 4; + comboBoxPost = new ComboBox(); + label1 = new Label(); + label2 = new Label(); + label3 = new Label(); + label4 = new Label(); + textBoxContactInfo = new TextBox(); + textBoxLastName = new TextBox(); + textBoxFirstName = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + SuspendLayout(); // // comboBoxPost // - this.comboBoxPost.FormattingEnabled = true; - this.comboBoxPost.Location = new System.Drawing.Point(111, 91); - this.comboBoxPost.Name = "comboBoxPost"; - this.comboBoxPost.Size = new System.Drawing.Size(200, 21); - this.comboBoxPost.TabIndex = 5; + comboBoxPost.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxPost.FormattingEnabled = true; + comboBoxPost.Location = new Point(249, 262); + comboBoxPost.Name = "comboBoxPost"; + comboBoxPost.Size = new Size(202, 28); + comboBoxPost.TabIndex = 0; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(31, 39); + label1.Name = "label1"; + label1.Size = new Size(39, 20); + label1.TabIndex = 1; + label1.Text = "Имя"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(31, 96); + label2.Name = "label2"; + label2.Size = new Size(73, 20); + label2.TabIndex = 2; + label2.Text = "Фамилия"; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(31, 170); + label3.Name = "label3"; + label3.Size = new Size(183, 20); + label3.TabIndex = 3; + label3.Text = "Контактная информация"; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(31, 265); + label4.Name = "label4"; + label4.Size = new Size(86, 20); + label4.TabIndex = 4; + label4.Text = "Должность"; + // + // textBoxContactInfo + // + textBoxContactInfo.Location = new Point(249, 170); + textBoxContactInfo.Name = "textBoxContactInfo"; + textBoxContactInfo.Size = new Size(202, 27); + textBoxContactInfo.TabIndex = 5; + // + // textBoxLastName + // + textBoxLastName.Location = new Point(249, 94); + textBoxLastName.Name = "textBoxLastName"; + textBoxLastName.Size = new Size(202, 27); + textBoxLastName.TabIndex = 6; + // + // textBoxFirstName + // + textBoxFirstName.Location = new Point(249, 38); + textBoxFirstName.Name = "textBoxFirstName"; + textBoxFirstName.Size = new Size(202, 27); + textBoxFirstName.TabIndex = 7; // // buttonSave // - this.buttonSave.Location = new System.Drawing.Point(155, 128); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 23); - this.buttonSave.TabIndex = 6; - this.buttonSave.Text = "Сохранить"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click); + buttonSave.Location = new Point(31, 335); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(115, 62); + buttonSave.TabIndex = 8; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; // // buttonCancel // - this.buttonCancel.Location = new System.Drawing.Point(236, 128); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); - this.buttonCancel.TabIndex = 7; - this.buttonCancel.Text = "Отмена"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); + buttonCancel.Location = new Point(230, 335); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(116, 62); + buttonCancel.TabIndex = 9; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; // // FormEmployee // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(324, 166); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.comboBoxPost); - this.Controls.Add(this.textBoxLastName); - this.Controls.Add(this.textBoxFirstName); - this.Controls.Add(this.labelPost); - this.Controls.Add(this.labelLastName); - this.Controls.Add(this.labelFirstName); - this.Name = "FormEmployee"; - this.Text = "Редактирование сотрудника"; - this.ResumeLayout(false); - this.PerformLayout(); - + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxFirstName); + Controls.Add(textBoxLastName); + Controls.Add(textBoxContactInfo); + Controls.Add(label4); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(label1); + Controls.Add(comboBoxPost); + Name = "FormEmployee"; + Text = "Сотрудник"; + ResumeLayout(false); + PerformLayout(); } #endregion - private System.Windows.Forms.Label labelFirstName; - private System.Windows.Forms.Label labelLastName; - private System.Windows.Forms.Label labelPost; - private System.Windows.Forms.TextBox textBoxFirstName; - private System.Windows.Forms.TextBox textBoxLastName; - private System.Windows.Forms.ComboBox comboBoxPost; - private System.Windows.Forms.Button buttonSave; - private System.Windows.Forms.Button buttonCancel; + private ComboBox comboBoxPost; + private Label label1; + private Label label2; + private Label label3; + private Label label4; + private TextBox textBoxContactInfo; + private TextBox textBoxLastName; + private TextBox textBoxFirstName; + private Button buttonSave; + private Button buttonCancel; } } \ No newline at end of file diff --git a/ProjectAirline/Forms/FormEmployee.cs b/ProjectAirline/Forms/FormEmployee.cs index f267728..a8ac0f2 100644 --- a/ProjectAirline/Forms/FormEmployee.cs +++ b/ProjectAirline/Forms/FormEmployee.cs @@ -1,10 +1,18 @@ -using System; +using ProjectAirline.Entities; +using ProjectAirline.Entities.Enums; +using ProjectAirline.Repositories; +using ProjectAirline.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 YourNamespace.Entities; -using YourNamespace.Entities.Enums; -using YourNamespace.Repositories; -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { public partial class FormEmployee : Form { @@ -17,13 +25,15 @@ namespace YourNamespace.Forms { try { - var employee = _employeeRepository.ReadEmployeeById(value); + var employee = + _employeeRepository.ReadEmployeeById(value); if (employee == null) { throw new InvalidDataException(nameof(employee)); } textBoxFirstName.Text = employee.FirstName; textBoxLastName.Text = employee.LastName; + textBoxContactInfo.Text = employee.ContactInformation; comboBoxPost.SelectedItem = employee.EmployeePost; _employeeId = value; } @@ -34,12 +44,11 @@ namespace YourNamespace.Forms } } } - public FormEmployee(IEmployeeRepository employeeRepository) { InitializeComponent(); - _employeeRepository = employeeRepository ?? throw new ArgumentNullException(nameof(employeeRepository)); - + _employeeRepository = employeeRepository ?? + throw new ArgumentNullException(nameof(employeeRepository)); comboBoxPost.DataSource = Enum.GetValues(typeof(EmployeePost)); } @@ -47,7 +56,11 @@ namespace YourNamespace.Forms { try { - if (string.IsNullOrWhiteSpace(textBoxFirstName.Text) || string.IsNullOrWhiteSpace(textBoxLastName.Text) || comboBoxPost.SelectedIndex < 0) + if (string.IsNullOrWhiteSpace(textBoxFirstName.Text) || + string.IsNullOrWhiteSpace(textBoxLastName.Text) || + string.IsNullOrWhiteSpace(textBoxContactInfo.Text) + || + comboBoxPost.SelectedIndex < 1) { throw new Exception("Имеются незаполненные поля"); } @@ -63,12 +76,14 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private Employee CreateEmployee(int id) => + Employee.CreateEntity(id, textBoxFirstName.Text, textBoxLastName.Text, textBoxContactInfo.Text, (EmployeePost)comboBoxPost.SelectedItem!); - private Employee CreateEmployee(int id) => Employee.CreateEntity(id, textBoxFirstName.Text, textBoxLastName.Text, (EmployeePost)comboBoxPost.SelectedItem); } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormEmployees.Designer.cs b/ProjectAirline/Forms/FormEmployees.Designer.cs index 136c80e..44a6482 100644 --- a/ProjectAirline/Forms/FormEmployees.Designer.cs +++ b/ProjectAirline/Forms/FormEmployees.Designer.cs @@ -1,4 +1,4 @@ -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { partial class FormEmployees { @@ -28,79 +28,101 @@ /// private void InitializeComponent() { - this.dataGridViewData = new System.Windows.Forms.DataGridView(); - this.buttonAdd = new System.Windows.Forms.Button(); - this.buttonUpd = new System.Windows.Forms.Button(); - this.buttonDel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).BeginInit(); - this.SuspendLayout(); // Вызов SuspendLayout + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormEmployees)); + panel1 = new Panel(); + buttonUpdate = new Button(); + buttonRemove = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); // - // dataGridViewData + // panel1 // - this.dataGridViewData.AllowUserToAddRows = false; - this.dataGridViewData.AllowUserToDeleteRows = false; - this.dataGridViewData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewData.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewData.Location = new System.Drawing.Point(0, 0); - this.dataGridViewData.MultiSelect = false; - this.dataGridViewData.Name = "dataGridViewData"; - this.dataGridViewData.ReadOnly = true; - this.dataGridViewData.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewData.Size = new System.Drawing.Size(800, 450); - this.dataGridViewData.TabIndex = 0; + panel1.Controls.Add(buttonUpdate); + panel1.Controls.Add(buttonRemove); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(628, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(153, 455); + panel1.TabIndex = 0; + // + // buttonUpdate + // + buttonUpdate.BackgroundImage = (Image)resources.GetObject("buttonUpdate.BackgroundImage"); + buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpdate.Location = new Point(33, 271); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(94, 82); + buttonUpdate.TabIndex = 2; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += ButtonUpdate_Click; + // + // buttonRemove + // + buttonRemove.BackgroundImage = (Image)resources.GetObject("buttonRemove.BackgroundImage"); + buttonRemove.BackgroundImageLayout = ImageLayout.Stretch; + buttonRemove.Location = new Point(33, 166); + buttonRemove.Name = "buttonRemove"; + buttonRemove.Size = new Size(94, 82); + buttonRemove.TabIndex = 1; + buttonRemove.UseVisualStyleBackColor = true; + buttonRemove.Click += ButtonRemove_Click; // // buttonAdd // - this.buttonAdd.Location = new System.Drawing.Point(12, 12); - this.buttonAdd.Name = "buttonAdd"; - this.buttonAdd.Size = new System.Drawing.Size(75, 23); - this.buttonAdd.TabIndex = 1; - this.buttonAdd.Text = "Добавить"; - this.buttonAdd.UseVisualStyleBackColor = true; - this.buttonAdd.Click += new System.EventHandler(this.ButtonAdd_Click); + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(33, 50); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 82); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; // - // buttonUpd + // dataGridView // - this.buttonUpd.Location = new System.Drawing.Point(93, 12); - this.buttonUpd.Name = "buttonUpd"; - this.buttonUpd.Size = new System.Drawing.Size(75, 23); - this.buttonUpd.TabIndex = 2; - this.buttonUpd.Text = "Изменить"; - this.buttonUpd.UseVisualStyleBackColor = true; - this.buttonUpd.Click += new System.EventHandler(this.ButtonUpd_Click); - // - // buttonDel - // - this.buttonDel.Location = new System.Drawing.Point(174, 12); - this.buttonDel.Name = "buttonDel"; - this.buttonDel.Size = new System.Drawing.Size(75, 23); - this.buttonDel.TabIndex = 3; - this.buttonDel.Text = "Удалить"; - this.buttonDel.UseVisualStyleBackColor = true; - this.buttonDel.Click += new System.EventHandler(this.ButtonDel_Click); + 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.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(628, 455); + dataGridView.TabIndex = 1; // // FormEmployees // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Controls.Add(this.buttonDel); - this.Controls.Add(this.buttonUpd); - this.Controls.Add(this.buttonAdd); - this.Controls.Add(this.dataGridViewData); - this.Name = "FormEmployees"; - this.Text = "Сотрудники"; - this.Load += new System.EventHandler(this.FormEmployees_Load); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).EndInit(); - this.ResumeLayout(false); // Вызов ResumeLayout - + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(781, 455); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormEmployees"; + StartPosition = FormStartPosition.CenterParent; + Text = "Сотрудники"; + Load += FormEmployees_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); } #endregion - private System.Windows.Forms.DataGridView dataGridViewData; - private System.Windows.Forms.Button buttonAdd; - private System.Windows.Forms.Button buttonUpd; - private System.Windows.Forms.Button buttonDel; + private Panel panel1; + private Button buttonUpdate; + private Button buttonRemove; + private Button buttonAdd; + private DataGridView dataGridView; } } \ No newline at end of file diff --git a/ProjectAirline/Forms/FormEmployees.cs b/ProjectAirline/Forms/FormEmployees.cs index 34e24b3..fb02aec 100644 --- a/ProjectAirline/Forms/FormEmployees.cs +++ b/ProjectAirline/Forms/FormEmployees.cs @@ -1,22 +1,33 @@ -using System; +using ProjectAirline.Repositories; +using ProjectAirline.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; -using YourNamespace.Repositories; -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { public partial class FormEmployees : Form { private readonly IUnityContainer _container; private readonly IEmployeeRepository _employeeRepository; - - public FormEmployees(IUnityContainer container, IEmployeeRepository employeeRepository) + public FormEmployees(IUnityContainer container, IEmployeeRepository + employeeRepository) { InitializeComponent(); - _container = container ?? throw new ArgumentNullException(nameof(container)); - _employeeRepository = employeeRepository ?? throw new ArgumentNullException(nameof(employeeRepository)); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _employeeRepository = employeeRepository ?? + throw new + ArgumentNullException(nameof(employeeRepository)); } - private void FormEmployees_Load(object sender, EventArgs e) { try @@ -25,7 +36,8 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -38,11 +50,35 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void ButtonUpd_Click(object sender, EventArgs e) + private void ButtonRemove_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _employeeRepository.DeleteEmployee(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpdate_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) { @@ -57,43 +93,26 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + 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 - { - _employeeRepository.DeleteEmployee(findId); - LoadList(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void LoadList() => dataGridViewData.DataSource = _employeeRepository.ReadEmployees(); - + private void LoadList() => dataGridView.DataSource = + _employeeRepository.ReadEmployees(); private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; - if (dataGridViewData.SelectedRows.Count < 1) + if (dataGridView.SelectedRows.Count < 1) { - MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } - id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + id = + Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); return true; } + } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormEmployees.resx b/ProjectAirline/Forms/FormEmployees.resx index 1af7de1..361df5a 100644 --- a/ProjectAirline/Forms/FormEmployees.resx +++ b/ProjectAirline/Forms/FormEmployees.resx @@ -1,17 +1,17 @@  - @@ -117,4 +117,354 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + /9j/4AAQSkZJRgABAQEBLAEsAAD/4QCcRXhpZgAATU0AKgAAAAgAAwEOAAIAAABSAAAAMgEaAAUAAAAB + AAAAhAEbAAUAAAABAAAAjAAAAABTdGFuZGFyZCBXb29kIFllbGxvdyBIQiBQZW5jaWwgd2l0aCBTb2Z0 + IFBpbmsgRXJhc2VyIElzb2xhdGVkIG9uIFdoaXRlIEJhY2tncm91bmQAAAABLAAAAAEAAAEsAAAAAf/b + AEMACgcHCAcGCggICAsKCgsOGBAODQ0OHRUWERgjHyUkIh8iISYrNy8mKTQpISIwQTE0OTs+Pj4lLkRJ + QzxINz0+O//bAEMBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 + Ozs7Ozs7Ozs7Ozs7Ozs7O//CABEIAmQCZAMBEQACEQEDEQH/xAAbAAEBAAMBAQEAAAAAAAAAAAAAAwIE + BQYBB//EABkBAQEAAwEAAAAAAAAAAAAAAAACAQMFBP/aAAwDAQACEAMQAAAB9mAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGNnG1dLrbPBtVoAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAhjZ57T2J4vPMd/bytqtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + EMbPPaexPFgZ5jv7eVtVoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA152+f1deeLAAtXm9Du5NQAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAADXnb5jT2vmM0zgAWrR0tvI+Zx0CoAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAPM6Ozoz6RRNM4GdaOpt5G3nGqSOoVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANKfR5vR2MFC + ib3597byMs4qbBrmB0ygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpT6PN6OxgrKvP0d3G2M4+AqbRrGJ + 0igAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABpT6PPa+hnt5GWcbJYAsbJrHw6BUAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAA1TiEgbJcAsbRqkjqFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVOETBtFwfSpsGuYn + QwtkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqnDJg2TYPgLGyaOrZDi+7tdfwW9EAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAa5wSZ9NksD6NWzW4XQz0Zpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa + 5wiQNouR1bNTjdO/nUiRTZHV7vgt6IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1ThGAK6tkuN1MtWRWJ + pEimyOr3fBb0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqnDIatkeT1LaqpGPoKxNIkU2R1e74LeiAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAANTGfNcbr467FJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa + Xm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWM + fQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW + 9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZ + FJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsj + q93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d + 5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQVia + RIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa + Xm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSM + fQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW + 9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq9zwW9MAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZ + FZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsj + q93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuQAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAsFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAFQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAUAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU4AEYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAADJ4E4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJ88AEAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAvOckggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp4EAkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAEgAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkgEAkYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAgAkkksoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEgdzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + EEA5uzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEk4JuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk/ + PJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJ + uzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuz + oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuz4AAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAKkPJuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJryAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AKkvmJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkokeoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK + 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 + YsTyO4+SUvkJVWbq3j/xx//Z + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Z + + \ No newline at end of file diff --git a/ProjectAirline/Forms/FormFlight.Designer.cs b/ProjectAirline/Forms/FormFlight.Designer.cs index 11266b9..4c1ed9a 100644 --- a/ProjectAirline/Forms/FormFlight.Designer.cs +++ b/ProjectAirline/Forms/FormFlight.Designer.cs @@ -1,4 +1,4 @@ -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { partial class FormFlight { @@ -28,161 +28,246 @@ /// private void InitializeComponent() { - this.labelFlightNumber = new System.Windows.Forms.Label(); - this.labelDepartureDateTime = new System.Windows.Forms.Label(); - this.labelArrivalDateTime = new System.Windows.Forms.Label(); - this.labelPlane = new System.Windows.Forms.Label(); - this.labelAirport = new System.Windows.Forms.Label(); - this.numericUpDownFlightNumber = new System.Windows.Forms.NumericUpDown(); - this.dateTimePickerDeparture = new System.Windows.Forms.DateTimePicker(); - this.dateTimePickerArrival = new System.Windows.Forms.DateTimePicker(); - this.comboBoxPlane = new System.Windows.Forms.ComboBox(); - this.comboBoxAirport = new System.Windows.Forms.ComboBox(); - this.buttonSave = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFlightNumber)).BeginInit(); - this.SuspendLayout(); // Вызов SuspendLayout + label1 = new Label(); + label2 = new Label(); + label3 = new Label(); + label4 = new Label(); + label5 = new Label(); + label6 = new Label(); + comboBoxAirplane = new ComboBox(); + dateTimePickerDeparture = new DateTimePicker(); + dateTimePickerArrival = new DateTimePicker(); + numericUpDownPrice = new NumericUpDown(); + textBoxDestination = new TextBox(); + textBoxDeparture = new TextBox(); + groupBox1 = new GroupBox(); + dataGridView = new DataGridView(); + ColumnEmployee = new DataGridViewComboBoxColumn(); + ColumnFlight = new DataGridViewTextBoxColumn(); + ColumnHoursWork = new DataGridViewTextBoxColumn(); + buttonAdd = new Button(); + buttonCancel = new Button(); + ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).BeginInit(); + groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); // - // labelFlightNumber + // label1 // - this.labelFlightNumber.AutoSize = true; - this.labelFlightNumber.Location = new System.Drawing.Point(12, 22); - this.labelFlightNumber.Name = "labelFlightNumber"; - this.labelFlightNumber.Size = new System.Drawing.Size(80, 13); - this.labelFlightNumber.TabIndex = 0; - this.labelFlightNumber.Text = "Номер рейса:"; + label1.AutoSize = true; + label1.Location = new Point(12, 76); + label1.Name = "label1"; + label1.Size = new Size(149, 20); + label1.TabIndex = 0; + label1.Text = "Время отправления"; // - // labelDepartureDateTime + // label2 // - this.labelDepartureDateTime.AutoSize = true; - this.labelDepartureDateTime.Location = new System.Drawing.Point(12, 58); - this.labelDepartureDateTime.Name = "labelDepartureDateTime"; - this.labelDepartureDateTime.Size = new System.Drawing.Size(115, 13); - this.labelDepartureDateTime.TabIndex = 1; - this.labelDepartureDateTime.Text = "Дата и время вылета:"; + label2.AutoSize = true; + label2.Location = new Point(12, 125); + label2.Name = "label2"; + label2.Size = new Size(128, 20); + label2.TabIndex = 1; + label2.Text = "Время прибытия"; // - // labelArrivalDateTime + // label3 // - this.labelArrivalDateTime.AutoSize = true; - this.labelArrivalDateTime.Location = new System.Drawing.Point(12, 94); - this.labelArrivalDateTime.Name = "labelArrivalDateTime"; - this.labelArrivalDateTime.Size = new System.Drawing.Size(119, 13); - this.labelArrivalDateTime.TabIndex = 2; - this.labelArrivalDateTime.Text = "Дата и время прибытия:"; + label3.AutoSize = true; + label3.Location = new Point(12, 172); + label3.Name = "label3"; + label3.Size = new Size(136, 20); + label3.TabIndex = 2; + label3.Text = "Пункт назначения"; // - // labelPlane + // label4 // - this.labelPlane.AutoSize = true; - this.labelPlane.Location = new System.Drawing.Point(12, 130); - this.labelPlane.Name = "labelPlane"; - this.labelPlane.Size = new System.Drawing.Size(54, 13); - this.labelPlane.TabIndex = 3; - this.labelPlane.Text = "Самолет:"; + label4.AutoSize = true; + label4.Location = new Point(12, 218); + label4.Name = "label4"; + label4.Size = new Size(144, 20); + label4.TabIndex = 3; + label4.Text = "Пункт отправления"; // - // labelAirport + // label5 // - this.labelAirport.AutoSize = true; - this.labelAirport.Location = new System.Drawing.Point(12, 166); - this.labelAirport.Name = "labelAirport"; - this.labelAirport.Size = new System.Drawing.Size(59, 13); - this.labelAirport.TabIndex = 4; - this.labelAirport.Text = "Аэропорт:"; + label5.AutoSize = true; + label5.Location = new Point(12, 274); + label5.Name = "label5"; + label5.Size = new Size(97, 20); + label5.TabIndex = 4; + label5.Text = "Цена билета"; // - // numericUpDownFlightNumber + // label6 // - this.numericUpDownFlightNumber.Location = new System.Drawing.Point(133, 20); - this.numericUpDownFlightNumber.Name = "numericUpDownFlightNumber"; - this.numericUpDownFlightNumber.Size = new System.Drawing.Size(150, 20); - this.numericUpDownFlightNumber.TabIndex = 5; + label6.AutoSize = true; + label6.Location = new Point(41, 16); + label6.Name = "label6"; + label6.Size = new Size(68, 20); + label6.TabIndex = 5; + label6.Text = "Самолёт"; + // + // comboBoxAirplane + // + comboBoxAirplane.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxAirplane.FormattingEnabled = true; + comboBoxAirplane.Location = new Point(183, 16); + comboBoxAirplane.Name = "comboBoxAirplane"; + comboBoxAirplane.Size = new Size(231, 28); + comboBoxAirplane.TabIndex = 6; // // dateTimePickerDeparture // - this.dateTimePickerDeparture.Location = new System.Drawing.Point(133, 56); - this.dateTimePickerDeparture.Name = "dateTimePickerDeparture"; - this.dateTimePickerDeparture.Size = new System.Drawing.Size(150, 20); - this.dateTimePickerDeparture.TabIndex = 6; + dateTimePickerDeparture.Location = new Point(183, 76); + dateTimePickerDeparture.Name = "dateTimePickerDeparture"; + dateTimePickerDeparture.Size = new Size(250, 27); + dateTimePickerDeparture.TabIndex = 7; // // dateTimePickerArrival // - this.dateTimePickerArrival.Location = new System.Drawing.Point(133, 92); - this.dateTimePickerArrival.Name = "dateTimePickerArrival"; - this.dateTimePickerArrival.Size = new System.Drawing.Size(150, 20); - this.dateTimePickerArrival.TabIndex = 7; + dateTimePickerArrival.Location = new Point(183, 125); + dateTimePickerArrival.Name = "dateTimePickerArrival"; + dateTimePickerArrival.Size = new Size(250, 27); + dateTimePickerArrival.TabIndex = 8; // - // comboBoxPlane + // numericUpDownPrice // - this.comboBoxPlane.FormattingEnabled = true; - this.comboBoxPlane.Location = new System.Drawing.Point(133, 128); - this.comboBoxPlane.Name = "comboBoxPlane"; - this.comboBoxPlane.Size = new System.Drawing.Size(150, 21); - this.comboBoxPlane.TabIndex = 8; + numericUpDownPrice.Location = new Point(183, 274); + numericUpDownPrice.Name = "numericUpDownPrice"; + numericUpDownPrice.Size = new Size(250, 27); + numericUpDownPrice.TabIndex = 9; // - // comboBoxAirport + // textBoxDestination // - this.comboBoxAirport.FormattingEnabled = true; - this.comboBoxAirport.Location = new System.Drawing.Point(133, 164); - this.comboBoxAirport.Name = "comboBoxAirport"; - this.comboBoxAirport.Size = new System.Drawing.Size(150, 21); - this.comboBoxAirport.TabIndex = 9; + textBoxDestination.Location = new Point(183, 171); + textBoxDestination.Name = "textBoxDestination"; + textBoxDestination.Size = new Size(250, 27); + textBoxDestination.TabIndex = 10; // - // buttonSave + // textBoxDeparture // - this.buttonSave.Location = new System.Drawing.Point(133, 200); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 23); - this.buttonSave.TabIndex = 10; - this.buttonSave.Text = "Сохранить"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click); + textBoxDeparture.Location = new Point(183, 215); + textBoxDeparture.Name = "textBoxDeparture"; + textBoxDeparture.Size = new Size(250, 27); + textBoxDeparture.TabIndex = 11; + // + // groupBox1 + // + groupBox1.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox1.Controls.Add(dataGridView); + groupBox1.Location = new Point(14, 353); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new Size(594, 298); + groupBox1.TabIndex = 12; + groupBox1.TabStop = false; + groupBox1.Text = "Работники"; + // + // dataGridView + // + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnEmployee, ColumnFlight, ColumnHoursWork }); + dataGridView.Location = new Point(6, 26); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.RowHeadersVisible = false; + dataGridView.RowHeadersWidth = 51; + dataGridView.Size = new Size(582, 266); + dataGridView.TabIndex = 0; + // + // ColumnEmployee + // + ColumnEmployee.HeaderText = "Работник"; + ColumnEmployee.MinimumWidth = 6; + ColumnEmployee.Name = "ColumnEmployee"; + ColumnEmployee.Width = 125; + // + // ColumnFlight + // + ColumnFlight.HeaderText = "Рейс"; + ColumnFlight.MinimumWidth = 6; + ColumnFlight.Name = "ColumnFlight"; + ColumnFlight.Width = 125; + // + // ColumnHoursWork + // + ColumnHoursWork.HeaderText = "Часы работы"; + ColumnHoursWork.MinimumWidth = 6; + ColumnHoursWork.Name = "ColumnHoursWork"; + ColumnHoursWork.Width = 125; + // + // buttonAdd + // + buttonAdd.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonAdd.Location = new Point(15, 670); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(94, 40); + buttonAdd.TabIndex = 13; + buttonAdd.Text = "Добавить"; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; // // buttonCancel // - this.buttonCancel.Location = new System.Drawing.Point(208, 200); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); - this.buttonCancel.TabIndex = 11; - this.buttonCancel.Text = "Отмена"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(511, 670); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(94, 40); + buttonCancel.TabIndex = 14; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; // // FormFlight // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(304, 235); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.comboBoxAirport); - this.Controls.Add(this.comboBoxPlane); - this.Controls.Add(this.dateTimePickerArrival); - this.Controls.Add(this.dateTimePickerDeparture); - this.Controls.Add(this.numericUpDownFlightNumber); - this.Controls.Add(this.labelAirport); - this.Controls.Add(this.labelPlane); - this.Controls.Add(this.labelArrivalDateTime); - this.Controls.Add(this.labelDepartureDateTime); - this.Controls.Add(this.labelFlightNumber); - this.Name = "FormFlight"; - this.Text = "Редактирование рейса"; - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownFlightNumber)).EndInit(); - this.ResumeLayout(false); // Вызов ResumeLayout - this.PerformLayout(); // Вызов PerformLayout - + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(620, 722); + Controls.Add(buttonCancel); + Controls.Add(buttonAdd); + Controls.Add(groupBox1); + Controls.Add(textBoxDeparture); + Controls.Add(textBoxDestination); + Controls.Add(numericUpDownPrice); + Controls.Add(dateTimePickerArrival); + Controls.Add(dateTimePickerDeparture); + Controls.Add(comboBoxAirplane); + Controls.Add(label6); + Controls.Add(label5); + Controls.Add(label4); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(label1); + Name = "FormFlight"; + Text = "FormFlight"; + ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).EndInit(); + groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + PerformLayout(); } #endregion - private System.Windows.Forms.Label labelFlightNumber; - private System.Windows.Forms.Label labelDepartureDateTime; - private System.Windows.Forms.Label labelArrivalDateTime; - private System.Windows.Forms.Label labelPlane; - private System.Windows.Forms.Label labelAirport; - private System.Windows.Forms.NumericUpDown numericUpDownFlightNumber; - private System.Windows.Forms.DateTimePicker dateTimePickerDeparture; - private System.Windows.Forms.DateTimePicker dateTimePickerArrival; - private System.Windows.Forms.ComboBox comboBoxPlane; - private System.Windows.Forms.ComboBox comboBoxAirport; - private System.Windows.Forms.Button buttonSave; - private System.Windows.Forms.Button buttonCancel; + private Label label1; + private Label label2; + private Label label3; + private Label label4; + private Label label5; + private Label label6; + private ComboBox comboBoxAirplane; + private DateTimePicker dateTimePickerDeparture; + private DateTimePicker dateTimePickerArrival; + private NumericUpDown numericUpDownPrice; + private TextBox textBoxDestination; + private TextBox textBoxDeparture; + private GroupBox groupBox1; + private DataGridView dataGridView; + private Button buttonAdd; + private Button buttonCancel; + private DataGridViewComboBoxColumn ColumnEmployee; + private DataGridViewTextBoxColumn ColumnFlight; + private DataGridViewTextBoxColumn ColumnHoursWork; } } \ No newline at end of file diff --git a/ProjectAirline/Forms/FormFlight.cs b/ProjectAirline/Forms/FormFlight.cs index 2d48f5f..ef92291 100644 --- a/ProjectAirline/Forms/FormFlight.cs +++ b/ProjectAirline/Forms/FormFlight.cs @@ -1,75 +1,46 @@ -using System; +using ProjectAirline.Entities; +using ProjectAirline.Repositories; +using ProjectAirline.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 YourNamespace.Entities; -using YourNamespace.Repositories; -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { public partial class FormFlight : Form { private readonly IFlightRepository _flightRepository; - private readonly IPlaneRepository _planeRepository; - private readonly IAirportRepository _airportRepository; - private int? _flightId; - - public int Id - { - set - { - try - { - var flight = _flightRepository.ReadFlightById(value); - if (flight == null) - { - throw new InvalidDataException(nameof(flight)); - } - numericUpDownFlightNumber.Value = flight.FlightNumber; - dateTimePickerDeparture.Value = flight.DepartureDateTime; - dateTimePickerArrival.Value = flight.ArrivalDateTime; - comboBoxPlane.SelectedValue = flight.PlaneId; - comboBoxAirport.SelectedValue = flight.AirportId; - _flightId = value; - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - } - } - - public FormFlight(IFlightRepository flightRepository, IPlaneRepository planeRepository, IAirportRepository airportRepository) + public FormFlight(IFlightRepository flightRepository, IAirplaneRepository airplaneRepository, IEmployeeRepository employeeRepository) { InitializeComponent(); _flightRepository = flightRepository ?? throw new ArgumentNullException(nameof(flightRepository)); - _planeRepository = planeRepository ?? throw new ArgumentNullException(nameof(planeRepository)); - _airportRepository = airportRepository ?? throw new ArgumentNullException(nameof(airportRepository)); - comboBoxPlane.DataSource = _planeRepository.ReadPlanes(); - comboBoxPlane.DisplayMember = "Model"; - comboBoxPlane.ValueMember = "Id"; + comboBoxAirplane.DataSource = airplaneRepository.ReadAirplanes(); + comboBoxAirplane.DisplayMember = "Model"; + comboBoxAirplane.ValueMember = "Id"; - comboBoxAirport.DataSource = _airportRepository.ReadAirports(); - comboBoxAirport.DisplayMember = "Name"; - comboBoxAirport.ValueMember = "Id"; + ColumnEmployee.DataSource = employeeRepository.ReadEmployees(); + ColumnEmployee.DisplayMember = "FirstName"; + ColumnEmployee.ValueMember = "Id"; } - private void ButtonSave_Click(object sender, EventArgs e) + private void ButtonAdd_Click(object sender, EventArgs e) { + if (dataGridView.RowCount < 1 || comboBoxAirplane.SelectedIndex < 0 || numericUpDownPrice.Value <= 0) + { + throw new Exception("Имеются незаполненны поля"); + } try { - if (comboBoxPlane.SelectedIndex < 0 || comboBoxAirport.SelectedIndex < 0) - { - throw new Exception("Имеются незаполненные поля"); - } - if (_flightId.HasValue) - { - _flightRepository.UpdateFlight(CreateFlight(_flightId.Value)); - } - else - { - _flightRepository.CreateFlight(CreateFlight(0)); - } + _flightRepository.CreateFlight(Flight.CreateOperation(0, (int)comboBoxAirplane.SelectedValue, + textBoxDestination.Text, textBoxDeparture.Text, + (int)numericUpDownPrice.Value, CreateListFlightFromDataGrid())); Close(); } catch (Exception ex) @@ -78,8 +49,23 @@ namespace YourNamespace.Forms } } - private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - - private Flight CreateFlight(int id) => Flight.CreateEntity(id, (int)numericUpDownFlightNumber.Value, dateTimePickerDeparture.Value, dateTimePickerArrival.Value, (int)comboBoxPlane.SelectedValue, (int)comboBoxAirport.SelectedValue); + private void ButtonCancel_Click(object sender, EventArgs e) + { + Close(); + } + private List CreateListFlightFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["ColumnEmployee"].Value == null || row.Cells["ColumnFlight"].Value == null || row.Cells["ColumnHoursWork"].Value == null) + { + continue; + } + list.Add(EmployeeFlight.CreateOperation(0, Convert.ToInt32(row.Cells["ColumnEmployee"].Value), + Convert.ToInt32(row.Cells["ColumnFlight"].Value), Convert.ToInt32(row.Cells["ColumnHoursWork"].Value))); + } + return list; + } } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormFlight.resx b/ProjectAirline/Forms/FormFlight.resx index 1af7de1..af32865 100644 --- a/ProjectAirline/Forms/FormFlight.resx +++ b/ProjectAirline/Forms/FormFlight.resx @@ -1,17 +1,17 @@  - diff --git a/ProjectAirline/Forms/FormFlights.Designer.cs b/ProjectAirline/Forms/FormFlights.Designer.cs index d8c51b0..42999d4 100644 --- a/ProjectAirline/Forms/FormFlights.Designer.cs +++ b/ProjectAirline/Forms/FormFlights.Designer.cs @@ -1,4 +1,4 @@ -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { partial class FormFlights { @@ -28,79 +28,87 @@ /// private void InitializeComponent() { - this.dataGridViewData = new System.Windows.Forms.DataGridView(); - this.buttonAdd = new System.Windows.Forms.Button(); - this.buttonUpd = new System.Windows.Forms.Button(); - this.buttonDel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).BeginInit(); - this.SuspendLayout(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormFlights)); + panel1 = new Panel(); + buttonRemove = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); // - // dataGridViewData + // panel1 // - this.dataGridViewData.AllowUserToAddRows = false; - this.dataGridViewData.AllowUserToDeleteRows = false; - this.dataGridViewData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewData.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewData.Location = new System.Drawing.Point(0, 0); - this.dataGridViewData.MultiSelect = false; - this.dataGridViewData.Name = "dataGridViewData"; - this.dataGridViewData.ReadOnly = true; - this.dataGridViewData.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewData.Size = new System.Drawing.Size(800, 450); - this.dataGridViewData.TabIndex = 0; + panel1.Controls.Add(buttonRemove); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(653, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(147, 450); + panel1.TabIndex = 0; + // + // buttonRemove + // + buttonRemove.BackgroundImage = (Image)resources.GetObject("buttonRemove.BackgroundImage"); + buttonRemove.BackgroundImageLayout = ImageLayout.Stretch; + buttonRemove.Location = new Point(33, 165); + buttonRemove.Name = "buttonRemove"; + buttonRemove.Size = new Size(89, 83); + buttonRemove.TabIndex = 1; + buttonRemove.UseVisualStyleBackColor = true; + buttonRemove.Click += ButtonRemove_Click; // // buttonAdd // - this.buttonAdd.Location = new System.Drawing.Point(12, 12); - this.buttonAdd.Name = "buttonAdd"; - this.buttonAdd.Size = new System.Drawing.Size(75, 23); - this.buttonAdd.TabIndex = 1; - this.buttonAdd.Text = "Добавить"; - this.buttonAdd.UseVisualStyleBackColor = true; - this.buttonAdd.Click += new System.EventHandler(this.ButtonAdd_Click); + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(33, 41); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(89, 83); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; // - // buttonUpd + // dataGridView // - this.buttonUpd.Location = new System.Drawing.Point(93, 12); - this.buttonUpd.Name = "buttonUpd"; - this.buttonUpd.Size = new System.Drawing.Size(75, 23); - this.buttonUpd.TabIndex = 2; - this.buttonUpd.Text = "Изменить"; - this.buttonUpd.UseVisualStyleBackColor = true; - this.buttonUpd.Click += new System.EventHandler(this.ButtonUpd_Click); - // - // buttonDel - // - this.buttonDel.Location = new System.Drawing.Point(174, 12); - this.buttonDel.Name = "buttonDel"; - this.buttonDel.Size = new System.Drawing.Size(75, 23); - this.buttonDel.TabIndex = 3; - this.buttonDel.Text = "Удалить"; - this.buttonDel.UseVisualStyleBackColor = true; - this.buttonDel.Click += new System.EventHandler(this.ButtonDel_Click); + 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.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(653, 450); + dataGridView.TabIndex = 1; // // FormFlights // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Controls.Add(this.buttonDel); - this.Controls.Add(this.buttonUpd); - this.Controls.Add(this.buttonAdd); - this.Controls.Add(this.dataGridViewData); - this.Name = "FormFlights"; - this.Text = "Рейсы"; - this.Load += new System.EventHandler(this.FormFlights_Load); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).EndInit(); - this.ResumeLayout(false); - + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormFlights"; + StartPosition = FormStartPosition.CenterParent; + Text = "Рейсы"; + Load += FormFlights_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); } #endregion - private System.Windows.Forms.DataGridView dataGridViewData; - private System.Windows.Forms.Button buttonAdd; - private System.Windows.Forms.Button buttonUpd; - private System.Windows.Forms.Button buttonDel; + private Panel panel1; + private Button buttonRemove; + private Button buttonAdd; + private DataGridView dataGridView; } } \ No newline at end of file diff --git a/ProjectAirline/Forms/FormFlights.cs b/ProjectAirline/Forms/FormFlights.cs index 19fdfc9..41d4ad0 100644 --- a/ProjectAirline/Forms/FormFlights.cs +++ b/ProjectAirline/Forms/FormFlights.cs @@ -1,22 +1,28 @@ 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; -using YourNamespace.Repositories; +using ProjectAirline.Repositories; +using System.Xml.Linq; -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { public partial class FormFlights : Form { private readonly IUnityContainer _container; private readonly IFlightRepository _flightRepository; - public FormFlights(IUnityContainer container, IFlightRepository flightRepository) { InitializeComponent(); _container = container ?? throw new ArgumentNullException(nameof(container)); _flightRepository = flightRepository ?? throw new ArgumentNullException(nameof(flightRepository)); } - private void FormFlights_Load(object sender, EventArgs e) { try @@ -42,26 +48,7 @@ namespace YourNamespace.Forms } } - 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) + private void ButtonRemove_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) { @@ -82,18 +69,17 @@ namespace YourNamespace.Forms } } - private void LoadList() => dataGridViewData.DataSource = _flightRepository.ReadFlights(); - + private void LoadList() => dataGridView.DataSource = _flightRepository.ReadFlights(); private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; - if (dataGridViewData.SelectedRows.Count < 1) + if (dataGridView.SelectedRows.Count < 1) { MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } - id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); return true; } } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormFlights.resx b/ProjectAirline/Forms/FormFlights.resx index 1af7de1..90c519c 100644 --- a/ProjectAirline/Forms/FormFlights.resx +++ b/ProjectAirline/Forms/FormFlights.resx @@ -1,17 +1,17 @@  - @@ -117,4 +117,123 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Z + + \ No newline at end of file diff --git a/ProjectAirline/Forms/FormMain.Designer.cs b/ProjectAirline/Forms/FormMain.Designer.cs deleted file mode 100644 index ff8c32b..0000000 --- a/ProjectAirline/Forms/FormMain.Designer.cs +++ /dev/null @@ -1,134 +0,0 @@ -namespace YourNamespace.Forms -{ - partial class FormMain - { - /// - /// 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.menuStrip = new System.Windows.Forms.MenuStrip(); - this.справочникиToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.ticketsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.passengersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.flightsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.airportsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.planesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.employeesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.menuStrip.SuspendLayout(); - this.SuspendLayout(); - // - // menuStrip - // - this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.справочникиToolStripMenuItem}); - this.menuStrip.Location = new System.Drawing.Point(0, 0); - this.menuStrip.Name = "menuStrip"; - this.menuStrip.Size = new System.Drawing.Size(800, 24); - this.menuStrip.TabIndex = 0; - this.menuStrip.Text = "menuStrip1"; - // - // справочникиToolStripMenuItem - // - this.справочникиToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.ticketsToolStripMenuItem, - this.passengersToolStripMenuItem, - this.flightsToolStripMenuItem, - this.airportsToolStripMenuItem, - this.planesToolStripMenuItem, - this.employeesToolStripMenuItem}); - this.справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; - this.справочникиToolStripMenuItem.Size = new System.Drawing.Size(94, 20); - this.справочникиToolStripMenuItem.Text = "Справочники"; - // - // ticketsToolStripMenuItem - // - this.ticketsToolStripMenuItem.Name = "ticketsToolStripMenuItem"; - this.ticketsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.ticketsToolStripMenuItem.Text = "Билеты"; - this.ticketsToolStripMenuItem.Click += new System.EventHandler(this.TicketsToolStripMenuItem_Click); - // - // passengersToolStripMenuItem - // - this.passengersToolStripMenuItem.Name = "passengersToolStripMenuItem"; - this.passengersToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.passengersToolStripMenuItem.Text = "Пассажиры"; - this.passengersToolStripMenuItem.Click += new System.EventHandler(this.PassengersToolStripMenuItem_Click); - // - // flightsToolStripMenuItem - // - this.flightsToolStripMenuItem.Name = "flightsToolStripMenuItem"; - this.flightsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.flightsToolStripMenuItem.Text = "Рейсы"; - this.flightsToolStripMenuItem.Click += new System.EventHandler(this.FlightsToolStripMenuItem_Click); - // - // airportsToolStripMenuItem - // - this.airportsToolStripMenuItem.Name = "airportsToolStripMenuItem"; - this.airportsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.airportsToolStripMenuItem.Text = "Аэропорты"; - this.airportsToolStripMenuItem.Click += new System.EventHandler(this.AirportsToolStripMenuItem_Click); - // - // planesToolStripMenuItem - // - this.planesToolStripMenuItem.Name = "planesToolStripMenuItem"; - this.planesToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.planesToolStripMenuItem.Text = "Самолеты"; - this.planesToolStripMenuItem.Click += new System.EventHandler(this.PlanesToolStripMenuItem_Click); - // - // employeesToolStripMenuItem - // - this.employeesToolStripMenuItem.Name = "employeesToolStripMenuItem"; - this.employeesToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.employeesToolStripMenuItem.Text = "Сотрудники"; - this.employeesToolStripMenuItem.Click += new System.EventHandler(this.EmployeesToolStripMenuItem_Click); - // - // FormMain - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Controls.Add(this.menuStrip); - this.MainMenuStrip = this.menuStrip; - this.Name = "FormMain"; - this.Text = "Главная форма"; - this.menuStrip.ResumeLayout(false); - this.menuStrip.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.MenuStrip menuStrip; - private System.Windows.Forms.ToolStripMenuItem справочникиToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem ticketsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem passengersToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem flightsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem airportsToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem planesToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem employeesToolStripMenuItem; - } -} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormMain.resx b/ProjectAirline/Forms/FormMain.resx deleted file mode 100644 index 1af7de1..0000000 --- a/ProjectAirline/Forms/FormMain.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/ProjectAirline/Forms/FormPassenger.Designer.cs b/ProjectAirline/Forms/FormPassenger.Designer.cs index 2fa486b..4f26d34 100644 --- a/ProjectAirline/Forms/FormPassenger.Designer.cs +++ b/ProjectAirline/Forms/FormPassenger.Designer.cs @@ -1,4 +1,4 @@ -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { partial class FormPassenger { @@ -28,113 +28,135 @@ /// private void InitializeComponent() { - this.labelFirstName = new System.Windows.Forms.Label(); - this.labelLastName = new System.Windows.Forms.Label(); - this.labelPassportNumber = new System.Windows.Forms.Label(); - this.textBoxFirstName = new System.Windows.Forms.TextBox(); - this.textBoxLastName = new System.Windows.Forms.TextBox(); - this.textBoxPassportNumber = new System.Windows.Forms.TextBox(); - this.buttonSave = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.SuspendLayout(); + checkedListBoxType = new CheckedListBox(); + label1 = new Label(); + textBoxFirstname = new TextBox(); + textBoxLastname = new TextBox(); + label2 = new Label(); + label3 = new Label(); + label4 = new Label(); + dateTimePickerBorn = new DateTimePicker(); + buttonSave = new Button(); + buttonCancel = new Button(); + SuspendLayout(); // - // labelFirstName + // checkedListBoxType // - this.labelFirstName.AutoSize = true; - this.labelFirstName.Location = new System.Drawing.Point(12, 22); - this.labelFirstName.Name = "labelFirstName"; - this.labelFirstName.Size = new System.Drawing.Size(32, 13); - this.labelFirstName.TabIndex = 0; - this.labelFirstName.Text = "Имя:"; + checkedListBoxType.FormattingEnabled = true; + checkedListBoxType.Location = new Point(173, 27); + checkedListBoxType.Name = "checkedListBoxType"; + checkedListBoxType.Size = new Size(205, 114); + checkedListBoxType.TabIndex = 0; // - // labelLastName + // label1 // - this.labelLastName.AutoSize = true; - this.labelLastName.Location = new System.Drawing.Point(12, 58); - this.labelLastName.Name = "labelLastName"; - this.labelLastName.Size = new System.Drawing.Size(59, 13); - this.labelLastName.TabIndex = 1; - this.labelLastName.Text = "Фамилия:"; + label1.AutoSize = true; + label1.Location = new Point(39, 55); + label1.Name = "label1"; + label1.Size = new Size(115, 20); + label1.TabIndex = 2; + label1.Text = "Тип пассажира"; // - // labelPassportNumber + // textBoxFirstname // - this.labelPassportNumber.AutoSize = true; - this.labelPassportNumber.Location = new System.Drawing.Point(12, 94); - this.labelPassportNumber.Name = "labelPassportNumber"; - this.labelPassportNumber.Size = new System.Drawing.Size(93, 13); - this.labelPassportNumber.TabIndex = 2; - this.labelPassportNumber.Text = "Номер паспорта:"; + textBoxFirstname.Location = new Point(173, 176); + textBoxFirstname.Name = "textBoxFirstname"; + textBoxFirstname.Size = new Size(205, 27); + textBoxFirstname.TabIndex = 3; // - // textBoxFirstName + // textBoxLastname // - this.textBoxFirstName.Location = new System.Drawing.Point(111, 19); - this.textBoxFirstName.Name = "textBoxFirstName"; - this.textBoxFirstName.Size = new System.Drawing.Size(200, 20); - this.textBoxFirstName.TabIndex = 3; + textBoxLastname.Location = new Point(174, 234); + textBoxLastname.Name = "textBoxLastname"; + textBoxLastname.Size = new Size(210, 27); + textBoxLastname.TabIndex = 4; // - // textBoxLastName + // label2 // - this.textBoxLastName.Location = new System.Drawing.Point(111, 55); - this.textBoxLastName.Name = "textBoxLastName"; - this.textBoxLastName.Size = new System.Drawing.Size(200, 20); - this.textBoxLastName.TabIndex = 4; + label2.AutoSize = true; + label2.Location = new Point(63, 180); + label2.Name = "label2"; + label2.Size = new Size(39, 20); + label2.TabIndex = 5; + label2.Text = "Имя"; // - // textBoxPassportNumber + // label3 // - this.textBoxPassportNumber.Location = new System.Drawing.Point(111, 91); - this.textBoxPassportNumber.Name = "textBoxPassportNumber"; - this.textBoxPassportNumber.Size = new System.Drawing.Size(200, 20); - this.textBoxPassportNumber.TabIndex = 5; + label3.AutoSize = true; + label3.Location = new Point(52, 237); + label3.Name = "label3"; + label3.Size = new Size(73, 20); + label3.TabIndex = 6; + label3.Text = "Фамилия"; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(38, 303); + label4.Name = "label4"; + label4.Size = new Size(116, 20); + label4.TabIndex = 7; + label4.Text = "Дата рождения"; + // + // dateTimePickerBorn + // + dateTimePickerBorn.Location = new Point(173, 303); + dateTimePickerBorn.Name = "dateTimePickerBorn"; + dateTimePickerBorn.Size = new Size(224, 27); + dateTimePickerBorn.TabIndex = 8; // // buttonSave // - this.buttonSave.Location = new System.Drawing.Point(155, 128); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 23); - this.buttonSave.TabIndex = 6; - this.buttonSave.Text = "Сохранить"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click); + buttonSave.Location = new Point(47, 364); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(115, 60); + buttonSave.TabIndex = 9; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; // // buttonCancel // - this.buttonCancel.Location = new System.Drawing.Point(236, 128); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); - this.buttonCancel.TabIndex = 7; - this.buttonCancel.Text = "Отмена"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); + buttonCancel.Location = new Point(267, 365); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(111, 59); + buttonCancel.TabIndex = 10; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; // // FormPassenger // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(324, 166); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.textBoxPassportNumber); - this.Controls.Add(this.textBoxLastName); - this.Controls.Add(this.textBoxFirstName); - this.Controls.Add(this.labelPassportNumber); - this.Controls.Add(this.labelLastName); - this.Controls.Add(this.labelFirstName); - this.Name = "FormPassenger"; - this.Text = "Редактирование пассажира"; - this.ResumeLayout(false); - this.PerformLayout(); - + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(417, 464); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(dateTimePickerBorn); + Controls.Add(label4); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(textBoxLastname); + Controls.Add(textBoxFirstname); + Controls.Add(label1); + Controls.Add(checkedListBoxType); + Name = "FormPassenger"; + Text = "Пассажир"; + ResumeLayout(false); + PerformLayout(); } #endregion - private System.Windows.Forms.Label labelFirstName; - private System.Windows.Forms.Label labelLastName; - private System.Windows.Forms.Label labelPassportNumber; - private System.Windows.Forms.TextBox textBoxFirstName; - private System.Windows.Forms.TextBox textBoxLastName; - private System.Windows.Forms.TextBox textBoxPassportNumber; - private System.Windows.Forms.Button buttonSave; - private System.Windows.Forms.Button buttonCancel; + private CheckedListBox checkedListBoxType; + private Label label1; + private TextBox textBoxFirstname; + private TextBox textBoxLastname; + private Label label2; + private Label label3; + private Label label4; + private DateTimePicker dateTimePickerBorn; + private Button buttonSave; + private Button buttonCancel; } } \ No newline at end of file diff --git a/ProjectAirline/Forms/FormPassenger.cs b/ProjectAirline/Forms/FormPassenger.cs index d628f5c..2e98048 100644 --- a/ProjectAirline/Forms/FormPassenger.cs +++ b/ProjectAirline/Forms/FormPassenger.cs @@ -1,71 +1,109 @@ 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 YourNamespace.Entities; -using YourNamespace.Repositories; +using ProjectAirline.Entities.Enums; +using ProjectAirline.Entities; +using ProjectAirline.Repositories; -namespace YourNamespace.Forms + +namespace ProjectAirline.Forms; + +public partial class FormPassenger : Form { - public partial class FormPassenger : Form + private readonly IPassengerRepository _passengerRepository; + private int? _passengerId; + public int Id { - 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)); - } - textBoxFirstName.Text = passenger.FirstName; - textBoxLastName.Text = passenger.LastName; - textBoxPassportNumber.Text = passenger.PassportNumber; - _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)); - } - - private void ButtonSave_Click(object sender, EventArgs e) + set { try { - if (string.IsNullOrWhiteSpace(textBoxFirstName.Text) || string.IsNullOrWhiteSpace(textBoxLastName.Text) || string.IsNullOrWhiteSpace(textBoxPassportNumber.Text)) + var passenger = + _passengerRepository.ReadPassengerById(value); + if (passenger == null) { - throw new Exception("Имеются незаполненные поля"); + throw new + InvalidDataException(nameof(passenger)); } - if (_passengerId.HasValue) + foreach (FoodPreferences elem in Enum.GetValues(typeof(FoodPreferences))) { - _passengerRepository.UpdatePassenger(CreatePassenger(_passengerId.Value)); + if ((elem & passenger.FoodPreferences) != 0) + { + checkedListBoxType.SetItemChecked(checkedListBoxType.Items.IndexOf( + elem), true); + } } - else - { - _passengerRepository.CreatePassenger(CreatePassenger(0)); - } - Close(); + + + textBoxFirstname.Text = passenger.FirstName; + textBoxLastname.Text = passenger.LastName; + dateTimePickerBorn.Value = passenger.DateBirth; + _passengerId = value; } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; } } - - private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - - private Passenger CreatePassenger(int id) => Passenger.CreateEntity(id, textBoxFirstName.Text, textBoxLastName.Text, textBoxPassportNumber.Text); } -} \ No newline at end of file + public FormPassenger(IPassengerRepository passengerRepository) + { + InitializeComponent(); + _passengerRepository = passengerRepository ?? + throw new ArgumentNullException(nameof(passengerRepository)); + + foreach (var elem in Enum.GetValues(typeof(FoodPreferences))) + { + checkedListBoxType.Items.Add(elem); + } + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (checkedListBoxType.CheckedItems.Count == 0 || + string.IsNullOrWhiteSpace(textBoxFirstname.Text) || + string.IsNullOrWhiteSpace(textBoxLastname.Text)) + { + 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) + { + FoodPreferences foodPreferences = FoodPreferences.None; + foreach (var elem in checkedListBoxType.CheckedItems) + { + foodPreferences |= (FoodPreferences)elem; + } + + return Passenger.CreateEntity(id, foodPreferences, textBoxFirstname.Text, textBoxLastname.Text); + } +} diff --git a/ProjectAirline/Forms/FormPassengers.Designer.cs b/ProjectAirline/Forms/FormPassengers.Designer.cs index db78842..baefe02 100644 --- a/ProjectAirline/Forms/FormPassengers.Designer.cs +++ b/ProjectAirline/Forms/FormPassengers.Designer.cs @@ -1,4 +1,4 @@ -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { partial class FormPassengers { @@ -28,79 +28,101 @@ /// private void InitializeComponent() { - this.dataGridViewData = new System.Windows.Forms.DataGridView(); - this.buttonAdd = new System.Windows.Forms.Button(); - this.buttonUpd = new System.Windows.Forms.Button(); - this.buttonDel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).BeginInit(); - this.SuspendLayout(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormPassengers)); + panel1 = new Panel(); + buttonUpdate = new Button(); + buttonRemove = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); // - // dataGridViewData + // panel1 // - this.dataGridViewData.AllowUserToAddRows = false; - this.dataGridViewData.AllowUserToDeleteRows = false; - this.dataGridViewData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewData.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewData.Location = new System.Drawing.Point(0, 0); - this.dataGridViewData.MultiSelect = false; - this.dataGridViewData.Name = "dataGridViewData"; - this.dataGridViewData.ReadOnly = true; - this.dataGridViewData.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewData.Size = new System.Drawing.Size(800, 450); - this.dataGridViewData.TabIndex = 0; + panel1.Controls.Add(buttonUpdate); + panel1.Controls.Add(buttonRemove); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(642, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(158, 450); + panel1.TabIndex = 0; + // + // buttonUpdate + // + buttonUpdate.BackgroundImage = (Image)resources.GetObject("buttonUpdate.BackgroundImage"); + buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpdate.Location = new Point(36, 246); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(93, 84); + buttonUpdate.TabIndex = 2; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += ButtonUpdate_Click; + // + // buttonRemove + // + buttonRemove.BackgroundImage = (Image)resources.GetObject("buttonRemove.BackgroundImage"); + buttonRemove.BackgroundImageLayout = ImageLayout.Stretch; + buttonRemove.Location = new Point(36, 144); + buttonRemove.Name = "buttonRemove"; + buttonRemove.Size = new Size(93, 84); + buttonRemove.TabIndex = 1; + buttonRemove.UseVisualStyleBackColor = true; + buttonRemove.Click += ButtonRemove_Click; // // buttonAdd // - this.buttonAdd.Location = new System.Drawing.Point(12, 12); - this.buttonAdd.Name = "buttonAdd"; - this.buttonAdd.Size = new System.Drawing.Size(75, 23); - this.buttonAdd.TabIndex = 1; - this.buttonAdd.Text = "Добавить"; - this.buttonAdd.UseVisualStyleBackColor = true; - this.buttonAdd.Click += new System.EventHandler(this.ButtonAdd_Click); + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(36, 37); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(93, 84); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; // - // buttonUpd + // dataGridView // - this.buttonUpd.Location = new System.Drawing.Point(93, 12); - this.buttonUpd.Name = "buttonUpd"; - this.buttonUpd.Size = new System.Drawing.Size(75, 23); - this.buttonUpd.TabIndex = 2; - this.buttonUpd.Text = "Изменить"; - this.buttonUpd.UseVisualStyleBackColor = true; - this.buttonUpd.Click += new System.EventHandler(this.ButtonUpd_Click); - // - // buttonDel - // - this.buttonDel.Location = new System.Drawing.Point(174, 12); - this.buttonDel.Name = "buttonDel"; - this.buttonDel.Size = new System.Drawing.Size(75, 23); - this.buttonDel.TabIndex = 3; - this.buttonDel.Text = "Удалить"; - this.buttonDel.UseVisualStyleBackColor = true; - this.buttonDel.Click += new System.EventHandler(this.ButtonDel_Click); + 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.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(642, 450); + dataGridView.TabIndex = 1; // // FormPassengers // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Controls.Add(this.buttonDel); - this.Controls.Add(this.buttonUpd); - this.Controls.Add(this.buttonAdd); - this.Controls.Add(this.dataGridViewData); - this.Name = "FormPassengers"; - this.Text = "Пассажиры"; - this.Load += new System.EventHandler(this.FormPassengers_Load); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).EndInit(); - this.ResumeLayout(false); - + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormPassengers"; + StartPosition = FormStartPosition.CenterParent; + Text = "Пассажиры"; + Load += FormPassengers_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); } #endregion - private System.Windows.Forms.DataGridView dataGridViewData; - private System.Windows.Forms.Button buttonAdd; - private System.Windows.Forms.Button buttonUpd; - private System.Windows.Forms.Button buttonDel; + private Panel panel1; + private Button buttonUpdate; + private Button buttonRemove; + private Button buttonAdd; + private DataGridView dataGridView; } } \ No newline at end of file diff --git a/ProjectAirline/Forms/FormPassengers.cs b/ProjectAirline/Forms/FormPassengers.cs index af67542..f305909 100644 --- a/ProjectAirline/Forms/FormPassengers.cs +++ b/ProjectAirline/Forms/FormPassengers.cs @@ -1,20 +1,29 @@ 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 ProjectAirline.Repositories; using Unity; -using YourNamespace.Repositories; -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { public partial class FormPassengers : Form { private readonly IUnityContainer _container; private readonly IPassengerRepository _passengerRepository; - - public FormPassengers(IUnityContainer container, IPassengerRepository passengerRepository) + public FormPassengers(IUnityContainer container, IPassengerRepository + passengerRepository) { InitializeComponent(); - _container = container ?? throw new ArgumentNullException(nameof(container)); - _passengerRepository = passengerRepository ?? throw new ArgumentNullException(nameof(passengerRepository)); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _passengerRepository = passengerRepository ?? + throw new ArgumentNullException(nameof(passengerRepository)); } private void FormPassengers_Load(object sender, EventArgs e) @@ -25,7 +34,8 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } @@ -38,11 +48,35 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка при добавлении", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void ButtonUpd_Click(object sender, EventArgs e) + private void ButtonRemove_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 ButtonUpdate_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) { @@ -57,43 +91,25 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + 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() => dataGridViewData.DataSource = _passengerRepository.ReadPassengers(); - + private void LoadList() => dataGridView.DataSource = + _passengerRepository.ReadPassengers(); private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; - if (dataGridViewData.SelectedRows.Count < 1) + if (dataGridView.SelectedRows.Count < 1) { - MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } - id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + id = + Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); return true; } } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormPassengers.resx b/ProjectAirline/Forms/FormPassengers.resx index 1af7de1..361df5a 100644 --- a/ProjectAirline/Forms/FormPassengers.resx +++ b/ProjectAirline/Forms/FormPassengers.resx @@ -1,17 +1,17 @@  - @@ -117,4 +117,354 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 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 + q93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d + 5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQVia + RIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa + Xm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSM + fQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW + 9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq9zwW9MAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAaXm3+d5XTwZFJxWMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZ + FZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFJxWMfQViaRIpsj + q93wW9EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAaXm3+d5XTwZFZxSMfQViaRIpsjq93wW9EAAAAAAAAAAAAAAAAAAAAAAA + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuQAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAsFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAFQAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAUAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU4AEYAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAADJ4E4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvJ88AEAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAvOckggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp4EAkkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAEgAgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEkgEAkYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAgAkkksoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAEgdzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + EEA5uzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEk4JuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAk/ + PJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJ + uzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuz + oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuz4AAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkvJuzoAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAKkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqkPJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAqkvJuzoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJuzwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAKkPJuwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkvJryAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AKkvmJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKkokeoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK + ickBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj2UkCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAU + jwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIzlgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNsA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH//EACIRAQAC + AgMBAQEAAwEAAAAAAAEAEUFgECAxIVGRYZDRcP/aAAgBAwEBPxD/AE6f3owGlS9Hmlf3o8/6wy9Hmkf3 + o9f9YZejzRv6cfzv/o4tcf8AdF/px/IHOZOv6JeEQJa6L+1Ox+iXhECWujUJgAnzofol4RAlrpFCYAJ8 + 4oR9XhECWulUJgR9F8/7EDWv/k1kuvmmUI8yz8YiLSq0eZZjHwYpiLSK0eZZSr5MhyYpiLRq2eZZSr5z + kOTFMRaJWzzLMf8ArkOTFMRaFRS/IaPHfIcmKYi0JHTADB3yHJimItCR0wAs+d8hyYpiLQkdMABPnfIc + mKYi0JHTACz53yHJimItCR0wAwd8hyYpiLQkdMAMHfIcmKYi0JHTAA8O+Q5MUxFoSOmAB4d8hyYpiLQk + dMAMHfIcmKYi0JHTADB3yHJimItCR0wAwd8hyYpiLQkdMAMHfIcmKYi0JHTACz53yHJimItCR0wAwd8h + yYpiLQkdMAMHfIcmKYi0JHTADB3yHJimItCR0wAwd8hyYpiLQkdMADw75DkxTEWhI6YAYO+Q5MUxFoSO + mAGDvkOTFMRaEjpgBg75DkxTEWhI6YAYO+Q5MUxFoSOmAGDvkOTFMRaEjpgBg75DkxTEWhI6YAWfO+Q5 + MUxFoSOmAFnzvkOTFMRaEjpgBg75DkxTEWhI6YAYO+Q5MUxFoSOmAB4d8hyYpiLQkdMAMHfIcmKYi0JH + TADB3yHJimItCR0wAwd8hyYpiLQkdMAMHfIcmKYtGhI6YAYO+Q5OhpHTADB3yEUC2XDKHQ0dMALPnXzn + sZ+2iSw0RHTACz5304qdER0wAwcKBbLXoSWF6KSh9J4MeoxtEroksVo3+c5p/HKXLi9Jn3PkQYlcEGle + Sxnz4ngRVbf9hv8A/8QAIhEBAAICAgMAAgMAAAAAAAAAAQARMWAwYRAgIUGQUXCR/9oACAECAQE/EP06 + ALZ9tLwC2IrfA1pOAWxFb6DWj4xbEVvsi6KYtiK32dQAKNFbl7OoAFGjhK9HUACjSKESvCKABRpYZfsA + Cj+pqXV/dN6fTJ2LS+n4eeDEOxaT0ewr83gnY9O+fPB2LTTnQzEOxaFamsxx+XEd4J2LQgGARBCk4zwd + i0IMAIiBScRmEnYtCAwCIkKTiO8E7FoQDAIghScZ4OxaEAwCIApOM8HYtCAwCIkKTjPB2LQgwAiIFJxn + g7FoQYARECk4jMQ7FoQDAIiQpOM8HYtCAYBESFJxng7FoQYAREhScZ4OxaEBgERIUnGeDsWhBgBEEKTi + O8E7FoQGAREhScZ4OxaEBgERIUnGeDsWhAMAiJCk9yv0wdi0IMAIiQpOM8HYtCAYBESFJxng7FoQDAIi + QpPcr9MHYtCDACIkKTjPB2LQgGAREhScRmIdi0IBgERIUnGeDsWhBgBESFJxng7FoQDAIiBScRmIdi0I + BgERIUnuV+bwTsWhAMAiCFJxng7FoQDAIiBScZ4OxaEBgERIUnEd4J2LQgwAiIFJxng7FoQDAIiQpOIz + EOxaEGAERIUnGeDsWhAMAiJCk9yv0wdi0IBgERIUmmngMBgERIUnEf8Aj6GAwCIIUnAZoPrOkSXaGDAC + IkKT1PvVoJ0x6/tBvRQAYBESFJ6ArzGtGABgERIUngFUSo9ClVNFQF8SHlGEIIgj6DPsaNivk7/wfy8j + Uoa0n/vH2CkEfCLSs+T7H1M/8gCj9hv/xAApEAEAAgEDBAEEAwEBAQAAAAABABEhEDFBUWBh0ZFxgaGx + IMHw4ZDx/9oACAEBAAE/EP8Ax0TJawe6l8Z2Ng9wQgBk/Y7KTJawe6lkBdg2HQ0dAU3jiGEAGT9jshMl + rB7qWQF2DYdD+DoCm8cQwgAyfsdjJntYBy5cQWwbDofyBHJyL6eUE5Fdnr2Ime1gHLlmdbGw6E8g4ev8 + X4K3B+nn9TAy6DDFzf5eYQDh3dhrdNtLsH+zr5Bw9dU2VlHz4PP6gMGMCMVbk/cvruoOfp4mYI6I+OK8 + wpFacnYS8wXgHRid0Uiba+QcPWJsrMfPg8/qHANQcQBx8HWP1hh6+PpF3FDCnPgijhW8EA8uogZRfYSc + wXoMTuikTJo9iod3r4JfAVVXb/7AHHwdZuX/AMbHiZTnYKfojCbTBCgDEyT8jpDiL1EDIX++wk5gvB4M + uswU56fWAAAA2DiBS32JdNps/rMpzsFP0S/X4HH/AGACiYC+D0m5Mk/I6RWy2+XmVA/R7CIDsGeh7ltL + Z3f3N9ntMu7ocn6IoULBf7mACjXAbwekAq3I/mXllNw5+niZiFYjvHFeYeitOf8Ac9hWdY5E2Fh6NleP + rOgA/EMbTGfweuoDj4OsfaLUPXx9ItrKGEfoiYU+wTUC9Ry+Yo9wReQb47CO4KaR2f8AsYoAazrjP4PW + AOPg6zKXrw/A8TKc7BTjwRLrXwGAEPaFhu0G6+o+ACHDp0QOiYfPYTjAAw9fEdOAazoKW+x1lkqVgf1m + U52CnHgiqwb54HuKAOh+fLBu2ITlfU5IqeB+jQ6jV5IHRMPnsJ5gKYeviKRsqLm+z2mXd9Qfoi2BxcK9 + xQB0Pz5YGU25br1GPkB4HQ8QxTvqdRq8kDomHz2FT1xyJuIR6Ojx9Zl7B+ItAYBKWDbJDblV4HQ8aCjZ + DFO+p1GryQOiYfPYVxVAyJY/9iMjlhd/v5nXC+5ASW3z08ErgNlmgo2QxTvqdRq8kDomHz2EbasyUPjP + H1jaANB/DWuA2WaCjZDFO+p1GryQOiYfPYTwA3oMeO6kTbWuA2WaCjZDFO+p1GryQOiYfPYTwA3g8GPH + dSJtrXAbLNBRshinfU6jV5IHRP7dhNADegx47qR3Na4DZZoKNkMU76mUa5IHRP7dhPADegx47qR41rgN + lmgo2QxTvqdRq8kBomHz2E8AN6DHjupHjWuA2WaCjZDFO+p1GryQOif27CeAG9Bjx3UjxrXAbLNBRshi + nfU6jV5IHRMPnsJ4Ab0GPHdSPGtcBss0FGyGKd9TqNXkgdEw+ewngBvQY8d1I8a1wGyzQUbIYp31Oo1e + SB0TD57CeAG9Bjx3UjxrXAbLNBRshinfU6jV5IHRMPnsJ4Ab0GPHdSPGtcBss0FGyGKd9TKNXkgdEw+e + wngBvQY8d1I8a1wGyzQUbIYp31Oo1eSA0TD57CeAG9Bjx3Uiba1wGyzQUbIYp31Oo1eSB0T+3YTwA3oM + eO6kTJrXAbLNBRshinfU6jV5IHRMPnsJ4AbweDHjupHjWuA2WaCjZDFO+p1GryQGiYfPYTwA3oMeO6ke + Na4DZZoKNkMU76nUa5IHRMPnsJ4Ab0GPHdSPGtcBss0FGyGKd9TKNXkgdEw+ewngBvQY8d1I8a1wGyzQ + UbIYp31Oo1eSB0TD57CeAG9Bjx3UjxrWwGyzQUbIYp31Oo1eSB0TD57CeAG9Bjx3UjxrXAbLNBRshinf + U6jV5IHRMPnsJ4Ab0GPHdSPGtcBss0FGyGKd9TqNXkgdEw+ewngBvQY8d1I8a1wGyzQUbIYp31Oo1eSB + 0TD57CeAG9Bjx3Uiba1wGyzQUbIYp31Oo1eSB0TD57CeAG9Bjx3UjxrXAbLNBRshinfU6jV5IHRMPnsJ + 4Ab0GPHdSJtrXAbLNBRshinfU6jV5IHRP7dhNADegx47qRMmtcBss0FGyGKd9TKNXkgdEw+ewngBvQY8 + d1I8a1wGyzQUbIYp31Oo1eSB0TD57CeAG9Bjx3UjxrXAbLNBRshinfU6jV5IHRMPnsJ4Ab0GPHdSPGtc + Bss0FGyGKd9TqNXkgdEw+ewngBvQY8d1I8a1wGyzQUbIYp31Oo1eSB0TD57CeAG9Bjx3UjxrXAbLNBRs + hinfU6jV5IHRMPnsJ4Ab0GPHdSPGtcBss0FGyGKd9TqNXkgdEw+ewngBvQY8d1I8a1wGyzQUbIYp31Oo + 1eSB0TD57CeAG9Bjx3UjxrXAbLNBRshinfU6jV5IJO/PnsJ4Ab0GPHdSJtrXAbLNBRshinfW5cOX37De + AG9Bjx3Uiba1wGyzQUbIYp3hILXATw0Exbvh2G8AN6DHjupHjWuA2WR0sqlN1lM2p1jYUeu7LjzKG9nD + 2I8AN6DHjupHc1rgSw5TqNNwbzKldzD2I8AN6DHjupEyaNAVQERdYZeXf+HFMG7Ydilk/aDowDKjoufj + yCL5EAMfwsL5lBy57GuEPN6SwfqoFHE4NSplXS2dkZVgL1+03+IJr8QNmghJt+9G8U/8A45Hz2SDz9Te + ZJr02YmzgWPBfB43YIBA2YbAcBCzDi6Ayfcz9uy8eEUhX0xklZe5cD9Nj96j2L1vY4fPqE+Rmn8dmLkP + YsTyO4+SUvkJVWbq3j/xx//Z + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Z + + \ No newline at end of file diff --git a/ProjectAirline/Forms/FormPlane.Designer.cs b/ProjectAirline/Forms/FormPlane.Designer.cs deleted file mode 100644 index 3c00cc3..0000000 --- a/ProjectAirline/Forms/FormPlane.Designer.cs +++ /dev/null @@ -1,120 +0,0 @@ -namespace YourNamespace.Forms -{ - partial class FormPlane - { - /// - /// 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.labelModel = new System.Windows.Forms.Label(); - this.labelCapacity = new System.Windows.Forms.Label(); - this.textBoxModel = new System.Windows.Forms.TextBox(); - this.numericUpDownCapacity = new System.Windows.Forms.NumericUpDown(); - this.buttonSave = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownCapacity)).BeginInit(); - this.SuspendLayout(); - // - // labelModel - // - this.labelModel.AutoSize = true; - this.labelModel.Location = new System.Drawing.Point(12, 22); - this.labelModel.Name = "labelModel"; - this.labelModel.Size = new System.Drawing.Size(54, 13); - this.labelModel.TabIndex = 0; - this.labelModel.Text = "Модель:"; - // - // labelCapacity - // - this.labelCapacity.AutoSize = true; - this.labelCapacity.Location = new System.Drawing.Point(12, 58); - this.labelCapacity.Name = "labelCapacity"; - this.labelCapacity.Size = new System.Drawing.Size(72, 13); - this.labelCapacity.TabIndex = 1; - this.labelCapacity.Text = "Вместимость:"; - // - // textBoxModel - // - this.textBoxModel.Location = new System.Drawing.Point(111, 19); - this.textBoxModel.Name = "textBoxModel"; - this.textBoxModel.Size = new System.Drawing.Size(200, 20); - this.textBoxModel.TabIndex = 2; - // - // numericUpDownCapacity - // - this.numericUpDownCapacity.Location = new System.Drawing.Point(111, 56); - this.numericUpDownCapacity.Name = "numericUpDownCapacity"; - this.numericUpDownCapacity.Size = new System.Drawing.Size(200, 20); - this.numericUpDownCapacity.TabIndex = 3; - // - // buttonSave - // - this.buttonSave.Location = new System.Drawing.Point(155, 91); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 23); - this.buttonSave.TabIndex = 4; - this.buttonSave.Text = "Сохранить"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click); - // - // buttonCancel - // - this.buttonCancel.Location = new System.Drawing.Point(236, 91); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); - this.buttonCancel.TabIndex = 5; - this.buttonCancel.Text = "Отмена"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); - // - // FormPlane - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(324, 126); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.numericUpDownCapacity); - this.Controls.Add(this.textBoxModel); - this.Controls.Add(this.labelCapacity); - this.Controls.Add(this.labelModel); - this.Name = "FormPlane"; - this.Text = "Редактирование самолета"; - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownCapacity)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private System.Windows.Forms.Label labelModel; - private System.Windows.Forms.Label labelCapacity; - private System.Windows.Forms.TextBox textBoxModel; - private System.Windows.Forms.NumericUpDown numericUpDownCapacity; - private System.Windows.Forms.Button buttonSave; - private System.Windows.Forms.Button buttonCancel; - } -} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormPlane.cs b/ProjectAirline/Forms/FormPlane.cs deleted file mode 100644 index a640cc1..0000000 --- a/ProjectAirline/Forms/FormPlane.cs +++ /dev/null @@ -1,70 +0,0 @@ -using System; -using System.Windows.Forms; -using YourNamespace.Entities; -using YourNamespace.Repositories; - -namespace YourNamespace.Forms -{ - public partial class FormPlane : Form - { - private readonly IPlaneRepository _planeRepository; - private int? _planeId; - - public int Id - { - set - { - try - { - var plane = _planeRepository.ReadPlaneById(value); - if (plane == null) - { - throw new InvalidDataException(nameof(plane)); - } - textBoxModel.Text = plane.Model; - numericUpDownCapacity.Value = plane.Capacity; - _planeId = value; - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); - return; - } - } - } - - public FormPlane(IPlaneRepository planeRepository) - { - InitializeComponent(); - _planeRepository = planeRepository ?? throw new ArgumentNullException(nameof(planeRepository)); - } - - private void ButtonSave_Click(object sender, EventArgs e) - { - try - { - if (string.IsNullOrWhiteSpace(textBoxModel.Text)) - { - throw new Exception("Имеются незаполненные поля"); - } - if (_planeId.HasValue) - { - _planeRepository.UpdatePlane(CreatePlane(_planeId.Value)); - } - else - { - _planeRepository.CreatePlane(CreatePlane(0)); - } - Close(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - - private Plane CreatePlane(int id) => Plane.CreateEntity(id, textBoxModel.Text, (int)numericUpDownCapacity.Value); - } -} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormPlanes.Designer.cs b/ProjectAirline/Forms/FormPlanes.Designer.cs deleted file mode 100644 index 7887b42..0000000 --- a/ProjectAirline/Forms/FormPlanes.Designer.cs +++ /dev/null @@ -1,106 +0,0 @@ -namespace YourNamespace.Forms -{ - partial class FormPlanes - { - /// - /// 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.dataGridViewData = new System.Windows.Forms.DataGridView(); - this.buttonAdd = new System.Windows.Forms.Button(); - this.buttonUpd = new System.Windows.Forms.Button(); - this.buttonDel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).BeginInit(); - this.SuspendLayout(); - // - // dataGridViewData - // - this.dataGridViewData.AllowUserToAddRows = false; - this.dataGridViewData.AllowUserToDeleteRows = false; - this.dataGridViewData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewData.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewData.Location = new System.Drawing.Point(0, 0); - this.dataGridViewData.MultiSelect = false; - this.dataGridViewData.Name = "dataGridViewData"; - this.dataGridViewData.ReadOnly = true; - this.dataGridViewData.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewData.Size = new System.Drawing.Size(800, 450); - this.dataGridViewData.TabIndex = 0; - // - // buttonAdd - // - this.buttonAdd.Location = new System.Drawing.Point(12, 12); - this.buttonAdd.Name = "buttonAdd"; - this.buttonAdd.Size = new System.Drawing.Size(75, 23); - this.buttonAdd.TabIndex = 1; - this.buttonAdd.Text = "Добавить"; - this.buttonAdd.UseVisualStyleBackColor = true; - this.buttonAdd.Click += new System.EventHandler(this.ButtonAdd_Click); - // - // buttonUpd - // - this.buttonUpd.Location = new System.Drawing.Point(93, 12); - this.buttonUpd.Name = "buttonUpd"; - this.buttonUpd.Size = new System.Drawing.Size(75, 23); - this.buttonUpd.TabIndex = 2; - this.buttonUpd.Text = "Изменить"; - this.buttonUpd.UseVisualStyleBackColor = true; - this.buttonUpd.Click += new System.EventHandler(this.ButtonUpd_Click); - // - // buttonDel - // - this.buttonDel.Location = new System.Drawing.Point(174, 12); - this.buttonDel.Name = "buttonDel"; - this.buttonDel.Size = new System.Drawing.Size(75, 23); - this.buttonDel.TabIndex = 3; - this.buttonDel.Text = "Удалить"; - this.buttonDel.UseVisualStyleBackColor = true; - this.buttonDel.Click += new System.EventHandler(this.ButtonDel_Click); - // - // FormPlanes - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Controls.Add(this.buttonDel); - this.Controls.Add(this.buttonUpd); - this.Controls.Add(this.buttonAdd); - this.Controls.Add(this.dataGridViewData); - this.Name = "FormPlanes"; - this.Text = "Самолеты"; - this.Load += new System.EventHandler(this.FormPlanes_Load); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.DataGridView dataGridViewData; - private System.Windows.Forms.Button buttonAdd; - private System.Windows.Forms.Button buttonUpd; - private System.Windows.Forms.Button buttonDel; - } -} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormPlanes.cs b/ProjectAirline/Forms/FormPlanes.cs deleted file mode 100644 index 250eb21..0000000 --- a/ProjectAirline/Forms/FormPlanes.cs +++ /dev/null @@ -1,99 +0,0 @@ -using System; -using System.Windows.Forms; -using Unity; -using YourNamespace.Repositories; - -namespace YourNamespace.Forms -{ - public partial class FormPlanes : Form - { - private readonly IUnityContainer _container; - private readonly IPlaneRepository _planeRepository; - - public FormPlanes(IUnityContainer container, IPlaneRepository planeRepository) - { - InitializeComponent(); - _container = container ?? throw new ArgumentNullException(nameof(container)); - _planeRepository = planeRepository ?? throw new ArgumentNullException(nameof(planeRepository)); - } - - private void FormPlanes_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 - { - _planeRepository.DeletePlane(findId); - LoadList(); - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - - private void LoadList() => dataGridViewData.DataSource = _planeRepository.ReadPlanes(); - - private bool TryGetIdentifierFromSelectedRow(out int id) - { - id = 0; - if (dataGridViewData.SelectedRows.Count < 1) - { - MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - return false; - } - id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); - return true; - } - } -} \ No newline at end of file diff --git a/ProjectAirline/Forms/FormPlanes.resx b/ProjectAirline/Forms/FormPlanes.resx deleted file mode 100644 index 1af7de1..0000000 --- a/ProjectAirline/Forms/FormPlanes.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/ProjectAirline/Forms/FormTicket.Designer.cs b/ProjectAirline/Forms/FormTicket.Designer.cs index 65ef35c..f2bc54d 100644 --- a/ProjectAirline/Forms/FormTicket.Designer.cs +++ b/ProjectAirline/Forms/FormTicket.Designer.cs @@ -1,4 +1,4 @@ -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { partial class FormTicket { @@ -28,139 +28,122 @@ /// private void InitializeComponent() { - this.labelPassenger = new System.Windows.Forms.Label(); - this.labelFlight = new System.Windows.Forms.Label(); - this.labelDateBuy = new System.Windows.Forms.Label(); - this.labelTicketPrice = new System.Windows.Forms.Label(); - this.comboBoxPassenger = new System.Windows.Forms.ComboBox(); - this.comboBoxFlight = new System.Windows.Forms.ComboBox(); - this.dateTimePickerDateBuy = new System.Windows.Forms.DateTimePicker(); - this.numericUpDownTicketPrice = new System.Windows.Forms.NumericUpDown(); - this.buttonSave = new System.Windows.Forms.Button(); - this.buttonCancel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTicketPrice)).BeginInit(); - this.SuspendLayout(); + label1 = new Label(); + label2 = new Label(); + label3 = new Label(); + comboBoxFlight = new ComboBox(); + comboBoxPassenger = new ComboBox(); + numericUpDownPrice = new NumericUpDown(); + buttonAdd = new Button(); + buttonCancel = new Button(); + ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).BeginInit(); + SuspendLayout(); // - // labelPassenger + // label1 // - this.labelPassenger.AutoSize = true; - this.labelPassenger.Location = new System.Drawing.Point(12, 22); - this.labelPassenger.Name = "labelPassenger"; - this.labelPassenger.Size = new System.Drawing.Size(63, 13); - this.labelPassenger.TabIndex = 0; - this.labelPassenger.Text = "Пассажир:"; + label1.AutoSize = true; + label1.Location = new Point(49, 37); + label1.Name = "label1"; + label1.Size = new Size(41, 20); + label1.TabIndex = 0; + label1.Text = "Рейс"; // - // labelFlight + // label2 // - this.labelFlight.AutoSize = true; - this.labelFlight.Location = new System.Drawing.Point(12, 58); - this.labelFlight.Name = "labelFlight"; - this.labelFlight.Size = new System.Drawing.Size(37, 13); - this.labelFlight.TabIndex = 1; - this.labelFlight.Text = "Рейс:"; + label2.AutoSize = true; + label2.Location = new Point(34, 122); + label2.Name = "label2"; + label2.Size = new Size(79, 20); + label2.TabIndex = 1; + label2.Text = "Пассажир"; // - // labelDateBuy + // label3 // - this.labelDateBuy.AutoSize = true; - this.labelDateBuy.Location = new System.Drawing.Point(12, 94); - this.labelDateBuy.Name = "labelDateBuy"; - this.labelDateBuy.Size = new System.Drawing.Size(80, 13); - this.labelDateBuy.TabIndex = 2; - this.labelDateBuy.Text = "Дата покупки:"; - // - // labelTicketPrice - // - this.labelTicketPrice.AutoSize = true; - this.labelTicketPrice.Location = new System.Drawing.Point(12, 130); - this.labelTicketPrice.Name = "labelTicketPrice"; - this.labelTicketPrice.Size = new System.Drawing.Size(74, 13); - this.labelTicketPrice.TabIndex = 3; - this.labelTicketPrice.Text = "Цена билета:"; - // - // comboBoxPassenger - // - this.comboBoxPassenger.FormattingEnabled = true; - this.comboBoxPassenger.Location = new System.Drawing.Point(111, 19); - this.comboBoxPassenger.Name = "comboBoxPassenger"; - this.comboBoxPassenger.Size = new System.Drawing.Size(200, 21); - this.comboBoxPassenger.TabIndex = 4; + label3.AutoSize = true; + label3.Location = new Point(12, 201); + label3.Name = "label3"; + label3.Size = new Size(135, 20); + label3.TabIndex = 2; + label3.Text = "Стоимость билета"; // // comboBoxFlight // - this.comboBoxFlight.FormattingEnabled = true; - this.comboBoxFlight.Location = new System.Drawing.Point(111, 55); - this.comboBoxFlight.Name = "comboBoxFlight"; - this.comboBoxFlight.Size = new System.Drawing.Size(200, 21); - this.comboBoxFlight.TabIndex = 5; + comboBoxFlight.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxFlight.FormattingEnabled = true; + comboBoxFlight.Location = new Point(166, 37); + comboBoxFlight.Name = "comboBoxFlight"; + comboBoxFlight.Size = new Size(223, 28); + comboBoxFlight.TabIndex = 3; // - // dateTimePickerDateBuy + // comboBoxPassenger // - this.dateTimePickerDateBuy.Location = new System.Drawing.Point(111, 91); - this.dateTimePickerDateBuy.Name = "dateTimePickerDateBuy"; - this.dateTimePickerDateBuy.Size = new System.Drawing.Size(200, 20); - this.dateTimePickerDateBuy.TabIndex = 6; + comboBoxPassenger.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxPassenger.FormattingEnabled = true; + comboBoxPassenger.Location = new Point(167, 122); + comboBoxPassenger.Name = "comboBoxPassenger"; + comboBoxPassenger.Size = new Size(222, 28); + comboBoxPassenger.TabIndex = 4; // - // numericUpDownTicketPrice + // numericUpDownPrice // - this.numericUpDownTicketPrice.Location = new System.Drawing.Point(111, 128); - this.numericUpDownTicketPrice.Name = "numericUpDownTicketPrice"; - this.numericUpDownTicketPrice.Size = new System.Drawing.Size(200, 20); - this.numericUpDownTicketPrice.TabIndex = 7; + numericUpDownPrice.DecimalPlaces = 2; + numericUpDownPrice.Location = new Point(166, 205); + numericUpDownPrice.Maximum = new decimal(new int[] { 10000000, 0, 0, 0 }); + numericUpDownPrice.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDownPrice.Name = "numericUpDownPrice"; + numericUpDownPrice.Size = new Size(223, 27); + numericUpDownPrice.TabIndex = 5; + numericUpDownPrice.Value = new decimal(new int[] { 1, 0, 0, 0 }); // - // buttonSave + // buttonAdd // - this.buttonSave.Location = new System.Drawing.Point(155, 164); - this.buttonSave.Name = "buttonSave"; - this.buttonSave.Size = new System.Drawing.Size(75, 23); - this.buttonSave.TabIndex = 8; - this.buttonSave.Text = "Сохранить"; - this.buttonSave.UseVisualStyleBackColor = true; - this.buttonSave.Click += new System.EventHandler(this.ButtonSave_Click); + buttonAdd.Location = new Point(60, 332); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(109, 63); + buttonAdd.TabIndex = 6; + buttonAdd.Text = "Добавить"; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; // // buttonCancel // - this.buttonCancel.Location = new System.Drawing.Point(236, 164); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(75, 23); - this.buttonCancel.TabIndex = 9; - this.buttonCancel.Text = "Отмена"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.ButtonCancel_Click); + buttonCancel.Location = new Point(261, 335); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(107, 60); + buttonCancel.TabIndex = 7; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; // // FormTicket // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(324, 201); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.buttonSave); - this.Controls.Add(this.numericUpDownTicketPrice); - this.Controls.Add(this.dateTimePickerDateBuy); - this.Controls.Add(this.comboBoxFlight); - this.Controls.Add(this.comboBoxPassenger); - this.Controls.Add(this.labelTicketPrice); - this.Controls.Add(this.labelDateBuy); - this.Controls.Add(this.labelFlight); - this.Controls.Add(this.labelPassenger); - this.Name = "FormTicket"; - this.Text = "Редактирование билета"; - ((System.ComponentModel.ISupportInitialize)(this.numericUpDownTicketPrice)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(440, 450); + Controls.Add(buttonCancel); + Controls.Add(buttonAdd); + Controls.Add(numericUpDownPrice); + Controls.Add(comboBoxPassenger); + Controls.Add(comboBoxFlight); + Controls.Add(label3); + Controls.Add(label2); + Controls.Add(label1); + Name = "FormTicket"; + Text = "Билет"; + ((System.ComponentModel.ISupportInitialize)numericUpDownPrice).EndInit(); + ResumeLayout(false); + PerformLayout(); } #endregion - private System.Windows.Forms.Label labelPassenger; - private System.Windows.Forms.Label labelFlight; - private System.Windows.Forms.Label labelDateBuy; - private System.Windows.Forms.Label labelTicketPrice; - private System.Windows.Forms.ComboBox comboBoxPassenger; - private System.Windows.Forms.ComboBox comboBoxFlight; - private System.Windows.Forms.DateTimePicker dateTimePickerDateBuy; - private System.Windows.Forms.NumericUpDown numericUpDownTicketPrice; - private System.Windows.Forms.Button buttonSave; - private System.Windows.Forms.Button buttonCancel; + private Label label1; + private Label label2; + private Label label3; + private ComboBox comboBoxFlight; + private ComboBox comboBoxPassenger; + private NumericUpDown numericUpDownPrice; + private Button buttonAdd; + private Button buttonCancel; } } \ No newline at end of file diff --git a/ProjectAirline/Forms/FormTicket.cs b/ProjectAirline/Forms/FormTicket.cs index e08a0ba..0fe4f43 100644 --- a/ProjectAirline/Forms/FormTicket.cs +++ b/ProjectAirline/Forms/FormTicket.cs @@ -1,32 +1,36 @@ 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 YourNamespace.Entities; -using YourNamespace.Repositories; +using ProjectAirline.Repositories; +using ProjectAirline.Entities; -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { public partial class FormTicket : Form { private readonly ITicketRepository _ticketRepository; - private readonly IPassengerRepository _passengerRepository; - private readonly IFlightRepository _flightRepository; private int? _ticketId; - public int Id { set { try { - var ticket = _ticketRepository.ReadTicketById(value); - if (ticket == null) + var appointment = + _ticketRepository.ReadTicketById(value); + if (appointment == null) { - throw new InvalidDataException(nameof(ticket)); + throw new + InvalidDataException(nameof(appointment)); } - comboBoxPassenger.SelectedValue = ticket.PassengerId; - comboBoxFlight.SelectedValue = ticket.FlightId; - dateTimePickerDateBuy.Value = ticket.DateBuy; - numericUpDownTicketPrice.Value = ticket.TicketPrice; + comboBoxFlight.SelectedIndex = appointment.FlightID; + comboBoxPassenger.SelectedIndex = appointment.PassengerID; _ticketId = value; } catch (Exception ex) @@ -36,30 +40,29 @@ namespace YourNamespace.Forms } } } - public FormTicket(ITicketRepository ticketRepository, IPassengerRepository passengerRepository, IFlightRepository flightRepository) { InitializeComponent(); - _ticketRepository = ticketRepository ?? throw new ArgumentNullException(nameof(ticketRepository)); - _passengerRepository = passengerRepository ?? throw new ArgumentNullException(nameof(passengerRepository)); - _flightRepository = flightRepository ?? throw new ArgumentNullException(nameof(flightRepository)); + _ticketRepository = ticketRepository ?? + throw new ArgumentNullException(nameof(ticketRepository)); - comboBoxPassenger.DataSource = _passengerRepository.ReadPassengers(); - comboBoxPassenger.DisplayMember = "Name"; + comboBoxFlight.DataSource = flightRepository.ReadFlights(); + comboBoxFlight.DisplayMember = "AirplaneID"; + comboBoxFlight.ValueMember = "Id"; + + comboBoxPassenger.DataSource = passengerRepository.ReadPassengers(); + comboBoxPassenger.DisplayMember = "FirstName"; comboBoxPassenger.ValueMember = "Id"; - comboBoxFlight.DataSource = _flightRepository.ReadFlights(); - comboBoxFlight.DisplayMember = "FlightNumber"; - comboBoxFlight.ValueMember = "Id"; } - private void ButtonSave_Click(object sender, EventArgs e) + private void ButtonAdd_Click(object sender, EventArgs e) { try { - if (comboBoxPassenger.SelectedIndex < 0 || comboBoxFlight.SelectedIndex < 0) + if (comboBoxPassenger.SelectedIndex < 0 || comboBoxFlight.SelectedIndex < 0 || numericUpDownPrice.Value <= 0) { - throw new Exception("Имеются незаполненные поля"); + throw new Exception("Имеются незаполненны поля"); } if (_ticketId.HasValue) { @@ -73,12 +76,16 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); } } - private void ButtonCancel_Click(object sender, EventArgs e) => Close(); - - private Ticket CreateTicket(int id) => Ticket.CreateEntity(id, (int)comboBoxPassenger.SelectedValue, (int)comboBoxFlight.SelectedValue, dateTimePickerDateBuy.Value, (int)numericUpDownTicketPrice.Value); + private void ButtonCancel_Click(object sender, EventArgs e) + { + Close(); + } + private Ticket CreateTicket(int id) => Ticket.CreateTicket(id, comboBoxFlight.SelectedIndex, + comboBoxPassenger.SelectedIndex, (int)numericUpDownPrice.Value); } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormTickets.Designer.cs b/ProjectAirline/Forms/FormTickets.Designer.cs index db4bc18..a649943 100644 --- a/ProjectAirline/Forms/FormTickets.Designer.cs +++ b/ProjectAirline/Forms/FormTickets.Designer.cs @@ -1,4 +1,4 @@ -namespace YourNamespace.Forms +namespace ProjectAirline.Forms { partial class FormTickets { @@ -28,79 +28,87 @@ /// private void InitializeComponent() { - this.dataGridViewData = new System.Windows.Forms.DataGridView(); - this.buttonAdd = new System.Windows.Forms.Button(); - this.buttonUpd = new System.Windows.Forms.Button(); - this.buttonDel = new System.Windows.Forms.Button(); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).BeginInit(); - this.SuspendLayout(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormTickets)); + panel1 = new Panel(); + buttonUpdate = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); // - // dataGridViewData + // panel1 // - this.dataGridViewData.AllowUserToAddRows = false; - this.dataGridViewData.AllowUserToDeleteRows = false; - this.dataGridViewData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.dataGridViewData.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewData.Location = new System.Drawing.Point(0, 0); - this.dataGridViewData.MultiSelect = false; - this.dataGridViewData.Name = "dataGridViewData"; - this.dataGridViewData.ReadOnly = true; - this.dataGridViewData.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dataGridViewData.Size = new System.Drawing.Size(800, 450); - this.dataGridViewData.TabIndex = 0; + panel1.Controls.Add(buttonUpdate); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(658, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(142, 450); + panel1.TabIndex = 0; + // + // buttonUpdate + // + buttonUpdate.BackgroundImage = (Image)resources.GetObject("buttonUpdate.BackgroundImage"); + buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpdate.Location = new Point(24, 148); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(91, 76); + buttonUpdate.TabIndex = 1; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += ButtonUpdate_Click; // // buttonAdd // - this.buttonAdd.Location = new System.Drawing.Point(12, 12); - this.buttonAdd.Name = "buttonAdd"; - this.buttonAdd.Size = new System.Drawing.Size(75, 23); - this.buttonAdd.TabIndex = 1; - this.buttonAdd.Text = "Добавить"; - this.buttonAdd.UseVisualStyleBackColor = true; - this.buttonAdd.Click += new System.EventHandler(this.ButtonAdd_Click); + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(24, 46); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(91, 76); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; // - // buttonUpd + // dataGridView // - this.buttonUpd.Location = new System.Drawing.Point(93, 12); - this.buttonUpd.Name = "buttonUpd"; - this.buttonUpd.Size = new System.Drawing.Size(75, 23); - this.buttonUpd.TabIndex = 2; - this.buttonUpd.Text = "Изменить"; - this.buttonUpd.UseVisualStyleBackColor = true; - this.buttonUpd.Click += new System.EventHandler(this.ButtonUpd_Click); - // - // buttonDel - // - this.buttonDel.Location = new System.Drawing.Point(174, 12); - this.buttonDel.Name = "buttonDel"; - this.buttonDel.Size = new System.Drawing.Size(75, 23); - this.buttonDel.TabIndex = 3; - this.buttonDel.Text = "Удалить"; - this.buttonDel.UseVisualStyleBackColor = true; - this.buttonDel.Click += new System.EventHandler(this.ButtonDel_Click); + 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.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(658, 450); + dataGridView.TabIndex = 1; // // FormTickets // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Controls.Add(this.buttonDel); - this.Controls.Add(this.buttonUpd); - this.Controls.Add(this.buttonAdd); - this.Controls.Add(this.dataGridViewData); - this.Name = "FormTickets"; - this.Text = "Билеты"; - this.Load += new System.EventHandler(this.FormTickets_Load); - ((System.ComponentModel.ISupportInitialize)(this.dataGridViewData)).EndInit(); - this.ResumeLayout(false); - + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormTickets"; + StartPosition = FormStartPosition.CenterParent; + Text = "Билеты"; + Load += FormTickets_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); } #endregion - private System.Windows.Forms.DataGridView dataGridViewData; - private System.Windows.Forms.Button buttonAdd; - private System.Windows.Forms.Button buttonUpd; - private System.Windows.Forms.Button buttonDel; + private Panel panel1; + private Button buttonUpdate; + private Button buttonAdd; + private DataGridView dataGridView; } } \ No newline at end of file diff --git a/ProjectAirline/Forms/FormTickets.cs b/ProjectAirline/Forms/FormTickets.cs index 1dd6279..f3ab09a 100644 --- a/ProjectAirline/Forms/FormTickets.cs +++ b/ProjectAirline/Forms/FormTickets.cs @@ -1,22 +1,28 @@ 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 ProjectAirline.Repositories; using Unity; -using YourNamespace.Repositories; -namespace YourNamespace.Forms +namespace ProjectAirline.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 @@ -42,7 +48,7 @@ namespace YourNamespace.Forms } } - private void ButtonUpd_Click(object sender, EventArgs e) + private void ButtonUpdate_Click(object sender, EventArgs e) { if (!TryGetIdentifierFromSelectedRow(out var findId)) { @@ -57,43 +63,21 @@ namespace YourNamespace.Forms } catch (Exception ex) { - MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + 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() => dataGridViewData.DataSource = _ticketRepository.ReadTickets(); - + private void LoadList() => dataGridView.DataSource = _ticketRepository.ReadTickets(); private bool TryGetIdentifierFromSelectedRow(out int id) { id = 0; - if (dataGridViewData.SelectedRows.Count < 1) + if (dataGridView.SelectedRows.Count < 1) { MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } - id = Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); return true; } } -} \ No newline at end of file +} diff --git a/ProjectAirline/Forms/FormTickets.resx b/ProjectAirline/Forms/FormTickets.resx index 1af7de1..e4b5ff0 100644 --- a/ProjectAirline/Forms/FormTickets.resx +++ b/ProjectAirline/Forms/FormTickets.resx @@ -1,17 +1,17 @@  - @@ -117,4 +117,123 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//Z + + \ No newline at end of file diff --git a/ProjectAirline/Program.cs b/ProjectAirline/Program.cs index d64344d..375ba8a 100644 --- a/ProjectAirline/Program.cs +++ b/ProjectAirline/Program.cs @@ -1,48 +1,34 @@ -using System; -using System.Windows.Forms; +using ProjectAirline.Repositories.Implementations; +using ProjectAirline.Repositories; using Unity; -using Unity.Lifetime; -using YourNamespace.Repositories; -using YourNamespace.Repositories.Implementations; -using YourNamespace.Forms; -namespace YourNamespace +namespace ProjectAirline { - static class Program + internal static class Program { /// - /// The main entry point for the application. + /// The main entry point for the application. /// [STAThread] static void Main() { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - - var container = CreateContainer(); - Application.Run(container.Resolve()); + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(CreateContainer().Resolve()); } private static IUnityContainer CreateContainer() { var container = new UnityContainer(); - // - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - - // - container.RegisterType(new ContainerControlledLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); - container.RegisterType(new TransientLifetimeManager()); + // + container.RegisterType(); + container.RegisterType(); + container.RegisterType(); + container.RegisterType(); + container.RegisterType(); + container.RegisterType(); return container; } diff --git a/ProjectAirline/ProjectAirline.csproj b/ProjectAirline/ProjectAirline.csproj index 894afcd..accbdf0 100644 --- a/ProjectAirline/ProjectAirline.csproj +++ b/ProjectAirline/ProjectAirline.csproj @@ -12,4 +12,19 @@ + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectAirline/Properties/Resources.Designer.cs b/ProjectAirline/Properties/Resources.Designer.cs new file mode 100644 index 0000000..0ca428e --- /dev/null +++ b/ProjectAirline/Properties/Resources.Designer.cs @@ -0,0 +1,83 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectAirline.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("ProjectAirline.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 plus { + get { + object obj = ResourceManager.GetObject("plus", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap samolet { + get { + object obj = ResourceManager.GetObject("samolet", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectAirline/Forms/FormAirports.resx b/ProjectAirline/Properties/Resources.resx similarity index 90% rename from ProjectAirline/Forms/FormAirports.resx rename to ProjectAirline/Properties/Resources.resx index 1af7de1..e052f20 100644 --- a/ProjectAirline/Forms/FormAirports.resx +++ b/ProjectAirline/Properties/Resources.resx @@ -117,4 +117,11 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\samolet.jpeg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\plus.jpeg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/ProjectAirline/Repositories/IAirplaneRepository.cs b/ProjectAirline/Repositories/IAirplaneRepository.cs new file mode 100644 index 0000000..48312ff --- /dev/null +++ b/ProjectAirline/Repositories/IAirplaneRepository.cs @@ -0,0 +1,18 @@ +using ProjectAirline.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirline.Repositories; + +public interface IAirplaneRepository +{ + IEnumerable ReadAirplanes(); + Airplane ReadAirplaneById(int id); + void CreateAirplane(Airplane airplane); + void UpdateAirplane(Airplane airplane); + void DeleteAirplane(int id); + +} diff --git a/ProjectAirline/Repositories/IAirportRepository.cs b/ProjectAirline/Repositories/IAirportRepository.cs deleted file mode 100644 index c756088..0000000 --- a/ProjectAirline/Repositories/IAirportRepository.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using YourNamespace.Entities; - -namespace YourNamespace.Repositories -{ - public interface IAirportRepository - { - IEnumerable ReadAirports(); - Airport ReadAirportById(int id); - void CreateAirport(Airport airport); - void UpdateAirport(Airport airport); - void DeleteAirport(int id); - } -} \ No newline at end of file diff --git a/ProjectAirline/Repositories/IEmployeeFlightRepository.cs b/ProjectAirline/Repositories/IEmployeeFlightRepository.cs new file mode 100644 index 0000000..9c65d7e --- /dev/null +++ b/ProjectAirline/Repositories/IEmployeeFlightRepository.cs @@ -0,0 +1,11 @@ +using ProjectAirline.Entities; +using System.Collections.Generic; + +namespace ProjectAirline.Repositories; + +public interface IEmployeeFlightRepository +{ + IEnumerable ReadEmployeeFlights(); + EmployeeFlight ReadEmployeeFlightById(int id); + void CreateEmployeeFlight(EmployeeFlight employeeFlight); +} \ No newline at end of file diff --git a/ProjectAirline/Repositories/IEmployeeRepository.cs b/ProjectAirline/Repositories/IEmployeeRepository.cs index e69e6ff..22298ba 100644 --- a/ProjectAirline/Repositories/IEmployeeRepository.cs +++ b/ProjectAirline/Repositories/IEmployeeRepository.cs @@ -1,14 +1,13 @@ -using System.Collections.Generic; -using YourNamespace.Entities; +using ProjectAirline.Entities; +using System.Collections.Generic; -namespace YourNamespace.Repositories +namespace ProjectAirline.Repositories; + +public interface IEmployeeRepository { - public interface IEmployeeRepository - { - IEnumerable ReadEmployees(); - Employee ReadEmployeeById(int id); - void CreateEmployee(Employee employee); - void UpdateEmployee(Employee employee); - void DeleteEmployee(int id); - } + IEnumerable ReadEmployees(); + Employee ReadEmployeeById(int id); + void CreateEmployee(Employee employee); + void UpdateEmployee(Employee employee); + void DeleteEmployee(int id); } \ No newline at end of file diff --git a/ProjectAirline/Repositories/IFlightRepository.cs b/ProjectAirline/Repositories/IFlightRepository.cs index eadb303..13f58c3 100644 --- a/ProjectAirline/Repositories/IFlightRepository.cs +++ b/ProjectAirline/Repositories/IFlightRepository.cs @@ -1,14 +1,13 @@ -using System.Collections.Generic; -using YourNamespace.Entities; +using ProjectAirline.Entities; +using System; +using System.Collections.Generic; -namespace YourNamespace.Repositories +namespace ProjectAirline.Repositories; + +public interface IFlightRepository { - public interface IFlightRepository - { - IEnumerable ReadFlights(); - Flight ReadFlightById(int id); - void CreateFlight(Flight flight); - void UpdateFlight(Flight flight); - void DeleteFlight(int id); - } + IEnumerable ReadFlights(DateTime? dateForm = null, DateTime? dateTo = null, int? flightId = null, int? airplaneId = null); + Flight ReadFlightById(int flightId); + void CreateFlight(Flight flight); + void DeleteFlight(int id); } \ No newline at end of file diff --git a/ProjectAirline/Repositories/IPassengerRepository.cs b/ProjectAirline/Repositories/IPassengerRepository.cs index 9c3b1fc..e0eb88c 100644 --- a/ProjectAirline/Repositories/IPassengerRepository.cs +++ b/ProjectAirline/Repositories/IPassengerRepository.cs @@ -1,14 +1,18 @@ -using System.Collections.Generic; -using YourNamespace.Entities; +using ProjectAirline.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; -namespace YourNamespace.Repositories +namespace ProjectAirline.Repositories; + +public interface IPassengerRepository { - public interface IPassengerRepository - { - IEnumerable ReadPassengers(); - Passenger ReadPassengerById(int id); - void CreatePassenger(Passenger passenger); - void UpdatePassenger(Passenger passenger); - void DeletePassenger(int id); - } -} \ No newline at end of file + IEnumerable ReadPassengers(); + Passenger ReadPassengerById(int id); + void CreatePassenger(Passenger passenger); + void UpdatePassenger(Passenger passenger); + void DeletePassenger(int id); + +} diff --git a/ProjectAirline/Repositories/IPlaneRepository.cs b/ProjectAirline/Repositories/IPlaneRepository.cs deleted file mode 100644 index 6665c28..0000000 --- a/ProjectAirline/Repositories/IPlaneRepository.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using YourNamespace.Entities; - -namespace YourNamespace.Repositories -{ - public interface IPlaneRepository - { - IEnumerable ReadPlanes(); - Plane ReadPlaneById(int id); - void CreatePlane(Plane plane); - void UpdatePlane(Plane plane); - void DeletePlane(int id); - } -} \ No newline at end of file diff --git a/ProjectAirline/Repositories/ITicketRepository.cs b/ProjectAirline/Repositories/ITicketRepository.cs index a028c35..f79aa6c 100644 --- a/ProjectAirline/Repositories/ITicketRepository.cs +++ b/ProjectAirline/Repositories/ITicketRepository.cs @@ -1,14 +1,16 @@ -using System.Collections.Generic; -using YourNamespace.Entities; +using ProjectAirline.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; -namespace YourNamespace.Repositories +namespace ProjectAirline.Repositories; + +public interface ITicketRepository { - public interface ITicketRepository - { - IEnumerable ReadTickets(); - Ticket ReadTicketById(int id); - void CreateTicket(Ticket ticket); - void UpdateTicket(Ticket ticket); - void DeleteTicket(int id); - } -} \ No newline at end of file + IEnumerable ReadTickets(); + Ticket ReadTicketById(int id); + void CreateTicket(Ticket ticket); + void UpdateTicket(Ticket ticket); +} diff --git a/ProjectAirline/Repositories/Implementations/AirplaneRepository.cs b/ProjectAirline/Repositories/Implementations/AirplaneRepository.cs new file mode 100644 index 0000000..2000b0e --- /dev/null +++ b/ProjectAirline/Repositories/Implementations/AirplaneRepository.cs @@ -0,0 +1,34 @@ +using ProjectAirline.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirline.Repositories.Implementations; + +public class AirplaneRepository : IAirplaneRepository +{ + public void CreateAirplane(Airplane airplane) + { + } + + public void DeleteAirplane(int id) + { + } + + public Airplane ReadAirplaneById(int id) + { + return Airplane.CreateEntity(0, string.Empty, string.Empty, 0); + } + + public IEnumerable ReadAirplanes() + { + return []; + } + + public void UpdateAirplane(Airplane airplane) + { + throw new NotImplementedException(); + } +} diff --git a/ProjectAirline/Repositories/Implementations/AirportRepository.cs b/ProjectAirline/Repositories/Implementations/AirportRepository.cs deleted file mode 100644 index 519bc12..0000000 --- a/ProjectAirline/Repositories/Implementations/AirportRepository.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using YourNamespace.Entities; -using YourNamespace.Repositories; - -namespace YourNamespace.Repositories.Implementations -{ - public class AirportRepository : IAirportRepository - { - private readonly List _airports = new List(); - private int _nextId = 1; - - public IEnumerable ReadAirports() - { - return _airports; - } - - public Airport ReadAirportById(int id) - { - return _airports.FirstOrDefault(a => a.Id == id); - } - - public void CreateAirport(Airport airport) - { - var newAirport = Airport.CreateEntity(_nextId++, airport.Name, airport.Location); - _airports.Add(newAirport); - } - - public void UpdateAirport(Airport airport) - { - var existingAirport = _airports.FirstOrDefault(a => a.Id == airport.Id); - if (existingAirport != null) - { - var updatedAirport = Airport.CreateEntity(existingAirport.Id, airport.Name, airport.Location); - _airports.Remove(existingAirport); - _airports.Add(updatedAirport); - } - } - - public void DeleteAirport(int id) - { - var airportToRemove = _airports.FirstOrDefault(a => a.Id == id); - if (airportToRemove != null) - { - _airports.Remove(airportToRemove); - } - } - } -} \ No newline at end of file diff --git a/ProjectAirline/Repositories/Implementations/EmployeeFlightRepository.cs b/ProjectAirline/Repositories/Implementations/EmployeeFlightRepository.cs new file mode 100644 index 0000000..2acdd52 --- /dev/null +++ b/ProjectAirline/Repositories/Implementations/EmployeeFlightRepository.cs @@ -0,0 +1,24 @@ +using ProjectAirline.Entities; +using System.Collections.Generic; + +namespace ProjectAirline.Repositories.Implementations; + +public class EmployeeFlightRepository : IEmployeeFlightRepository +{ + public void CreateEmployeeFlight(EmployeeFlight employeeFlight) + { + // Реализация создания связи сотрудник-рейс + } + + public EmployeeFlight ReadEmployeeFlightById(int id) + { + // Реализация чтения связи сотрудник-рейс по ID + return null; + } + + public IEnumerable ReadEmployeeFlights() + { + // Реализация чтения всех связей сотрудник-рейс + return new List(); + } +} \ No newline at end of file diff --git a/ProjectAirline/Repositories/Implementations/EmployeeRepository.cs b/ProjectAirline/Repositories/Implementations/EmployeeRepository.cs index 779dc94..5e85bd2 100644 --- a/ProjectAirline/Repositories/Implementations/EmployeeRepository.cs +++ b/ProjectAirline/Repositories/Implementations/EmployeeRepository.cs @@ -1,49 +1,35 @@ -using System.Collections.Generic; -using System.Linq; -using YourNamespace.Entities; -using YourNamespace.Repositories; +using ProjectAirline.Entities; +using ProjectAirline.Entities.Enums; +using System.Collections.Generic; -namespace YourNamespace.Repositories.Implementations +namespace ProjectAirline.Repositories.Implementations; + +public class EmployeeRepository : IEmployeeRepository { - public class EmployeeRepository : IEmployeeRepository + public void CreateEmployee(Employee employee) { - private readonly List _employees = new List(); - private int _nextId = 1; + // Реализация создания сотрудника + } - public IEnumerable ReadEmployees() - { - return _employees; - } + public void DeleteEmployee(int id) + { + // Реализация удаления сотрудника + } - public Employee ReadEmployeeById(int id) - { - return _employees.FirstOrDefault(e => e.Id == id); - } + public Employee ReadEmployeeById(int id) + { + // Реализация чтения сотрудника по ID + return Employee.CreateEntity(0, string.Empty, string.Empty, string.Empty, EmployeePost.None); + } - public void CreateEmployee(Employee employee) - { - var newEmployee = Employee.CreateEntity(_nextId++, employee.FirstName, employee.LastName, employee.EmployeePost); - _employees.Add(newEmployee); - } + public IEnumerable ReadEmployees() + { + // Реализация чтения всех сотрудников + return new List(); + } - public void UpdateEmployee(Employee employee) - { - var existingEmployee = _employees.FirstOrDefault(e => e.Id == employee.Id); - if (existingEmployee != null) - { - var updatedEmployee = Employee.CreateEntity(existingEmployee.Id, employee.FirstName, employee.LastName, employee.EmployeePost); - _employees.Remove(existingEmployee); - _employees.Add(updatedEmployee); - } - } - - public void DeleteEmployee(int id) - { - var employeeToRemove = _employees.FirstOrDefault(e => e.Id == id); - if (employeeToRemove != null) - { - _employees.Remove(employeeToRemove); - } - } + public void UpdateEmployee(Employee employee) + { + // Реализация обновления сотрудника } } \ No newline at end of file diff --git a/ProjectAirline/Repositories/Implementations/FlightRepository.cs b/ProjectAirline/Repositories/Implementations/FlightRepository.cs index 3f15b9a..1dec589 100644 --- a/ProjectAirline/Repositories/Implementations/FlightRepository.cs +++ b/ProjectAirline/Repositories/Implementations/FlightRepository.cs @@ -1,49 +1,30 @@ -using System.Collections.Generic; -using System.Linq; -using YourNamespace.Entities; -using YourNamespace.Repositories; +using ProjectAirline.Entities; +using System; +using System.Collections.Generic; -namespace YourNamespace.Repositories.Implementations +namespace ProjectAirline.Repositories.Implementations; + +public class FlightRepository : IFlightRepository { - public class FlightRepository : IFlightRepository + public void CreateFlight(Flight flight) { - private readonly List _flights = new List(); - private int _nextId = 1; + // Реализация создания рейса + } - public IEnumerable ReadFlights() - { - return _flights; - } + public void DeleteFlight(int id) + { + // Реализация удаления рейса + } - public Flight ReadFlightById(int id) - { - return _flights.FirstOrDefault(f => f.Id == id); - } + public Flight ReadFlightById(int flightId) + { + // Реализация чтения рейса по ID + return Flight.CreateOperation(flightId, 0, string.Empty, string.Empty, 0, new List()); + } - public void CreateFlight(Flight flight) - { - var newFlight = Flight.CreateEntity(_nextId++, flight.FlightNumber, flight.DepartureDateTime, flight.ArrivalDateTime, flight.PlaneId, flight.AirportId); - _flights.Add(newFlight); - } - - public void UpdateFlight(Flight flight) - { - var existingFlight = _flights.FirstOrDefault(f => f.Id == flight.Id); - if (existingFlight != null) - { - var updatedFlight = Flight.CreateEntity(existingFlight.Id, flight.FlightNumber, flight.DepartureDateTime, flight.ArrivalDateTime, flight.PlaneId, flight.AirportId); - _flights.Remove(existingFlight); - _flights.Add(updatedFlight); - } - } - - public void DeleteFlight(int id) - { - var flightToRemove = _flights.FirstOrDefault(f => f.Id == id); - if (flightToRemove != null) - { - _flights.Remove(flightToRemove); - } - } + public IEnumerable ReadFlights(DateTime? dateForm = null, DateTime? dateTo = null, int? flightId = null, int? airplaneId = null) + { + // Реализация чтения рейсов с фильтрацией + return new List(); } } \ No newline at end of file diff --git a/ProjectAirline/Repositories/Implementations/PassengerRepository.cs b/ProjectAirline/Repositories/Implementations/PassengerRepository.cs index aed6b6f..607af7a 100644 --- a/ProjectAirline/Repositories/Implementations/PassengerRepository.cs +++ b/ProjectAirline/Repositories/Implementations/PassengerRepository.cs @@ -1,49 +1,33 @@ -using System.Collections.Generic; +using ProjectAirline.Entities; +using System; +using System.Collections.Generic; using System.Linq; -using YourNamespace.Entities; -using YourNamespace.Repositories; +using System.Text; +using System.Threading.Tasks; -namespace YourNamespace.Repositories.Implementations +namespace ProjectAirline.Repositories.Implementations; + +public class PassengerRepository : IPassengerRepository { - public class PassengerRepository : IPassengerRepository + public void CreatePassenger(Passenger passenger) { - private readonly List _passengers = new List(); - private int _nextId = 1; - - public IEnumerable ReadPassengers() - { - return _passengers; - } - - public Passenger ReadPassengerById(int id) - { - return _passengers.FirstOrDefault(p => p.Id == id); - } - - public void CreatePassenger(Passenger passenger) - { - var newPassenger = Passenger.CreateEntity(_nextId++, passenger.FirstName, passenger.LastName, passenger.PassportNumber); - _passengers.Add(newPassenger); - } - - public void UpdatePassenger(Passenger passenger) - { - var existingPassenger = _passengers.FirstOrDefault(p => p.Id == passenger.Id); - if (existingPassenger != null) - { - var updatedPassenger = Passenger.CreateEntity(existingPassenger.Id, passenger.FirstName, passenger.LastName, passenger.PassportNumber); - _passengers.Remove(existingPassenger); - _passengers.Add(updatedPassenger); - } - } - - public void DeletePassenger(int id) - { - var passengerToRemove = _passengers.FirstOrDefault(p => p.Id == id); - if (passengerToRemove != null) - { - _passengers.Remove(passengerToRemove); - } - } } -} \ No newline at end of file + + public void DeletePassenger(int id) + { + } + + public Passenger ReadPassengerById(int id) + { + return null; + } + + public IEnumerable ReadPassengers() + { + return []; + } + + public void UpdatePassenger(Passenger passenger) + { + } +} diff --git a/ProjectAirline/Repositories/Implementations/PlaneRepository.cs b/ProjectAirline/Repositories/Implementations/PlaneRepository.cs deleted file mode 100644 index 9eecd18..0000000 --- a/ProjectAirline/Repositories/Implementations/PlaneRepository.cs +++ /dev/null @@ -1,49 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using YourNamespace.Entities; -using YourNamespace.Repositories; - -namespace YourNamespace.Repositories.Implementations -{ - public class PlaneRepository : IPlaneRepository - { - private readonly List _planes = new List(); - private int _nextId = 1; - - public IEnumerable ReadPlanes() - { - return _planes; - } - - public Plane ReadPlaneById(int id) - { - return _planes.FirstOrDefault(p => p.Id == id); - } - - public void CreatePlane(Plane plane) - { - var newPlane = Plane.CreateEntity(_nextId++, plane.Model, plane.Capacity); - _planes.Add(newPlane); - } - - public void UpdatePlane(Plane plane) - { - var existingPlane = _planes.FirstOrDefault(p => p.Id == plane.Id); - if (existingPlane != null) - { - var updatedPlane = Plane.CreateEntity(existingPlane.Id, plane.Model, plane.Capacity); - _planes.Remove(existingPlane); - _planes.Add(updatedPlane); - } - } - - public void DeletePlane(int id) - { - var planeToRemove = _planes.FirstOrDefault(p => p.Id == id); - if (planeToRemove != null) - { - _planes.Remove(planeToRemove); - } - } - } -} \ No newline at end of file diff --git a/ProjectAirline/Repositories/Implementations/TicketRepository.cs b/ProjectAirline/Repositories/Implementations/TicketRepository.cs index 5bd5603..4db2694 100644 --- a/ProjectAirline/Repositories/Implementations/TicketRepository.cs +++ b/ProjectAirline/Repositories/Implementations/TicketRepository.cs @@ -1,49 +1,29 @@ -using System.Collections.Generic; +using ProjectAirline.Entities; +using System; +using System.Collections.Generic; using System.Linq; -using YourNamespace.Entities; -using YourNamespace.Repositories; +using System.Text; +using System.Threading.Tasks; -namespace YourNamespace.Repositories.Implementations +namespace ProjectAirline.Repositories.Implementations; + +public class TicketRepository : ITicketRepository { - public class TicketRepository : ITicketRepository + public void CreateTicket(Ticket ticket) { - private readonly List _tickets = new List(); - private int _nextId = 1; - - public IEnumerable ReadTickets() - { - return _tickets; - } - - public Ticket ReadTicketById(int id) - { - return _tickets.FirstOrDefault(t => t.Id == id); - } - - public void CreateTicket(Ticket ticket) - { - var newTicket = Ticket.CreateEntity(_nextId++, ticket.PassengerId, ticket.FlightId, ticket.DateBuy, ticket.TicketPrice); - _tickets.Add(newTicket); - } - - public void UpdateTicket(Ticket ticket) - { - var existingTicket = _tickets.FirstOrDefault(t => t.Id == ticket.Id); - if (existingTicket != null) - { - var updatedTicket = Ticket.CreateEntity(existingTicket.Id, ticket.PassengerId, ticket.FlightId, ticket.DateBuy, ticket.TicketPrice); - _tickets.Remove(existingTicket); - _tickets.Add(updatedTicket); - } - } - - public void DeleteTicket(int id) - { - var ticketToRemove = _tickets.FirstOrDefault(t => t.Id == id); - if (ticketToRemove != null) - { - _tickets.Remove(ticketToRemove); - } - } } -} \ No newline at end of file + + public Ticket ReadTicketById(int id) + { + return null; + } + + public IEnumerable ReadTickets() + { + return []; + } + + public void UpdateTicket(Ticket ticket) + { + } +} diff --git a/ProjectAirline/Resources/plus.jpeg b/ProjectAirline/Resources/plus.jpeg new file mode 100644 index 0000000..c24368d Binary files /dev/null and b/ProjectAirline/Resources/plus.jpeg differ diff --git a/ProjectAirline/Resources/samolet.jpeg b/ProjectAirline/Resources/samolet.jpeg new file mode 100644 index 0000000..666fb79 Binary files /dev/null and b/ProjectAirline/Resources/samolet.jpeg differ