diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs index 9529bdc..3258c8c 100644 --- a/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs +++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs @@ -6,7 +6,7 @@ namespace FuelAndLubricants.Forms { public partial class FormCar: Form { - private readonly ICarRepository _carRepository; + private readonly IRouteRepository _carRepository; private int? _carId; @@ -43,7 +43,7 @@ namespace FuelAndLubricants.Forms } } } - public FormCar(ICarRepository carRepository) + public FormCar(IRouteRepository carRepository) { InitializeComponent(); _carRepository = carRepository ?? diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormCars.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormCars.cs index 797ff16..aea072b 100644 --- a/FuelAndLubricants/FuelAndLubricants/Forms/FormCars.cs +++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormCars.cs @@ -7,9 +7,9 @@ namespace FuelAndLubricants.Forms { private readonly IUnityContainer _container; - private readonly ICarRepository _carRepository; + private readonly IRouteRepository _carRepository; - public FormCars(IUnityContainer container, ICarRepository carRepository) + public FormCars(IUnityContainer container, IRouteRepository carRepository) { InitializeComponent(); _container = container ?? diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.Designer.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.Designer.cs new file mode 100644 index 0000000..2c1d86a --- /dev/null +++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.Designer.cs @@ -0,0 +1,144 @@ +namespace FuelAndLubricants.Forms +{ + partial class FormRoute + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label5 = new Label(); + numericUpDownLength = new NumericUpDown(); + buttonCancel = new Button(); + buttonRouteSave = new Button(); + textBoxEndPoint = new TextBox(); + label2 = new Label(); + textBoxStartPoint = new TextBox(); + label1 = new Label(); + ((System.ComponentModel.ISupportInitialize)numericUpDownLength).BeginInit(); + SuspendLayout(); + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(10, 70); + label5.Name = "label5"; + label5.Size = new Size(102, 15); + label5.TabIndex = 33; + label5.Text = "Длина маршрута"; + // + // numericUpDownLength + // + numericUpDownLength.DecimalPlaces = 2; + numericUpDownLength.Location = new Point(117, 68); + numericUpDownLength.Minimum = new decimal(new int[] { 1, 0, 0, 131072 }); + numericUpDownLength.Name = "numericUpDownLength"; + numericUpDownLength.Size = new Size(140, 23); + numericUpDownLength.TabIndex = 32; + numericUpDownLength.Value = new decimal(new int[] { 1, 0, 0, 131072 }); + // + // buttonCancel + // + buttonCancel.Location = new Point(182, 102); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 28; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonRouteSave + // + buttonRouteSave.Location = new Point(10, 102); + buttonRouteSave.Name = "buttonRouteSave"; + buttonRouteSave.Size = new Size(75, 23); + buttonRouteSave.TabIndex = 27; + buttonRouteSave.Text = "Сохранить"; + buttonRouteSave.UseVisualStyleBackColor = true; + buttonRouteSave.Click += ButtonRouteSave_Click; + // + // textBoxEndPoint + // + textBoxEndPoint.Location = new Point(117, 39); + textBoxEndPoint.Name = "textBoxEndPoint"; + textBoxEndPoint.Size = new Size(140, 23); + textBoxEndPoint.TabIndex = 25; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(10, 42); + label2.Name = "label2"; + label2.Size = new Size(94, 15); + label2.TabIndex = 24; + label2.Text = "Конечная точка"; + // + // textBoxStartPoint + // + textBoxStartPoint.Location = new Point(117, 10); + textBoxStartPoint.Name = "textBoxStartPoint"; + textBoxStartPoint.Size = new Size(140, 23); + textBoxStartPoint.TabIndex = 23; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(10, 13); + label1.Name = "label1"; + label1.Size = new Size(101, 15); + label1.TabIndex = 22; + label1.Text = "Начальная точка"; + // + // FormRoute + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(267, 134); + Controls.Add(label5); + Controls.Add(numericUpDownLength); + Controls.Add(buttonCancel); + Controls.Add(buttonRouteSave); + Controls.Add(textBoxEndPoint); + Controls.Add(label2); + Controls.Add(textBoxStartPoint); + Controls.Add(label1); + Name = "FormRoute"; + Text = "FormRoute"; + ((System.ComponentModel.ISupportInitialize)numericUpDownLength).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label5; + private NumericUpDown numericUpDownLength; + private Button buttonCancel; + private Button buttonRouteSave; + private TextBox textBoxEndPoint; + private Label label2; + private TextBox textBoxStartPoint; + private Label label1; + } +} \ No newline at end of file diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.cs new file mode 100644 index 0000000..3e7b40e --- /dev/null +++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.cs @@ -0,0 +1,70 @@ +using FuelAndLubricants.Entities; +using FuelAndLubricants.Repositories; + +namespace FuelAndLubricants.Forms +{ + public partial class FormRoute : Form + { + private readonly IRouteRepository _routeRepository; + + private int? _routeId; + + public int Id + { + set + { + try + { + var route = _routeRepository.ReadRouteByID(value); + if (route == null) + throw new InvalidOperationException(nameof(route)); + + textBoxStartPoint.Text = route.Start_Point; + textBoxEndPoint.Text = route.End_Point; + numericUpDownLength.Value = (decimal)route.Route_Length; + + _routeId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormRoute(IRouteRepository routeRepository) + { + InitializeComponent(); + _routeRepository = routeRepository ?? + throw new ArgumentNullException(nameof(routeRepository)); + } + + private void ButtonRouteSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxStartPoint.Text) || string.IsNullOrWhiteSpace(textBoxEndPoint.Text)) + throw new Exception("Имеются незаполненные поля"); + + if (_routeId.HasValue) + _routeRepository.UpdateRoute(CreateRoute(_routeId.Value)); + else + _routeRepository.CreateRoute(CreateRoute(0)); + + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Route CreateRoute(int id) + { + return Route.CreateEntity(id, textBoxStartPoint.Text, textBoxEndPoint.Text, (float)numericUpDownLength.Value); + } + } +} diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.resx b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoute.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/FuelAndLubricants/FuelAndLubricants/Program.cs b/FuelAndLubricants/FuelAndLubricants/Program.cs index 5ab9ffd..3f63e1b 100644 --- a/FuelAndLubricants/FuelAndLubricants/Program.cs +++ b/FuelAndLubricants/FuelAndLubricants/Program.cs @@ -22,7 +22,7 @@ namespace FuelAndLubricants { var container = new UnityContainer(); - container.RegisterType(); + container.RegisterType(); container.RegisterType(); container.RegisterType(); container.RegisterType(); diff --git a/FuelAndLubricants/FuelAndLubricants/Repositories/ICarRepository.cs b/FuelAndLubricants/FuelAndLubricants/Repositories/ICarRepository.cs index a4d9d34..195e20e 100644 --- a/FuelAndLubricants/FuelAndLubricants/Repositories/ICarRepository.cs +++ b/FuelAndLubricants/FuelAndLubricants/Repositories/ICarRepository.cs @@ -2,7 +2,7 @@ namespace FuelAndLubricants.Repositories; -public interface ICarRepository +public interface IRouteRepository { IEnumerable ReadCars(); diff --git a/FuelAndLubricants/FuelAndLubricants/Repositories/Implementations/CarRepository.cs b/FuelAndLubricants/FuelAndLubricants/Repositories/Implementations/CarRepository.cs index 5759289..e780ce9 100644 --- a/FuelAndLubricants/FuelAndLubricants/Repositories/Implementations/CarRepository.cs +++ b/FuelAndLubricants/FuelAndLubricants/Repositories/Implementations/CarRepository.cs @@ -2,7 +2,7 @@ namespace FuelAndLubricants.Repositories.Implementations; -public class CarRepository : ICarRepository +public class CarRepository : IRouteRepository { public void CreateCar(Car car) {