diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs index 3258c8c..9529bdc 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 IRouteRepository _carRepository; + private readonly ICarRepository _carRepository; private int? _carId; @@ -43,7 +43,7 @@ namespace FuelAndLubricants.Forms } } } - public FormCar(IRouteRepository carRepository) + public FormCar(ICarRepository carRepository) { InitializeComponent(); _carRepository = carRepository ?? diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormCars.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormCars.cs index aea072b..797ff16 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 IRouteRepository _carRepository; + private readonly ICarRepository _carRepository; - public FormCars(IUnityContainer container, IRouteRepository carRepository) + public FormCars(IUnityContainer container, ICarRepository carRepository) { InitializeComponent(); _container = container ?? diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.Designer.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.Designer.cs new file mode 100644 index 0000000..6bc8b9c --- /dev/null +++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.Designer.cs @@ -0,0 +1,125 @@ +namespace FuelAndLubricants.Forms +{ + partial class FormRoutes + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel1 = new Panel(); + buttonDel = new Button(); + buttonUpd = new Button(); + buttonAdd = new Button(); + dataGridView = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonDel); + panel1.Controls.Add(buttonUpd); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(681, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(99, 260); + panel1.TabIndex = 0; + // + // buttonDel + // + buttonDel.BackgroundImage = Properties.Resources.Удалить; + buttonDel.BackgroundImageLayout = ImageLayout.Stretch; + buttonDel.Location = new Point(12, 174); + buttonDel.Name = "buttonDel"; + buttonDel.Size = new Size(75, 75); + buttonDel.TabIndex = 8; + buttonDel.UseVisualStyleBackColor = true; + buttonDel.Click += ButtonDel_Click; + // + // buttonUpd + // + buttonUpd.BackgroundImage = Properties.Resources.Редактировать; + buttonUpd.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpd.Location = new Point(12, 93); + buttonUpd.Name = "buttonUpd"; + buttonUpd.Size = new Size(75, 75); + buttonUpd.TabIndex = 7; + buttonUpd.UseVisualStyleBackColor = true; + buttonUpd.Click += ButtonUpd_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.Добавить; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(12, 12); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(75, 75); + buttonAdd.TabIndex = 6; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridView + // + dataGridView.AllowUserToAddRows = false; + dataGridView.AllowUserToDeleteRows = false; + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(0, 0); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.ReadOnly = true; + dataGridView.RowHeadersVisible = false; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(681, 260); + dataGridView.TabIndex = 3; + // + // FormRoutes + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(780, 260); + Controls.Add(dataGridView); + Controls.Add(panel1); + Name = "FormRoutes"; + Text = "FormRoutes"; + Load += FormRoutes_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button buttonDel; + private Button buttonUpd; + private Button buttonAdd; + private DataGridView dataGridView; + } +} \ No newline at end of file diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.cs new file mode 100644 index 0000000..312d332 --- /dev/null +++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.cs @@ -0,0 +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 FuelAndLubricants.Repositories; +using FuelAndLubricants.Repositories.Implementations; +using Unity; + +namespace FuelAndLubricants.Forms +{ + public partial class FormRoutes : Form + { + private readonly IUnityContainer _container; + + private readonly IRouteRepository _routeRepository; + public FormRoutes(IUnityContainer container, IRouteRepository routeRepository) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _routeRepository = routeRepository ?? + throw new ArgumentNullException(nameof(routeRepository)); + } + + private void FormRoutes_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + return; + + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + return; + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + return; + + try + { + _routeRepository.DeleteRoute(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridView.DataSource = _routeRepository.ReadRoutes(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridView.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Route_ID"].Value); + return true; + } + } +} diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.resx b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormRoutes.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/FuelAndLubricants/FuelAndLubricants/Repositories/ICarRepository.cs b/FuelAndLubricants/FuelAndLubricants/Repositories/ICarRepository.cs index 195e20e..a4d9d34 100644 --- a/FuelAndLubricants/FuelAndLubricants/Repositories/ICarRepository.cs +++ b/FuelAndLubricants/FuelAndLubricants/Repositories/ICarRepository.cs @@ -2,7 +2,7 @@ namespace FuelAndLubricants.Repositories; -public interface IRouteRepository +public interface ICarRepository { IEnumerable ReadCars();