using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Exferia_EntityFramework;
using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Visualizacion;

namespace Exferia_General._3_Vistas.ControlesPersonalizados_DentroPaneles
{
    public partial class CTU_P_Configuracion_SW_Sigma_Direccion_Valor : UserControl
    {
        #region Propiedades privadas
        private GEN_Configuracion_SW_Sigma g_mdl_GEN_Configuracion_SW_Sigma=null;
        private int g_int_NumeroObjeto=-1;
        #endregion

        #region Eventos publicos
        public event EventHandler<INTERNO_EventArgs> Boton_P_Configuracion_SW_Sigma_Direccion_Valor_Delete_Click;
        #endregion

        #region Constructor
        public CTU_P_Configuracion_SW_Sigma_Direccion_Valor(int _int_NomerObjeto,
                                                            GEN_Configuracion_SW_Sigma _mdl_GEN_Configuracion_SW_Sigma)
        {
            InitializeComponent();

            try
            {
                Repintar.Empezar(this);

                g_int_NumeroObjeto = _int_NomerObjeto;
                g_mdl_GEN_Configuracion_SW_Sigma = _mdl_GEN_Configuracion_SW_Sigma;

                ex_txt_Orden.Text = g_int_NumeroObjeto.ToString();

                Cargar();
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(CTU_P_Configuracion_SW_Sigma_Direccion_Valor) + "/" + nameof(CTU_P_Configuracion_SW_Sigma_Direccion_Valor));
            }

        }
        #endregion

        #region Cargar
        private void Cargar()
        {
            try
            {
                //Cargar los datos si los tuviera
                if (g_mdl_GEN_Configuracion_SW_Sigma != null)
                {
                    //ip
                    ex_txt_IP.Text = g_mdl_GEN_Configuracion_SW_Sigma.ip;

                    //puerto
                    ex_txt_Puerto.Text = g_mdl_GEN_Configuracion_SW_Sigma.puerto;

                    //orden
                    ex_txt_Orden.Text = g_mdl_GEN_Configuracion_SW_Sigma.orden.ToString();
                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(CTU_P_Configuracion_SW_Sigma_Direccion_Valor) + "/" + nameof(Cargar));
            }
        }
        #endregion

        #region Borrar
        private void ex_btn_Borrar_Click(object sender, EventArgs e)
        {
            //Para que salte el evento en el otro lado
            Boton_P_Configuracion_SW_Sigma_Direccion_Valor_Delete_Click?.Invoke(sender, new INTERNO_EventArgs(g_int_NumeroObjeto));
        }
        #endregion

        #region Validacion
        public INTERNO_ValorDevuelto_Modelo ValidarDatos()
        {
            INTERNO_ValorDevuelto_Modelo mdl_INTERNO_ValorDevuelto_Modelo = new INTERNO_ValorDevuelto_Modelo();
            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = true;

            try
            {
                //La IP no puede estar vacia
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && 
                    ex_txt_IP.Text.Trim().Length == 0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_IP.Text);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_IP;
                }

                //El Puerto no puede estar vacia
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto &&
                     ex_txt_Puerto.Text.Trim().Length == 0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_Puerto.Text);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Puerto;
                }

                //El Orden no puede estar vacia
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto &&
                     ex_txt_Orden.Text.Trim().Length == 0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_Orden.Text);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Orden;
                }
            }
            catch (Control_Errores)
            {
                mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_VALIDARDATOSPANTALLA();
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(CTU_P_Configuracion_SW_Sigma_Direccion_Valor) + "/" + nameof(ValidarDatos));

                mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_MENSAJES_GENERAL_ERROR_VALIDARDATOSPANTALLA();
            }

            return mdl_INTERNO_ValorDevuelto_Modelo;
        }
        #endregion

        #region Obtener para Grabar
        public GEN_Configuracion_SW_Sigma Obtener_A_Grabar()
        {
            GEN_Configuracion_SW_Sigma mdl_GEN_Configuracion_SW_Sigma = new GEN_Configuracion_SW_Sigma();

            try
            {
                //id
                mdl_GEN_Configuracion_SW_Sigma.id = g_mdl_GEN_Configuracion_SW_Sigma != null ? g_mdl_GEN_Configuracion_SW_Sigma.id : -1;

                //ip
                mdl_GEN_Configuracion_SW_Sigma.ip = ex_txt_IP.Text;

                //puerto
                mdl_GEN_Configuracion_SW_Sigma.puerto = ex_txt_Puerto.Text;

                //orden
                mdl_GEN_Configuracion_SW_Sigma.orden = int.Parse(ex_txt_Orden.Text);

            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(CTU_P_Configuracion_SW_Sigma_Direccion_Valor) + "/" + nameof(Obtener_A_Grabar), true);
            }

            return mdl_GEN_Configuracion_SW_Sigma;
        }
        #endregion
    }
}
