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;
using System.Data.SqlClient;//Обратите внимаение - подключена библиотека
/// <summary>
/// Начинаем работать с этой формой только после выполнения двух предыдущих шагов
/// </summary>
namespace BB
{
    public partial class Main : Form
    {
        //создаем лист который будет хранить экземпляры нашего пользовательского интерфейса
        public List<ServiceLists> serviceList = new List<ServiceLists>();
        //ссылки на формы
        AdminAuth adminAutharization = new AdminAuth();
        ServiceClientBase serviceClientBaseForm = new ServiceClientBase();
        ClientBase clientBaseForm = new ClientBase();

        public Main()
        {
            InitializeComponent();
            //Запуск делегата
            Program.updateList += UpdateServiceList;
            Program.UpdateAll();

            
        }

        public void UpdateServiceList()
        {
            serviceList.Clear();//Очистка листа, где будут услуги
            while (ServiceList.Controls.Count > 0 )
            {
                ServiceList.Controls[0].Dispose();//Будет нужен когда реализуешь фильтрацию, но пока просто лежит, кушать не просит
            }

            SqlConnection connectToBase = SqlConnect.GetConnect();// вызов класса с подключением к бд
            connectToBase.Open();

            string sql = "select * from Service";//Строка для запроса

            SqlCommand command = new SqlCommand(sql, connectToBase);//запрос
            
            SqlDataReader reader = command.ExecuteReader();//Выполнение запроса

            int i = 0;//Для счетчика
            while(reader.Read())//Пока выполняется запрос делаем то что написано
            {
                //Добавляем последовательно экземпляры пользовательского интерфейса и конвертируем данные, потому что запрос передает их
                //в виде object
                serviceList.Add(new ServiceLists(
                    Convert.ToInt32(reader[0]), 
                    Convert.ToString(reader[1]), 
                    Convert.ToInt32(reader[2]), 
                    Convert.ToInt32(reader[3]), 
                    Convert.ToDouble(reader[5]), 
                    Convert.ToString(reader[6])));
                serviceList[i].Parent = ServiceList;//присваиваем нашей карточке родителя,а именно ServiceList
                ServiceList.Controls.Add(serviceList[i]);//И добавляем его
                i++;
            }
            
        }

        private void Main_Load(object sender, EventArgs e)
        {

        }

        private void AdminLabel_Click(object sender, EventArgs e)
        {
            adminAutharization.ShowDialog();
            
        }

        private void ClientBtn_Click(object sender, EventArgs e)
        {
            clientBaseForm.ShowDialog();
        }

        private void ServiceClientBtn_Click(object sender, EventArgs e)
        {
            serviceClientBaseForm.ShowDialog();
        }
    }
}
