using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace OliviaAddIn
{
    public partial class SensCampos : Form
    {
        /**
        *	@file SensCampos.cs
        * Archivo de la clase ventana para la edición de los campos a leer en los datos recibidos por los sensores
        */
        /**
         *	Clase ventana para la edición de los campos a leer cuando se van a recoger los contenedores en funciónde del porcentaje de llenado recogidos por los sensores.
         */
        /**
        * Clase para la estructura de propiedades
        */
        Recogida reco = null;
        string id;
        string[] combo = new string[] { "No", "Si" };
        DateTime f_ini, f_fin;
        public bool acept = false;

        ////////////////////////////////////////////////////        
        public SensCampos(Recogida reco)
        {
            try
            {
                InitializeComponent();
                reinicia();
                textBox_id.Enabled = false;
                comboBox_media.Items.AddRange(combo);
                dateTimePicker_fin.Enabled = false;
                this.reco = reco;
            }
            catch (Exception)
            {
                MessageBox.Show("Error al iniciar la ventana de campos de los Sensores", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void reinicia()
        {
            id = RecogidaDef.campos_def.cons_id;//se pone el mismo ID que se ha puesto en el dialogo de editar Campos para la capa de recogida
                   
            RecogidaDef.campos.fecha_sens = DateTime.Now - DateTime.Now.TimeOfDay;
            f_ini = RecogidaDef.campos.fecha_sens;

            RecogidaDef.campos.fechaf_sens = DateTime.Now;
            f_fin = RecogidaDef.campos.fechaf_sens;
            
            //se rellenan los datos en el dialogo
            textBox_id.Text = id;

            dateTimePicker_ini.Value = f_ini;
            dateTimePicker_ini.MinDate = new DateTime(0001, 01, 01, 00, 00, 00);
            dateTimePicker_ini.MaxDate = new DateTime(2050, 01, 01, 00, 00, 00);

            dateTimePicker_fin.Value = f_fin;
            dateTimePicker_fin.MinDate = new DateTime(0001, 01, 01, 00, 00, 00);
            dateTimePicker_fin.MaxDate = new DateTime(2050, 01, 01, 00, 00, 00);
        }

        private void button_reset_Click(object sender, EventArgs e)
        {
            try
            {
                reinicia();
            }
            catch (Exception)
            {
                MessageBox.Show("Error al resetear", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        /*
         * Se validan los campos modificados y se guarda en memoria los nombres de los nuevos campos.
         * También se guardará en el archivo .INI una vez se vaya a ejecutar el proceso.
         */
        private void btn_acept_Click(object sender, EventArgs e)
        {
            try
            {
                acept = true;
                reco.id_sens = RecogidaDef.campos.cons_id_sens = RecogidaDef.campos_def.cons_id;

                f_ini = dateTimePicker_ini.Value;
                if (dateTimePicker_fin.Enabled == true)
                    f_fin = dateTimePicker_fin.Value;

                RecogidaDef.campos.fecha_sens = f_ini;
                if (comboBox_media.SelectedIndex == 1)
                {
                    RecogidaDef.campos.fechaf_sens = f_fin;
                    reco.media = 1;
                }
                else if (comboBox_media.SelectedIndex == 0)
                {
                    RecogidaDef.campos.fecha_sens = RecogidaDef.campos.fecha_sens.AddHours(-1);
                    RecogidaDef.campos.fechaf_sens = f_ini.AddSeconds(1);
                    reco.media = 0;
                }
                else
                {
                    MessageBox.Show("Hay que seleccionar si se requiere hacer la media de fechas", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    reco.media = -1;
                    return;
                }
                RecogidaDef.campos.cons_fecha_sens = RecogidaDef.campos.fecha_sens.ToString("yyyy-MM-dd") + "T" + RecogidaDef.campos.fecha_sens.ToString("HH:mm:ss");
                reco.fecha_sens = RecogidaDef.campos.cons_fecha_sens;
                reco.fecha_sens = reco.fecha_sens.Replace(":", "%%3A00");
                RecogidaDef.campos.cons_fechaf_sens = RecogidaDef.campos.fechaf_sens.ToString("yyyy-MM-dd") + "T" + RecogidaDef.campos.fechaf_sens.ToString("HH:mm:ss");
                reco.fechaf_sens = RecogidaDef.campos.cons_fechaf_sens;
                reco.fechaf_sens = reco.fechaf_sens.Replace(":", "%%3A00");

                Close();
            }
            catch (Exception)
            {
                MessageBox.Show("Error al validar los datos instroducidos en la ventana de Sensores", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void comboBox_media_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (comboBox_media.SelectedIndex == 1)
                dateTimePicker_fin.Enabled = true;
            else if (comboBox_media.SelectedIndex == 0)
                dateTimePicker_fin.Enabled = false;
            else
                MessageBox.Show("Hay que seleccionar si se requiere hacer la media de fechas", "Olivia", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

        private void SensCampos_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (acept == false)
            {
                reco.id_sens = null;
                reco.fecha_sens = null;
                reco.fechaf_sens = null;
            }
        }
    }
}
