using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace СУБД_Швейная_фабрика
{
    public partial class FormGetMaterial : Form
    {
        public FormGetMaterial()
        {
            InitializeComponent();
        }
        public struct Tkani
        {
            public string NameTkan, ColorTkan, WidthTkan, LengthTkan, Description;
            public Image PhotoTkan;
        }

        List<Tkani> LstTkani = new List<Tkani>();

        private void BtnLoadPhotoTkan_Click(object sender, EventArgs e)
        {
            try
            {
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                    PbxPhotoTkan.Image = Image.FromFile(openFileDialog1.FileName);
            }
            catch { }
        }

        private void BtnClearPhotoTkan_Click(object sender, EventArgs e)
        {
            DialogResult res = MessageBox.Show("Очистить фотографию?", "Внимание!",
                MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (res == DialogResult.Yes)
                PbxPhotoTkan.Image = null;
        }

        private void BtnAddTkan_Click(object sender, EventArgs e)
        {
            Tkani Tk1 = new Tkani();  // создать переменную для добавляемой ткани
            // прочитать в переменную данные из текстовых полей
            Tk1.NameTkan = TbxNameTkan.Text;
            Tk1.ColorTkan = TbxColorTkan.Text;
            Tk1.WidthTkan = TbxWidthTkan.Text;
            Tk1.LengthTkan = TbxLengthTkan.Text;
            Tk1.Description = TbxDescriptionTkan.Text;
            // взять фотографию ткани из PictureBox
            Tk1.PhotoTkan = PbxPhotoTkan.Image;
            LstTkani.Add(Tk1);  // добавить новую ткань в lstTkani
            // добавить новую ткань в DataGridView
            DgvTkani.Rows.Add(Tk1.NameTkan, Tk1.ColorTkan, Tk1.WidthTkan, Tk1.LengthTkan, Tk1.Description);
        }

        private void BtnDelTkan_Click(object sender, EventArgs e)
        {
            int NumTkan = DgvTkani.CurrentRow.Index;
            // если пользователь выделил в списке какую-то ткань
            if (NumTkan >= 0)
            {
                DialogResult res = MessageBox.Show("Удалить выделенную ткань?",
                    "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (res == DialogResult.Yes)
                {
                    // удалить выделенную ткань из обоих списков
                    LstTkani.RemoveAt(NumTkan);
                    DgvTkani.Rows.RemoveAt(NumTkan);
                }
            }
        }

        private void BtnOK_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(Properties.Settings.Default.FabricDeryugoConnectionString);
            foreach (Tkani Tk1 in LstTkani)
            {
                con.Open();
                if (Tk1.PhotoTkan != null)  // если есть изображение
                {
                    string t = string.Format(@"
insert into Tkani (nametkan, color, width, length, description, phototkan)
values ('{0}', '{1}', {2}, {3}, '{4}', @phototkan)",
    Tk1.NameTkan, Tk1.ColorTkan, Tk1.WidthTkan, Tk1.LengthTkan, Tk1.Description);
                    SqlCommand query1 = new SqlCommand(t, con);

                    MemoryStream ms = new MemoryStream();  // создать поток
                    // сохранить в поток изображение в формате Jpeg
                    Tk1.PhotoTkan.Save(ms, ImageFormat.Jpeg);
                    // добавить изображение в виде параметра к запросу
                    query1.Parameters.AddWithValue("@phototkan", ms.ToArray());
                    query1.ExecuteNonQuery();
                }
                else
                {
                    string t = string.Format(@"
insert into Tkani (nametkan, color, width, length, description)
values ('{0}', '{1}', {2}, {3}, '{4}')",
    Tk1.NameTkan, Tk1.ColorTkan, Tk1.WidthTkan, Tk1.LengthTkan, Tk1.Description);
                    SqlCommand query1 = new SqlCommand(t, con);
                    query1.ExecuteNonQuery();
                }

                con.Close();
            }

            MessageBox.Show("Документ принят к учету.", "Внимание!",
                MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.Close();
        }
    }
}
