using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Швейная_фабрика { public partial class FormAddZak : Form { public FormAddZak() { InitializeComponent(); } public string IdZakazchik = FormMain.IDUser; // код авторизовавшегося заказчика string IdTkan = "", IdFur = "", IdIzd = ""; // код выбранной ткани и фурнитуры string TxtCon = @"Data Source=213.155.192.79,3002;Initial Catalog=СlothesFactoryLG;Persist Security Info=True;User ID=u21lebed;Password=hgm8"; class ItemTkani : Panel { public System.Windows.Forms.Label LblComment; public System.Windows.Forms.Label LblLength; public System.Windows.Forms.Label LblWith; public System.Windows.Forms.Label LblColor; public System.Windows.Forms.Label LblTitle; public System.Windows.Forms.Label lblID; public System.Windows.Forms.PictureBox PbxPhoto; public ItemTkani() { this.LblTitle = new System.Windows.Forms.Label(); this.LblColor = new System.Windows.Forms.Label(); this.LblWith = new System.Windows.Forms.Label(); this.LblLength = new System.Windows.Forms.Label(); this.LblComment = new System.Windows.Forms.Label(); this.lblID = new System.Windows.Forms.Label(); this.PbxPhoto = new System.Windows.Forms.PictureBox(); // // panel1 // this.BackColor = System.Drawing.Color.White; this.Controls.Add(this.LblComment); this.Controls.Add(this.LblLength); this.Controls.Add(this.LblWith); this.Controls.Add(this.LblColor); this.Controls.Add(this.LblTitle); this.Controls.Add(this.PbxPhoto); this.Location = new System.Drawing.Point(13, 13); this.Name = "panel1"; this.Size = new System.Drawing.Size(390, 161); this.TabIndex = 0; // // LblTitle // this.LblTitle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.LblTitle.Location = new System.Drawing.Point(225, 13); this.LblTitle.Name = "LblTitle"; this.LblTitle.Size = new System.Drawing.Size(147, 23); this.LblTitle.TabIndex = 1; this.LblTitle.Text = "label1"; // // LblColor // this.LblColor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.LblColor.Location = new System.Drawing.Point(225, 41); this.LblColor.Name = "LblColor"; this.LblColor.Size = new System.Drawing.Size(147, 23); this.LblColor.TabIndex = 2; this.LblColor.Text = "label2"; // // LblWith // this.LblWith.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.LblWith.Location = new System.Drawing.Point(225, 73); this.LblWith.Name = "LblWith"; this.LblWith.Size = new System.Drawing.Size(147, 23); this.LblWith.TabIndex = 3; this.LblWith.Text = "label3"; // // LblLength // this.LblLength.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.LblLength.Location = new System.Drawing.Point(225, 100); this.LblLength.Name = "LblLength"; this.LblLength.Size = new System.Drawing.Size(147, 23); this.LblLength.TabIndex = 4; this.LblLength.Text = "label4"; // // LblComment // this.LblComment.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.LblComment.Location = new System.Drawing.Point(225, 126); this.LblComment.Name = "LblComment"; this.LblComment.Size = new System.Drawing.Size(147, 29); this.LblComment.TabIndex = 5; this.LblComment.Text = "label5"; // // lblID // this.lblID.AutoSize = true; this.lblID.Location = new System.Drawing.Point(321, 13); this.lblID.Name = "lblID"; this.lblID.Size = new System.Drawing.Size(34, 16); this.lblID.TabIndex = 6; this.lblID.Text = "lblID"; // // pictureBox1 // this.PbxPhoto.Location = new System.Drawing.Point(16, 13); this.PbxPhoto.Name = "pictureBox1"; this.PbxPhoto.Size = new System.Drawing.Size(175, 129); this.PbxPhoto.TabIndex = 0; this.PbxPhoto.TabStop = false; this.PbxPhoto.SizeMode = PictureBoxSizeMode.Zoom; } } class ItemFurnitura : Panel { public System.Windows.Forms.Label label2; public System.Windows.Forms.Label label1; public System.Windows.Forms.Label lblID; public System.Windows.Forms.PictureBox PbxImage; public ItemFurnitura() { this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.lblID = new System.Windows.Forms.Label(); this.PbxImage = new System.Windows.Forms.PictureBox(); // // panel1 // this.BackColor = System.Drawing.Color.White; this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.Controls.Add(this.PbxImage); this.Location = new System.Drawing.Point(13, 13); this.Name = "panel1"; this.Size = new System.Drawing.Size(265, 225); this.TabIndex = 0; // // label1 // this.label1.Location = new System.Drawing.Point(34, 163); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(190, 23); this.label1.TabIndex = 1; this.label1.Text = "label1"; // // label2 // this.label2.Location = new System.Drawing.Point(34, 190); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(190, 23); this.label2.TabIndex = 2; this.label2.Text = "label2"; // // lblID // this.lblID.AutoSize = true; this.lblID.Location = new System.Drawing.Point(191, 190); this.lblID.Name = "lblID"; this.lblID.Size = new System.Drawing.Size(44, 16); this.lblID.TabIndex = 3; this.lblID.Text = "label3"; // // PbxImage // this.PbxImage.Location = new System.Drawing.Point(37, 18); this.PbxImage.Name = "PbxImage"; this.PbxImage.Size = new System.Drawing.Size(187, 133); this.PbxImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; this.PbxImage.TabIndex = 0; this.PbxImage.TabStop = false; } } struct Tkani { public string Title, Color, With, Length, Comment, Photo, ID; } struct Furnitura { public string Title, CountFur, Image, ID; } List LstTkani = new List(); ItemTkani CurrentTkan; List LstFurnitura = new List(); ItemFurnitura CurrentFurnitura; void GetDateFromDBForTkani() { SqlConnection Con = new SqlConnection(TxtCon); Con.Open(); string TxtQuery = @"select Tkan.id_Tkan, Tkan.Title as TitleTkan, Color.Title as TitleColor, Length, Width, Comment, NamePhoto from Tkan join Color on Tkan.id_color = Color.id_colors"; SqlCommand Query = new SqlCommand(TxtQuery, Con); SqlDataReader Res = Query.ExecuteReader(); LstTkani.Clear(); while (Res.Read()) { Tkani tkan = new Tkani(); tkan.Title = Res["TitleTkan"].ToString(); tkan.Color = Res["TitleColor"].ToString(); tkan.With = Res["Width"].ToString(); tkan.Length = Res["Length"].ToString(); tkan.Comment = Res["Comment"].ToString(); tkan.ID = Res["id_Tkan"].ToString(); tkan.Photo = Res["NamePhoto"].ToString(); LstTkani.Add(tkan); } Con.Close(); } void GetDateFromDBForFurnitura() { SqlConnection Con = new SqlConnection(TxtCon); Con.Open(); SqlCommand Query = new SqlCommand("select * from Furnitura ", Con); SqlDataReader Res = Query.ExecuteReader(); LstFurnitura.Clear(); while (Res.Read()) { Furnitura fur = new Furnitura(); fur.Title = Res["namefur"].ToString(); fur.CountFur = Res["countfur"].ToString(); fur.Image = Res["photo"].ToString(); fur.ID = Res["id_fur"].ToString(); LstFurnitura.Add(fur); } Con.Close(); } void FillPanelForFurnitura() { //очистить панель от старых данных TlpFurnitura.Controls.Clear(); //перебор записей о товарах for (int i = 0; i <= LstFurnitura.Count - 1; i++) { ItemFurnitura Item = new ItemFurnitura(); Item.label1.Text = "Название: "+LstFurnitura[i].Title; Item.label2.Text = "Кол-во на складе: "+LstFurnitura[i].CountFur; Item.lblID.Text = LstFurnitura[i].ID; try { Item.PbxImage.Image = Image.FromFile(Application.StartupPath + "\\furnitur\\" + LstFurnitura[i].Image); } catch { Item.PbxImage.Image = Image.FromFile(Application.StartupPath + "\\furnitur\\picture.png"); } Item.Click += Item_Click; Item.label1.Click += Label1_Click; Item.label2.Click += Label1_Click; Item.PbxImage.Click += Label1_Click; if (i == 0) { CurrentFurnitura = Item; CurrentFurnitura.BackColor = Color.LightGreen; IdFur = CurrentFurnitura.lblID.Text; TbxNameFur.Text = CurrentFurnitura.label1.Text.Substring(CurrentFurnitura.label1.Text.LastIndexOf(": ") + 2); TbxCountFurSklad.Text = CurrentFurnitura.label2.Text.Substring(CurrentFurnitura.label2.Text.LastIndexOf(": ")+2); } //добавить плитку в контейнер TlpFurnitura.Controls.Add(Item); } } private void Label1_Click(object sender, EventArgs e) { CurrentFurnitura.BackColor = Color.White; CurrentFurnitura = (sender as Control).Parent as ItemFurnitura; IdFur = CurrentFurnitura.lblID.Text; TbxNameFur.Text = CurrentFurnitura.label1.Text.Substring(CurrentFurnitura.label1.Text.LastIndexOf(": ") + 2); TbxCountFurSklad.Text = CurrentFurnitura.label2.Text.Substring(CurrentFurnitura.label2.Text.LastIndexOf(": ") + 2); CurrentFurnitura.BackColor = Color.LightGreen; } private void Item_Click(object sender, EventArgs e) { CurrentFurnitura.BackColor = Color.White; CurrentFurnitura = sender as ItemFurnitura; IdFur = CurrentFurnitura.lblID.Text; TbxNameFur.Text = CurrentFurnitura.label1.Text.Substring(CurrentFurnitura.label1.Text.LastIndexOf(": ") + 2); TbxCountFurSklad.Text = CurrentFurnitura.label2.Text.Substring(CurrentFurnitura.label2.Text.LastIndexOf(": ") + 2); CurrentFurnitura.BackColor = Color.LightGreen; } void FillPanelForTkani() { //очистить панель от старых данных TlpTkani.Controls.Clear(); //перебор записей о товарах for (int i = 0; i <= LstTkani.Count - 1; i++) { ItemTkani Item = new ItemTkani(); Item.LblTitle.Text = "Название: " + LstTkani[i].Title; Item.LblColor.Text = "Цвет: "+LstTkani[i].Color; Item.LblWith.Text = "Ширина: "+LstTkani[i].With; Item.LblLength.Text = "Длинна: "+LstTkani[i].Length; Item.LblComment.Text = "Описание: "+LstTkani[i].Comment; Item.lblID.Text = LstTkani[i].ID; try { Item.PbxPhoto.Image = Image.FromFile(Application.StartupPath + "\\tkani\\" + LstTkani[i].Photo); } catch { Item.PbxPhoto.Image = Image.FromFile(Application.StartupPath + "\\tkani\\picture.png"); } Item.Click += Item_Click1; Item.lblID.Click += LblID_Click; Item.LblColor.Click += LblID_Click; Item.LblComment.Click += LblID_Click; Item.LblLength.Click += LblID_Click; Item.LblTitle.Click += LblID_Click; Item.LblWith.Click += LblID_Click; Item.PbxPhoto.Click += LblID_Click; if (i == 0) { CurrentTkan = Item; CurrentTkan.BackColor = Color.LightBlue; IdTkan = CurrentTkan.lblID.Text; TbxTitle.Text = CurrentTkan.LblTitle.Text.Substring(CurrentTkan.LblTitle.Text.LastIndexOf(": ") + 2); TbxColor.Text = CurrentTkan.LblColor.Text.Substring(CurrentTkan.LblColor.Text.LastIndexOf(": ") + 2); TbxWith.Text = CurrentTkan.LblWith.Text.Substring(CurrentTkan.LblWith.Text.LastIndexOf(": ") + 2); TbxLength.Text = CurrentTkan.LblLength.Text.Substring(CurrentTkan.LblLength.Text.LastIndexOf(": ") + 2); TbxDescription.Text = CurrentTkan.LblComment.Text.Substring(CurrentTkan.LblComment.Text.LastIndexOf(": ") + 2); } //добавить плитку в контейнер TlpTkani.Controls.Add(Item); } } private void LblID_Click(object sender, EventArgs e) { CurrentTkan.BackColor = Color.White; CurrentTkan = (sender as Control).Parent as ItemTkani; IdTkan = CurrentTkan.lblID.Text; TbxTitle.Text = CurrentTkan.LblTitle.Text.Substring(CurrentTkan.LblTitle.Text.LastIndexOf(": ") + 2); TbxColor.Text = CurrentTkan.LblColor.Text.Substring(CurrentTkan.LblColor.Text.LastIndexOf(": ") + 2); TbxWith.Text = CurrentTkan.LblWith.Text.Substring(CurrentTkan.LblWith.Text.LastIndexOf(": ") + 2); TbxLength.Text = CurrentTkan.LblLength.Text.Substring(CurrentTkan.LblLength.Text.LastIndexOf(": ") + 2); TbxDescription.Text = CurrentTkan.LblComment.Text.Substring(CurrentTkan.LblComment.Text.LastIndexOf(": ") + 2); CurrentTkan.BackColor = Color.LightBlue; } private void Item_Click1(object sender, EventArgs e) { CurrentTkan.BackColor = Color.White; CurrentTkan = sender as ItemTkani; IdTkan = CurrentTkan.lblID.Text; TbxTitle.Text = CurrentTkan.LblTitle.Text.Substring(CurrentTkan.LblTitle.Text.LastIndexOf(": ") + 2); TbxColor.Text = CurrentTkan.LblColor.Text.Substring(CurrentTkan.LblColor.Text.LastIndexOf(": ") + 2); TbxWith.Text = CurrentTkan.LblWith.Text.Substring(CurrentTkan.LblWith.Text.LastIndexOf(": ") + 2); TbxLength.Text = CurrentTkan.LblLength.Text.Substring(CurrentTkan.LblLength.Text.LastIndexOf(": ") + 2); TbxDescription.Text = CurrentTkan.LblComment.Text.Substring(CurrentTkan.LblComment.Text.LastIndexOf(": ") + 2); CurrentTkan.BackColor = Color.LightBlue; } /// /// Определение длины ткани, которую нужно отрезать от рулона /// для изготовления нужного кол-ва изделий заданного размера /// /// ширина рулона ткани /// ширина изделия /// длина изделия /// кол-во изделий /// длина ткани, которую нужно отрезать от рулона int CutTkan(int WidthTkan, int WidthIzd, int LengthIzd, int CountIzd) { // ЕСЛИ УКЛАДЫВАТЬ ИЗДЕЛИЯ НА ТКАНЬ В РУЛОНЕ ПО ШИРИНЕ ИЗДЕЛИЯ // кол-во изделий, умещающихся в один ряд на рулоне ткани int IzdInRow1 = WidthTkan / WidthIzd; // кол-во рядов, в каждом из которых IzdInRow1 изделий int Row1 = CountIzd / IzdInRow1; // если кол-во изделий в 1 ряду умноженное на кол-во рядов меньше // кол-ва всех изделий, добавить кол-во рядов if (IzdInRow1 * Row1 < CountIzd) Row1++; // длина ткани, которую нужно отрезать от рулона, если укладывать изделия // по ширине int CutTkan1 = LengthIzd * Row1; // ЕСЛИ УКЛАДЫВАТЬ ИЗДЕЛИЯ НА ТКАНЬ В РУЛОНЕ ПО ДЛИНЕ ИЗДЕЛИЯ // кол-во изделий, умещающихся в один ряд на рулоне ткани int IzdInRow2 = WidthTkan / LengthIzd; // кол-во рядов, в каждом из которых IzdInRow2 изделий int Row2 = CountIzd / IzdInRow2; // если перемножить кол-во изделий в 1 ряду на кол-во рядов и полученное // значение меньше кол-ва необходимых изделий, значит нужно использовать // еще один ряд if (IzdInRow2 * Row2 < CountIzd) Row2++; // длина ткани, которую нужно отрезать от рулона, если укладывать изделия // по длине int CutTkan2 = WidthIzd * Row2; // вернуть наименьшую длину return Math.Min(CutTkan1, CutTkan2); } private void BtnOK_Click(object sender, EventArgs e) { // int a = CutTkan(430, 150, 200, 4); //this.Text = a.ToString(); //return; // кол-во фурнитур, которое нужно сохранить в БД if (TbxCountFur.Text.Trim() == "" || TbxCountIzd.Text.Trim() == "") { MessageBox.Show("Не введено количество фурнитуры или изделий.", "Внимание!",MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } int NewCountFur = int.Parse(TbxCountFurSklad.Text) - int.Parse(TbxCountFur.Text) * int.Parse(TbxCountIzd.Text); SqlConnection con = new SqlConnection(TxtCon); con.Open(); string t1 = string.Format(@"update Furnitura set countfur = {0} where id_fur = {1}", NewCountFur, IdFur); SqlCommand query = new SqlCommand(t1, con); // выполнить запрос query.ExecuteNonQuery(); con.Close(); int WidthTkan = int.Parse(TbxWith.Text); // ширина ткани // ширина изделия int WidthIzd = int.Parse(DgvIzd.CurrentRow.Cells[3].Value.ToString()); // длина изделия int LengthIzd = int.Parse(DgvIzd.CurrentRow.Cells[2].Value.ToString()); int CountIzd = int.Parse(TbxCountIzd.Text); // кол-во изделий // отрезать от рулона ткани кусок нужной длины int NewLengthTkan = int.Parse(TbxLength.Text) - CutTkan(WidthTkan, WidthIzd, LengthIzd, CountIzd); // обновить таблицу Ткани (для выделенной ткани сохранить новую длину NewLengthTkan) con.Open(); string t2 = string.Format(@"update Tkan set Length = {0} where id_Tkan = {1}", NewLengthTkan, IdTkan); SqlCommand query1 = new SqlCommand(t2, con); // выполнить запрос query1.ExecuteNonQuery(); con.Close(); // код менеджера для обработки нового заказа нужно заменить на код наименее загруженного менеджера int IdManager = 2; //try //{ con.Open(); // SQL-запрос для добавления нового заказа string t = String.Format(@"insert into Orders (id_izd, id_zak, id_men, id_tkan, id_fur, countfur, countizd) values ({0}, {1}, {2}, {3}, {4}, {5}, {6})", IdIzd, IdZakazchik, IdManager, IdTkan, IdFur, TbxCountFur.Text, TbxCountIzd.Text); SqlCommand query2 = new SqlCommand(t, con); // выполнить запрос query2.ExecuteNonQuery(); con.Close(); MessageBox.Show("Заказ сформирован.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information); this.Close(); // закрыть форму //} //catch //{ // MessageBox.Show("Ошибка добавления нового заказа.", "Внимание!", // MessageBoxButtons.OK, MessageBoxIcon.Exclamation); //} } private void DgvIzd_CellClick(object sender, DataGridViewCellEventArgs e) { IdIzd = DgvIzd.CurrentRow.Cells[0].Value.ToString(); } private void FormZakazchik_Load(object sender, EventArgs e) { // TODO: данная строка кода позволяет загрузить данные в таблицу "сlothesFactoryLGDataSet.Izdelie". При необходимости она может быть перемещена или удалена. this.izdelieTableAdapter.Fill(this.сlothesFactoryLGDataSet.Izdelie); // TODO: данная строка кода позволяет загрузить данные в таблицу "сlothesFactoryLGDataSet.Users". При необходимости она может быть перемещена или удалена. this.usersTableAdapter.Fill(this.сlothesFactoryLGDataSet.Users); IdIzd = DgvIzd.CurrentRow.Cells[0].Value.ToString(); GetDateFromDBForTkani(); FillPanelForTkani(); GetDateFromDBForFurnitura(); FillPanelForFurnitura(); } } }