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