using KlassenBIB;
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 SanShared;

namespace SanSystem
{
    
    public partial class frmObjektEdit : Form
    {
        Inspektionsobjekt inspektionsobjekt = null;
        
        public frmObjektEdit(Inspektionsobjekt inspektion)
        {
            InitializeComponent();


            btn_add_san.Text = Global.Instance.language.Labels["add_san"];
            btn_close.Text = Global.Instance.language.Labels["btn_close"];
            this.inspektionsobjekt = inspektion;

            foreach(Sanierung san in inspektion.Sanierung)
            {
                TabPage tab = new TabPage();
                if(san is InlinerSanierung)
                {
                    tab.Text = "InlinerSanierung";
                    UCInliner uCInliner = new UCInliner(san as InlinerSanierung);
                    uCInliner.Dock = DockStyle.Fill;
                    tab.Controls.Add(uCInliner);
                    tabControl1.TabPages.Add(tab);
                }
                else if(san is SchachtAnbindung)
                {
                    tab.Text = "Schachtanbindung";
                    UCSchachtanbindung uCSchachtanbindung = new UCSchachtanbindung(san as SchachtAnbindung);
                    uCSchachtanbindung.Dock = DockStyle.Fill;
                    tab.Controls.Add(uCSchachtanbindung);
                    tabControl1.TabPages.Add(tab);
                }
            }
            
           
        }

        private void frmObjektEdit_Load(object sender, EventArgs e)
        {
            txt_laenge_schacht.DataBindings.Add(new Binding("Text", inspektionsobjekt, "Schachtlaenge"));
            txt_objekt_name.DataBindings.Add(new Binding("Text", inspektionsobjekt, "Objektbezeichnung"));
            txt_punkt_von.DataBindings.Add(new Binding("Text", inspektionsobjekt, "VonPunkt"));
            txt_punkt_bis.DataBindings.Add(new Binding("Text", inspektionsobjekt, "BisPunkt"));
            txt_strasse.DataBindings.Add(new Binding("Text", inspektionsobjekt, "StrasseName"));
            txt_hausnummer.DataBindings.Add(new Binding("Text", inspektionsobjekt, "Hausnummer"));
            cb_material.DataBindings.Add(new Binding("Text", inspektionsobjekt, "RohrMaterial"));
            txt_haltungslaenge.DataBindings.Add(new Binding("Text", inspektionsobjekt, "Haltungslaenge"));
            txt_dn.DataBindings.Add(new Binding("Text", inspektionsobjekt, "Kanalrohrweite"));
            txt_pro_nr.DataBindings.Add(new Binding("Text", inspektionsobjekt, "ProjektNummer"));
            dt_haltunggemessen_datum.DataBindings.Add(new Binding("Value", inspektionsobjekt, "HaltungGemessen"));

        }

        private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
        {
            
            
        }

        private void btn_get_temp_Click(object sender, EventArgs e)
        {
            /*
            ITemperature temperature = TempCAN.TemperaturBuilder.Temperatur(TempCAN.TemperaturSchnittstellen.TINKERFORGE);

            double temperatur = temperature.GetTemperatur();
            inliner.TempAusen = temperatur;
            //var x = txt_temp_aussen.DataBindings;
            
            txt_temp_aussen.Update();
            */
        }

        private void btn_close_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btn_add_san_Click(object sender, EventArgs e)
        {
            FrmSelectNewSan frmSelectNewSan = new FrmSelectNewSan();

            frmSelectNewSan.AddInlinerClicked += FrmSelectNewSan_AddInlinerClicked;
            frmSelectNewSan.AddSchachtAnbindungClicked += FrmSelectNewSan_AddSchachtAnbindungClicked;

            frmSelectNewSan.ShowDialog();
        }

        private void FrmSelectNewSan_AddSchachtAnbindungClicked(object sender, EventArgs e)
        {
            SchachtAnbindung schachtAnbindung = new SchachtAnbindung();
            schachtAnbindung.Inspektionsobjekt = inspektionsobjekt;
            inspektionsobjekt.Sanierung.Add(schachtAnbindung);
            TabPage tab = new TabPage();
            tab.Text = "Schachtanbindung";
            UCSchachtanbindung uCSchachtanbindung = new UCSchachtanbindung(schachtAnbindung);
            uCSchachtanbindung.Dock = DockStyle.Fill;
            tab.Controls.Add(uCSchachtanbindung);
            tabControl1.TabPages.Add(tab);
        }

        private void FrmSelectNewSan_AddInlinerClicked(object sender, EventArgs e)
        {
            if(inspektionsobjekt.Sanierung.Count > 0)
            {
                foreach(Sanierung xsan in inspektionsobjekt.Sanierung)
                {
                    if(xsan is InlinerSanierung)
                    {
                        MessageBox.Show("Lustig Sie wollen einen Inliner in einem Inliner setzen?", "Lustig", MessageBoxButtons.OK, MessageBoxIcon.Question);
                        return;
                    }
                }
            }
            InlinerSanierung san = new InlinerSanierung();
            san.Inspektionsobjekt = inspektionsobjekt;
            inspektionsobjekt.Sanierung.Add(san);
            TabPage tab = new TabPage();
            tab.Text = "InlinerSanierung";
            UCInliner uCInliner = new UCInliner(san);
            uCInliner.Dock = DockStyle.Fill;
            tab.Controls.Add(uCInliner);
            tabControl1.TabPages.Add(tab);
        }

        
    }
}
