diff --git a/Transportlog/Transportlog.sln b/Transportlog/Transportlog.sln
new file mode 100644
index 0000000..990c330
--- /dev/null
+++ b/Transportlog/Transportlog.sln
@@ -0,0 +1,31 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.9.34616.47
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Transportlog", "Transportlog\Transportlog.csproj", "{BF0F0B14-FDC0-40ED-AC74-0C200A0B77A5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "database", "database\database.csproj", "{6BA90E1A-4B41-499C-AA38-0F3BDC04DB27}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BF0F0B14-FDC0-40ED-AC74-0C200A0B77A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BF0F0B14-FDC0-40ED-AC74-0C200A0B77A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BF0F0B14-FDC0-40ED-AC74-0C200A0B77A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BF0F0B14-FDC0-40ED-AC74-0C200A0B77A5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6BA90E1A-4B41-499C-AA38-0F3BDC04DB27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6BA90E1A-4B41-499C-AA38-0F3BDC04DB27}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6BA90E1A-4B41-499C-AA38-0F3BDC04DB27}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6BA90E1A-4B41-499C-AA38-0F3BDC04DB27}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {CB362534-5D30-4475-919A-D2EDBF9F5E57}
+ EndGlobalSection
+EndGlobal
diff --git a/Transportlog/Transportlog/FormCargo.Designer.cs b/Transportlog/Transportlog/FormCargo.Designer.cs
new file mode 100644
index 0000000..d6a2d89
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargo.Designer.cs
@@ -0,0 +1,201 @@
+namespace Forms
+{
+ partial class FormCargo
+ {
+ ///
+ /// 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()
+ {
+ buttonDelete = new Button();
+ buttonUpdate = new Button();
+ buttonCreate = new Button();
+ textBoxWeight = new TextBox();
+ textBoxType = new TextBox();
+ label4 = new Label();
+ label3 = new Label();
+ label2 = new Label();
+ label1 = new Label();
+ dataGridView = new DataGridView();
+ textBoxName = new TextBox();
+ textBoxDescription = new TextBox();
+ ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // buttonDelete
+ //
+ buttonDelete.Location = new Point(786, 243);
+ buttonDelete.Margin = new Padding(3, 4, 3, 4);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(86, 31);
+ buttonDelete.TabIndex = 28;
+ buttonDelete.Text = "delete";
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += buttonDelete_Click;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.Location = new Point(786, 205);
+ buttonUpdate.Margin = new Padding(3, 4, 3, 4);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(86, 31);
+ buttonUpdate.TabIndex = 27;
+ buttonUpdate.Text = "update";
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += buttonUpdate_Click;
+ //
+ // buttonCreate
+ //
+ buttonCreate.Location = new Point(786, 166);
+ buttonCreate.Margin = new Padding(3, 4, 3, 4);
+ buttonCreate.Name = "buttonCreate";
+ buttonCreate.Size = new Size(86, 31);
+ buttonCreate.TabIndex = 26;
+ buttonCreate.Text = "create";
+ buttonCreate.UseVisualStyleBackColor = true;
+ buttonCreate.Click += buttonCreate_Click;
+ //
+ // textBoxWeight
+ //
+ textBoxWeight.Location = new Point(786, 92);
+ textBoxWeight.Margin = new Padding(3, 4, 3, 4);
+ textBoxWeight.Name = "textBoxWeight";
+ textBoxWeight.Size = new Size(114, 27);
+ textBoxWeight.TabIndex = 23;
+ //
+ // textBoxType
+ //
+ textBoxType.Location = new Point(786, 131);
+ textBoxType.Margin = new Padding(3, 4, 3, 4);
+ textBoxType.Name = "textBoxType";
+ textBoxType.Size = new Size(114, 27);
+ textBoxType.TabIndex = 21;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(696, 135);
+ label4.Name = "label4";
+ label4.Size = new Size(40, 20);
+ label4.TabIndex = 19;
+ label4.Text = "Type";
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(696, 96);
+ label3.Name = "label3";
+ label3.Size = new Size(56, 20);
+ label3.TabIndex = 18;
+ label3.Text = "Weight";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(696, 57);
+ label2.Name = "label2";
+ label2.Size = new Size(85, 20);
+ label2.TabIndex = 17;
+ label2.Text = "Description";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(696, 19);
+ label1.Name = "label1";
+ label1.Size = new Size(49, 20);
+ label1.TabIndex = 16;
+ label1.Text = "Name";
+ //
+ // dataGridView
+ //
+ dataGridView.AllowUserToAddRows = false;
+ dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridView.Location = new Point(15, 19);
+ dataGridView.Margin = new Padding(3, 4, 3, 4);
+ dataGridView.Name = "dataGridView";
+ dataGridView.RowHeadersWidth = 51;
+ dataGridView.RowTemplate.Height = 25;
+ dataGridView.Size = new Size(661, 568);
+ dataGridView.TabIndex = 15;
+ dataGridView.CellClick += dataGridView_CellClick;
+ //
+ // textBoxName
+ //
+ textBoxName.Location = new Point(786, 19);
+ textBoxName.Margin = new Padding(3, 4, 3, 4);
+ textBoxName.Name = "textBoxName";
+ textBoxName.Size = new Size(114, 27);
+ textBoxName.TabIndex = 29;
+ //
+ // textBoxDescription
+ //
+ textBoxDescription.Location = new Point(786, 54);
+ textBoxDescription.Margin = new Padding(3, 4, 3, 4);
+ textBoxDescription.Name = "textBoxDescription";
+ textBoxDescription.Size = new Size(114, 27);
+ textBoxDescription.TabIndex = 30;
+ //
+ // FormCargo
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(914, 600);
+ Controls.Add(textBoxDescription);
+ Controls.Add(textBoxName);
+ Controls.Add(buttonDelete);
+ Controls.Add(buttonUpdate);
+ Controls.Add(buttonCreate);
+ Controls.Add(textBoxWeight);
+ Controls.Add(textBoxType);
+ Controls.Add(label4);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(dataGridView);
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormCargo";
+ Text = "FormCargo";
+ Load += FormCargo_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ private Button buttonCreate;
+ private TextBox textBoxWeight;
+ private TextBox textBoxType;
+ private Label label4;
+ private Label label3;
+ private Label label2;
+ private Label label1;
+ private DataGridView dataGridView;
+ private TextBox textBoxName;
+ private TextBox textBoxDescription;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormCargo.cs b/Transportlog/Transportlog/FormCargo.cs
new file mode 100644
index 0000000..6f16157
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargo.cs
@@ -0,0 +1,123 @@
+using database;
+using System.Data;
+
+namespace Forms
+{
+ public partial class FormCargo : Form
+ {
+ private Abstractions bd;
+ public FormCargo(Abstractions _bd)
+ {
+ InitializeComponent();
+ bd = _bd;
+ }
+ private void loadData()
+ {
+ // Получаем список автомобилей
+ List cargos = bd.GetCargos();
+
+ // Очищаем dataGridView перед заполнением новыми данными
+ dataGridView.Rows.Clear();
+
+ // Предварительно определяем столбцы, если это не было сделано ранее
+ if (dataGridView.ColumnCount == 0)
+ {
+ dataGridView.Columns.Add("id", "ID");
+ dataGridView.Columns.Add("Name", "Name");
+ dataGridView.Columns.Add("Description", "Description");
+ dataGridView.Columns.Add("Weight", "Weight");
+ dataGridView.Columns.Add("Type", "Type");
+ }
+
+ // Заполняем dataGridView данными из списка автомобилей
+ foreach (Cargo cargo in cargos)
+ {
+ dataGridView.Rows.Add(cargo.id,
+ cargo.Name, cargo.Description, cargo.Weight, cargo.Type);
+ }
+
+ }
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ // Создаем новый объект Car и заполняем его данными из текстовых полей и комбо-боксов
+ Cargo newCargo = new Cargo
+ {
+ Name = textBoxName.Text,
+ Description = textBoxDescription.Text,
+ Weight = decimal.Parse(textBoxWeight.Text),
+ Type = textBoxType.Text,
+ };
+
+ // Вызываем метод добавления нового автомобиля в базу данных
+ bd.AddCargo(newCargo);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+
+ private void buttonUpdate_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID редактируемого автомобиля из выбранной строки dataGridView
+ int cargoId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Создаем объект Car и заполняем его данными из текстовых полей и комбо-боксов
+ Cargo updatedCargo = new Cargo
+ {
+ id = cargoId,
+ Name = textBoxName.Text,
+ Description = textBoxDescription.Text,
+ Weight = decimal.Parse(textBoxWeight.Text),
+ Type = textBoxType.Text,
+ };
+
+ // Вызываем метод обновления автомобиля в базе данных
+ bd.UpdateCargo(updatedCargo);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void buttonDelete_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID удаляемого автомобиля из выбранной строки dataGridView
+ int cargoId = (int)dataGridView.Rows[rowIndex].Cells["id"].Value;
+
+ // Вызываем метод удаления автомобиля из базы данных
+ bd.DeleteCargo(cargoId);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex >= 0)
+ {
+ DataGridViewRow row = dataGridView.Rows[e.RowIndex];
+
+ // Заполняем текстовые поля данными из выбранной строки
+ textBoxName.Text = row.Cells["Name"].Value.ToString();
+ textBoxDescription.Text = row.Cells["Description"].Value.ToString();
+ textBoxWeight.Text = row.Cells["Weight"].Value.ToString();
+ textBoxType.Text = row.Cells["Type"].Value.ToString();
+ }
+ }
+
+ private void FormCargo_Load(object sender, EventArgs e)
+ {
+ loadData();
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormCargo.resx b/Transportlog/Transportlog/FormCargo.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargo.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/Transportlog/Transportlog/FormCargoOrders.Designer.cs b/Transportlog/Transportlog/FormCargoOrders.Designer.cs
new file mode 100644
index 0000000..0745128
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargoOrders.Designer.cs
@@ -0,0 +1,180 @@
+namespace Forms
+{
+ partial class FormCargoOrders
+ {
+ ///
+ /// 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()
+ {
+ buttonDelete = new Button();
+ buttonUpdate = new Button();
+ buttonCreate = new Button();
+ comboBoxCargo = new ComboBox();
+ label2 = new Label();
+ label1 = new Label();
+ dataGridView = new DataGridView();
+ comboBoxOrders = new ComboBox();
+ textBoxCount = new TextBox();
+ label4 = new Label();
+ ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // buttonDelete
+ //
+ buttonDelete.Location = new Point(1152, 222);
+ buttonDelete.Margin = new Padding(3, 4, 3, 4);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(86, 31);
+ buttonDelete.TabIndex = 28;
+ buttonDelete.Text = "delete";
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += buttonDelete_Click;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.Location = new Point(1152, 184);
+ buttonUpdate.Margin = new Padding(3, 4, 3, 4);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(86, 31);
+ buttonUpdate.TabIndex = 27;
+ buttonUpdate.Text = "update";
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += buttonUpdate_Click;
+ //
+ // buttonCreate
+ //
+ buttonCreate.Location = new Point(1152, 145);
+ buttonCreate.Margin = new Padding(3, 4, 3, 4);
+ buttonCreate.Name = "buttonCreate";
+ buttonCreate.Size = new Size(86, 31);
+ buttonCreate.TabIndex = 26;
+ buttonCreate.Text = "create";
+ buttonCreate.UseVisualStyleBackColor = true;
+ buttonCreate.Click += buttonCreate_Click;
+ //
+ // comboBoxCargo
+ //
+ comboBoxCargo.FormattingEnabled = true;
+ comboBoxCargo.Location = new Point(930, 16);
+ comboBoxCargo.Margin = new Padding(3, 4, 3, 4);
+ comboBoxCargo.Name = "comboBoxCargo";
+ comboBoxCargo.Size = new Size(308, 28);
+ comboBoxCargo.TabIndex = 25;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(785, 61);
+ label2.Name = "label2";
+ label2.Size = new Size(53, 20);
+ label2.TabIndex = 17;
+ label2.Text = "Orders";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(785, 23);
+ label1.Name = "label1";
+ label1.Size = new Size(49, 20);
+ label1.TabIndex = 16;
+ label1.Text = "Cargo";
+ //
+ // dataGridView
+ //
+ dataGridView.AllowUserToAddRows = false;
+ dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridView.Location = new Point(15, 19);
+ dataGridView.Margin = new Padding(3, 4, 3, 4);
+ dataGridView.Name = "dataGridView";
+ dataGridView.RowHeadersWidth = 51;
+ dataGridView.RowTemplate.Height = 25;
+ dataGridView.Size = new Size(689, 568);
+ dataGridView.TabIndex = 15;
+ dataGridView.CellClick += dataGridView_CellClick;
+ //
+ // comboBoxOrders
+ //
+ comboBoxOrders.FormattingEnabled = true;
+ comboBoxOrders.Location = new Point(930, 54);
+ comboBoxOrders.Margin = new Padding(3, 4, 3, 4);
+ comboBoxOrders.Name = "comboBoxOrders";
+ comboBoxOrders.Size = new Size(308, 28);
+ comboBoxOrders.TabIndex = 29;
+ //
+ // textBoxCount
+ //
+ textBoxCount.Location = new Point(930, 96);
+ textBoxCount.Margin = new Padding(3, 4, 3, 4);
+ textBoxCount.Name = "textBoxCount";
+ textBoxCount.Size = new Size(308, 27);
+ textBoxCount.TabIndex = 31;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(785, 103);
+ label4.Name = "label4";
+ label4.Size = new Size(48, 20);
+ label4.TabIndex = 30;
+ label4.Text = "Count";
+ //
+ // FormCargoOrders
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1250, 600);
+ Controls.Add(textBoxCount);
+ Controls.Add(label4);
+ Controls.Add(comboBoxOrders);
+ Controls.Add(buttonDelete);
+ Controls.Add(buttonUpdate);
+ Controls.Add(buttonCreate);
+ Controls.Add(comboBoxCargo);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(dataGridView);
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormCargoOrders";
+ Text = "FormCargoOrders";
+ Load += FormCargoOrders_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ private Button buttonCreate;
+ private ComboBox comboBoxCargo;
+ private Label label2;
+ private Label label1;
+ private DataGridView dataGridView;
+ private ComboBox comboBoxOrders;
+ private TextBox textBoxCount;
+ private Label label4;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormCargoOrders.cs b/Transportlog/Transportlog/FormCargoOrders.cs
new file mode 100644
index 0000000..f46099c
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargoOrders.cs
@@ -0,0 +1,160 @@
+using database;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Windows.Forms;
+using System.Windows.Forms.VisualStyles;
+
+namespace Forms
+{
+ public partial class FormCargoOrders : Form
+ {
+ private Abstractions bd;
+
+ public FormCargoOrders(Abstractions _bd)
+ {
+ InitializeComponent();
+ bd = _bd;
+ }
+
+ private void loadData()
+ {
+ // Получаем список грузовых заказов
+ List cargoOrders = bd.GetCargoOrders();
+
+ // Очищаем dataGridView перед заполнением новыми данными
+ dataGridView.Rows.Clear();
+
+ // Предварительно определяем столбцы, если это не было сделано ранее
+ if (dataGridView.ColumnCount == 0)
+ {
+ dataGridView.Columns.Add("Id", "ID");
+
+ dataGridView.Columns.Add("CargoId", "CargoId");
+ dataGridView.Columns["CargoId"].Visible = false;
+ dataGridView.Columns.Add("Cargo", "Cargo");
+
+ dataGridView.Columns.Add("OrderId", "OrderId");
+ dataGridView.Columns["OrderId"].Visible = false;
+ dataGridView.Columns.Add("Order", "Order");
+
+ dataGridView.Columns.Add("Count", "Count");
+ }
+
+ comboBoxCargo.DataSource = bd.GetCargos()
+ .Select(x => new helpCombobox()
+ {
+ Text = x.Name + " " + x.Type,
+ Id = x.id
+ }).ToList();
+ comboBoxCargo.DisplayMember = "Text";
+ comboBoxCargo.ValueMember = "Id";
+
+ comboBoxOrders.DataSource = bd.GetOrders()
+ .Select(x => new helpCombobox()
+ {
+ Text ="id: " + x.id + " " + x.Status,
+ Id = x.id
+ }).ToList();
+ comboBoxOrders.DisplayMember = "Text";
+ comboBoxOrders.ValueMember = "Id";
+
+ // Заполняем dataGridView данными из списка грузовых заказов
+ foreach (CargoOrder cargoOrder in cargoOrders)
+ {
+ dataGridView.Rows.Add(
+ cargoOrder.id,
+ cargoOrder.CargoId,
+ cargoOrder.OrderId,
+ bd.GetCargoById(cargoOrder.CargoId).Name + " " + bd.GetCargoById(cargoOrder.CargoId).Type,
+ bd.GetOrdersById(cargoOrder.OrderId).id,
+ cargoOrder.Count
+ );
+ }
+ }
+
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ // Создаем новый объект CargoOrder и заполняем его данными из комбо-боксов и текстового поля
+ CargoOrder newCargoOrder = new CargoOrder
+ {
+ CargoId = ((helpCombobox)comboBoxCargo.SelectedItem).Id,
+ OrderId = ((helpCombobox)comboBoxOrders.SelectedItem).Id,
+ Count = Convert.ToInt32(textBoxCount.Text)
+ };
+
+ // Вызываем метод добавления нового грузового заказа в базу данных
+ bd.AddCargoOrder(newCargoOrder);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+
+ private void buttonUpdate_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID редактируемого грузового заказа из выбранной строки dataGridView
+ int cargoOrderId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Создаем объект CargoOrder и заполняем его данными из комбо-боксов и текстового поля
+ CargoOrder updatedCargoOrder = new CargoOrder
+ {
+ id = cargoOrderId,
+ CargoId = ((helpCombobox)comboBoxCargo.SelectedItem).Id,
+ OrderId = ((helpCombobox)comboBoxOrders.SelectedItem).Id,
+ Count = Convert.ToInt32(textBoxCount.Text)
+ };
+
+ // Вызываем метод обновления грузового заказа в базе данных
+ bd.UpdateCargoOrder(updatedCargoOrder);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void buttonDelete_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID удаляемого грузового заказа из выбранной строки dataGridView
+ int cargoOrderId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Вызываем метод удаления грузового заказа из базы данных
+ bd.DeleteCargoOrder(cargoOrderId);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex >= 0)
+ {
+ DataGridViewRow row = dataGridView.Rows[e.RowIndex];
+
+ // Получаем значения для комбо-боксов из выбранной строки
+ textBoxCount.Text = row.Cells["Count"].Value.ToString();
+ int CargoId = Convert.ToInt32(row.Cells["CargoId"].Value);
+ string OrderId = Convert.ToString(row.Cells["OrderId"].Value);
+
+ comboBoxCargo.SelectedValue = CargoId;
+ comboBoxOrders.SelectedValue = OrderId;
+ }
+ }
+
+ private void FormCargoOrders_Load(object sender, EventArgs e)
+ {
+ loadData();
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormCargoOrders.resx b/Transportlog/Transportlog/FormCargoOrders.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargoOrders.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/Transportlog/Transportlog/FormCargoTransport.Designer.cs b/Transportlog/Transportlog/FormCargoTransport.Designer.cs
new file mode 100644
index 0000000..b338aa9
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargoTransport.Designer.cs
@@ -0,0 +1,157 @@
+namespace Forms
+{
+ partial class FormCargoTransport
+ {
+ ///
+ /// 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()
+ {
+ buttonDelete = new Button();
+ buttonUpdate = new Button();
+ buttonCreate = new Button();
+ comboBoxCargo = new ComboBox();
+ label2 = new Label();
+ label1 = new Label();
+ dataGridView = new DataGridView();
+ comboBoxTransport = new ComboBox();
+ ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // buttonDelete
+ //
+ buttonDelete.Location = new Point(1152, 222);
+ buttonDelete.Margin = new Padding(3, 4, 3, 4);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(86, 31);
+ buttonDelete.TabIndex = 28;
+ buttonDelete.Text = "delete";
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += buttonDelete_Click;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.Location = new Point(1152, 184);
+ buttonUpdate.Margin = new Padding(3, 4, 3, 4);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(86, 31);
+ buttonUpdate.TabIndex = 27;
+ buttonUpdate.Text = "update";
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += buttonUpdate_Click;
+ //
+ // buttonCreate
+ //
+ buttonCreate.Location = new Point(1152, 145);
+ buttonCreate.Margin = new Padding(3, 4, 3, 4);
+ buttonCreate.Name = "buttonCreate";
+ buttonCreate.Size = new Size(86, 31);
+ buttonCreate.TabIndex = 26;
+ buttonCreate.Text = "create";
+ buttonCreate.UseVisualStyleBackColor = true;
+ buttonCreate.Click += buttonCreate_Click;
+ //
+ // comboBoxCargo
+ //
+ comboBoxCargo.FormattingEnabled = true;
+ comboBoxCargo.Location = new Point(930, 16);
+ comboBoxCargo.Margin = new Padding(3, 4, 3, 4);
+ comboBoxCargo.Name = "comboBoxCargo";
+ comboBoxCargo.Size = new Size(308, 28);
+ comboBoxCargo.TabIndex = 25;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(785, 61);
+ label2.Name = "label2";
+ label2.Size = new Size(71, 20);
+ label2.TabIndex = 17;
+ label2.Text = "Transport";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(785, 23);
+ label1.Name = "label1";
+ label1.Size = new Size(49, 20);
+ label1.TabIndex = 16;
+ label1.Text = "Cargo";
+ //
+ // dataGridView
+ //
+ dataGridView.AllowUserToAddRows = false;
+ dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridView.Location = new Point(15, 19);
+ dataGridView.Margin = new Padding(3, 4, 3, 4);
+ dataGridView.Name = "dataGridView";
+ dataGridView.RowHeadersWidth = 51;
+ dataGridView.RowTemplate.Height = 25;
+ dataGridView.Size = new Size(689, 568);
+ dataGridView.TabIndex = 15;
+ dataGridView.CellClick += dataGridView_CellClick;
+ //
+ // comboBoxTransport
+ //
+ comboBoxTransport.FormattingEnabled = true;
+ comboBoxTransport.Location = new Point(930, 54);
+ comboBoxTransport.Margin = new Padding(3, 4, 3, 4);
+ comboBoxTransport.Name = "comboBoxTransport";
+ comboBoxTransport.Size = new Size(308, 28);
+ comboBoxTransport.TabIndex = 29;
+ //
+ // FormCargoTransport
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1250, 600);
+ Controls.Add(comboBoxTransport);
+ Controls.Add(buttonDelete);
+ Controls.Add(buttonUpdate);
+ Controls.Add(buttonCreate);
+ Controls.Add(comboBoxCargo);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(dataGridView);
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormCargoTransport";
+ Text = "FormRental";
+ Load += FormRental_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ private Button buttonCreate;
+ private ComboBox comboBoxCargo;
+ private Label label2;
+ private Label label1;
+ private DataGridView dataGridView;
+ private ComboBox comboBoxTransport;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormCargoTransport.cs b/Transportlog/Transportlog/FormCargoTransport.cs
new file mode 100644
index 0000000..d0d8216
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargoTransport.cs
@@ -0,0 +1,151 @@
+using database;
+using System.Data;
+
+namespace Forms
+{
+ public partial class FormCargoTransport : Form
+ {
+ private Abstractions bd;
+ public FormCargoTransport(Abstractions _bd)
+ {
+ InitializeComponent();
+ bd = _bd;
+ }
+ private void loadData()
+ {
+ // Получаем список аренд
+ List rentals = bd.GetCargoTransports();
+
+ // Очищаем dataGridView перед заполнением новыми данными
+ dataGridView.Rows.Clear();
+
+ // Предварительно определяем столбцы, если это не было сделано ранее
+ if (dataGridView.ColumnCount == 0)
+ {
+ dataGridView.Columns.Add("Id", "ID");
+
+ dataGridView.Columns.Add("CargoId", "CargoId");
+ dataGridView.Columns["CargoId"].Visible = false;
+ dataGridView.Columns.Add("Cargo", "Cargo");
+
+ dataGridView.Columns.Add("TransportId", "TransportId");
+ dataGridView.Columns["TransportId"].Visible = false;
+ dataGridView.Columns.Add("Transport", "Transport");
+
+ }
+
+ comboBoxCargo.DataSource = bd.GetCargos()
+ .Select(x => new helpCombobox()
+ {
+ Text = x.Name + " " + x.Type,
+ Id = x.id
+ }).ToList();
+ comboBoxCargo.DisplayMember = "Text";
+ comboBoxCargo.ValueMember = "Id";
+
+ comboBoxTransport.DataSource = bd.GetTransports()
+ .Select(x => new helpCombobox()
+ {
+ Text = x.Type + " " + x.Number,
+ Id = x.id
+ }).ToList();
+ comboBoxTransport.DisplayMember = "Text";
+ comboBoxTransport.ValueMember = "Id";
+
+ // Заполняем dataGridView данными из списка аренд
+ foreach (CargoTransport CargoTransport in rentals)
+ {
+ dataGridView.Rows.Add(
+ CargoTransport.id,
+ CargoTransport.CargoId,
+ CargoTransport.TransportId,
+ bd.GetCargoById(CargoTransport.CargoId).Name + " " + bd.GetCargoById(CargoTransport.CargoId).Type,
+ bd.GetTransportById(CargoTransport.TransportId).Type + " " + bd.GetTransportById(CargoTransport.TransportId).Number
+ );
+ }
+
+ }
+
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ // Создаем новый объект CargoTransport и заполняем его данными из текстовых полей и комбо-боксов
+ CargoTransport newRental = new CargoTransport
+ {
+ CargoId = ((helpCombobox)comboBoxCargo.SelectedItem).Id,
+ TransportId = ((helpCombobox)comboBoxTransport.SelectedItem).Id
+ };
+
+ // Вызываем метод добавления новой аренды в базу данных
+ bd.AddCargoTransports(newRental);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+
+ private void buttonUpdate_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID редактируемой аренды из выбранной строки dataGridView
+ int rentalId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Создаем объект CargoTransport и заполняем его данными из текстовых полей и комбо-боксов
+ CargoTransport updatedRental = new CargoTransport
+ {
+ id = rentalId,
+ CargoId = ((helpCombobox)comboBoxCargo.SelectedItem).Id,
+ TransportId = ((helpCombobox)comboBoxTransport.SelectedItem).Id
+ };
+
+ // Вызываем метод обновления аренды в базе данных
+ bd.UpdateCargoTransports(updatedRental);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void buttonDelete_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID удаляемой аренды из выбранной строки dataGridView
+ int rentalId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Вызываем метод удаления аренды из базы данных
+ bd.DeleteCargoTransports(rentalId);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex >= 0)
+ {
+ DataGridViewRow row = dataGridView.Rows[e.RowIndex];
+
+ // Получаем значения для комбо-боксов из выбранной строки
+
+ int CargoId = Convert.ToInt32(row.Cells["CargoId"].Value);
+ string TransportId = Convert.ToString(row.Cells["TransportId"].Value);
+
+ comboBoxCargo.SelectedValue = CargoId;
+
+ comboBoxTransport.SelectedValue = TransportId;
+ }
+ }
+
+ private void FormRental_Load(object sender, EventArgs e)
+ {
+ loadData();
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormCargoTransport.resx b/Transportlog/Transportlog/FormCargoTransport.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Transportlog/Transportlog/FormCargoTransport.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/Transportlog/Transportlog/FormDriver.Designer.cs b/Transportlog/Transportlog/FormDriver.Designer.cs
new file mode 100644
index 0000000..6949936
--- /dev/null
+++ b/Transportlog/Transportlog/FormDriver.Designer.cs
@@ -0,0 +1,179 @@
+namespace Forms
+{
+ partial class FormDriver
+ {
+ ///
+ /// 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()
+ {
+ buttonDelete = new Button();
+ buttonUpdate = new Button();
+ buttonCreate = new Button();
+ textBoxCategory = new TextBox();
+ label3 = new Label();
+ label2 = new Label();
+ label1 = new Label();
+ dataGridView = new DataGridView();
+ textBoxName = new TextBox();
+ textBoxSurname = new TextBox();
+ ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // buttonDelete
+ //
+ buttonDelete.Location = new Point(786, 243);
+ buttonDelete.Margin = new Padding(3, 4, 3, 4);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(86, 31);
+ buttonDelete.TabIndex = 28;
+ buttonDelete.Text = "delete";
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += buttonDelete_Click;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.Location = new Point(786, 205);
+ buttonUpdate.Margin = new Padding(3, 4, 3, 4);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(86, 31);
+ buttonUpdate.TabIndex = 27;
+ buttonUpdate.Text = "update";
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += buttonUpdate_Click;
+ //
+ // buttonCreate
+ //
+ buttonCreate.Location = new Point(786, 166);
+ buttonCreate.Margin = new Padding(3, 4, 3, 4);
+ buttonCreate.Name = "buttonCreate";
+ buttonCreate.Size = new Size(86, 31);
+ buttonCreate.TabIndex = 26;
+ buttonCreate.Text = "create";
+ buttonCreate.UseVisualStyleBackColor = true;
+ buttonCreate.Click += buttonCreate_Click;
+ //
+ // textBoxCategory
+ //
+ textBoxCategory.Location = new Point(786, 92);
+ textBoxCategory.Margin = new Padding(3, 4, 3, 4);
+ textBoxCategory.Name = "textBoxCategory";
+ textBoxCategory.Size = new Size(114, 27);
+ textBoxCategory.TabIndex = 23;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(662, 96);
+ label3.Name = "label3";
+ label3.Size = new Size(69, 20);
+ label3.TabIndex = 18;
+ label3.Text = "Category";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(662, 57);
+ label2.Name = "label2";
+ label2.Size = new Size(67, 20);
+ label2.TabIndex = 17;
+ label2.Text = "Surname";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(662, 19);
+ label1.Name = "label1";
+ label1.Size = new Size(49, 20);
+ label1.TabIndex = 16;
+ label1.Text = "Name";
+ //
+ // dataGridView
+ //
+ dataGridView.AllowUserToAddRows = false;
+ dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridView.Location = new Point(15, 19);
+ dataGridView.Margin = new Padding(3, 4, 3, 4);
+ dataGridView.Name = "dataGridView";
+ dataGridView.RowHeadersWidth = 51;
+ dataGridView.RowTemplate.Height = 25;
+ dataGridView.Size = new Size(628, 568);
+ dataGridView.TabIndex = 15;
+ dataGridView.CellClick += dataGridView_CellClick;
+ //
+ // textBoxName
+ //
+ textBoxName.Location = new Point(786, 19);
+ textBoxName.Margin = new Padding(3, 4, 3, 4);
+ textBoxName.Name = "textBoxName";
+ textBoxName.Size = new Size(114, 27);
+ textBoxName.TabIndex = 29;
+ //
+ // textBoxSurname
+ //
+ textBoxSurname.Location = new Point(786, 54);
+ textBoxSurname.Margin = new Padding(3, 4, 3, 4);
+ textBoxSurname.Name = "textBoxSurname";
+ textBoxSurname.Size = new Size(114, 27);
+ textBoxSurname.TabIndex = 30;
+ //
+ // FormDriver
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(914, 600);
+ Controls.Add(textBoxSurname);
+ Controls.Add(textBoxName);
+ Controls.Add(buttonDelete);
+ Controls.Add(buttonUpdate);
+ Controls.Add(buttonCreate);
+ Controls.Add(textBoxCategory);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(dataGridView);
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormDriver";
+ Text = "FormTransport";
+ Load += FormTransport_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ private Button buttonCreate;
+ private TextBox textBoxCategory;
+ private TextBox textBoxName;
+ private Label label4;
+ private Label label3;
+ private Label label2;
+ private Label label1;
+ private DataGridView dataGridView;
+ private TextBox textBoxSurname;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormDriver.cs b/Transportlog/Transportlog/FormDriver.cs
new file mode 100644
index 0000000..93f08e6
--- /dev/null
+++ b/Transportlog/Transportlog/FormDriver.cs
@@ -0,0 +1,120 @@
+using database;
+using System.Data;
+using System.Windows.Forms;
+
+namespace Forms
+{
+ public partial class FormDriver : Form
+ {
+ private Abstractions bd;
+ public FormDriver(Abstractions _bd)
+ {
+ InitializeComponent();
+ bd = _bd;
+ }
+ private void loadData()
+ {
+ // Получаем список автомобилей
+ List drivers = bd.GetDrivers();
+
+ // Очищаем dataGridView перед заполнением новыми данными
+ dataGridView.Rows.Clear();
+
+ // Предварительно определяем столбцы, если это не было сделано ранее
+ if (dataGridView.ColumnCount == 0)
+ {
+ dataGridView.Columns.Add("id", "ID");
+ dataGridView.Columns.Add("Name", "Name");
+ dataGridView.Columns.Add("Surname", "Surname");
+ dataGridView.Columns.Add("Category", "Category");
+ }
+
+ // Заполняем dataGridView данными из списка автомобилей
+ foreach (Driver Driver in drivers)
+ {
+ dataGridView.Rows.Add(Driver.id,
+ Driver.Name, Driver.Surname, Driver.Category);
+ }
+
+ }
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ // Создаем новый объект Car и заполняем его данными из текстовых полей и комбо-боксов
+ Driver newDriver = new Driver
+ {
+ Name = textBoxName.Text,
+ Surname = textBoxSurname.Text,
+ Category = int.Parse(textBoxCategory.Text),
+ };
+
+ // Вызываем метод добавления нового автомобиля в базу данных
+ bd.AddDriver(newDriver);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+
+ private void buttonUpdate_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID редактируемого автомобиля из выбранной строки dataGridView
+ int driverId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Создаем объект Car и заполняем его данными из текстовых полей и комбо-боксов
+ Driver updatedDriver = new Driver
+ {
+ id = driverId,
+ Name = textBoxName.Text,
+ Surname = textBoxSurname.Text,
+ Category = int.Parse(textBoxCategory.Text),
+ };
+
+ // Вызываем метод обновления автомобиля в базе данных
+ bd.UpdateDriver(updatedDriver);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void buttonDelete_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID удаляемого автомобиля из выбранной строки dataGridView
+ int driverId = (int)dataGridView.Rows[rowIndex].Cells["id"].Value;
+
+ // Вызываем метод удаления автомобиля из базы данных
+ bd.DeleteDriver(driverId);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex >= 0)
+ {
+ DataGridViewRow row = dataGridView.Rows[e.RowIndex];
+
+ // Заполняем текстовые поля данными из выбранной строки
+ textBoxName.Text = row.Cells["Name"].Value.ToString();
+ textBoxSurname.Text = row.Cells["Surname"].Value.ToString();
+ textBoxCategory.Text = row.Cells["Category"].Value.ToString();
+ }
+ }
+
+ private void FormTransport_Load(object sender, EventArgs e)
+ {
+ loadData();
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormDriver.resx b/Transportlog/Transportlog/FormDriver.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Transportlog/Transportlog/FormDriver.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/Transportlog/Transportlog/FormMain.Designer.cs b/Transportlog/Transportlog/FormMain.Designer.cs
new file mode 100644
index 0000000..e1b50b2
--- /dev/null
+++ b/Transportlog/Transportlog/FormMain.Designer.cs
@@ -0,0 +1,176 @@
+namespace 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()
+ {
+ menuStrip1 = new MenuStrip();
+ tablesToolStripMenuItem = new ToolStripMenuItem();
+ cargoToolStripMenuItem = new ToolStripMenuItem();
+ transportToolStripMenuItem = new ToolStripMenuItem();
+ carModelToolStripMenuItem = new ToolStripMenuItem();
+ branchToolStripMenuItem = new ToolStripMenuItem();
+ clientToolStripMenuItem = new ToolStripMenuItem();
+ rentalToolStripMenuItem = new ToolStripMenuItem();
+ cargotransportToolStripMenuItem = new ToolStripMenuItem();
+ cargoordersToolStripMenuItem = new ToolStripMenuItem();
+ buttonTest = new Button();
+ textBoxTest = new TextBox();
+ menuStrip1.SuspendLayout();
+ SuspendLayout();
+ //
+ // menuStrip1
+ //
+ menuStrip1.ImageScalingSize = new Size(20, 20);
+ menuStrip1.Items.AddRange(new ToolStripItem[] { tablesToolStripMenuItem });
+ menuStrip1.Location = new Point(0, 0);
+ menuStrip1.Name = "menuStrip1";
+ menuStrip1.Padding = new Padding(7, 3, 0, 3);
+ menuStrip1.Size = new Size(497, 30);
+ menuStrip1.TabIndex = 0;
+ menuStrip1.Text = "menuStrip1";
+ //
+ // tablesToolStripMenuItem
+ //
+ tablesToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { cargoToolStripMenuItem, transportToolStripMenuItem, carModelToolStripMenuItem, branchToolStripMenuItem, clientToolStripMenuItem, rentalToolStripMenuItem, cargotransportToolStripMenuItem, cargoordersToolStripMenuItem });
+ tablesToolStripMenuItem.Name = "tablesToolStripMenuItem";
+ tablesToolStripMenuItem.Size = new Size(63, 24);
+ tablesToolStripMenuItem.Text = "tables";
+ //
+ // cargoToolStripMenuItem
+ //
+ cargoToolStripMenuItem.Name = "cargoToolStripMenuItem";
+ cargoToolStripMenuItem.Size = new Size(224, 26);
+ cargoToolStripMenuItem.Text = "cargo";
+ cargoToolStripMenuItem.Click += cargoToolStripMenuItem_Click;
+ //
+ // transportToolStripMenuItem
+ //
+ transportToolStripMenuItem.Name = "transportToolStripMenuItem";
+ transportToolStripMenuItem.Size = new Size(224, 26);
+ transportToolStripMenuItem.Text = "transport";
+ transportToolStripMenuItem.Click += transportToolStripMenuItem_Click;
+ //
+ // carModelToolStripMenuItem
+ //
+ carModelToolStripMenuItem.Name = "carModelToolStripMenuItem";
+ carModelToolStripMenuItem.Size = new Size(224, 26);
+ carModelToolStripMenuItem.Text = "warehouse";
+ carModelToolStripMenuItem.Click += warehouseToolStripMenuItem_Click;
+ //
+ // branchToolStripMenuItem
+ //
+ branchToolStripMenuItem.Name = "branchToolStripMenuItem";
+ branchToolStripMenuItem.Size = new Size(224, 26);
+ branchToolStripMenuItem.Text = "driver";
+ branchToolStripMenuItem.Click += driverToolStripMenuItem_Click;
+ //
+ // clientToolStripMenuItem
+ //
+ clientToolStripMenuItem.Name = "clientToolStripMenuItem";
+ clientToolStripMenuItem.Size = new Size(224, 26);
+ clientToolStripMenuItem.Text = "routes";
+ clientToolStripMenuItem.Click += routesToolStripMenuItem_Click;
+ //
+ // rentalToolStripMenuItem
+ //
+ rentalToolStripMenuItem.Name = "rentalToolStripMenuItem";
+ rentalToolStripMenuItem.Size = new Size(224, 26);
+ rentalToolStripMenuItem.Text = "orders";
+ rentalToolStripMenuItem.Click += ordersToolStripMenuItem_Click;
+ //
+ // cargotransportToolStripMenuItem
+ //
+ cargotransportToolStripMenuItem.Name = "cargotransportToolStripMenuItem";
+ cargotransportToolStripMenuItem.Size = new Size(224, 26);
+ cargotransportToolStripMenuItem.Text = "cargo_transport";
+ cargotransportToolStripMenuItem.Click += cargo_transportToolStripMenuItem_Click;
+ //
+ // cargoordersToolStripMenuItem
+ //
+ cargoordersToolStripMenuItem.Name = "cargoordersToolStripMenuItem";
+ cargoordersToolStripMenuItem.Size = new Size(224, 26);
+ cargoordersToolStripMenuItem.Text = "cargo_orders";
+ cargoordersToolStripMenuItem.Click += cargo_ordersToolStripMenuItem_Click;
+ //
+ // buttonTest
+ //
+ buttonTest.BackColor = SystemColors.Highlight;
+ buttonTest.Font = new Font("Showcard Gothic", 19.8000011F, FontStyle.Regular, GraphicsUnit.Point);
+ buttonTest.ForeColor = SystemColors.ActiveCaption;
+ buttonTest.Location = new Point(151, 96);
+ buttonTest.Margin = new Padding(3, 4, 3, 4);
+ buttonTest.Name = "buttonTest";
+ buttonTest.Size = new Size(204, 114);
+ buttonTest.TabIndex = 1;
+ buttonTest.Text = "Тест";
+ buttonTest.UseVisualStyleBackColor = false;
+ buttonTest.Click += buttonTest_Click;
+ //
+ // textBoxTest
+ //
+ textBoxTest.Location = new Point(111, 36);
+ textBoxTest.Margin = new Padding(3, 4, 3, 4);
+ textBoxTest.Multiline = true;
+ textBoxTest.Name = "textBoxTest";
+ textBoxTest.Size = new Size(286, 52);
+ textBoxTest.TabIndex = 2;
+ //
+ // FormMain
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(497, 223);
+ Controls.Add(textBoxTest);
+ Controls.Add(buttonTest);
+ Controls.Add(menuStrip1);
+ MainMenuStrip = menuStrip1;
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormMain";
+ Text = "FormMain";
+ menuStrip1.ResumeLayout(false);
+ menuStrip1.PerformLayout();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private MenuStrip menuStrip1;
+ private ToolStripMenuItem tablesToolStripMenuItem;
+ private ToolStripMenuItem carModelToolStripMenuItem;
+ private ToolStripMenuItem cargoToolStripMenuItem;
+ private ToolStripMenuItem branchToolStripMenuItem;
+ private ToolStripMenuItem clientToolStripMenuItem;
+ private ToolStripMenuItem rentalToolStripMenuItem;
+ private Button buttonTest;
+ private TextBox textBoxTest;
+ private ToolStripMenuItem transportToolStripMenuItem;
+ private ToolStripMenuItem cargotransportToolStripMenuItem;
+ private ToolStripMenuItem cargoordersToolStripMenuItem;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormMain.cs b/Transportlog/Transportlog/FormMain.cs
new file mode 100644
index 0000000..d51e403
--- /dev/null
+++ b/Transportlog/Transportlog/FormMain.cs
@@ -0,0 +1,101 @@
+using database;
+
+namespace Forms
+{
+ public partial class FormMain : Form
+ {
+
+ public FormMain()
+ {
+ InitializeComponent();
+ }
+
+ private void cargoToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormCargo));
+ if (service is FormCargo form)
+ {
+ form.ShowDialog();
+ }
+ }
+
+ private void transportToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormTransport));
+ if (service is FormTransport form)
+ {
+ form.ShowDialog();
+ }
+ }
+
+ private void warehouseToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormWarehouse));
+ if (service is FormWarehouse form)
+ {
+ form.ShowDialog();
+ }
+ }
+
+ private void driverToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormDriver));
+ if (service is FormDriver form)
+ {
+ form.ShowDialog();
+ }
+ }
+
+ private void routesToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormRoutes));
+ if (service is FormRoutes form)
+ {
+ form.ShowDialog();
+ }
+ }
+
+ private void ordersToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormOrders));
+ if (service is FormOrders form)
+ {
+ form.ShowDialog();
+ }
+ }
+
+ private void cargo_transportToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormCargoTransport));
+ if (service is FormCargoTransport form)
+ {
+ form.ShowDialog();
+ }
+ }
+
+ private void cargo_ordersToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(FormCargoOrders));
+ if (service is FormCargoOrders form)
+ {
+ form.ShowDialog();
+ }
+ }
+
+
+ private void buttonTest_Click(object sender, EventArgs e)
+ {
+ var service = Program.ServiceProvider?.GetService(typeof(Abstractions));
+ if (service is Abstractions bd)
+ {
+ var cars = bd.GetCargos();
+ int id = cars.Last().id;
+ DateTime startTime = DateTime.Now;
+ bd.DeleteCargo(id);
+ DateTime endTime = DateTime.Now;
+
+ textBoxTest.Text = $"Время выполнения запроса: {(endTime - startTime).TotalMilliseconds} миллисекунд";
+ }
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormMain.resx b/Transportlog/Transportlog/FormMain.resx
new file mode 100644
index 0000000..a0623c8
--- /dev/null
+++ b/Transportlog/Transportlog/FormMain.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormOrders.Designer.cs b/Transportlog/Transportlog/FormOrders.Designer.cs
new file mode 100644
index 0000000..9592272
--- /dev/null
+++ b/Transportlog/Transportlog/FormOrders.Designer.cs
@@ -0,0 +1,181 @@
+namespace Forms
+{
+ partial class FormOrders
+ {
+ ///
+ /// 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()
+ {
+ buttonDelete = new Button();
+ buttonUpdate = new Button();
+ buttonCreate = new Button();
+ this.comboBoxRoutes = new ComboBox();
+ this.textBoxStatus = new TextBox();
+ textBoxOrderDate = new TextBox();
+ label4 = new Label();
+ label3 = new Label();
+ label1 = new Label();
+ dataGridView = new DataGridView();
+ ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // buttonDelete
+ //
+ buttonDelete.Location = new Point(1152, 303);
+ buttonDelete.Margin = new Padding(3, 4, 3, 4);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(86, 31);
+ buttonDelete.TabIndex = 28;
+ buttonDelete.Text = "delete";
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += buttonDelete_Click;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.Location = new Point(1152, 265);
+ buttonUpdate.Margin = new Padding(3, 4, 3, 4);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(86, 31);
+ buttonUpdate.TabIndex = 27;
+ buttonUpdate.Text = "update";
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += buttonUpdate_Click;
+ //
+ // buttonCreate
+ //
+ buttonCreate.Location = new Point(1152, 226);
+ buttonCreate.Margin = new Padding(3, 4, 3, 4);
+ buttonCreate.Name = "buttonCreate";
+ buttonCreate.Size = new Size(86, 31);
+ buttonCreate.TabIndex = 26;
+ buttonCreate.Text = "create";
+ buttonCreate.UseVisualStyleBackColor = true;
+ buttonCreate.Click += buttonCreate_Click;
+ //
+ // comboBoxRoutes
+ //
+ this.comboBoxRoutes.FormattingEnabled = true;
+ this.comboBoxRoutes.Location = new Point(930, 16);
+ this.comboBoxRoutes.Margin = new Padding(3, 4, 3, 4);
+ this.comboBoxRoutes.Name = "comboBoxRoutes";
+ this.comboBoxRoutes.Size = new Size(308, 28);
+ this.comboBoxRoutes.TabIndex = 25;
+ //
+ // textBoxStatus
+ //
+ this.textBoxStatus.Location = new Point(930, 52);
+ this.textBoxStatus.Margin = new Padding(3, 4, 3, 4);
+ this.textBoxStatus.Name = "textBoxStatus";
+ this.textBoxStatus.Size = new Size(308, 27);
+ this.textBoxStatus.TabIndex = 23;
+ //
+ // textBoxOrderDate
+ //
+ textBoxOrderDate.Location = new Point(930, 91);
+ textBoxOrderDate.Margin = new Padding(3, 4, 3, 4);
+ textBoxOrderDate.Name = "textBoxOrderDate";
+ textBoxOrderDate.Size = new Size(308, 27);
+ textBoxOrderDate.TabIndex = 21;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(785, 98);
+ label4.Name = "label4";
+ label4.Size = new Size(83, 20);
+ label4.TabIndex = 19;
+ label4.Text = "Order Date";
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(785, 59);
+ label3.Name = "label3";
+ label3.Size = new Size(49, 20);
+ label3.TabIndex = 18;
+ label3.Text = "Status";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(785, 24);
+ label1.Name = "label1";
+ label1.Size = new Size(54, 20);
+ label1.TabIndex = 16;
+ label1.Text = "Routes";
+ //
+ // dataGridView
+ //
+ dataGridView.AllowUserToAddRows = false;
+ dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridView.Location = new Point(15, 19);
+ dataGridView.Margin = new Padding(3, 4, 3, 4);
+ dataGridView.Name = "dataGridView";
+ dataGridView.RowHeadersWidth = 51;
+ dataGridView.RowTemplate.Height = 25;
+ dataGridView.Size = new Size(689, 568);
+ dataGridView.TabIndex = 15;
+ dataGridView.CellClick += dataGridView_CellClick;
+ //
+ // FormOrders
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1250, 600);
+ Controls.Add(buttonDelete);
+ Controls.Add(buttonUpdate);
+ Controls.Add(buttonCreate);
+ Controls.Add(this.comboBoxRoutes);
+ Controls.Add(this.textBoxStatus);
+ Controls.Add(textBoxOrderDate);
+ Controls.Add(label4);
+ Controls.Add(label3);
+ Controls.Add(label1);
+ Controls.Add(dataGridView);
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormOrders";
+ Text = "FormRental";
+ Load += FormRental_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ private Button buttonCreate;
+ private ComboBox comboBoxRoutes;
+ private TextBox textBoxOrderDate;
+ private TextBox textBoxStatus;
+ private Label label5;
+ private Label label4;
+ private Label label3;
+ private Label label2;
+ private Label label1;
+ private DataGridView dataGridView;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormOrders.cs b/Transportlog/Transportlog/FormOrders.cs
new file mode 100644
index 0000000..a8c5749
--- /dev/null
+++ b/Transportlog/Transportlog/FormOrders.cs
@@ -0,0 +1,141 @@
+using database;
+using System.Data;
+
+namespace Forms
+{
+ public partial class FormOrders : Form
+ {
+ private Abstractions bd;
+ public FormOrders(Abstractions _bd)
+ {
+ InitializeComponent();
+ bd = _bd;
+ }
+ private void loadData()
+ {
+ // Получаем список аренд
+ List rentals = bd.GetOrders();
+
+ // Очищаем dataGridView перед заполнением новыми данными
+ dataGridView.Rows.Clear();
+
+ // Предварительно определяем столбцы, если это не было сделано ранее
+ if (dataGridView.ColumnCount == 0)
+ {
+ dataGridView.Columns.Add("Id", "ID");
+ dataGridView.Columns.Add("Status", "Status");
+ dataGridView.Columns.Add("OrderDate", "Order Date");
+
+ dataGridView.Columns.Add("RoutesId", "RoutesId");
+ dataGridView.Columns["RoutesId"].Visible = false;
+ dataGridView.Columns.Add("Routes", "Routes");
+
+ }
+
+ comboBoxRoutes.DataSource = bd.GetRoutes()
+ .Select(x => new helpCombobox()
+ {
+ Text = x.EndPoint,
+ Id = x.id
+ }).ToList();
+ comboBoxRoutes.DisplayMember = "Text";
+ comboBoxRoutes.ValueMember = "Id";
+
+ // Заполняем dataGridView данными из списка аренд
+ foreach (Orders Orders in rentals)
+ {
+ dataGridView.Rows.Add(
+ Orders.id,
+ Orders.Status,
+ Orders.OrderDate.ToString().Split(" ")[0],
+ Orders.RoutesId,
+ bd.GetRoutesById(Orders.RoutesId).EndPoint
+ );
+ }
+
+ }
+
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ // Создаем новый объект Routes и заполняем его данными из текстовых полей и комбо-боксов
+ Orders newRental = new Orders
+ {
+ Status = textBoxStatus.Text,
+ OrderDate = DateTime.Parse(textBoxOrderDate.Text + " 00:00:00"),
+ RoutesId = ((helpCombobox)comboBoxRoutes.SelectedItem).Id
+ };
+
+ // Вызываем метод добавления новой аренды в базу данных
+ bd.AddOrders(newRental);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+
+ private void buttonUpdate_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID редактируемой аренды из выбранной строки dataGridView
+ int rentalId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Создаем объект Routes и заполняем его данными из текстовых полей и комбо-боксов
+ Orders updatedRental = new Orders
+ {
+ id = rentalId,
+ Status = textBoxStatus.Text,
+ OrderDate = DateTime.Parse(textBoxOrderDate.Text + " 00:00:00"),
+ RoutesId = ((helpCombobox)comboBoxRoutes.SelectedItem).Id
+ };
+
+ // Вызываем метод обновления аренды в базе данных
+ bd.UpdateOrders(updatedRental);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void buttonDelete_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID удаляемой аренды из выбранной строки dataGridView
+ int rentalId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Вызываем метод удаления аренды из базы данных
+ bd.DeleteOrders(rentalId);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex >= 0)
+ {
+ DataGridViewRow row = dataGridView.Rows[e.RowIndex];
+
+ // Заполняем текстовые поля данными из выбранной строки
+ textBoxStatus.Text = row.Cells["Status"].Value.ToString();
+ textBoxOrderDate.Text = row.Cells["OrderDate"].Value.ToString().Split(" ")[0];
+
+ string routesId = Convert.ToString(row.Cells["RoutesId"].Value);
+
+ comboBoxRoutes.SelectedValue = routesId;
+ }
+ }
+
+ private void FormRental_Load(object sender, EventArgs e)
+ {
+ loadData();
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormOrders.resx b/Transportlog/Transportlog/FormOrders.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Transportlog/Transportlog/FormOrders.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/Transportlog/Transportlog/FormRoutes.Designer.cs b/Transportlog/Transportlog/FormRoutes.Designer.cs
new file mode 100644
index 0000000..68385c3
--- /dev/null
+++ b/Transportlog/Transportlog/FormRoutes.Designer.cs
@@ -0,0 +1,226 @@
+namespace 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()
+ {
+ buttonDelete = new Button();
+ buttonUpdate = new Button();
+ buttonCreate = new Button();
+ comboBoxWarehouse = new ComboBox();
+ textBoxDepartureTime = new TextBox();
+ textBoxEndPoint = new TextBox();
+ textBoxArrivalTime = new TextBox();
+ label5 = new Label();
+ label4 = new Label();
+ label3 = new Label();
+ label2 = new Label();
+ label1 = new Label();
+ dataGridView = new DataGridView();
+ comboBoxDriver = new ComboBox();
+ ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // buttonDelete
+ //
+ buttonDelete.Location = new Point(1152, 303);
+ buttonDelete.Margin = new Padding(3, 4, 3, 4);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(86, 31);
+ buttonDelete.TabIndex = 28;
+ buttonDelete.Text = "delete";
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += buttonDelete_Click;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.Location = new Point(1152, 265);
+ buttonUpdate.Margin = new Padding(3, 4, 3, 4);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(86, 31);
+ buttonUpdate.TabIndex = 27;
+ buttonUpdate.Text = "update";
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += buttonUpdate_Click;
+ //
+ // buttonCreate
+ //
+ buttonCreate.Location = new Point(1152, 226);
+ buttonCreate.Margin = new Padding(3, 4, 3, 4);
+ buttonCreate.Name = "buttonCreate";
+ buttonCreate.Size = new Size(86, 31);
+ buttonCreate.TabIndex = 26;
+ buttonCreate.Text = "create";
+ buttonCreate.UseVisualStyleBackColor = true;
+ buttonCreate.Click += buttonCreate_Click;
+ //
+ // comboBoxWarehouse
+ //
+ comboBoxWarehouse.FormattingEnabled = true;
+ comboBoxWarehouse.Location = new Point(930, 16);
+ comboBoxWarehouse.Margin = new Padding(3, 4, 3, 4);
+ comboBoxWarehouse.Name = "comboBoxWarehouse";
+ comboBoxWarehouse.Size = new Size(308, 28);
+ comboBoxWarehouse.TabIndex = 25;
+ //
+ // textBoxDepartureTime
+ //
+ textBoxDepartureTime.Location = new Point(930, 170);
+ textBoxDepartureTime.Margin = new Padding(3, 4, 3, 4);
+ textBoxDepartureTime.Name = "textBoxDepartureTime";
+ textBoxDepartureTime.Size = new Size(308, 27);
+ textBoxDepartureTime.TabIndex = 24;
+ //
+ // textBoxEndPoint
+ //
+ textBoxEndPoint.Location = new Point(930, 93);
+ textBoxEndPoint.Margin = new Padding(3, 4, 3, 4);
+ textBoxEndPoint.Name = "textBoxEndPoint";
+ textBoxEndPoint.Size = new Size(308, 27);
+ textBoxEndPoint.TabIndex = 23;
+ //
+ // textBoxArrivalTime
+ //
+ textBoxArrivalTime.Location = new Point(930, 132);
+ textBoxArrivalTime.Margin = new Padding(3, 4, 3, 4);
+ textBoxArrivalTime.Name = "textBoxArrivalTime";
+ textBoxArrivalTime.Size = new Size(308, 27);
+ textBoxArrivalTime.TabIndex = 21;
+ //
+ // label5
+ //
+ label5.AutoSize = true;
+ label5.Location = new Point(785, 177);
+ label5.Name = "label5";
+ label5.Size = new Size(110, 20);
+ label5.TabIndex = 20;
+ label5.Text = "Departure time";
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(785, 139);
+ label4.Name = "label4";
+ label4.Size = new Size(86, 20);
+ label4.TabIndex = 19;
+ label4.Text = "Arrival time";
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(785, 100);
+ label3.Name = "label3";
+ label3.Size = new Size(73, 20);
+ label3.TabIndex = 18;
+ label3.Text = "End point";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(785, 61);
+ label2.Name = "label2";
+ label2.Size = new Size(49, 20);
+ label2.TabIndex = 17;
+ label2.Text = "Driver";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(785, 23);
+ label1.Name = "label1";
+ label1.Size = new Size(82, 20);
+ label1.TabIndex = 16;
+ label1.Text = "Warehouse";
+ //
+ // dataGridView
+ //
+ dataGridView.AllowUserToAddRows = false;
+ dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridView.Location = new Point(15, 19);
+ dataGridView.Margin = new Padding(3, 4, 3, 4);
+ dataGridView.Name = "dataGridView";
+ dataGridView.RowHeadersWidth = 51;
+ dataGridView.RowTemplate.Height = 25;
+ dataGridView.Size = new Size(689, 568);
+ dataGridView.TabIndex = 15;
+ dataGridView.CellClick += dataGridView_CellClick;
+ //
+ // comboBoxDriver
+ //
+ comboBoxDriver.FormattingEnabled = true;
+ comboBoxDriver.Location = new Point(930, 54);
+ comboBoxDriver.Margin = new Padding(3, 4, 3, 4);
+ comboBoxDriver.Name = "comboBoxDriver";
+ comboBoxDriver.Size = new Size(308, 28);
+ comboBoxDriver.TabIndex = 29;
+ //
+ // FormRoutes
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(1250, 600);
+ Controls.Add(comboBoxDriver);
+ Controls.Add(buttonDelete);
+ Controls.Add(buttonUpdate);
+ Controls.Add(buttonCreate);
+ Controls.Add(comboBoxWarehouse);
+ Controls.Add(textBoxDepartureTime);
+ Controls.Add(textBoxEndPoint);
+ Controls.Add(textBoxArrivalTime);
+ Controls.Add(label5);
+ Controls.Add(label4);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(dataGridView);
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormRoutes";
+ Text = "FormRental";
+ Load += FormRental_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ private Button buttonCreate;
+ private ComboBox comboBoxWarehouse;
+ private TextBox textBoxDepartureTime;
+ private TextBox textBoxEndPoint;
+ private TextBox textBoxArrivalTime;
+ private Label label5;
+ private Label label4;
+ private Label label3;
+ private Label label2;
+ private Label label1;
+ private DataGridView dataGridView;
+ private ComboBox comboBoxDriver;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormRoutes.cs b/Transportlog/Transportlog/FormRoutes.cs
new file mode 100644
index 0000000..e9ca829
--- /dev/null
+++ b/Transportlog/Transportlog/FormRoutes.cs
@@ -0,0 +1,168 @@
+using database;
+using System.Data;
+
+namespace Forms
+{
+ public partial class FormRoutes : Form
+ {
+ private Abstractions bd;
+ public FormRoutes(Abstractions _bd)
+ {
+ InitializeComponent();
+ bd = _bd;
+ }
+ private void loadData()
+ {
+ // Получаем список аренд
+ List rentals = bd.GetRoutes();
+
+ // Очищаем dataGridView перед заполнением новыми данными
+ dataGridView.Rows.Clear();
+
+ // Предварительно определяем столбцы, если это не было сделано ранее
+ if (dataGridView.ColumnCount == 0)
+ {
+ dataGridView.Columns.Add("Id", "ID");
+ dataGridView.Columns.Add("EndPoint", "End Point");
+ dataGridView.Columns.Add("ArrivalTime", "Arrival Time");
+ dataGridView.Columns.Add("DepartureTime", "Departure Time");
+
+ dataGridView.Columns.Add("WarehouseId", "WarehouseId");
+ dataGridView.Columns["WarehouseId"].Visible = false;
+ dataGridView.Columns.Add("Warehouse", "Warehouse");
+
+ dataGridView.Columns.Add("DriverId", "DriverId");
+ dataGridView.Columns["DriverId"].Visible = false;
+ dataGridView.Columns.Add("Driver", "Driver");
+
+ }
+
+ comboBoxDriver.DataSource = bd.GetDrivers()
+ .Select(x => new helpCombobox()
+ {
+ Text = x.Name + " " + x.Surname,
+ Id = x.id
+ }).ToList();
+ comboBoxDriver.DisplayMember = "Text";
+ comboBoxDriver.ValueMember = "Id";
+
+ comboBoxWarehouse.DataSource = bd.GetWarehouses()
+ .Select(x => new helpCombobox()
+ {
+ Text = x.Name + " " + x.Address,
+ Id = x.id
+ }).ToList();
+ comboBoxWarehouse.DisplayMember = "Text";
+ comboBoxWarehouse.ValueMember = "Id";
+
+ // Заполняем dataGridView данными из списка аренд
+ foreach (Routes Routes in rentals)
+ {
+ dataGridView.Rows.Add(
+ Routes.id,
+ Routes.EndPoint,
+ Routes.ArrivalTime.ToString().Split(" ")[0],
+ Routes.DepartureTime.ToString().Split(" ")[0],
+ Routes.WarehouseId,
+ Routes.DriverId,
+ bd.GetWarehouseById(Routes.WarehouseId).Name + " " + bd.GetWarehouseById(Routes.WarehouseId).Address,
+ bd.GetDriverById(Routes.DriverId).Name + " " + bd.GetDriverById(Routes.DriverId).Surname
+ );
+ }
+
+ }
+
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ // Создаем новый объект Routes и заполняем его данными из текстовых полей и комбо-боксов
+ Routes newRental = new Routes
+ {
+ EndPoint = textBoxEndPoint.Text,
+ ArrivalTime = DateTime.Parse(textBoxArrivalTime.Text + " 00:00:00"),
+ DepartureTime = DateTime.Parse(textBoxDepartureTime.Text + " 00:00:00"),
+ WarehouseId = ((helpCombobox)comboBoxWarehouse.SelectedItem).Id,
+ DriverId = ((helpCombobox)comboBoxDriver.SelectedItem).Id
+ };
+
+ // Вызываем метод добавления новой аренды в базу данных
+ bd.AddRoutes(newRental);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+
+ private void buttonUpdate_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID редактируемой аренды из выбранной строки dataGridView
+ int rentalId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Создаем объект Routes и заполняем его данными из текстовых полей и комбо-боксов
+ Routes updatedRental = new Routes
+ {
+ id = rentalId,
+ EndPoint = textBoxEndPoint.Text,
+ ArrivalTime = DateTime.Parse(textBoxArrivalTime.Text + " 00:00:00"),
+ DepartureTime = DateTime.Parse(textBoxDepartureTime.Text + " 00:00:00"),
+ WarehouseId = ((helpCombobox)comboBoxWarehouse.SelectedItem).Id,
+ DriverId = ((helpCombobox)comboBoxDriver.SelectedItem).Id
+ };
+
+ // Вызываем метод обновления аренды в базе данных
+ bd.UpdateRoutes(updatedRental);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void buttonDelete_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID удаляемой аренды из выбранной строки dataGridView
+ int rentalId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Вызываем метод удаления аренды из базы данных
+ bd.DeleteRoutes(rentalId);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex >= 0)
+ {
+ DataGridViewRow row = dataGridView.Rows[e.RowIndex];
+
+ // Заполняем текстовые поля данными из выбранной строки
+ textBoxEndPoint.Text = row.Cells["EndPoint"].Value.ToString();
+ textBoxArrivalTime.Text = row.Cells["ArrivalTime"].Value.ToString().Split(" ")[0];
+ textBoxDepartureTime.Text = row.Cells["DepartureTime"].Value.ToString().Split(" ")[0];
+
+ // Получаем значения для комбо-боксов из выбранной строки
+
+ int warehouseId = Convert.ToInt32(row.Cells["WarehouseId"].Value);
+ string driverId = Convert.ToString(row.Cells["DriverId"].Value);
+
+ comboBoxWarehouse.SelectedValue = warehouseId;
+
+ comboBoxDriver.SelectedValue = driverId;
+ }
+ }
+
+ private void FormRental_Load(object sender, EventArgs e)
+ {
+ loadData();
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormRoutes.resx b/Transportlog/Transportlog/FormRoutes.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Transportlog/Transportlog/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/Transportlog/Transportlog/FormTransport.Designer.cs b/Transportlog/Transportlog/FormTransport.Designer.cs
new file mode 100644
index 0000000..9708846
--- /dev/null
+++ b/Transportlog/Transportlog/FormTransport.Designer.cs
@@ -0,0 +1,179 @@
+namespace Forms
+{
+ partial class FormTransport
+ {
+ ///
+ /// 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()
+ {
+ buttonDelete = new Button();
+ buttonUpdate = new Button();
+ buttonCreate = new Button();
+ textBoxNumber = new TextBox();
+ label3 = new Label();
+ label2 = new Label();
+ label1 = new Label();
+ dataGridView = new DataGridView();
+ textBoxType = new TextBox();
+ textBoxPayload = new TextBox();
+ ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // buttonDelete
+ //
+ buttonDelete.Location = new Point(786, 243);
+ buttonDelete.Margin = new Padding(3, 4, 3, 4);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(86, 31);
+ buttonDelete.TabIndex = 28;
+ buttonDelete.Text = "delete";
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += buttonDelete_Click;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.Location = new Point(786, 205);
+ buttonUpdate.Margin = new Padding(3, 4, 3, 4);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(86, 31);
+ buttonUpdate.TabIndex = 27;
+ buttonUpdate.Text = "update";
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += buttonUpdate_Click;
+ //
+ // buttonCreate
+ //
+ buttonCreate.Location = new Point(786, 166);
+ buttonCreate.Margin = new Padding(3, 4, 3, 4);
+ buttonCreate.Name = "buttonCreate";
+ buttonCreate.Size = new Size(86, 31);
+ buttonCreate.TabIndex = 26;
+ buttonCreate.Text = "create";
+ buttonCreate.UseVisualStyleBackColor = true;
+ buttonCreate.Click += buttonCreate_Click;
+ //
+ // textBoxNumber
+ //
+ textBoxNumber.Location = new Point(786, 92);
+ textBoxNumber.Margin = new Padding(3, 4, 3, 4);
+ textBoxNumber.Name = "textBoxNumber";
+ textBoxNumber.Size = new Size(114, 27);
+ textBoxNumber.TabIndex = 23;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(662, 96);
+ label3.Name = "label3";
+ label3.Size = new Size(63, 20);
+ label3.TabIndex = 18;
+ label3.Text = "Number";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(662, 57);
+ label2.Name = "label2";
+ label2.Size = new Size(122, 20);
+ label2.TabIndex = 17;
+ label2.Text = "Payload_capacity";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(662, 19);
+ label1.Name = "label1";
+ label1.Size = new Size(40, 20);
+ label1.TabIndex = 16;
+ label1.Text = "Type";
+ //
+ // dataGridView
+ //
+ dataGridView.AllowUserToAddRows = false;
+ dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridView.Location = new Point(15, 19);
+ dataGridView.Margin = new Padding(3, 4, 3, 4);
+ dataGridView.Name = "dataGridView";
+ dataGridView.RowHeadersWidth = 51;
+ dataGridView.RowTemplate.Height = 25;
+ dataGridView.Size = new Size(628, 568);
+ dataGridView.TabIndex = 15;
+ dataGridView.CellClick += dataGridView_CellClick;
+ //
+ // textBoxType
+ //
+ textBoxType.Location = new Point(786, 19);
+ textBoxType.Margin = new Padding(3, 4, 3, 4);
+ textBoxType.Name = "textBoxType";
+ textBoxType.Size = new Size(114, 27);
+ textBoxType.TabIndex = 29;
+ //
+ // textBoxPayload
+ //
+ textBoxPayload.Location = new Point(786, 54);
+ textBoxPayload.Margin = new Padding(3, 4, 3, 4);
+ textBoxPayload.Name = "textBoxPayload";
+ textBoxPayload.Size = new Size(114, 27);
+ textBoxPayload.TabIndex = 30;
+ //
+ // FormTransport
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(914, 600);
+ Controls.Add(textBoxPayload);
+ Controls.Add(textBoxType);
+ Controls.Add(buttonDelete);
+ Controls.Add(buttonUpdate);
+ Controls.Add(buttonCreate);
+ Controls.Add(textBoxNumber);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(dataGridView);
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormTransport";
+ Text = "FormTransport";
+ Load += FormTransport_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ private Button buttonCreate;
+ private TextBox textBoxNumber;
+ private TextBox textBoxType;
+ private Label label4;
+ private Label label3;
+ private Label label2;
+ private Label label1;
+ private DataGridView dataGridView;
+ private TextBox textBoxPayload;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormTransport.cs b/Transportlog/Transportlog/FormTransport.cs
new file mode 100644
index 0000000..132fc4f
--- /dev/null
+++ b/Transportlog/Transportlog/FormTransport.cs
@@ -0,0 +1,119 @@
+using database;
+using System.Data;
+
+namespace Forms
+{
+ public partial class FormTransport : Form
+ {
+ private Abstractions bd;
+ public FormTransport(Abstractions _bd)
+ {
+ InitializeComponent();
+ bd = _bd;
+ }
+ private void loadData()
+ {
+ // Получаем список автомобилей
+ List transports = bd.GetTransports();
+
+ // Очищаем dataGridView перед заполнением новыми данными
+ dataGridView.Rows.Clear();
+
+ // Предварительно определяем столбцы, если это не было сделано ранее
+ if (dataGridView.ColumnCount == 0)
+ {
+ dataGridView.Columns.Add("id", "ID");
+ dataGridView.Columns.Add("Type", "Type");
+ dataGridView.Columns.Add("PayloadCapacity", "PayloadCapacity");
+ dataGridView.Columns.Add("Number", "Number");
+ }
+
+ // Заполняем dataGridView данными из списка автомобилей
+ foreach (Transport Transport in transports)
+ {
+ dataGridView.Rows.Add(Transport.id,
+ Transport.Type, Transport.PayloadCapacity, Transport.Number);
+ }
+
+ }
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ // Создаем новый объект Car и заполняем его данными из текстовых полей и комбо-боксов
+ Transport newTransport = new Transport
+ {
+ Type = textBoxType.Text,
+ PayloadCapacity = decimal.Parse(textBoxPayload.Text),
+ Number = textBoxNumber.Text,
+ };
+
+ // Вызываем метод добавления нового автомобиля в базу данных
+ bd.AddTransport(newTransport);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+
+ private void buttonUpdate_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID редактируемого автомобиля из выбранной строки dataGridView
+ int cargoId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Создаем объект Car и заполняем его данными из текстовых полей и комбо-боксов
+ Transport updatedTransport = new Transport
+ {
+ id = cargoId,
+ Type = textBoxType.Text,
+ PayloadCapacity = decimal.Parse(textBoxPayload.Text),
+ Number = textBoxNumber.Text,
+ };
+
+ // Вызываем метод обновления автомобиля в базе данных
+ bd.UpdateTransport(updatedTransport);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void buttonDelete_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID удаляемого автомобиля из выбранной строки dataGridView
+ int transportId = (int)dataGridView.Rows[rowIndex].Cells["id"].Value;
+
+ // Вызываем метод удаления автомобиля из базы данных
+ bd.DeleteTransport(transportId);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex >= 0)
+ {
+ DataGridViewRow row = dataGridView.Rows[e.RowIndex];
+
+ // Заполняем текстовые поля данными из выбранной строки
+ textBoxType.Text = row.Cells["Type"].Value.ToString();
+ textBoxPayload.Text = row.Cells["PayloadCapacity"].Value.ToString();
+ textBoxNumber.Text = row.Cells["Number"].Value.ToString();
+ }
+ }
+
+ private void FormTransport_Load(object sender, EventArgs e)
+ {
+ loadData();
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormTransport.resx b/Transportlog/Transportlog/FormTransport.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Transportlog/Transportlog/FormTransport.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/Transportlog/Transportlog/FormWarehouse.Designer.cs b/Transportlog/Transportlog/FormWarehouse.Designer.cs
new file mode 100644
index 0000000..a12ba4c
--- /dev/null
+++ b/Transportlog/Transportlog/FormWarehouse.Designer.cs
@@ -0,0 +1,179 @@
+namespace Forms
+{
+ partial class FormWarehouse
+ {
+ ///
+ /// 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()
+ {
+ buttonDelete = new Button();
+ buttonUpdate = new Button();
+ buttonCreate = new Button();
+ textBoxCapacity = new TextBox();
+ label3 = new Label();
+ label2 = new Label();
+ label1 = new Label();
+ dataGridView = new DataGridView();
+ textBoxName = new TextBox();
+ textBoxAddress = new TextBox();
+ ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
+ SuspendLayout();
+ //
+ // buttonDelete
+ //
+ buttonDelete.Location = new Point(786, 243);
+ buttonDelete.Margin = new Padding(3, 4, 3, 4);
+ buttonDelete.Name = "buttonDelete";
+ buttonDelete.Size = new Size(86, 31);
+ buttonDelete.TabIndex = 28;
+ buttonDelete.Text = "delete";
+ buttonDelete.UseVisualStyleBackColor = true;
+ buttonDelete.Click += buttonDelete_Click;
+ //
+ // buttonUpdate
+ //
+ buttonUpdate.Location = new Point(786, 205);
+ buttonUpdate.Margin = new Padding(3, 4, 3, 4);
+ buttonUpdate.Name = "buttonUpdate";
+ buttonUpdate.Size = new Size(86, 31);
+ buttonUpdate.TabIndex = 27;
+ buttonUpdate.Text = "update";
+ buttonUpdate.UseVisualStyleBackColor = true;
+ buttonUpdate.Click += buttonUpdate_Click;
+ //
+ // buttonCreate
+ //
+ buttonCreate.Location = new Point(786, 166);
+ buttonCreate.Margin = new Padding(3, 4, 3, 4);
+ buttonCreate.Name = "buttonCreate";
+ buttonCreate.Size = new Size(86, 31);
+ buttonCreate.TabIndex = 26;
+ buttonCreate.Text = "create";
+ buttonCreate.UseVisualStyleBackColor = true;
+ buttonCreate.Click += buttonCreate_Click;
+ //
+ // textBoxCapacity
+ //
+ textBoxCapacity.Location = new Point(786, 92);
+ textBoxCapacity.Margin = new Padding(3, 4, 3, 4);
+ textBoxCapacity.Name = "textBoxCapacity";
+ textBoxCapacity.Size = new Size(114, 27);
+ textBoxCapacity.TabIndex = 23;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(662, 96);
+ label3.Name = "label3";
+ label3.Size = new Size(66, 20);
+ label3.TabIndex = 18;
+ label3.Text = "Capacity";
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(662, 57);
+ label2.Name = "label2";
+ label2.Size = new Size(62, 20);
+ label2.TabIndex = 17;
+ label2.Text = "Address";
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(662, 19);
+ label1.Name = "label1";
+ label1.Size = new Size(49, 20);
+ label1.TabIndex = 16;
+ label1.Text = "Name";
+ //
+ // dataGridView
+ //
+ dataGridView.AllowUserToAddRows = false;
+ dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+ dataGridView.Location = new Point(15, 19);
+ dataGridView.Margin = new Padding(3, 4, 3, 4);
+ dataGridView.Name = "dataGridView";
+ dataGridView.RowHeadersWidth = 51;
+ dataGridView.RowTemplate.Height = 25;
+ dataGridView.Size = new Size(628, 568);
+ dataGridView.TabIndex = 15;
+ dataGridView.CellClick += dataGridView_CellClick;
+ //
+ // textBoxName
+ //
+ textBoxName.Location = new Point(786, 19);
+ textBoxName.Margin = new Padding(3, 4, 3, 4);
+ textBoxName.Name = "textBoxName";
+ textBoxName.Size = new Size(114, 27);
+ textBoxName.TabIndex = 29;
+ //
+ // textBoxAddress
+ //
+ textBoxAddress.Location = new Point(786, 54);
+ textBoxAddress.Margin = new Padding(3, 4, 3, 4);
+ textBoxAddress.Name = "textBoxAddress";
+ textBoxAddress.Size = new Size(114, 27);
+ textBoxAddress.TabIndex = 30;
+ //
+ // FormWarehouse
+ //
+ AutoScaleDimensions = new SizeF(8F, 20F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(914, 600);
+ Controls.Add(textBoxAddress);
+ Controls.Add(textBoxName);
+ Controls.Add(buttonDelete);
+ Controls.Add(buttonUpdate);
+ Controls.Add(buttonCreate);
+ Controls.Add(textBoxCapacity);
+ Controls.Add(label3);
+ Controls.Add(label2);
+ Controls.Add(label1);
+ Controls.Add(dataGridView);
+ Margin = new Padding(3, 4, 3, 4);
+ Name = "FormWarehouse";
+ Text = "FormTransport";
+ Load += FormTransport_Load;
+ ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private Button buttonDelete;
+ private Button buttonUpdate;
+ private Button buttonCreate;
+ private TextBox textBoxCapacity;
+ private TextBox textBoxName;
+ private Label label4;
+ private Label label3;
+ private Label label2;
+ private Label label1;
+ private DataGridView dataGridView;
+ private TextBox textBoxAddress;
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/FormWarehouse.cs b/Transportlog/Transportlog/FormWarehouse.cs
new file mode 100644
index 0000000..2f440ad
--- /dev/null
+++ b/Transportlog/Transportlog/FormWarehouse.cs
@@ -0,0 +1,119 @@
+using database;
+using System.Data;
+
+namespace Forms
+{
+ public partial class FormWarehouse : Form
+ {
+ private Abstractions bd;
+ public FormWarehouse(Abstractions _bd)
+ {
+ InitializeComponent();
+ bd = _bd;
+ }
+ private void loadData()
+ {
+ // Получаем список автомобилей
+ List Warehouses = bd.GetWarehouses();
+
+ // Очищаем dataGridView перед заполнением новыми данными
+ dataGridView.Rows.Clear();
+
+ // Предварительно определяем столбцы, если это не было сделано ранее
+ if (dataGridView.ColumnCount == 0)
+ {
+ dataGridView.Columns.Add("id", "ID");
+ dataGridView.Columns.Add("Name", "Name");
+ dataGridView.Columns.Add("Address", "Address");
+ dataGridView.Columns.Add("Capacity", "Capacity");
+ }
+
+ // Заполняем dataGridView данными из списка автомобилей
+ foreach (Warehouse warehouse in Warehouses)
+ {
+ dataGridView.Rows.Add(warehouse.id,
+ warehouse.Name, warehouse.Address, warehouse.Capacity);
+ }
+
+ }
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ // Создаем новый объект Car и заполняем его данными из текстовых полей и комбо-боксов
+ Warehouse newWarehouse = new Warehouse
+ {
+ Name = textBoxName.Text,
+ Address = textBoxCapacity.Text,
+ Capacity = decimal.Parse(textBoxAddress.Text),
+ };
+
+ // Вызываем метод добавления нового автомобиля в базу данных
+ bd.AddWarehouse(newWarehouse);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+
+ private void buttonUpdate_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID редактируемого автомобиля из выбранной строки dataGridView
+ int warehouseId = (int)dataGridView.Rows[rowIndex].Cells["Id"].Value;
+
+ // Создаем объект Car и заполняем его данными из текстовых полей и комбо-боксов
+ Warehouse updatedWarehouse = new Warehouse
+ {
+ id = warehouseId,
+ Name = textBoxName.Text,
+ Address = textBoxCapacity.Text,
+ Capacity = decimal.Parse(textBoxAddress.Text),
+ };
+
+ // Вызываем метод обновления автомобиля в базе данных
+ bd.UpdateWarehouse(updatedWarehouse);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void buttonDelete_Click(object sender, EventArgs e)
+ {
+ if (dataGridView.SelectedRows.Count > 0)
+ {
+ // Получаем индекс выбранной строки
+ int rowIndex = dataGridView.CurrentCell.RowIndex;
+
+ // Получаем ID удаляемого автомобиля из выбранной строки dataGridView
+ int warehouseId = (int)dataGridView.Rows[rowIndex].Cells["id"].Value;
+
+ // Вызываем метод удаления автомобиля из базы данных
+ bd.DeleteWarehouse(warehouseId);
+
+ // Обновляем dataGridView
+ loadData();
+ }
+ }
+
+ private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
+ {
+ if (e.RowIndex >= 0)
+ {
+ DataGridViewRow row = dataGridView.Rows[e.RowIndex];
+
+ // Заполняем текстовые поля данными из выбранной строки
+ textBoxName.Text = row.Cells["Name"].Value.ToString();
+ textBoxAddress.Text = row.Cells["Address"].Value.ToString();
+ textBoxCapacity.Text = row.Cells["Capacity"].Value.ToString();
+ }
+ }
+
+ private void FormTransport_Load(object sender, EventArgs e)
+ {
+ loadData();
+ }
+ }
+}
diff --git a/Transportlog/Transportlog/FormWarehouse.resx b/Transportlog/Transportlog/FormWarehouse.resx
new file mode 100644
index 0000000..af32865
--- /dev/null
+++ b/Transportlog/Transportlog/FormWarehouse.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/Transportlog/Transportlog/Program.cs b/Transportlog/Transportlog/Program.cs
new file mode 100644
index 0000000..a6c0c64
--- /dev/null
+++ b/Transportlog/Transportlog/Program.cs
@@ -0,0 +1,40 @@
+using database;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Forms
+{
+ internal static class Program
+ {
+ private static ServiceProvider? _serviceProvider;
+ public static ServiceProvider? ServiceProvider => _serviceProvider;
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ // To customize application configuration such as set high DPI settings or default font,
+ // see https://aka.ms/applicationconfiguration.
+ ApplicationConfiguration.Initialize();
+ var services = new ServiceCollection();
+ ConfigureServices(services);
+ _serviceProvider = services.BuildServiceProvider();
+ Application.Run(_serviceProvider.GetRequiredService());
+ }
+ private static void ConfigureServices(ServiceCollection services)
+ {
+ services.AddTransient();
+ services.AddTransient();
+
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+ services.AddTransient();
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Transportlog/Transportlog/Transportlog.csproj b/Transportlog/Transportlog/Transportlog.csproj
new file mode 100644
index 0000000..14c9dec
--- /dev/null
+++ b/Transportlog/Transportlog/Transportlog.csproj
@@ -0,0 +1,19 @@
+
+
+
+ WinExe
+ net6.0-windows
+ enable
+ true
+ enable
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Transportlog/database/Abstractions.cs b/Transportlog/database/Abstractions.cs
new file mode 100644
index 0000000..7f9bf12
--- /dev/null
+++ b/Transportlog/database/Abstractions.cs
@@ -0,0 +1,66 @@
+using Npgsql;
+
+namespace database
+{
+ public abstract class Abstractions
+ {
+
+ // CDUD операции для каждой сущности
+
+ // Cargo
+ public abstract void AddCargo(Cargo cargo);
+ public abstract List GetCargos();
+ public abstract Cargo GetCargoById(int id);
+ public abstract void UpdateCargo(Cargo cargo);
+ public abstract void DeleteCargo(int id);
+
+ //Transport
+ public abstract void AddTransport(Transport transport);
+ public abstract List GetTransports();
+ public abstract Transport GetTransportById(int id);
+ public abstract void UpdateTransport(Transport transport);
+ public abstract void DeleteTransport(int id);
+
+ //Warehouse
+ public abstract void AddWarehouse(Warehouse warehouse);
+ public abstract List GetWarehouses();
+ public abstract Warehouse GetWarehouseById(int id);
+ public abstract void UpdateWarehouse(Warehouse warehouse);
+ public abstract void DeleteWarehouse(int id);
+
+ //Driver
+ public abstract void AddDriver(Driver driver);
+ public abstract List GetDrivers();
+ public abstract Driver GetDriverById(int id);
+ public abstract void UpdateDriver(Driver driver);
+ public abstract void DeleteDriver(int id);
+
+ // Routes
+ public abstract void AddRoutes(Routes routes);
+ public abstract Routes GetRoutesById(int id);
+ public abstract List GetRoutes();
+ public abstract void UpdateRoutes(Routes routes);
+ public abstract void DeleteRoutes(int id);
+
+ // Orders
+ public abstract void AddOrders(Orders orders);
+ public abstract Orders GetOrdersById(int id);
+ public abstract List GetOrders();
+ public abstract void UpdateOrders(Orders orders);
+ public abstract void DeleteOrders(int id);
+
+ // CargoTransport
+ public abstract void AddCargoTransports(CargoTransport cargoTransport);
+ public abstract CargoTransport GetCargoTransportsById(int id);
+ public abstract List GetCargoTransports();
+ public abstract void UpdateCargoTransports(CargoTransport cargoTransport);
+ public abstract void DeleteCargoTransports(int id);
+
+ //CargoOrder
+ public abstract void AddCargoOrder(CargoOrder cargoOrder);
+ public abstract List GetCargoOrders();
+ public abstract CargoOrder GetCargoOrderById(int id);
+ public abstract void UpdateCargoOrder(CargoOrder cargoOrder);
+ public abstract void DeleteCargoOrder(int id);
+ }
+}
diff --git a/Transportlog/database/Implementation.cs b/Transportlog/database/Implementation.cs
new file mode 100644
index 0000000..d0d87ce
--- /dev/null
+++ b/Transportlog/database/Implementation.cs
@@ -0,0 +1,603 @@
+using Npgsql;
+
+namespace database
+{
+ public class Implementation : Abstractions
+ {
+ private NpgsqlConnection GetConnection()
+ {
+ return new NpgsqlConnection("Host=localhost;Username=postgres;Password=5558;Database=transports;");
+ }
+
+ // CDUD операции для каждой сущности
+
+ // Cargo
+ public override void AddCargo(Cargo cargo)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("INSERT INTO Cargo (name, description, weight, type) VALUES (@Name, @Description, @Weight, @Type)", conn);
+ cmd.Parameters.AddWithValue("@Name", cargo.Name);
+ cmd.Parameters.AddWithValue("@Description", cargo.Description);
+ cmd.Parameters.AddWithValue("@Weight", cargo.Weight);
+ cmd.Parameters.AddWithValue("@Type", cargo.Type);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override List GetCargos()
+ {
+ var cars = new List();
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Cargo order by id", conn);
+ using var reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ cars.Add(new Cargo
+ {
+ id = reader.GetInt32(0),
+ Name = reader.GetString(1),
+ Description = reader.GetString(2),
+ Weight = reader.GetDecimal(3),
+ Type = reader.GetString(4),
+ });
+ }
+ return cars;
+ }
+
+ public override Cargo GetCargoById(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand($"SELECT * FROM cargo WHERE id = {id}", conn);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new Cargo
+ {
+ id = reader.GetInt32(0),
+ Name = reader.GetString(1),
+ Description = reader.GetString(2),
+ Weight = reader.GetDecimal(3),
+ Type = reader.GetString(4),
+ };
+ }
+ return null;
+ }
+
+ public override void UpdateCargo(Cargo cargo)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("UPDATE cargo SET name = @Name, description = @Description, weight = @Weight, type = @Type WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Name", cargo.Name);
+ cmd.Parameters.AddWithValue("@Description", cargo.Description);
+ cmd.Parameters.AddWithValue("@Weight", cargo.Weight);
+ cmd.Parameters.AddWithValue("@Type", cargo.Type);
+ cmd.Parameters.AddWithValue("@Id", cargo.id);
+ cmd.ExecuteNonQuery();
+ }
+
+
+ public override void DeleteCargo(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand($"DELETE FROM cargo WHERE id = {id}", conn);
+ cmd.ExecuteNonQuery();
+ }
+
+ // Transport
+ public override void AddTransport(Transport transport)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("INSERT INTO Transport (Type, Payload_capacity, Number) VALUES (@Type, @PayloadCapacity, @Number)", conn);
+ cmd.Parameters.AddWithValue("@Type", transport.Type);
+ cmd.Parameters.AddWithValue("@PayloadCapacity", transport.PayloadCapacity);
+ cmd.Parameters.AddWithValue("@Number", transport.Number);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override List GetTransports()
+ {
+ var cars = new List();
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Transport order by id", conn);
+ using var reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ cars.Add(new Transport
+ {
+ id = reader.GetInt32(0),
+ Type = reader.GetString(1),
+ PayloadCapacity = reader.GetDecimal(2),
+ Number = reader.GetString(3),
+ });
+ }
+ return cars;
+ }
+
+ public override Transport GetTransportById(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand($"SELECT * FROM transport WHERE id = {id}", conn);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new Transport
+ {
+ id = reader.GetInt32(0),
+ Type = reader.GetString(1),
+ PayloadCapacity = reader.GetDecimal(2),
+ Number = reader.GetString(3)
+ };
+ }
+ return null;
+ }
+
+ public override void UpdateTransport(Transport transport)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("UPDATE transport SET Type = @Type, Payload_capacity = @PayloadCapacity, Number = @Number WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Type", transport.Type);
+ cmd.Parameters.AddWithValue("@PayloadCapacity", transport.PayloadCapacity);
+ cmd.Parameters.AddWithValue("@Number", transport.Number);
+ cmd.Parameters.AddWithValue("@Id", transport.id);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override void DeleteTransport(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand($"DELETE FROM transport WHERE id = {id}", conn);
+ cmd.ExecuteNonQuery();
+ }
+
+ //Warehouse
+ public override void AddWarehouse(Warehouse warehouse)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("INSERT INTO Warehouse (Name, Address, Capacity) VALUES (@Name, @Address, @Capacity)", conn);
+ cmd.Parameters.AddWithValue("@Name", warehouse.Name);
+ cmd.Parameters.AddWithValue("@Address", warehouse.Address);
+ cmd.Parameters.AddWithValue("@Capacity", warehouse.Capacity);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override List GetWarehouses()
+ {
+ var warehouses = new List();
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Warehouse ORDER BY id", conn);
+ using var reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ warehouses.Add(new Warehouse
+ {
+ id = reader.GetInt32(0),
+ Name = reader.GetString(1),
+ Address = reader.GetString(2),
+ Capacity = reader.GetDecimal(3)
+ });
+ }
+ return warehouses;
+ }
+
+ public override Warehouse GetWarehouseById(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand($"SELECT * FROM Warehouse WHERE id = {id}", conn);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new Warehouse
+ {
+ id = reader.GetInt32(0),
+ Name = reader.GetString(1),
+ Address = reader.GetString(2),
+ Capacity = reader.GetDecimal(3)
+ };
+ }
+ return null;
+ }
+
+ public override void UpdateWarehouse(Warehouse warehouse)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("UPDATE Warehouse SET Name = @Name, Address = @Address, Capacity = @Capacity WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Name", warehouse.Name);
+ cmd.Parameters.AddWithValue("@Address", warehouse.Address);
+ cmd.Parameters.AddWithValue("@Capacity", warehouse.Capacity);
+ cmd.Parameters.AddWithValue("@Id", warehouse.id);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override void DeleteWarehouse(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand($"DELETE FROM Warehouse WHERE id = {id}", conn);
+ cmd.ExecuteNonQuery();
+ }
+
+ // Driver
+ public override void AddDriver(Driver driver)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("INSERT INTO Driver (Name, Surname, Category) VALUES (@Name, @Surname, @Category)", conn);
+ cmd.Parameters.AddWithValue("@Name", driver.Name);
+ cmd.Parameters.AddWithValue("@Surname", driver.Surname);
+ cmd.Parameters.AddWithValue("@Category", driver.Category);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override List GetDrivers()
+ {
+ var drivers = new List();
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Driver ORDER BY id", conn);
+ using var reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ drivers.Add(new Driver
+ {
+ id = reader.GetInt32(0),
+ Name = reader.GetString(1),
+ Surname = reader.GetString(2),
+ Category = reader.GetInt32(3)
+ });
+ }
+ return drivers;
+ }
+
+ public override Driver GetDriverById(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand($"SELECT * FROM Driver WHERE id = {id}", conn);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new Driver
+ {
+ id = reader.GetInt32(0),
+ Name = reader.GetString(1),
+ Surname = reader.GetString(2),
+ Category = reader.GetInt32(3)
+ };
+ }
+ return null;
+ }
+
+ public override void UpdateDriver(Driver driver)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("UPDATE Driver SET Name = @Name, Surname = @Surname, Category = @Category WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Name", driver.Name);
+ cmd.Parameters.AddWithValue("@Surname", driver.Surname);
+ cmd.Parameters.AddWithValue("@Category", driver.Category);
+ cmd.Parameters.AddWithValue("@Id", driver.id);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override void DeleteDriver(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand($"DELETE FROM Driver WHERE id = {id}", conn);
+ cmd.ExecuteNonQuery();
+ }
+
+ // Routes
+ public override void AddRoutes(Routes routes)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("INSERT INTO Routes (End_Point, Arrival_Time, Departure_Time, Warehouse_id, Driver_id) VALUES (@EndPoint, @ArrivalTime, @DepartureTime, @WarehouseId, @DriverId)", conn);
+ cmd.Parameters.AddWithValue("@EndPoint", routes.EndPoint);
+ cmd.Parameters.AddWithValue("@ArrivalTime", routes.ArrivalTime);
+ cmd.Parameters.AddWithValue("@DepartureTime", routes.DepartureTime);
+ cmd.Parameters.AddWithValue("@WarehouseId", routes.WarehouseId);
+ cmd.Parameters.AddWithValue("@DriverId", routes.DriverId);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override List GetRoutes()
+ {
+ var routesList = new List();
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Routes ORDER BY id", conn);
+ using var reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ routesList.Add(new Routes
+ {
+ id = reader.GetInt32(0),
+ EndPoint = reader.GetString(1),
+ ArrivalTime = reader.GetDateTime(2),
+ DepartureTime = reader.GetDateTime(3),
+ WarehouseId = reader.GetInt32(4),
+ DriverId = reader.GetInt32(5)
+ });
+ }
+ return routesList;
+ }
+
+ public override Routes GetRoutesById(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Routes WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", id);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new Routes
+ {
+ id = reader.GetInt32(0),
+ EndPoint = reader.GetString(1),
+ ArrivalTime = reader.GetDateTime(2),
+ DepartureTime = reader.GetDateTime(3),
+ WarehouseId = reader.GetInt32(4),
+ DriverId = reader.GetInt32(5)
+ };
+ }
+ return null;
+ }
+
+ public override void UpdateRoutes(Routes routes)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("UPDATE Routes SET End_Point = @EndPoint, Arrival_Time = @ArrivalTime, Departure_Time = @DepartureTime, Warehouse_id = @WarehouseId, Driver_id = @DriverId WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", routes.id);
+ cmd.Parameters.AddWithValue("@EndPoint", routes.EndPoint);
+ cmd.Parameters.AddWithValue("@ArrivalTime", routes.ArrivalTime);
+ cmd.Parameters.AddWithValue("@DepartureTime", routes.DepartureTime);
+ cmd.Parameters.AddWithValue("@WarehouseId", routes.WarehouseId);
+ cmd.Parameters.AddWithValue("@DriverId", routes.DriverId);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override void DeleteRoutes(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("DELETE FROM Routes WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", id);
+ cmd.ExecuteNonQuery();
+ }
+
+
+ // Orders
+
+ public override void AddOrders(Orders orders)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("INSERT INTO Orders (Status, Order_Date, Routes_id) VALUES (@Status, @OrderDate, @RoutesId)", conn);
+ cmd.Parameters.AddWithValue("@Status", orders.Status);
+ cmd.Parameters.AddWithValue("@OrderDate", orders.OrderDate);
+ cmd.Parameters.AddWithValue("@RoutesId", orders.RoutesId);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override List GetOrders()
+ {
+ var ordersList = new List();
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Orders ORDER BY id", conn);
+ using var reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ ordersList.Add(new Orders
+ {
+ id = reader.GetInt32(0),
+ Status = reader.GetString(1),
+ OrderDate = reader.GetDateTime(2),
+ RoutesId = reader.GetInt32(3),
+ });
+ }
+ return ordersList;
+ }
+
+ public override Orders GetOrdersById(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Orders WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", id);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new Orders
+ {
+ id = reader.GetInt32(0),
+ Status = reader.GetString(1),
+ OrderDate = reader.GetDateTime(2),
+ RoutesId = reader.GetInt32(3)
+ };
+ }
+ return null;
+ }
+
+ public override void UpdateOrders(Orders orders)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("UPDATE Orders SET Status = @Status, Order_Date = @OrderDate, Routes_id = @RoutesId WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", orders.id);
+ cmd.Parameters.AddWithValue("@Status", orders.Status);
+ cmd.Parameters.AddWithValue("@OrderDate", orders.OrderDate);
+ cmd.Parameters.AddWithValue("@RoutesId", orders.RoutesId);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override void DeleteOrders(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("DELETE FROM Orders WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", id);
+ cmd.ExecuteNonQuery();
+ }
+
+ //CargoTransport
+ public override void AddCargoTransports(CargoTransport cargoTransport)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("INSERT INTO Cargo_Transport (Cargo_id, Transport_id) VALUES (@CargoId, @TransportId)", conn);
+ cmd.Parameters.AddWithValue("@CargoId", cargoTransport.CargoId);
+ cmd.Parameters.AddWithValue("@TransportId", cargoTransport.TransportId);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override List GetCargoTransports()
+ {
+ var cargoTransportList = new List();
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Cargo_Transport ORDER BY id", conn);
+ using var reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ cargoTransportList.Add(new CargoTransport
+ {
+ id = reader.GetInt32(0),
+ CargoId = reader.GetInt32(1),
+ TransportId = reader.GetInt32(2)
+ });
+ }
+ return cargoTransportList;
+ }
+
+ public override CargoTransport GetCargoTransportsById(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Cargo_Transport WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", id);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new CargoTransport
+ {
+ id = reader.GetInt32(0),
+ CargoId = reader.GetInt32(1),
+ TransportId = reader.GetInt32(2)
+ };
+ }
+ return null;
+ }
+
+ public override void UpdateCargoTransports(CargoTransport cargoTransport)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("UPDATE Cargo_Transport SET Cargo_id = @CargoId, Transport_id = @TransportId WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", cargoTransport.id);
+ cmd.Parameters.AddWithValue("@CargoId", cargoTransport.CargoId);
+ cmd.Parameters.AddWithValue("@TransportId", cargoTransport.TransportId);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override void DeleteCargoTransports(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("DELETE FROM Cargo_Transport WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", id);
+ cmd.ExecuteNonQuery();
+ }
+
+ //CargoOrder
+ public override void AddCargoOrder(CargoOrder cargoOrder)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("INSERT INTO Cargo_Order (Cargo_id, Order_id, Count) VALUES (@CargoId, @OrderId, @Count)", conn);
+ cmd.Parameters.AddWithValue("@CargoId", cargoOrder.CargoId);
+ cmd.Parameters.AddWithValue("@OrderId", cargoOrder.OrderId);
+ cmd.Parameters.AddWithValue("@Count", cargoOrder.Count);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override List GetCargoOrders()
+ {
+ var cargoOrderList = new List();
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Cargo_Order ORDER BY id", conn);
+ using var reader = cmd.ExecuteReader();
+ while (reader.Read())
+ {
+ cargoOrderList.Add(new CargoOrder
+ {
+ id = reader.GetInt32(0),
+ CargoId = reader.GetInt32(1),
+ OrderId = reader.GetInt32(2),
+ Count = reader.GetInt32(3)
+ });
+ }
+ return cargoOrderList;
+ }
+
+ public override CargoOrder GetCargoOrderById(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("SELECT * FROM Cargo_Order WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", id);
+ using var reader = cmd.ExecuteReader();
+ if (reader.Read())
+ {
+ return new CargoOrder
+ {
+ id = reader.GetInt32(0),
+ CargoId = reader.GetInt32(1),
+ OrderId = reader.GetInt32(2),
+ Count = reader.GetInt32(3)
+ };
+ }
+ return null;
+ }
+
+ public override void UpdateCargoOrder(CargoOrder cargoOrder)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("UPDATE Cargo_Order SET Cargo_id = @CargoId, Order_id = @OrderId, Count = @Count WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", cargoOrder.id);
+ cmd.Parameters.AddWithValue("@CargoId", cargoOrder.CargoId);
+ cmd.Parameters.AddWithValue("@OrderId", cargoOrder.OrderId);
+ cmd.Parameters.AddWithValue("@Count", cargoOrder.Count);
+ cmd.ExecuteNonQuery();
+ }
+
+ public override void DeleteCargoOrder(int id)
+ {
+ using var conn = GetConnection();
+ conn.Open();
+ using var cmd = new NpgsqlCommand("DELETE FROM Cargo_Order WHERE id = @Id", conn);
+ cmd.Parameters.AddWithValue("@Id", id);
+ cmd.ExecuteNonQuery();
+ }
+
+
+ }
+}
diff --git a/Transportlog/database/database.csproj b/Transportlog/database/database.csproj
new file mode 100644
index 0000000..23b43f6
--- /dev/null
+++ b/Transportlog/database/database.csproj
@@ -0,0 +1,13 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
diff --git a/Transportlog/database/models.cs b/Transportlog/database/models.cs
new file mode 100644
index 0000000..14d0b35
--- /dev/null
+++ b/Transportlog/database/models.cs
@@ -0,0 +1,74 @@
+namespace database
+{
+ // Определение моделей данных
+
+ public class Cargo
+ {
+ public int id { get; set; }
+ public string Name { get; set; }
+ public string Description { get; set; }
+ public decimal Weight { get; set; }
+ public string Type { get; set; }
+ }
+
+ public class Transport
+ {
+ public int id { get; set; }
+ public string Type { get; set; }
+ public decimal PayloadCapacity { get; set; }
+ public string Number { get; set; }
+ }
+
+ public class Warehouse
+ {
+ public int id { get; set; }
+ public string Name { get; set; }
+ public string Address { get; set; }
+ public decimal Capacity { get; set; }
+ }
+ public class Driver
+ {
+ public int id { get; set; }
+ public string Name { get; set; }
+ public string Surname { get; set; }
+ public int Category { get; set; }
+ }
+
+ public class Routes
+ {
+ public int id { get; set; }
+ public string EndPoint { get; set; }
+ public DateTime ArrivalTime { get; set; }
+ public DateTime DepartureTime { get; set; }
+ public int WarehouseId { get; set; }
+ public int DriverId { get; set; }
+ }
+ public class Orders
+ {
+ public int id { get; set; }
+ public string Status { get; set; }
+ public DateTime OrderDate { get; set; }
+ public int RoutesId { get; set; }
+ }
+
+ public class CargoTransport
+ {
+ public int id { get; set; }
+ public int CargoId { get; set; }
+ public int TransportId { get; set; }
+ }
+
+ public class CargoOrder
+ {
+ public int id { get; set; }
+ public int CargoId { get; set; }
+ public int OrderId { get; set; }
+ public int Count { get; set; }
+ }
+
+ public class helpCombobox
+ {
+ public string Text { get; set; }
+ public int Id { get; set; }
+ }
+}