diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.Designer.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.Designer.cs
new file mode 100644
index 0000000..d41e33e
--- /dev/null
+++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.Designer.cs
@@ -0,0 +1,189 @@
+namespace FuelAndLubricants.Forms
+{
+ partial class FormCar
+ {
+ ///
+ /// 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()
+ {
+ checkedListBoxDriverLicense = new CheckedListBox();
+ buttonDriverCancel = new Button();
+ buttonDriverSave = new Button();
+ label3 = new Label();
+ textBoxCarModel = new TextBox();
+ label2 = new Label();
+ textBoxCarMark = new TextBox();
+ label1 = new Label();
+ comboBoxCarType = new ComboBox();
+ label4 = new Label();
+ numericUpDownConsumptionRate = new NumericUpDown();
+ label5 = new Label();
+ ((System.ComponentModel.ISupportInitialize)numericUpDownConsumptionRate).BeginInit();
+ SuspendLayout();
+ //
+ // checkedListBoxDriverLicense
+ //
+ checkedListBoxDriverLicense.FormattingEnabled = true;
+ checkedListBoxDriverLicense.Location = new Point(107, 97);
+ checkedListBoxDriverLicense.Name = "checkedListBoxDriverLicense";
+ checkedListBoxDriverLicense.Size = new Size(140, 94);
+ checkedListBoxDriverLicense.TabIndex = 17;
+ //
+ // buttonDriverCancel
+ //
+ buttonDriverCancel.Location = new Point(172, 232);
+ buttonDriverCancel.Name = "buttonDriverCancel";
+ buttonDriverCancel.Size = new Size(75, 23);
+ buttonDriverCancel.TabIndex = 16;
+ buttonDriverCancel.Text = "Отмена";
+ buttonDriverCancel.UseVisualStyleBackColor = true;
+ //
+ // buttonDriverSave
+ //
+ buttonDriverSave.Location = new Point(9, 232);
+ buttonDriverSave.Name = "buttonDriverSave";
+ buttonDriverSave.Size = new Size(75, 23);
+ buttonDriverSave.TabIndex = 15;
+ buttonDriverSave.Text = "Сохранить";
+ buttonDriverSave.UseVisualStyleBackColor = true;
+ //
+ // label3
+ //
+ label3.AutoSize = true;
+ label3.Location = new Point(9, 97);
+ label3.Name = "label3";
+ label3.Size = new Size(92, 15);
+ label3.TabIndex = 14;
+ label3.Text = "Категория прав";
+ //
+ // textBoxCarModel
+ //
+ textBoxCarModel.Location = new Point(107, 39);
+ textBoxCarModel.Name = "textBoxCarModel";
+ textBoxCarModel.Size = new Size(140, 23);
+ textBoxCarModel.TabIndex = 13;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new Point(9, 42);
+ label2.Name = "label2";
+ label2.Size = new Size(50, 15);
+ label2.TabIndex = 12;
+ label2.Text = "Модель";
+ //
+ // textBoxCarMark
+ //
+ textBoxCarMark.Location = new Point(107, 10);
+ textBoxCarMark.Name = "textBoxCarMark";
+ textBoxCarMark.Size = new Size(140, 23);
+ textBoxCarMark.TabIndex = 11;
+ //
+ // label1
+ //
+ label1.AutoSize = true;
+ label1.Location = new Point(9, 13);
+ label1.Name = "label1";
+ label1.Size = new Size(43, 15);
+ label1.TabIndex = 10;
+ label1.Text = "Марка";
+ //
+ // comboBoxCarType
+ //
+ comboBoxCarType.DropDownStyle = ComboBoxStyle.DropDownList;
+ comboBoxCarType.FormattingEnabled = true;
+ comboBoxCarType.Location = new Point(107, 68);
+ comboBoxCarType.Name = "comboBoxCarType";
+ comboBoxCarType.Size = new Size(140, 23);
+ comboBoxCarType.TabIndex = 18;
+ //
+ // label4
+ //
+ label4.AutoSize = true;
+ label4.Location = new Point(9, 71);
+ label4.Name = "label4";
+ label4.Size = new Size(79, 15);
+ label4.TabIndex = 19;
+ label4.Text = "Тип машины";
+ //
+ // numericUpDownConsumptionRate
+ //
+ numericUpDownConsumptionRate.DecimalPlaces = 2;
+ numericUpDownConsumptionRate.Location = new Point(107, 197);
+ numericUpDownConsumptionRate.Minimum = new decimal(new int[] { 1, 0, 0, 131072 });
+ numericUpDownConsumptionRate.Name = "numericUpDownConsumptionRate";
+ numericUpDownConsumptionRate.Size = new Size(140, 23);
+ numericUpDownConsumptionRate.TabIndex = 20;
+ numericUpDownConsumptionRate.Value = new decimal(new int[] { 1, 0, 0, 131072 });
+ //
+ // label5
+ //
+ label5.AutoSize = true;
+ label5.Location = new Point(9, 199);
+ label5.Name = "label5";
+ label5.Size = new Size(93, 15);
+ label5.TabIndex = 21;
+ label5.Text = "Расход топлива";
+ //
+ // FormCar
+ //
+ AutoScaleDimensions = new SizeF(7F, 15F);
+ AutoScaleMode = AutoScaleMode.Font;
+ ClientSize = new Size(262, 266);
+ Controls.Add(label5);
+ Controls.Add(numericUpDownConsumptionRate);
+ Controls.Add(label4);
+ Controls.Add(comboBoxCarType);
+ Controls.Add(checkedListBoxDriverLicense);
+ Controls.Add(buttonDriverCancel);
+ Controls.Add(buttonDriverSave);
+ Controls.Add(label3);
+ Controls.Add(textBoxCarModel);
+ Controls.Add(label2);
+ Controls.Add(textBoxCarMark);
+ Controls.Add(label1);
+ Name = "FormCar";
+ Text = "FormCar";
+ ((System.ComponentModel.ISupportInitialize)numericUpDownConsumptionRate).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private CheckedListBox checkedListBoxDriverLicense;
+ private Button buttonDriverCancel;
+ private Button buttonDriverSave;
+ private Label label3;
+ private TextBox textBoxCarModel;
+ private Label label2;
+ private TextBox textBoxCarMark;
+ private Label label1;
+ private ComboBox comboBoxCarType;
+ private Label label4;
+ private NumericUpDown numericUpDownConsumptionRate;
+ private Label label5;
+ }
+}
\ No newline at end of file
diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs
new file mode 100644
index 0000000..9529bdc
--- /dev/null
+++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.cs
@@ -0,0 +1,91 @@
+using FuelAndLubricants.Entities;
+using FuelAndLubricants.Entities.Enums;
+using FuelAndLubricants.Repositories;
+
+namespace FuelAndLubricants.Forms
+{
+ public partial class FormCar: Form
+ {
+ private readonly ICarRepository _carRepository;
+
+ private int? _carId;
+
+ public int Id
+ {
+ set
+ {
+ try
+ {
+ var car = _carRepository.ReadCarByID(value);
+ if (car == null)
+ throw new InvalidOperationException(nameof(car));
+
+ foreach (Driver_License elem in Enum.GetValues(typeof(Driver_License)))
+ {
+ if ((elem & car.License) != 0)
+ {
+ checkedListBoxDriverLicense.SetItemChecked(checkedListBoxDriverLicense.Items.IndexOf(elem), true);
+ }
+ }
+
+
+ textBoxCarMark.Text = car.Car_Mark;
+ textBoxCarModel.Text = car.Car_Model;
+ comboBoxCarType.SelectedItem = car.Car_Type;
+ numericUpDownConsumptionRate.Value = (decimal)car.Consumption_Rate;
+
+ _carId = value;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ }
+ }
+ public FormCar(ICarRepository carRepository)
+ {
+ InitializeComponent();
+ _carRepository = carRepository ??
+ throw new ArgumentNullException(nameof(carRepository));
+
+ foreach (var elem in Enum.GetValues(typeof(Driver_License)))
+ checkedListBoxDriverLicense.Items.Add(elem);
+
+ comboBoxCarType.DataSource = Enum.GetValues(typeof(Car_Type));
+ }
+
+ private void ButtonCarSave_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (string.IsNullOrWhiteSpace(textBoxCarMark.Text) || string.IsNullOrWhiteSpace(textBoxCarModel.Text) || comboBoxCarType.SelectedIndex < 1 || checkedListBoxDriverLicense.CheckedItems.Count == 0)
+ throw new Exception("Имеются незаполненные поля");
+
+ if (_carId.HasValue)
+ _carRepository.UpdateCar(CreateCar(_carId.Value));
+ else
+ _carRepository.CreateCar(CreateCar(0));
+
+ Close();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void ButtonCancel_Click(object sender, EventArgs e) => Close();
+
+ private Car CreateCar(int id)
+ {
+ Driver_License driver_License = Driver_License.None;
+ foreach (var elem in checkedListBoxDriverLicense.CheckedItems)
+ {
+ driver_License |= (Driver_License)elem;
+ }
+
+ return Car.CreateEntity(id, textBoxCarMark.Text, textBoxCarModel.Text, (Car_Type)comboBoxCarType.SelectedItem!, driver_License, (float)numericUpDownConsumptionRate.Value);
+ }
+ }
+}
diff --git a/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.resx b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.resx
new file mode 100644
index 0000000..8b2ff64
--- /dev/null
+++ b/FuelAndLubricants/FuelAndLubricants/Forms/FormCar.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