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_Controles;
using Exferia_Formularios;
using Exferia_Aplicacion.Visualizacion;

namespace Exferia_Maestros._3_Vistas.ControlesPersonalizados_DentroPaneles
{
    public partial class CTU_P_Clientes_Emails : UserControl
    {
        #region Propiedades privadas
        private MAE_ClientesEmails g_mdl_MAE_ClientesEmails;
        private int g_int_NumeroObjeto;
        private List<INTERNO_ComboBox_Modelo> g_lst_Tipos_INTERNO_ComboBox_Modelo = new List<INTERNO_ComboBox_Modelo>();
        #endregion

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

        #region Constructor
        public CTU_P_Clientes_Emails(P_Base _frm_PAntalla_DeDondeHerede,
                                        int _int_NomerObjeto,
                                        MAE_ClientesEmails _mdl_MAE_ClientesEmails,
                                        List<INTERNO_ComboBox_Modelo> _lst_Tipos_INTERNO_ComboBox_Modelo)
        {
            InitializeComponent();

            Repintar.Empezar(this);

            g_int_NumeroObjeto = _int_NomerObjeto;
            g_mdl_MAE_ClientesEmails = _mdl_MAE_ClientesEmails;
            g_lst_Tipos_INTERNO_ComboBox_Modelo = _lst_Tipos_INTERNO_ComboBox_Modelo;

            //Tipo
            if (g_lst_Tipos_INTERNO_ComboBox_Modelo != null && g_lst_Tipos_INTERNO_ComboBox_Modelo.Count > 0)
            {
                ex_cbo_Tipo.Items.Clear();
                ex_cbo_Tipo.DataSource = g_lst_Tipos_INTERNO_ComboBox_Modelo;
                ex_cbo_Tipo.SelectedIndex = 0;
            }

            Cargar();
        }
        #endregion

        #region Cargar
        private void Cargar()
        {
            try
            {
                //Cargar los datos si los tuviera
                if (g_mdl_MAE_ClientesEmails != null)
                {
                    //Email
                    ex_usc_Email.Exferia_TextBox_Email_Valor = g_mdl_MAE_ClientesEmails.email;

                    //Tipo
                    ex_cbo_Tipo.SelectedItem = g_lst_Tipos_INTERNO_ComboBox_Modelo.Where(m => m.Identificador.Equals(g_mdl_MAE_ClientesEmails.tipo)).FirstOrDefault();

                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(CTU_P_Clientes_Emails) + "/" + nameof(Cargar));
            }
        }
        #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
            {
                //Email no puede estar vacio
                if (ex_usc_Email.Exferia_TextBox_Email_Valor.Trim().Length == 0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_usc_Email;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_NOSELECCIONADO(ex_usc_Email.Exferia_TextBox_Email_Titulo);
                }

                //El tipo si tiene algo relleno, tiene que se correcto
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto &&
                    (
                    ex_cbo_Tipo.SelectedItem == null ||
                    (ex_cbo_Tipo.SelectedItem != null && ((INTERNO_ComboBox_Modelo)ex_cbo_Tipo.SelectedItem).Identificador == "-1")))
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_VALIDACIONES_NOHAYREGISTROSSELECCIONADOS(ex_lbl_Tipo.Text);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_cbo_Tipo;
                }
            }
            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_Clientes_Emails) + "/" + 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 MAE_ClientesEmails Obtener_A_Grabar(long _lng_idCliente)
        {
            MAE_ClientesEmails mdl_MAE_ClientesEmails = new MAE_ClientesEmails();

            try
            {
                //id
                mdl_MAE_ClientesEmails.id = g_mdl_MAE_ClientesEmails != null ? g_mdl_MAE_ClientesEmails.id : -1;

                //idCliente
                mdl_MAE_ClientesEmails.idCliente = _lng_idCliente;

                //email
                mdl_MAE_ClientesEmails.email = ex_usc_Email.Exferia_TextBox_Email_Valor;

                //tipo
                mdl_MAE_ClientesEmails.tipo = ((INTERNO_ComboBox_Modelo)ex_cbo_Tipo.SelectedItem).Identificador;
            }
            catch (Exception ex)
            {
                throw new Control_Errores("", ex, nameof(CTU_P_Clientes_Emails) + "/" + nameof(Obtener_A_Grabar), true);
            }

            return mdl_MAE_ClientesEmails;
        }
        #endregion

        private void ex_btn_P_Clientes_Emails_Borrar_Click(object sender, EventArgs e)
        {
            //Para que salte el evento en el otro lado
            Boton_CTU_P_Clientes_Emails_Delete_Click?.Invoke(sender, new INTERNO_EventArgs(g_int_NumeroObjeto));
        }
        
    }
}
