Добавьте файлы проекта.

This commit is contained in:
Samusev 2026-03-04 10:53:55 +04:00
parent 29e501e033
commit df97e18315
34 changed files with 2308 additions and 0 deletions

19
1202.cs Normal file
View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace samusev_42
{
public partial class Product
{
[NotMapped]
public string CountUnit
{
/// Объединение колонок "Количечество и Штук", чтобы выглядело красиво
get { return Count + " " + Unit.ToString(); }
}
}
}

111
AuthForm.Designer.cs generated Normal file
View File

@ -0,0 +1,111 @@
namespace samusev_42
{
partial class AuthForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
textBoxLogin = new TextBox();
textBoxPassword = new TextBox();
buttonLogin = new Button();
label1 = new Label();
label2 = new Label();
SuspendLayout();
//
// textBoxLogin
//
textBoxLogin.Font = new Font("Segoe UI Semibold", 14.25F, FontStyle.Bold);
textBoxLogin.Location = new Point(28, 66);
textBoxLogin.Name = "textBoxLogin";
textBoxLogin.Size = new Size(230, 33);
textBoxLogin.TabIndex = 0;
//
// textBoxPassword
//
textBoxPassword.Font = new Font("Segoe UI Semibold", 14.25F, FontStyle.Bold);
textBoxPassword.Location = new Point(28, 165);
textBoxPassword.Name = "textBoxPassword";
textBoxPassword.Size = new Size(230, 33);
textBoxPassword.TabIndex = 1;
//
// buttonLogin
//
buttonLogin.BackColor = Color.MistyRose;
buttonLogin.Font = new Font("Segoe UI Semibold", 14.25F, FontStyle.Bold);
buttonLogin.Location = new Point(75, 233);
buttonLogin.Name = "buttonLogin";
buttonLogin.Size = new Size(148, 42);
buttonLogin.TabIndex = 2;
buttonLogin.Text = "Войти";
buttonLogin.UseVisualStyleBackColor = false;
buttonLogin.Click += buttonLogin_Click;
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Segoe UI Semibold", 14.25F, FontStyle.Bold);
label1.Location = new Point(111, 28);
label1.Name = "label1";
label1.Size = new Size(71, 25);
label1.TabIndex = 3;
label1.Text = "Логин:";
//
// label2
//
label2.AutoSize = true;
label2.Font = new Font("Segoe UI Semibold", 14.25F, FontStyle.Bold);
label2.Location = new Point(98, 128);
label2.Name = "label2";
label2.Size = new Size(84, 25);
label2.TabIndex = 4;
label2.Text = "Пароль:";
//
// AuthForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
BackColor = Color.PeachPuff;
ClientSize = new Size(286, 308);
Controls.Add(label2);
Controls.Add(label1);
Controls.Add(buttonLogin);
Controls.Add(textBoxPassword);
Controls.Add(textBoxLogin);
Name = "AuthForm";
Text = "AuthForm";
ResumeLayout(false);
PerformLayout();
}
#endregion
private TextBox textBoxLogin;
private TextBox textBoxPassword;
private Button buttonLogin;
private Label label1;
private Label label2;
}
}

65
AuthForm.cs Normal file
View File

@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace samusev_42
{
public partial class AuthForm : Form
{
Ispr2522SamusevOvLazarev2Context context = new Ispr2522SamusevOvLazarev2Context();
public AuthForm()
{
InitializeComponent();
}
private void buttonLogin_Click(object sender, EventArgs e)
{
try
{
string inputLogin = textBoxLogin.Text.Trim();
string inputPassword = textBoxPassword.Text.Trim();
if (string.IsNullOrEmpty(inputLogin) || string.IsNullOrEmpty(inputPassword))
{
MessageBox.Show("Введите логин и пароль!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
var user = context.Users.FirstOrDefault(x => x.Login == inputLogin && x.Password == inputPassword);
if (user != null)
{
this.Hide();
Form1 mainForm = new Form1();
mainForm.ShowDialog();
this.Close();
}
else
{
MessageBox.Show("Пользователь не найден! Проверьте правильность данных.",
"Ошибка авторизации", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show($"Ошибка подключения: {ex.Message}", "Критическая ошибка");
}
}
}
}

120
AuthForm.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

13
Category.cs Normal file
View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class Category
{
public int IdCategory { get; set; }
public string CategoryName { get; set; } = null!;
public virtual ICollection<Product> Products { get; set; } = new List<Product>();
}

29
Delivery.cs Normal file
View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class Delivery
{
public int IdDelivery { get; set; }
public DateTime DateOrder { get; set; }
public DateTime DateDelivery { get; set; }
public int IdPickUpPoint { get; set; }
public int IdUser { get; set; }
public int Code { get; set; }
public int IdStatus { get; set; }
public virtual PickUpPoint IdPickUpPointNavigation { get; set; } = null!;
public virtual Status IdStatusNavigation { get; set; } = null!;
public virtual User IdUserNavigation { get; set; } = null!;
public virtual ICollection<OrdersProduct> OrdersProducts { get; set; } = new List<OrdersProduct>();
}

343
EditForm.Designer.cs generated Normal file
View File

@ -0,0 +1,343 @@
namespace samusev_42
{
partial class EditForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
productBindingSource = new BindingSource(components);
textBox2 = new TextBox();
textBox4 = new TextBox();
textBox5 = new TextBox();
textBox8 = new TextBox();
textBox10 = new TextBox();
label2 = new Label();
label3 = new Label();
label4 = new Label();
label5 = new Label();
label6 = new Label();
label7 = new Label();
label8 = new Label();
label9 = new Label();
label10 = new Label();
comboBox1 = new ComboBox();
productNameBindingSource = new BindingSource(components);
comboBox2 = new ComboBox();
supplierBindingSource = new BindingSource(components);
comboBox3 = new ComboBox();
manufacturerBindingSource = new BindingSource(components);
comboBox4 = new ComboBox();
categoryBindingSource = new BindingSource(components);
SaveEditButton = new Button();
((System.ComponentModel.ISupportInitialize)productBindingSource).BeginInit();
((System.ComponentModel.ISupportInitialize)productNameBindingSource).BeginInit();
((System.ComponentModel.ISupportInitialize)supplierBindingSource).BeginInit();
((System.ComponentModel.ISupportInitialize)manufacturerBindingSource).BeginInit();
((System.ComponentModel.ISupportInitialize)categoryBindingSource).BeginInit();
SuspendLayout();
//
// productBindingSource
//
productBindingSource.DataSource = typeof(Product);
//
// textBox2
//
textBox2.DataBindings.Add(new Binding("DataContext", productBindingSource, "Article", true));
textBox2.DataBindings.Add(new Binding("Text", productBindingSource, "Article", true, DataSourceUpdateMode.OnPropertyChanged));
textBox2.Location = new Point(152, 32);
textBox2.Name = "textBox2";
textBox2.Size = new Size(148, 23);
textBox2.TabIndex = 1;
//
// textBox4
//
textBox4.DataBindings.Add(new Binding("DataContext", productBindingSource, "Count", true));
textBox4.DataBindings.Add(new Binding("Text", productBindingSource, "Count", true, DataSourceUpdateMode.OnPropertyChanged));
textBox4.Location = new Point(152, 119);
textBox4.Name = "textBox4";
textBox4.Size = new Size(148, 23);
textBox4.TabIndex = 3;
//
// textBox5
//
textBox5.DataBindings.Add(new Binding("DataContext", productBindingSource, "Price", true));
textBox5.DataBindings.Add(new Binding("Text", productBindingSource, "Price", true, DataSourceUpdateMode.OnPropertyChanged));
textBox5.Location = new Point(152, 162);
textBox5.Name = "textBox5";
textBox5.Size = new Size(148, 23);
textBox5.TabIndex = 4;
//
// textBox8
//
textBox8.DataBindings.Add(new Binding("DataContext", productBindingSource, "Discount", true));
textBox8.DataBindings.Add(new Binding("Text", productBindingSource, "Discount", true, DataSourceUpdateMode.OnPropertyChanged));
textBox8.Location = new Point(152, 300);
textBox8.Name = "textBox8";
textBox8.Size = new Size(148, 23);
textBox8.TabIndex = 7;
//
// textBox10
//
textBox10.DataBindings.Add(new Binding("DataContext", productBindingSource, "Description", true));
textBox10.DataBindings.Add(new Binding("Text", productBindingSource, "Description", true, DataSourceUpdateMode.OnPropertyChanged));
textBox10.Location = new Point(152, 389);
textBox10.Name = "textBox10";
textBox10.Size = new Size(148, 23);
textBox10.TabIndex = 9;
//
// label2
//
label2.AutoSize = true;
label2.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label2.Location = new Point(44, 32);
label2.Name = "label2";
label2.Size = new Size(80, 20);
label2.TabIndex = 12;
label2.Text = "Артикул:";
//
// label3
//
label3.AutoSize = true;
label3.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label3.Location = new Point(41, 75);
label3.Name = "label3";
label3.Size = new Size(86, 20);
label3.TabIndex = 13;
label3.Text = "Название:";
//
// label4
//
label4.AutoSize = true;
label4.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label4.Location = new Point(50, 118);
label4.Name = "label4";
label4.Size = new Size(69, 20);
label4.TabIndex = 14;
label4.Text = "Кол-во\u001e:";
//
// label5
//
label5.AutoSize = true;
label5.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label5.Location = new Point(50, 161);
label5.Name = "label5";
label5.Size = new Size(52, 20);
label5.TabIndex = 15;
label5.Text = "Цена:";
//
// label6
//
label6.AutoSize = true;
label6.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label6.Location = new Point(38, 211);
label6.Name = "label6";
label6.Size = new Size(100, 20);
label6.TabIndex = 16;
label6.Text = "Поставщик:";
//
// label7
//
label7.AutoSize = true;
label7.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label7.Location = new Point(12, 252);
label7.Name = "label7";
label7.Size = new Size(137, 20);
label7.TabIndex = 17;
label7.Text = "Производитель:";
label7.Click += label7_Click;
//
// label8
//
label8.AutoSize = true;
label8.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label8.Location = new Point(41, 300);
label8.Name = "label8";
label8.Size = new Size(69, 20);
label8.TabIndex = 18;
label8.Text = "Скидка:";
//
// label9
//
label9.AutoSize = true;
label9.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label9.Location = new Point(31, 348);
label9.Name = "label9";
label9.Size = new Size(92, 20);
label9.TabIndex = 19;
label9.Text = "Категория:";
//
// label10
//
label10.AutoSize = true;
label10.Font = new Font("Segoe UI Black", 11.25F, FontStyle.Bold);
label10.Location = new Point(37, 389);
label10.Name = "label10";
label10.Size = new Size(86, 20);
label10.TabIndex = 20;
label10.Text = "Описание:";
//
// comboBox1
//
comboBox1.DataBindings.Add(new Binding("SelectedValue", productBindingSource, "IdProductName", true, DataSourceUpdateMode.OnPropertyChanged));
comboBox1.DataSource = productNameBindingSource;
comboBox1.DisplayMember = "ProductName1";
comboBox1.FormattingEnabled = true;
comboBox1.Location = new Point(152, 75);
comboBox1.Name = "comboBox1";
comboBox1.Size = new Size(148, 23);
comboBox1.TabIndex = 23;
comboBox1.ValueMember = "IdProductName";
//
// productNameBindingSource
//
productNameBindingSource.DataSource = typeof(ProductName);
//
// comboBox2
//
comboBox2.DataBindings.Add(new Binding("SelectedValue", productBindingSource, "IdSupplier", true));
comboBox2.DataSource = supplierBindingSource;
comboBox2.DisplayMember = "SupplierName";
comboBox2.FormattingEnabled = true;
comboBox2.Location = new Point(152, 208);
comboBox2.Name = "comboBox2";
comboBox2.Size = new Size(148, 23);
comboBox2.TabIndex = 24;
comboBox2.ValueMember = "IdSupplier";
//
// supplierBindingSource
//
supplierBindingSource.DataSource = typeof(Supplier);
//
// comboBox3
//
comboBox3.DataBindings.Add(new Binding("SelectedValue", productBindingSource, "IdManufacturer", true));
comboBox3.DataSource = manufacturerBindingSource;
comboBox3.DisplayMember = "ManufacturerName";
comboBox3.FormattingEnabled = true;
comboBox3.Location = new Point(152, 252);
comboBox3.Name = "comboBox3";
comboBox3.Size = new Size(148, 23);
comboBox3.TabIndex = 25;
comboBox3.ValueMember = "IdManufacturer";
//
// manufacturerBindingSource
//
manufacturerBindingSource.DataSource = typeof(Manufacturer);
//
// comboBox4
//
comboBox4.DataBindings.Add(new Binding("SelectedValue", productBindingSource, "IdCategory", true));
comboBox4.DataSource = categoryBindingSource;
comboBox4.DisplayMember = "CategoryName";
comboBox4.FormattingEnabled = true;
comboBox4.Location = new Point(152, 345);
comboBox4.Name = "comboBox4";
comboBox4.Size = new Size(148, 23);
comboBox4.TabIndex = 26;
comboBox4.ValueMember = "IdCategory";
//
// categoryBindingSource
//
categoryBindingSource.DataSource = typeof(Category);
//
// SaveEditButton
//
SaveEditButton.BackColor = Color.MistyRose;
SaveEditButton.DialogResult = DialogResult.OK;
SaveEditButton.Font = new Font("Segoe UI Black", 14.25F, FontStyle.Bold, GraphicsUnit.Point, 204);
SaveEditButton.Location = new Point(85, 445);
SaveEditButton.Name = "SaveEditButton";
SaveEditButton.Size = new Size(160, 46);
SaveEditButton.TabIndex = 27;
SaveEditButton.Text = "Сохранить";
SaveEditButton.UseVisualStyleBackColor = false;
SaveEditButton.Click += SaveEditButton_Click;
//
// EditForm
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
BackColor = Color.PeachPuff;
ClientSize = new Size(324, 503);
Controls.Add(SaveEditButton);
Controls.Add(comboBox4);
Controls.Add(comboBox3);
Controls.Add(comboBox2);
Controls.Add(comboBox1);
Controls.Add(label10);
Controls.Add(label9);
Controls.Add(label8);
Controls.Add(label7);
Controls.Add(label6);
Controls.Add(label5);
Controls.Add(label4);
Controls.Add(label3);
Controls.Add(label2);
Controls.Add(textBox10);
Controls.Add(textBox8);
Controls.Add(textBox5);
Controls.Add(textBox4);
Controls.Add(textBox2);
Name = "EditForm";
Text = "EditForm";
Load += EditForm_Load;
((System.ComponentModel.ISupportInitialize)productBindingSource).EndInit();
((System.ComponentModel.ISupportInitialize)productNameBindingSource).EndInit();
((System.ComponentModel.ISupportInitialize)supplierBindingSource).EndInit();
((System.ComponentModel.ISupportInitialize)manufacturerBindingSource).EndInit();
((System.ComponentModel.ISupportInitialize)categoryBindingSource).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion
private Label label2;
private Label label3;
private Label label4;
private Label label5;
private Label label6;
private Label label7;
private Label label8;
private Label label9;
private Label label10;
public TextBox textBox2;
public TextBox textBox4;
public TextBox textBox5;
public TextBox textBox8;
public TextBox textBox10;
public BindingSource productBindingSource;
public ComboBox comboBox1;
public ComboBox comboBox2;
public ComboBox comboBox3;
public ComboBox comboBox4;
public BindingSource productNameBindingSource;
public BindingSource supplierBindingSource;
public BindingSource manufacturerBindingSource;
public BindingSource categoryBindingSource;
public Button SaveEditButton;
}
}

57
EditForm.cs Normal file
View File

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace samusev_42
{
public partial class EditForm : Form
{
/// валидация
public EditForm()
{
InitializeComponent();
this.textBox5.Validating += textBoxPrice_Validating;
}
private void textBoxPrice_Validating(object sender, CancelEventArgs e)
{
if (!string.IsNullOrWhiteSpace(textBox5.Text) && !decimal.TryParse(textBox5.Text, out _))
{
MessageBox.Show("В поле 'Цена' можно вводить только числа!", "Ошибка формата",
MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox5.SelectAll();
e.Cancel = true;
}
}
private void SaveEditButton_Click(object sender, EventArgs e)
{
}
private void label10_Click(object sender, EventArgs e)
{
}
private void EditForm_Load(object sender, EventArgs e)
{
}
private void label7_Click(object sender, EventArgs e)
{
}
}
}

150
EditForm.resx Normal file
View File

@ -0,0 +1,150 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="productBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="productNameBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>190, 17</value>
</metadata>
<metadata name="productNameBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>190, 17</value>
</metadata>
<metadata name="supplierBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>395, 17</value>
</metadata>
<metadata name="supplierBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>395, 17</value>
</metadata>
<metadata name="manufacturerBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>568, 17</value>
</metadata>
<metadata name="manufacturerBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>568, 17</value>
</metadata>
<metadata name="categoryBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>771, 17</value>
</metadata>
<metadata name="categoryBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>771, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>31</value>
</metadata>
</root>

293
Form1.Designer.cs generated Normal file
View File

@ -0,0 +1,293 @@
namespace samusev_42
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
bindingSource1 = new BindingSource(components);
button1 = new Button();
categorySource = new BindingSource(components);
dataGridView1 = new DataGridView();
idProductDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
articleDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
idProductNameDataGridViewTextBoxColumn = new DataGridViewComboBoxColumn();
product_nameSource = new BindingSource(components);
Column2 = new DataGridViewTextBoxColumn();
countDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
unitDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
priceDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
idSupplierDataGridViewTextBoxColumn = new DataGridViewComboBoxColumn();
SupplierSource = new BindingSource(components);
idManufacturerDataGridViewTextBoxColumn = new DataGridViewComboBoxColumn();
manufacturerSource = new BindingSource(components);
discountDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
idCategoryDataGridViewTextBoxColumn = new DataGridViewComboBoxColumn();
descriptionDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
photoDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
button2 = new Button();
buttonDelete = new Button();
buttonAdd = new Button();
((System.ComponentModel.ISupportInitialize)bindingSource1).BeginInit();
((System.ComponentModel.ISupportInitialize)categorySource).BeginInit();
((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit();
((System.ComponentModel.ISupportInitialize)product_nameSource).BeginInit();
((System.ComponentModel.ISupportInitialize)SupplierSource).BeginInit();
((System.ComponentModel.ISupportInitialize)manufacturerSource).BeginInit();
SuspendLayout();
//
// bindingSource1
//
bindingSource1.DataSource = typeof(Product);
//
// button1
//
button1.BackColor = Color.MistyRose;
button1.Font = new Font("Segoe UI", 12F, FontStyle.Bold);
button1.Location = new Point(128, 810);
button1.Name = "button1";
button1.Size = new Size(161, 38);
button1.TabIndex = 1;
button1.Text = "Сохранить";
button1.UseVisualStyleBackColor = false;
button1.Click += button1_Click;
//
// categorySource
//
categorySource.DataSource = typeof(Category);
//
// dataGridView1
//
dataGridView1.AutoGenerateColumns = false;
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dataGridView1.Columns.AddRange(new DataGridViewColumn[] { idProductDataGridViewTextBoxColumn, articleDataGridViewTextBoxColumn, idProductNameDataGridViewTextBoxColumn, Column2, countDataGridViewTextBoxColumn, unitDataGridViewTextBoxColumn, priceDataGridViewTextBoxColumn, idSupplierDataGridViewTextBoxColumn, idManufacturerDataGridViewTextBoxColumn, discountDataGridViewTextBoxColumn, idCategoryDataGridViewTextBoxColumn, descriptionDataGridViewTextBoxColumn, photoDataGridViewTextBoxColumn });
dataGridView1.DataSource = bindingSource1;
dataGridView1.Location = new Point(12, 12);
dataGridView1.Name = "dataGridView1";
dataGridView1.Size = new Size(1055, 779);
dataGridView1.TabIndex = 2;
//
// idProductDataGridViewTextBoxColumn
//
idProductDataGridViewTextBoxColumn.DataPropertyName = "IdProduct";
idProductDataGridViewTextBoxColumn.HeaderText = "№ Товара";
idProductDataGridViewTextBoxColumn.Name = "idProductDataGridViewTextBoxColumn";
//
// articleDataGridViewTextBoxColumn
//
articleDataGridViewTextBoxColumn.DataPropertyName = "Article";
articleDataGridViewTextBoxColumn.HeaderText = "Артикул Товара";
articleDataGridViewTextBoxColumn.Name = "articleDataGridViewTextBoxColumn";
//
// idProductNameDataGridViewTextBoxColumn
//
idProductNameDataGridViewTextBoxColumn.DataPropertyName = "IdProductName";
idProductNameDataGridViewTextBoxColumn.DataSource = product_nameSource;
idProductNameDataGridViewTextBoxColumn.DisplayMember = "ProductName1";
idProductNameDataGridViewTextBoxColumn.HeaderText = "Название";
idProductNameDataGridViewTextBoxColumn.Name = "idProductNameDataGridViewTextBoxColumn";
idProductNameDataGridViewTextBoxColumn.Resizable = DataGridViewTriState.True;
idProductNameDataGridViewTextBoxColumn.SortMode = DataGridViewColumnSortMode.Automatic;
idProductNameDataGridViewTextBoxColumn.ValueMember = "IdProductName";
//
// product_nameSource
//
product_nameSource.DataSource = typeof(ProductName);
//
// Column2
//
Column2.DataPropertyName = "CountUnit";
Column2.HeaderText = "Количество";
Column2.Name = "Column2";
Column2.ReadOnly = true;
//
// countDataGridViewTextBoxColumn
//
countDataGridViewTextBoxColumn.DataPropertyName = "Count";
countDataGridViewTextBoxColumn.HeaderText = "Кол-Во";
countDataGridViewTextBoxColumn.Name = "countDataGridViewTextBoxColumn";
countDataGridViewTextBoxColumn.Visible = false;
//
// unitDataGridViewTextBoxColumn
//
unitDataGridViewTextBoxColumn.DataPropertyName = "Unit";
unitDataGridViewTextBoxColumn.HeaderText = "Штук";
unitDataGridViewTextBoxColumn.Name = "unitDataGridViewTextBoxColumn";
unitDataGridViewTextBoxColumn.Visible = false;
//
// priceDataGridViewTextBoxColumn
//
priceDataGridViewTextBoxColumn.DataPropertyName = "Price";
priceDataGridViewTextBoxColumn.HeaderText = "Цена";
priceDataGridViewTextBoxColumn.Name = "priceDataGridViewTextBoxColumn";
//
// idSupplierDataGridViewTextBoxColumn
//
idSupplierDataGridViewTextBoxColumn.DataPropertyName = "IdSupplier";
idSupplierDataGridViewTextBoxColumn.DataSource = SupplierSource;
idSupplierDataGridViewTextBoxColumn.DisplayMember = "SupplierName";
idSupplierDataGridViewTextBoxColumn.HeaderText = "Поставщик";
idSupplierDataGridViewTextBoxColumn.Name = "idSupplierDataGridViewTextBoxColumn";
idSupplierDataGridViewTextBoxColumn.Resizable = DataGridViewTriState.True;
idSupplierDataGridViewTextBoxColumn.SortMode = DataGridViewColumnSortMode.Automatic;
idSupplierDataGridViewTextBoxColumn.ValueMember = "IdSupplier";
//
// SupplierSource
//
SupplierSource.DataSource = typeof(Supplier);
//
// idManufacturerDataGridViewTextBoxColumn
//
idManufacturerDataGridViewTextBoxColumn.DataPropertyName = "IdManufacturer";
idManufacturerDataGridViewTextBoxColumn.DataSource = manufacturerSource;
idManufacturerDataGridViewTextBoxColumn.DisplayMember = "ManufacturerName";
idManufacturerDataGridViewTextBoxColumn.HeaderText = "Производитель";
idManufacturerDataGridViewTextBoxColumn.Name = "idManufacturerDataGridViewTextBoxColumn";
idManufacturerDataGridViewTextBoxColumn.Resizable = DataGridViewTriState.True;
idManufacturerDataGridViewTextBoxColumn.SortMode = DataGridViewColumnSortMode.Automatic;
idManufacturerDataGridViewTextBoxColumn.ValueMember = "IdManufacturer";
//
// manufacturerSource
//
manufacturerSource.DataSource = typeof(Manufacturer);
//
// discountDataGridViewTextBoxColumn
//
discountDataGridViewTextBoxColumn.DataPropertyName = "Discount";
discountDataGridViewTextBoxColumn.HeaderText = "Скидка (%)";
discountDataGridViewTextBoxColumn.Name = "discountDataGridViewTextBoxColumn";
//
// idCategoryDataGridViewTextBoxColumn
//
idCategoryDataGridViewTextBoxColumn.DataPropertyName = "IdCategory";
idCategoryDataGridViewTextBoxColumn.DataSource = categorySource;
idCategoryDataGridViewTextBoxColumn.DisplayMember = "CategoryName";
idCategoryDataGridViewTextBoxColumn.HeaderText = "Категория";
idCategoryDataGridViewTextBoxColumn.Name = "idCategoryDataGridViewTextBoxColumn";
idCategoryDataGridViewTextBoxColumn.Resizable = DataGridViewTriState.True;
idCategoryDataGridViewTextBoxColumn.SortMode = DataGridViewColumnSortMode.Automatic;
idCategoryDataGridViewTextBoxColumn.ValueMember = "IdCategory";
//
// descriptionDataGridViewTextBoxColumn
//
descriptionDataGridViewTextBoxColumn.DataPropertyName = "Description";
descriptionDataGridViewTextBoxColumn.HeaderText = "Описание";
descriptionDataGridViewTextBoxColumn.Name = "descriptionDataGridViewTextBoxColumn";
//
// photoDataGridViewTextBoxColumn
//
photoDataGridViewTextBoxColumn.DataPropertyName = "Photo";
photoDataGridViewTextBoxColumn.HeaderText = "Фото";
photoDataGridViewTextBoxColumn.Name = "photoDataGridViewTextBoxColumn";
photoDataGridViewTextBoxColumn.Visible = false;
//
// button2
//
button2.BackColor = Color.MistyRose;
button2.Font = new Font("Segoe UI", 12F, FontStyle.Bold);
button2.Location = new Point(360, 810);
button2.Name = "button2";
button2.Size = new Size(149, 38);
button2.TabIndex = 3;
button2.Text = "Редактировать";
button2.UseVisualStyleBackColor = false;
button2.Click += button2_Click;
//
// buttonDelete
//
buttonDelete.BackColor = Color.MistyRose;
buttonDelete.Font = new Font("Segoe UI", 12F, FontStyle.Bold);
buttonDelete.Location = new Point(588, 810);
buttonDelete.Name = "buttonDelete";
buttonDelete.Size = new Size(139, 38);
buttonDelete.TabIndex = 5;
buttonDelete.Text = "Удалить";
buttonDelete.UseVisualStyleBackColor = false;
buttonDelete.Click += buttonDelete_Click;
//
// buttonAdd
//
buttonAdd.BackColor = Color.MistyRose;
buttonAdd.DialogResult = DialogResult.OK;
buttonAdd.Font = new Font("Segoe UI", 12F, FontStyle.Bold);
buttonAdd.Location = new Point(807, 810);
buttonAdd.Name = "buttonAdd";
buttonAdd.Size = new Size(131, 39);
buttonAdd.TabIndex = 6;
buttonAdd.Text = "Добавить";
buttonAdd.UseVisualStyleBackColor = false;
buttonAdd.Click += buttonAdd_Click_1;
//
// Form1
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
BackColor = Color.PeachPuff;
ClientSize = new Size(1099, 861);
Controls.Add(buttonAdd);
Controls.Add(buttonDelete);
Controls.Add(button2);
Controls.Add(dataGridView1);
Controls.Add(button1);
Name = "Form1";
Text = "Самусев ИСП-42 №3,4.5";
((System.ComponentModel.ISupportInitialize)bindingSource1).EndInit();
((System.ComponentModel.ISupportInitialize)categorySource).EndInit();
((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit();
((System.ComponentModel.ISupportInitialize)product_nameSource).EndInit();
((System.ComponentModel.ISupportInitialize)SupplierSource).EndInit();
((System.ComponentModel.ISupportInitialize)manufacturerSource).EndInit();
ResumeLayout(false);
}
#endregion
private BindingSource bindingSource1;
private BindingSource categorySource;
private DataGridView dataGridView1;
private BindingSource manufacturerSource;
private BindingSource product_nameSource;
private BindingSource SupplierSource;
private DataGridViewTextBoxColumn idProductDataGridViewTextBoxColumn;
private DataGridViewTextBoxColumn articleDataGridViewTextBoxColumn;
private DataGridViewComboBoxColumn idProductNameDataGridViewTextBoxColumn;
private DataGridViewTextBoxColumn Column2;
private DataGridViewTextBoxColumn countDataGridViewTextBoxColumn;
private DataGridViewTextBoxColumn unitDataGridViewTextBoxColumn;
private DataGridViewTextBoxColumn priceDataGridViewTextBoxColumn;
private DataGridViewComboBoxColumn idSupplierDataGridViewTextBoxColumn;
private DataGridViewComboBoxColumn idManufacturerDataGridViewTextBoxColumn;
private DataGridViewTextBoxColumn discountDataGridViewTextBoxColumn;
private DataGridViewComboBoxColumn idCategoryDataGridViewTextBoxColumn;
private DataGridViewTextBoxColumn descriptionDataGridViewTextBoxColumn;
private DataGridViewTextBoxColumn photoDataGridViewTextBoxColumn;
public Button button2;
public Button button1;
private Button buttonDelete;
public Button buttonAdd;
}
}

124
Form1.cs Normal file
View File

@ -0,0 +1,124 @@
using Microsoft.EntityFrameworkCore;
namespace samusev_42
{
public partial class Form1 : Form
{
Ispr2522SamusevOvLazarev2Context context;
public Form1()
{
InitializeComponent();
/// ïðè ñîçäàíèè çàïèñè - îíà íå íà÷èíàåòñÿ ñ 0 è íå ëîìàåòñÿ
dataGridView1.AllowUserToAddRows = false;
dataGridView1.DataError += (s, e) => {
MessageBox.Show("Îøèáêà ôîðìàòà äàííûõ! Ïðîâåðüòå, ÷òî â ÷èñëîâûå ïîëÿ íå ââåäåíû áóêâû.",
"Îøèáêà ââîäà", MessageBoxButtons.OK, MessageBoxIcon.Warning);
e.ThrowException = false;
};
dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
context = new Ispr2522SamusevOvLazarev2Context();
context.Products.Include(x => x.IdCategoryNavigation).Load();
context.Products.Include(x => x.IdManufacturerNavigation).Load();
context.Products.Include(x => x.IdProductNameNavigation).Load();
context.Products.Include(x => x.IdSupplierNavigation).Load();
context.Categories.Load();
context.Manufacturers.Load();
context.Database.EnsureCreated();
bindingSource1.DataSource = context.Products.Local.ToBindingList();
categorySource.DataSource = context.Categories.Local.ToBindingList();
manufacturerSource.DataSource = context.Manufacturers.Local.ToBindingList();
product_nameSource.DataSource = context.ProductNames.Local.ToBindingList();
SupplierSource.DataSource = context.Suppliers.Local.ToBindingList();
}
private void button1_Click(object sender, EventArgs e)
{
context.SaveChanges();
dataGridView1.Refresh();
}
private void button2_Click(object sender, EventArgs e)
{
if (bindingSource1.Current == null) return;
var form = new EditForm();
form.categoryBindingSource.DataSource = categorySource.DataSource;
form.manufacturerBindingSource.DataSource = manufacturerSource.DataSource;
form.productNameBindingSource.DataSource = product_nameSource.DataSource;
form.supplierBindingSource.DataSource = SupplierSource.DataSource;
form.productBindingSource.DataSource = bindingSource1.Current;
if (form.ShowDialog() == DialogResult.OK)
{
bindingSource1.EndEdit();
context.SaveChanges();
dataGridView1.Refresh();
}
}
private void SaveEditButton_Click(object sender, EventArgs e)
{
context.SaveChanges();
dataGridView1.Refresh();
}
private void buttonDelete_Click(object sender, EventArgs e)
{
bindingSource1.RemoveCurrent();
context.SaveChanges();
dataGridView1.Refresh();
}
/// âàëèäàöèÿ + çàïîëíåíèå êîìáîáîêñîâ è òåêñòáîêñîâ ÷òîáû íå áûëî îøèáêè null
private void buttonAdd_Click_1(object sender, EventArgs e)
{
var newProduct = new Product();
newProduct.Article = "";
newProduct.Unit = "øò.";
newProduct.Description = "-";
newProduct.Photo = "";
newProduct.Price = 0;
newProduct.Count = 0;
newProduct.Discount = 0;
var form = new EditForm();
form.categoryBindingSource.DataSource = categorySource;
form.manufacturerBindingSource.DataSource = manufacturerSource;
form.productNameBindingSource.DataSource = product_nameSource;
form.supplierBindingSource.DataSource = SupplierSource;
form.productBindingSource.DataSource = newProduct;
if (form.ShowDialog() == DialogResult.OK)
{
try
{
if (newProduct.IdProductName <= 0)
throw new System.ComponentModel.DataAnnotations.ValidationException("Âûáåðèòå íàçâàíèå òîâàðà!");
if (string.IsNullOrWhiteSpace(newProduct.Article))
throw new System.ComponentModel.DataAnnotations.ValidationException("Àðòèêóë íå ìîæåò áûòü ïóñòûì!");
if (newProduct.Price < 0)
throw new System.ComponentModel.DataAnnotations.ValidationException("Öåíà íå ìîæåò áûòü îòðèöàòåëüíîé!");
context.Products.Add(newProduct);
context.SaveChanges();
bindingSource1.DataSource = context.Products.Local.ToBindingList();
dataGridView1.Refresh();
MessageBox.Show("Äàííûå óñïåøíî ñîõðàíåíû â áàçó!");
}
catch (System.ComponentModel.DataAnnotations.ValidationException valEx)
{
MessageBox.Show(valEx.Message, "Âíèìàíèå", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
catch (Exception ex)
{
string inner = ex.InnerException?.Message ?? ex.Message;
MessageBox.Show($"Îøèáêà ÁÄ: {inner}");
context.Entry(newProduct).State = EntityState.Detached;
}
}
}
}
}

141
Form1.resx Normal file
View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="categorySource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>154, 17</value>
</metadata>
<metadata name="product_nameSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>452, 17</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="SupplierSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>619, 17</value>
</metadata>
<metadata name="manufacturerSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>290, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>25</value>
</metadata>
</root>

View File

@ -0,0 +1,311 @@
using System;
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Pomelo.EntityFrameworkCore.MySql.Scaffolding.Internal;
namespace samusev_42;
public partial class Ispr2522SamusevOvLazarev2Context : DbContext
{
public Ispr2522SamusevOvLazarev2Context()
{
}
public Ispr2522SamusevOvLazarev2Context(DbContextOptions<Ispr2522SamusevOvLazarev2Context> options)
: base(options)
{
}
public virtual DbSet<Category> Categories { get; set; }
public virtual DbSet<Delivery> Deliveries { get; set; }
public virtual DbSet<Manufacturer> Manufacturers { get; set; }
public virtual DbSet<Name> Names { get; set; }
public virtual DbSet<OrdersProduct> OrdersProducts { get; set; }
public virtual DbSet<PickUpPoint> PickUpPoints { get; set; }
public virtual DbSet<Product> Products { get; set; }
public virtual DbSet<ProductName> ProductNames { get; set; }
public virtual DbSet<Role> Roles { get; set; }
public virtual DbSet<Status> Statuses { get; set; }
public virtual DbSet<Supplier> Suppliers { get; set; }
public virtual DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263.
=> optionsBuilder.UseMySql("server=cfif31.ru;username=ISPr25-22_SamusevOV;password=ISPr25-22_SamusevOV;database=ISPr25-22_SamusevOV_Lazarev2", Microsoft.EntityFrameworkCore.ServerVersion.Parse("8.0.45-mysql"));
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.UseCollation("utf8mb4_0900_ai_ci")
.HasCharSet("utf8mb4");
modelBuilder.Entity<Category>(entity =>
{
entity.HasKey(e => e.IdCategory).HasName("PRIMARY");
entity.ToTable("category");
entity.Property(e => e.IdCategory).HasColumnName("id_category");
entity.Property(e => e.CategoryName)
.HasMaxLength(45)
.HasColumnName("category_name");
});
modelBuilder.Entity<Delivery>(entity =>
{
entity.HasKey(e => e.IdDelivery).HasName("PRIMARY");
entity.ToTable("delivery");
entity.HasIndex(e => e.IdPickUpPoint, "fk_delivery_pick-up point_idx");
entity.HasIndex(e => e.IdStatus, "fk_delivery_status_idx");
entity.HasIndex(e => e.IdUser, "fk_delivery_user_idx");
entity.Property(e => e.IdDelivery).HasColumnName("id_delivery");
entity.Property(e => e.Code).HasColumnName("code");
entity.Property(e => e.DateDelivery)
.HasColumnType("datetime")
.HasColumnName("date_delivery");
entity.Property(e => e.DateOrder)
.HasColumnType("datetime")
.HasColumnName("date_order");
entity.Property(e => e.IdPickUpPoint).HasColumnName("id_pick-up point");
entity.Property(e => e.IdStatus).HasColumnName("id_status");
entity.Property(e => e.IdUser).HasColumnName("id_user");
entity.HasOne(d => d.IdPickUpPointNavigation).WithMany(p => p.Deliveries)
.HasForeignKey(d => d.IdPickUpPoint)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_delivery_pick-up point");
entity.HasOne(d => d.IdStatusNavigation).WithMany(p => p.Deliveries)
.HasForeignKey(d => d.IdStatus)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_delivery_status");
entity.HasOne(d => d.IdUserNavigation).WithMany(p => p.Deliveries)
.HasForeignKey(d => d.IdUser)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_delivery_user");
});
modelBuilder.Entity<Manufacturer>(entity =>
{
entity.HasKey(e => e.IdManufacturer).HasName("PRIMARY");
entity.ToTable("manufacturer");
entity.Property(e => e.IdManufacturer).HasColumnName("id_manufacturer");
entity.Property(e => e.ManufacturerName)
.HasMaxLength(45)
.HasColumnName("manufacturer_name");
});
modelBuilder.Entity<Name>(entity =>
{
entity.HasKey(e => e.IdName).HasName("PRIMARY");
entity.ToTable("name");
entity.HasIndex(e => e.IdUser, "id_name_user_idx");
entity.Property(e => e.IdName).HasColumnName("id_name");
entity.Property(e => e.IdUser).HasColumnName("id_user");
entity.Property(e => e.NameFio)
.HasMaxLength(45)
.HasColumnName("name_fio");
entity.HasOne(d => d.IdUserNavigation).WithMany(p => p.Names)
.HasForeignKey(d => d.IdUser)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("id_name_user");
});
modelBuilder.Entity<OrdersProduct>(entity =>
{
entity.HasKey(e => e.IdOrdersProducts).HasName("PRIMARY");
entity.ToTable("orders_products");
entity.HasIndex(e => e.IdDelivery, "fk_order_products_delivery_idx");
entity.HasIndex(e => e.IdProduct, "fk_order_products_product_idx");
entity.Property(e => e.IdOrdersProducts).HasColumnName("id_orders_products");
entity.Property(e => e.Count).HasColumnName("count");
entity.Property(e => e.IdDelivery).HasColumnName("id_delivery");
entity.Property(e => e.IdProduct).HasColumnName("id_product");
entity.HasOne(d => d.IdDeliveryNavigation).WithMany(p => p.OrdersProducts)
.HasForeignKey(d => d.IdDelivery)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_order_products_delivery");
entity.HasOne(d => d.IdProductNavigation).WithMany(p => p.OrdersProducts)
.HasForeignKey(d => d.IdProduct)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_order_products_product");
});
modelBuilder.Entity<PickUpPoint>(entity =>
{
entity.HasKey(e => e.IdPickUpPoint).HasName("PRIMARY");
entity.ToTable("pick-up point");
entity.Property(e => e.IdPickUpPoint).HasColumnName("id_pick-up point");
entity.Property(e => e.Adress)
.HasMaxLength(45)
.HasColumnName("adress");
entity.Property(e => e.Index)
.HasMaxLength(45)
.HasColumnName("index");
});
modelBuilder.Entity<Product>(entity =>
{
entity.HasKey(e => e.IdProduct).HasName("PRIMARY");
entity.ToTable("product");
entity.HasIndex(e => e.IdCategory, "fk_product_category_idx");
entity.HasIndex(e => e.IdManufacturer, "fk_product_manufacturer_idx");
entity.HasIndex(e => e.IdProductName, "fk_product_product_name_idx");
entity.HasIndex(e => e.IdSupplier, "fk_product_supplier_idx");
entity.Property(e => e.IdProduct).HasColumnName("id_product");
entity.Property(e => e.Article)
.HasMaxLength(45)
.HasColumnName("article");
entity.Property(e => e.Count).HasColumnName("count");
entity.Property(e => e.Description)
.HasColumnType("text")
.HasColumnName("description");
entity.Property(e => e.Discount).HasColumnName("discount");
entity.Property(e => e.IdCategory).HasColumnName("id_category");
entity.Property(e => e.IdManufacturer).HasColumnName("id_manufacturer");
entity.Property(e => e.IdProductName).HasColumnName("id_product name");
entity.Property(e => e.IdSupplier).HasColumnName("id_supplier");
entity.Property(e => e.Photo)
.HasMaxLength(45)
.HasColumnName("photo");
entity.Property(e => e.Price)
.HasPrecision(5)
.HasColumnName("price");
entity.Property(e => e.Unit)
.HasMaxLength(45)
.HasColumnName("unit");
entity.HasOne(d => d.IdCategoryNavigation).WithMany(p => p.Products)
.HasForeignKey(d => d.IdCategory)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_product_category");
entity.HasOne(d => d.IdManufacturerNavigation).WithMany(p => p.Products)
.HasForeignKey(d => d.IdManufacturer)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_product_manufacturer");
entity.HasOne(d => d.IdProductNameNavigation).WithMany(p => p.Products)
.HasForeignKey(d => d.IdProductName)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_product_product_name");
entity.HasOne(d => d.IdSupplierNavigation).WithMany(p => p.Products)
.HasForeignKey(d => d.IdSupplier)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_product_supplier");
});
modelBuilder.Entity<ProductName>(entity =>
{
entity.HasKey(e => e.IdProductName).HasName("PRIMARY");
entity.ToTable("product name");
entity.Property(e => e.IdProductName).HasColumnName("id_product name");
entity.Property(e => e.ProductName1)
.HasMaxLength(45)
.HasColumnName("product name");
});
modelBuilder.Entity<Role>(entity =>
{
entity.HasKey(e => e.IdRole).HasName("PRIMARY");
entity.ToTable("role");
entity.Property(e => e.IdRole).HasColumnName("id_role");
entity.Property(e => e.RoleName)
.HasMaxLength(45)
.HasColumnName("role_name");
});
modelBuilder.Entity<Status>(entity =>
{
entity.HasKey(e => e.IdStatus).HasName("PRIMARY");
entity.ToTable("status");
entity.Property(e => e.IdStatus).HasColumnName("id_status");
entity.Property(e => e.StatusName)
.HasMaxLength(45)
.HasColumnName("status_name");
});
modelBuilder.Entity<Supplier>(entity =>
{
entity.HasKey(e => e.IdSupplier).HasName("PRIMARY");
entity.ToTable("supplier");
entity.Property(e => e.IdSupplier).HasColumnName("id_supplier");
entity.Property(e => e.SupplierName)
.HasMaxLength(45)
.HasColumnName("supplier_name");
});
modelBuilder.Entity<User>(entity =>
{
entity.HasKey(e => e.IdUser).HasName("PRIMARY");
entity.ToTable("user");
entity.HasIndex(e => e.IdRole, "fk_user_role_idx");
entity.Property(e => e.IdUser).HasColumnName("id_user");
entity.Property(e => e.IdRole).HasColumnName("id_role");
entity.Property(e => e.Login)
.HasMaxLength(45)
.HasColumnName("login");
entity.Property(e => e.Password)
.HasMaxLength(45)
.HasColumnName("password");
entity.HasOne(d => d.IdRoleNavigation).WithMany(p => p.Users)
.HasForeignKey(d => d.IdRole)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_user_role");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}

13
Manufacturer.cs Normal file
View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class Manufacturer
{
public int IdManufacturer { get; set; }
public string ManufacturerName { get; set; } = null!;
public virtual ICollection<Product> Products { get; set; } = new List<Product>();
}

15
Name.cs Normal file
View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class Name
{
public int IdName { get; set; }
public string NameFio { get; set; } = null!;
public int IdUser { get; set; }
public virtual User IdUserNavigation { get; set; } = null!;
}

19
OrdersProduct.cs Normal file
View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class OrdersProduct
{
public int IdOrdersProducts { get; set; }
public int IdDelivery { get; set; }
public int IdProduct { get; set; }
public int Count { get; set; }
public virtual Delivery IdDeliveryNavigation { get; set; } = null!;
public virtual Product IdProductNavigation { get; set; } = null!;
}

15
PickUpPoint.cs Normal file
View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class PickUpPoint
{
public int IdPickUpPoint { get; set; }
public string? Adress { get; set; }
public string Index { get; set; } = null!;
public virtual ICollection<Delivery> Deliveries { get; set; } = new List<Delivery>();
}

73
Product.cs Normal file
View File

@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
namespace samusev_42;
public partial class Product : IEditableObject
{
private Ispr2522SamusevOvLazarev2Context context;
public int IdProduct { get; set; }
public string Article { get; set; } = null!;
public int IdProductName { get; set; }
public string Unit { get; set; } = null!;
public decimal Price { get; set; }
public int IdSupplier { get; set; }
public int IdManufacturer { get; set; }
public int IdCategory { get; set; }
public int Discount { get; set; }
public int Count { get; set; }
public string Description { get; set; } = null!;
public string Photo { get; set; } = null!;
public virtual Category IdCategoryNavigation { get; set; } = null!;
public virtual Manufacturer IdManufacturerNavigation { get; set; } = null!;
public virtual ProductName IdProductNameNavigation { get; set; } = null!;
public virtual Supplier IdSupplierNavigation { get; set; } = null!;
public virtual ICollection<OrdersProduct> OrdersProducts { get; set; } = new List<OrdersProduct>();
// Реализация валидации IEditableObject
public void BeginEdit()
{
if (context == null)
{
context = new Ispr2522SamusevOvLazarev2Context();
context.Products.Attach(this);
}
}
public void CancelEdit()
{
if (context != null)
{
var entry = context.Entry(this);
if (entry.State == EntityState.Modified)
{
entry.Reload();
}
}
}
public void EndEdit()
{
// ВАЛИДАЦИЯ
if (string.IsNullOrWhiteSpace(this.Article))
{
throw new ValidationException("Артикул не может быть пустым!");
}
if (this.Price < 0)
{
throw new ValidationException("Цена не может быть отрицательной!");
}
if (context != null)
{
context.SaveChanges();
}
}
}

13
ProductName.cs Normal file
View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class ProductName
{
public int IdProductName { get; set; }
public string ProductName1 { get; set; } = null!;
public virtual ICollection<Product> Products { get; set; } = new List<Product>();
}

17
Program.cs Normal file
View File

@ -0,0 +1,17 @@
namespace samusev_42
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
// To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize();
Application.Run(new AuthForm());
}
}
}

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="Category" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>samusev_42.Category, samusev-42, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="Manufacturer" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>samusev_42.Manufacturer, samusev-42, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="OrdersProduct" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>samusev_42.OrdersProduct, samusev-42, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="Product" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>samusev_42.Product, samusev-42, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="ProductName" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>samusev_42.ProductName, samusev-42, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This file is automatically generated by Visual Studio. It is
used to store generic object data source configuration information.
Renaming the file extension or editing the content of this file may
cause the file to be unrecognizable by the program.
-->
<GenericObjectDataSource DisplayName="Supplier" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TypeInfo>samusev_42.Supplier, samusev-42, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
</GenericObjectDataSource>

63
Properties/Resources.Designer.cs generated Normal file
View File

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Этот код создан программой.
// Исполняемая версия:4.0.30319.42000
//
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
// повторной генерации кода.
// </auto-generated>
//------------------------------------------------------------------------------
namespace samusev_42.Properties {
using System;
/// <summary>
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
/// </summary>
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
// с помощью такого средства, как ResGen или Visual Studio.
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
// с параметром /str или перестройте свой проект VS.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("samusev_42.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

120
Properties/Resources.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

13
Role.cs Normal file
View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class Role
{
public int IdRole { get; set; }
public string RoleName { get; set; } = null!;
public virtual ICollection<User> Users { get; set; } = new List<User>();
}

13
Status.cs Normal file
View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class Status
{
public int IdStatus { get; set; }
public string StatusName { get; set; } = null!;
public virtual ICollection<Delivery> Deliveries { get; set; } = new List<Delivery>();
}

13
Supplier.cs Normal file
View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class Supplier
{
public int IdSupplier { get; set; }
public string SupplierName { get; set; } = null!;
public virtual ICollection<Product> Products { get; set; } = new List<Product>();
}

21
User.cs Normal file
View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
namespace samusev_42;
public partial class User
{
public int IdUser { get; set; }
public string Login { get; set; } = null!;
public string Password { get; set; } = null!;
public int IdRole { get; set; }
public virtual ICollection<Delivery> Deliveries { get; set; } = new List<Delivery>();
public virtual Role IdRoleNavigation { get; set; } = null!;
public virtual ICollection<Name> Names { get; set; } = new List<Name>();
}

39
samusev-42.csproj Normal file
View File

@ -0,0 +1,39 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<RootNamespace>samusev_42</RootNamespace>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="9.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" />
</ItemGroup>
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
</Project>

25
samusev-42.sln Normal file
View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.13.35931.197 d17.13
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "samusev-42", "samusev-42.csproj", "{ED29084E-1A2F-43BE-ADD8-A4AE71F92783}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{ED29084E-1A2F-43BE-ADD8-A4AE71F92783}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ED29084E-1A2F-43BE-ADD8-A4AE71F92783}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ED29084E-1A2F-43BE-ADD8-A4AE71F92783}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ED29084E-1A2F-43BE-ADD8-A4AE71F92783}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2743F97A-92F1-4906-80DB-89C4A8873133}
EndGlobalSection
EndGlobal