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_Formularios;
using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Visualizacion;
using Exferia_Aplicacion.Modelos_Kronos;
using System.Data.SqlClient;
using Exferia_EntityFramework;
using Exferia_Kronos._1_Modelos;

namespace Exferia_Kronos._4_Vistas.ControlesPersonalizados_DentroPaneles
{
    public partial class CTU_P_TareaProgramada_CopiaSeguridad : UserControl
    {
        #region Propiedades privadas
        private P_Base g_frm_DeDondeHereda;
        private INTERNO_KRO_Procesos_Modelo g_mdl_INTERNO_KRO_Procesos_Modelo = null;
        private KRO_TareasProgramadas g_mdl_KRO_TareasProgramadas =null;
        private int g_int_NumerObjeto;

        private List<INTERNO_ComboBox_Modelo> g_lst_INTERNO_ComboBox_Modelo_BASEDATOS = new List<INTERNO_ComboBox_Modelo>();

        private bool g_bol_CargandoDatos = false;
        #endregion

        #region Constructor
        public CTU_P_TareaProgramada_CopiaSeguridad(P_Base _frm_DeDondeHereda,
                                                int _int_NumerObjeto,
                                                INTERNO_KRO_Procesos_Modelo _mdl_INTERNO_KRO_Procesos_Modelo,
                                                KRO_TareasProgramadas _mdl_KRO_TareasProgramadas)
        {
            InitializeComponent();

            try
            {
                Repintar.Empezar(this);

                g_frm_DeDondeHereda = _frm_DeDondeHereda;
                g_mdl_INTERNO_KRO_Procesos_Modelo = _mdl_INTERNO_KRO_Procesos_Modelo;
                g_mdl_KRO_TareasProgramadas = _mdl_KRO_TareasProgramadas;
                g_int_NumerObjeto = _int_NumerObjeto;

                Cargar_Datos();
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(CTU_P_TareaProgramada_CopiaSeguridad) + "/" + nameof(CTU_P_TareaProgramada_CopiaSeguridad));
            }
        }
        #endregion

        #region Cargar
        private void Cargar_Datos()
        {
            try
            {
                g_bol_CargandoDatos = true;

                //Cargar Datos si los tuviera
                if (g_mdl_KRO_TareasProgramadas != null)
                {
                    if (g_mdl_KRO_TareasProgramadas.tareaParametros!=null && g_mdl_KRO_TareasProgramadas.tareaParametros.Trim().Length > 0)
                    {
                        string[] arr_Parametros = g_mdl_KRO_TareasProgramadas.tareaParametros.Split('~');
                        if (arr_Parametros != null && arr_Parametros.Count() > 0)
                        {
                            foreach (string str_Parametro in arr_Parametros)
                            {
                                string[] arr_ValoresParametro = str_Parametro.Split('|');

                                if (arr_ValoresParametro != null && arr_ValoresParametro.Count() == 2)
                                {
                                    //Servidor
                                    if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_CONEXION_SERVIDOR.Codigo)
                                    {
                                        ex_txt_Servidor.Text = arr_ValoresParametro[1];
                                    }
                                    //Usuario/Clave
                                    else if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_CONEXION_USUARIOCLAVE.Codigo)
                                    {
                                        //Tiene usuario y Clave
                                        if (arr_ValoresParametro[1].Trim().Length > 0)
                                        {
                                            ex_rdb_ConClave.Checked = true;
                                            ex_txt_Usuario.Exferia_TextBox_NoBloquear = true;
                                            ex_txt_Clave.Exferia_TextBox_NoBloquear = true;

                                            string[] arr_UsuarioClave = arr_ValoresParametro[1].Trim().Split('§');
                                            if (arr_UsuarioClave != null && arr_UsuarioClave.Count() == 2)
                                            {
                                                ex_txt_Usuario.Text = arr_UsuarioClave[0];
                                                ex_txt_Clave.Text = arr_UsuarioClave[1];
                                            }

                                        }
                                        //No tiene usuario y clave
                                        else
                                        {
                                            ex_rdb_SinClave.Checked = true;
                                        }
                                    }
                                    //Base de datos
                                    else if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_CONEXION_BASEDATOS.Codigo)
                                    {
                                        Rellenar_BasesDatos();

                                        if (g_lst_INTERNO_ComboBox_Modelo_BASEDATOS.Count > 0)
                                        {
                                            ex_cbo_BaseDatos.SelectedItem = g_lst_INTERNO_ComboBox_Modelo_BASEDATOS.Where(m => m.Identificador.Equals(arr_ValoresParametro[1])).FirstOrDefault();
                                        }
                                    }
                                    //Destino-Ruta
                                    else if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_RUTA.Codigo)
                                    {
                                        ex_usc_Destino_Ruta.Exferia_FicheroSeleccion_NombreFichero = arr_ValoresParametro[1];
                                    }
                                    //Destino-Fichero
                                    else if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_NOMBREFICHERO.Codigo)
                                    {
                                        ex_txt_Destino_Nombre.Text = arr_ValoresParametro[1];
                                    }
                                    //Destino-NombreEquipo
                                    else if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_NOMBREEQUIPO.Codigo)
                                    {
                                        ex_txt_Destino_NombreEquipo.Text = arr_ValoresParametro[1];
                                    }
                                    //Destino-Dominio
                                    else if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_DOMINIO.Codigo)
                                    {
                                        ex_txt_Destino_Dominio.Text = arr_ValoresParametro[1];
                                    }
                                    //Destino-usuario-Clave
                                    else if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_USUARIOCLAVE.Codigo)
                                    {
                                        //Tiene usuario y Clave
                                        if (arr_ValoresParametro[1].Trim().Length > 0)
                                        {
                                            string[] arr_UsuarioClave = arr_ValoresParametro[1].Trim().Split('§');
                                            if (arr_UsuarioClave != null && arr_UsuarioClave.Count() == 2)
                                            {
                                                ex_txt_Destino_Usuario.Text = arr_UsuarioClave[0];
                                                ex_txt_Destino_Clave.Text = arr_UsuarioClave[1];
                                            }
                                        }
                                    }
                                    //Destino-Comprimir
                                    else if (arr_ValoresParametro[0] == Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_COMPRIMIR.Codigo)
                                    {
                                        ex_chk_Destino_Comprimido.Checked = arr_ValoresParametro[1] == "1" ? true : false;
                                    }
                                }
                            }
                        }
                    }

                    //retenciones_GuardarTodasLasVersiones_Dias
                    if (g_mdl_KRO_TareasProgramadas.retenciones_GuardarTodasLasVersiones_Dias != null)
                    {
                        ex_chk_Retencion_GuardarTodasLasVersiones.Checked = true;
                        ex_txt_Retencion_GuardarTodasLasVersiones_Dias.Text = g_mdl_KRO_TareasProgramadas.retenciones_GuardarTodasLasVersiones_Dias.Value.ToString();
                    }
                    else
                    {
                        ex_chk_Retencion_GuardarTodasLasVersiones.Checked = false;
                        ex_txt_Retencion_GuardarTodasLasVersiones_Dias.Text = "";
                    }

                    //retenciones_MantenerUltimaVersionDia_Dias
                    if (g_mdl_KRO_TareasProgramadas.retenciones_MantenerUltimaVersionDia_Dias != null)
                    {
                        ex_chk_Retencion_MantenerUltimaVersionDia.Checked = true;
                        ex_txt_Retencion_MantenerUltimaVersionDia_Dias.Text = g_mdl_KRO_TareasProgramadas.retenciones_MantenerUltimaVersionDia_Dias.Value.ToString();
                    }
                    else
                    {
                        ex_chk_Retencion_MantenerUltimaVersionDia.Checked = false;
                        ex_txt_Retencion_MantenerUltimaVersionDia_Dias.Text = "";
                    }

                    //retenciones_MantenerUltimaVersionSemana_Semanas
                    if (g_mdl_KRO_TareasProgramadas.retenciones_MantenerUltimaVersionSemana_Semanas != null)
                    {
                        ex_chk_Retencion_MantenerUltimaVersionSemana.Checked = true;
                        ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas.Text = g_mdl_KRO_TareasProgramadas.retenciones_MantenerUltimaVersionSemana_Semanas.Value.ToString();
                    }
                    else
                    {
                        ex_chk_Retencion_MantenerUltimaVersionSemana.Checked = false;
                        ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas.Text = "";
                    }

                    //retenciones_MantenerUltimaVersionMes_Meses
                    if (g_mdl_KRO_TareasProgramadas.retenciones_MantenerUltimaVersionMes_Meses != null)
                    {
                        ex_chk_Retencion_MantenerUltimaVersionMes.Checked = true;
                        ex_txt_Retencion_MantenerUltimaVersionMes_Meses.Text = g_mdl_KRO_TareasProgramadas.retenciones_MantenerUltimaVersionMes_Meses.Value.ToString();
                    }
                    else
                    {
                        ex_chk_Retencion_MantenerUltimaVersionMes.Checked = false;
                        ex_txt_Retencion_MantenerUltimaVersionMes_Meses.Text = "";
                    }

                    //retenciones_MantenerUltimaVersionAnyo_Anyos
                    if (g_mdl_KRO_TareasProgramadas.retenciones_MantenerUltimaVersionAnyo_Anyos != null)
                    {
                        ex_chk_Retencion_MantenerUltimaVersionAnyo.Checked = true;
                        ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos.Text = g_mdl_KRO_TareasProgramadas.retenciones_MantenerUltimaVersionAnyo_Anyos.Value.ToString();
                    }
                    else
                    {
                        ex_chk_Retencion_MantenerUltimaVersionAnyo.Checked = false;
                        ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos.Text = "";
                    }

                    //retenciones_UltimasVersionConservadas
                    if (g_mdl_KRO_TareasProgramadas.retenciones_UltimasVersionConservadas != null)
                    {
                        ex_txt_Retencion_UltimasVersionConservadas.Text = g_mdl_KRO_TareasProgramadas.retenciones_UltimasVersionConservadas.Value.ToString();
                    }
                    else
                    {
                        ex_txt_Retencion_UltimasVersionConservadas.Text = "";
                    }
                }
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(CTU_P_TareaProgramada_CopiaSeguridad) + "/" + nameof(Cargar_Datos));
            }
            finally
            {
                g_bol_CargandoDatos = false;
            }
        }
        #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
            {
                //Servidor no puede estar vacio
                if (ex_txt_Servidor.Text.Trim().Length == 0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_Servidor.Text);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Servidor;
                }

                //Usuario y Contraseña
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto &&
                    ex_rdb_ConClave.Checked)
                {
                    //Usuario no puede estar vacio
                    if (ex_txt_Usuario.Text.Trim().Length == 0)
                    {
                        mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                        mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_Usuario.Text);
                        mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Usuario;
                    }

                    //Clave no puede estar vacio
                    if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_txt_Clave.Text.Trim().Length == 0)
                    {
                        mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                        mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_Clave.Text);
                        mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Clave;
                    }
                }

                //Base de datos
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto &&
                    g_lst_INTERNO_ComboBox_Modelo_BASEDATOS.Count==0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_PREMESACABECERA_VALIDACION_NOTIENE_SELECCIONADOS(ex_lbl_BaseDatos.Text);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_cbo_BaseDatos;
                }

                //Ruta no puede estar vacio
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_usc_Destino_Ruta.Exferia_FicheroSeleccion_NombreFichero.Trim().Length == 0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_usc_Destino_Ruta.Exferia_FicheroSeleccion_Descripcion);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Servidor;
                }

                //Nombre no puede estar vacio
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_txt_Destino_Nombre.Text.Trim().Length == 0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_Destino_Nombre.Text);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Destino_Nombre;
                }

                //Nombre del equipo no puede estar vacio
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_txt_Destino_NombreEquipo.Text.Trim().Length == 0)
                {
                    mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                    mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_Destino_NombreEquipo.Text);
                    mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Destino_Nombre;
                }

                //Retenciones
                if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto)
                {
                    //retenciones_GuardarTodasLasVersiones_Dias
                    if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_chk_Retencion_GuardarTodasLasVersiones.Checked)
                    {
                        //No puede estar vacio
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_txt_Retencion_GuardarTodasLasVersiones_Dias.Text.Trim().Length == 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO("'" + ex_chk_Retencion_GuardarTodasLasVersiones.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_GuardarTodasLasVersiones_Dias;
                        }

                        //Debe ser mayor que 0
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && int.Parse(ex_txt_Retencion_GuardarTodasLasVersiones_Dias.Text.Trim())==0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_CERO("'" + ex_chk_Retencion_GuardarTodasLasVersiones.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_GuardarTodasLasVersiones_Dias;
                        }
                    }

                    //retenciones_MantenerUltimaVersionDia_Dias
                    if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_chk_Retencion_MantenerUltimaVersionDia.Checked)
                    {
                        //No puede estar vacio
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_txt_Retencion_MantenerUltimaVersionDia_Dias.Text.Trim().Length == 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO("'" + ex_chk_Retencion_MantenerUltimaVersionDia.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_MantenerUltimaVersionDia_Dias;
                        }

                        //Debe ser mayor que 0
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && int.Parse(ex_txt_Retencion_MantenerUltimaVersionDia_Dias.Text.Trim()) == 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_CERO("'" + ex_chk_Retencion_MantenerUltimaVersionDia.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_MantenerUltimaVersionDia_Dias;
                        }
                    }

                    //retenciones_MantenerUltimaVersionSemana_Semanas
                    if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_chk_Retencion_MantenerUltimaVersionSemana.Checked)
                    {
                        //No puede estar vacio
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas.Text.Trim().Length == 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO("'" + ex_chk_Retencion_MantenerUltimaVersionSemana.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas;
                        }

                        //Debe ser mayor que 0
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && int.Parse(ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas.Text.Trim()) == 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_CERO("'" + ex_chk_Retencion_MantenerUltimaVersionSemana.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas;
                        }
                    }

                    //retenciones_MantenerUltimaVersionMes_Meses
                    if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_chk_Retencion_MantenerUltimaVersionMes.Checked)
                    {
                        //No puede estar vacio
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_txt_Retencion_MantenerUltimaVersionMes_Meses.Text.Trim().Length == 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO("'" + ex_chk_Retencion_MantenerUltimaVersionMes.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_MantenerUltimaVersionMes_Meses;
                        }

                        //Debe ser mayor que 0
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && int.Parse(ex_txt_Retencion_MantenerUltimaVersionMes_Meses.Text.Trim()) == 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_CERO("'" + ex_chk_Retencion_MantenerUltimaVersionMes.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_MantenerUltimaVersionMes_Meses;
                        }
                    }

                    //retenciones_MantenerUltimaVersionAnyo_Anyos
                    if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_chk_Retencion_MantenerUltimaVersionAnyo.Checked)
                    {
                        //No puede estar vacio
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos.Text.Trim().Length == 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO("'" + ex_chk_Retencion_MantenerUltimaVersionAnyo.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos;
                        }

                        //Debe ser mayor que 0
                        if (mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto && int.Parse(ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos.Text.Trim())== 0)
                        {
                            mdl_INTERNO_ValorDevuelto_Modelo.TodoCorrecto = false;
                            mdl_INTERNO_ValorDevuelto_Modelo.Mensaje = Mensajes.G_STR_GENERAL_VALIDACIONES_CERO("'" + ex_chk_Retencion_MantenerUltimaVersionAnyo.Text + "'");
                            mdl_INTERNO_ValorDevuelto_Modelo.Objeto = ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos;
                        }
                    }
                }
            }
            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_TareaProgramada_CopiaSeguridad) + "/" + 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 Grabar
        public string Obtener_Parametros_Para_Grabar()
        {
            string str_Parametros = "";

            try
            {
                //Servidor
                str_Parametros += (Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_CONEXION_SERVIDOR.Codigo + "|" + ex_txt_Servidor.Text);

                //SEPARADOR
                str_Parametros += "~";

                //Usuario/Clave
                if (ex_rdb_ConClave.Checked)
                {
                    string str_UsuarioClave = ex_txt_Usuario.Text + "§" + ex_txt_Clave.Text;

                    str_Parametros += Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_CONEXION_USUARIOCLAVE.Codigo + "|" + str_UsuarioClave;
                }
                else
                {
                    str_Parametros += Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_CONEXION_USUARIOCLAVE.Codigo + "|";
                }

                //SEPARADOR
                str_Parametros += "~";

                //Base de datos
                str_Parametros += (Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_CONEXION_BASEDATOS.Codigo + "|" + ((INTERNO_ComboBox_Modelo)ex_cbo_BaseDatos.SelectedItem).Identificador);

                //SEPARADOR
                str_Parametros += "~";

                //Destino-Ruta
                str_Parametros += (Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_RUTA.Codigo + "|" + ex_usc_Destino_Ruta.Exferia_FicheroSeleccion_NombreFichero);

                //SEPARADOR
                str_Parametros += "~";

                //Destino-Fichero
                str_Parametros += (Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_NOMBREFICHERO.Codigo + "|" + ex_txt_Destino_Nombre.Text);

                //SEPARADOR
                str_Parametros += "~";

                //Destino-NombreEquipo
                str_Parametros += (Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_NOMBREEQUIPO.Codigo + "|" + ex_txt_Destino_NombreEquipo.Text);

                //SEPARADOR
                str_Parametros += "~";

                //Destino-Dominio
                str_Parametros += (Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_DOMINIO.Codigo + "|" + ex_txt_Destino_Dominio.Text);

                //SEPARADOR
                str_Parametros += "~";

                //Destino-usuario-Clave
                string str_Destino_UsuarioClave = "";
                if (ex_txt_Destino_Usuario.Text.Trim().Length>0 &&
                    ex_txt_Destino_Clave.Text.Trim().Length > 0)
                {
                    str_Destino_UsuarioClave = ex_txt_Destino_Usuario.Text + "§" + ex_txt_Destino_Clave.Text;
                }
                str_Parametros += (Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_USUARIOCLAVE.Codigo + "|" + str_Destino_UsuarioClave);

                //SEPARADOR
                str_Parametros += "~";

                //Destino-Comprimir
                str_Parametros += (Variables.G_MDL_KRONOS_TIPOTAREA_COPIASEGURIDAD_PARAMETROS_DESTINO_COMPRIMIR.Codigo + "|" + (ex_chk_Destino_Comprimido.Checked ? "1" : "0"));
            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(CTU_P_TareaProgramada_CopiaSeguridad) + "/" + nameof(Obtener_Parametros_Para_Grabar));
            }

            return str_Parametros;
        }

        public INTERNO_Retenciones_Modelo Obtener_Retenciones_Para_Grabar()
        {
            INTERNO_Retenciones_Modelo mdl_INTERNO_Retenciones_Modelo = new INTERNO_Retenciones_Modelo();

            try
            {
                //retenciones_GuardarTodasLasVersiones_Dias
                if (ex_chk_Retencion_GuardarTodasLasVersiones.Checked)
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_GuardarTodasLasVersiones_Dias = int.Parse(ex_txt_Retencion_GuardarTodasLasVersiones_Dias.Text);
                }
                else
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_GuardarTodasLasVersiones_Dias = null;
                }

                //retenciones_MantenerUltimaVersionDia_Dias
                if (ex_chk_Retencion_MantenerUltimaVersionDia.Checked)
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_MantenerUltimaVersionDia_Dias = int.Parse(ex_txt_Retencion_MantenerUltimaVersionDia_Dias.Text);
                }
                else
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_MantenerUltimaVersionDia_Dias = null;
                }

                //retenciones_MantenerUltimaVersionSemana_Semanas
                if (ex_chk_Retencion_MantenerUltimaVersionSemana.Checked)
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_MantenerUltimaVersionSemana_Semanas = int.Parse(ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas.Text);
                }
                else
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_MantenerUltimaVersionSemana_Semanas = null;
                }

                //retenciones_MantenerUltimaVersionMes_Meses
                if (ex_chk_Retencion_MantenerUltimaVersionMes.Checked)
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_MantenerUltimaVersionMes_Meses = int.Parse(ex_txt_Retencion_MantenerUltimaVersionMes_Meses.Text);
                }
                else
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_MantenerUltimaVersionMes_Meses = null;
                }

                //retenciones_MantenerUltimaVersionAnyo_Anyos
                if (ex_chk_Retencion_MantenerUltimaVersionAnyo.Checked)
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_MantenerUltimaVersionAnyo_Anyos = int.Parse(ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos.Text);
                }
                else
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_MantenerUltimaVersionAnyo_Anyos = null;
                }

                //retenciones_UltimasVersionConservadas
                if (ex_txt_Retencion_UltimasVersionConservadas.Text.Trim().Length>0)
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_UltimasVersionConservadas = int.Parse(ex_txt_Retencion_UltimasVersionConservadas.Text);
                }
                else
                {
                    mdl_INTERNO_Retenciones_Modelo.retenciones_UltimasVersionConservadas = null;
                }

            }
            catch (Control_Errores)
            {
                throw;
            }
            catch (Exception ex)
            {
                Control_Errores.Errores_Log("", ex, nameof(CTU_P_TareaProgramada_CopiaSeguridad) + "/" + nameof(Obtener_Retenciones_Para_Grabar));
            }

            return mdl_INTERNO_Retenciones_Modelo;
        }
        #endregion

        #region Controles

        private void ex_rdb_SinClave_CheckedChanged(object sender, EventArgs e)
        {
            if (g_bol_CargandoDatos == false)
            {
                if (ex_rdb_SinClave.Checked)
                {
                    ex_txt_Usuario.Text = "";
                    ex_txt_Usuario.Exferia_TextBox_NoBloquear = false;

                    ex_txt_Clave.Text = "";
                    ex_txt_Clave.Exferia_TextBox_NoBloquear = false;

                    Rellenar_BasesDatos();
                }
            }
        }
        private void ex_rdb_ConClave_CheckedChanged(object sender, EventArgs e)
        {
            if (g_bol_CargandoDatos == false)
            {
                if (ex_rdb_ConClave.Checked)
                {
                    ex_txt_Usuario.Text = "";
                    ex_txt_Usuario.Exferia_TextBox_NoBloquear = true;

                    ex_txt_Clave.Text = "";
                    ex_txt_Clave.Exferia_TextBox_NoBloquear = true;

                    Vaciar_BasesDatos();
                }
            }
        }

        #region Servidor
        private string g_str_Servidor_GotFocus = "";
        private void ex_txt_Servidor_Exferia_TextBox_Evento_GotFocus(object sender, EventArgs e)
        {
            g_str_Servidor_GotFocus = ex_txt_Servidor.Text;
        }

        private void ex_txt_Servidor_Exferia_TextBox_Evento_LostFocus(object sender, EventArgs e)
        {
            if (g_bol_CargandoDatos == false)
            {
                string str_Servidor_LostFocus = ex_txt_Servidor.Text;
                if (g_str_Servidor_GotFocus != str_Servidor_LostFocus &&
                    (
                        ex_rdb_ConClave.Checked ||
                        ex_rdb_SinClave.Checked
                    ))
                {
                    Rellenar_BasesDatos();
                }
            }
        }
        #endregion

        #region Usuario
        private string g_str_Usuario_GotFocus = "";
        private void ex_txt_Usuario_Exferia_TextBox_Evento_GotFocus(object sender, EventArgs e)
        {
            g_str_Usuario_GotFocus = ex_txt_Usuario.Text;
        }

        private void ex_txt_Usuario_Exferia_TextBox_Evento_LostFocus(object sender, EventArgs e)
        {
            if (g_bol_CargandoDatos == false)
            {
                string str_Usuario_LostFocus = ex_txt_Usuario.Text;

                if (g_str_Usuario_GotFocus != str_Usuario_LostFocus &&
                    ex_txt_Clave.Text.Trim().Length > 0)
                {
                    Rellenar_BasesDatos();
                }
            }
        }
        #endregion

        #region Clave
        private string g_str_Clave_GotFocus = "";
        private void ex_txt_Clave_Exferia_TextBox_Evento_GotFocus(object sender, EventArgs e)
        {
            g_str_Clave_GotFocus = ex_txt_Clave.Text;
        }

        private void ex_txt_Clave_Exferia_TextBox_Evento_LostFocus(object sender, EventArgs e)
        {
            if (g_bol_CargandoDatos == false)
            {
                string str_Clave_LostFocus = ex_txt_Clave.Text;

                if (g_str_Clave_GotFocus != str_Clave_LostFocus &&
                    ex_txt_Usuario.Text.Trim().Length > 0)
                {
                    Rellenar_BasesDatos();
                }
            }
        }
        #endregion

        #endregion

        #region Base de datos
        private void ex_btn_Actualizar_BD_Click(object sender, EventArgs e)
        {
            Rellenar_BasesDatos();
        }
        private void Vaciar_BasesDatos()
        {
            try
            {
                //Vaciar el Combo
                g_lst_INTERNO_ComboBox_Modelo_BASEDATOS.Clear();
                ex_cbo_BaseDatos.DataSource = null;
            }
            catch (Exception ex)
            {
                Mensajes.MostrarMensaje(ex.Message);
            }
        }
        private void Rellenar_BasesDatos()
        {
            try
            {
                //Vaciar el Combo
                g_lst_INTERNO_ComboBox_Modelo_BASEDATOS.Clear();
                ex_cbo_BaseDatos.DataSource = null;
              
                //Conexion
                if (ex_txt_Servidor.Text.Trim().Length>0)
                {
                    string str_Conexion = "Data Source=" + ex_txt_Servidor.Text + "; ";
                    string str_UsuarioClave = "Integrated Security=True;";
                    if (ex_rdb_ConClave.Checked)
                    {
                        str_UsuarioClave = "User Id =" + ex_txt_Usuario.Text + "; Password =" + ex_txt_Clave.Text + ";";
                    }
                    str_Conexion += str_UsuarioClave;

                    //Rellenar Listado
                    using (SqlConnection con = new SqlConnection(str_Conexion))
                    {
                        con.Open();
                        using (SqlCommand obj_SqlCommand = new SqlCommand("SELECT name from sys.databases", con))
                        {
                            using (SqlDataReader dr = obj_SqlCommand.ExecuteReader())
                            {
                                while (dr.Read())
                                {
                                    g_lst_INTERNO_ComboBox_Modelo_BASEDATOS.Add(new INTERNO_ComboBox_Modelo(dr[0].ToString(), dr[0].ToString(), null));
                                }
                            }
                        }
                    }
                }

                //rellenar el Modelo
                ex_cbo_BaseDatos.DataSource = g_lst_INTERNO_ComboBox_Modelo_BASEDATOS;
                if (g_lst_INTERNO_ComboBox_Modelo_BASEDATOS.Count>0)
                {
                    ex_cbo_BaseDatos.SelectedIndex = 0;
                }
            }
            catch (Exception ex)
            {
                Mensajes.MostrarMensaje(ex.Message);
            }
        }
        #endregion

        #region Retenciones
        private void ex_chk_Retencion_GuardarTodasLasVersiones_CheckedChanged(object sender, EventArgs e)
        {
            if (ex_chk_Retencion_GuardarTodasLasVersiones.Checked)
            {
                ex_txt_Retencion_GuardarTodasLasVersiones_Dias.Enabled = true;
            }
            else
            {
                ex_txt_Retencion_GuardarTodasLasVersiones_Dias.Enabled = false;
            }
        }
        private void ex_chk_Retencion_MantenerUltimaVersionDia_CheckedChanged(object sender, EventArgs e)
        {
            if (ex_chk_Retencion_MantenerUltimaVersionDia.Checked)
            {
                ex_txt_Retencion_MantenerUltimaVersionDia_Dias.Enabled = true;
            }
            else
            {
                ex_txt_Retencion_MantenerUltimaVersionDia_Dias.Enabled = false;
            }
        }

        private void ex_chk_Retencion_MantenerUltimaVersionSemana_CheckedChanged(object sender, EventArgs e)
        {
            if (ex_chk_Retencion_MantenerUltimaVersionSemana.Checked)
            {
                ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas.Enabled = true;
            }
            else
            {
                ex_txt_Retencion_MantenerUltimaVersionSemana_Semanas.Enabled = false;
            }
        }

        private void ex_chk_Retencion_MantenerUltimaVersionMes_CheckedChanged(object sender, EventArgs e)
        {
            if (ex_chk_Retencion_MantenerUltimaVersionMes.Checked)
            {
                ex_txt_Retencion_MantenerUltimaVersionMes_Meses.Enabled = true;
            }
            else
            {
                ex_txt_Retencion_MantenerUltimaVersionMes_Meses.Enabled = false;
            }
        }

        private void ex_chk_Retencion_MantenerUltimaVersionAnyo_CheckedChanged(object sender, EventArgs e)
        {
            if (ex_chk_Retencion_MantenerUltimaVersionAnyo.Checked)
            {
                ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos.Enabled = true;
            }
            else
            {
                ex_txt_Retencion_MantenerUltimaVersionAnyo_Anyos.Enabled = false;
            }
        }

        #endregion

        #region Comprobar Conexion con carperta Compartida
        private void ex_btn_P_TareaProgramada_ComprobarAcceso_Click(object sender, EventArgs e)
        {
            try
            {
                //Ruta no puede estar vacio
                if (ex_usc_Destino_Ruta.Exferia_FicheroSeleccion_NombreFichero.Trim().Length == 0)
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_usc_Destino_Ruta.Exferia_FicheroSeleccion_Descripcion));

                    return;
                }

                //Nombre de Equipo no puede estar vacio
                if (ex_txt_Destino_NombreEquipo.Text.Trim().Length == 0)
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_GENERAL_VALIDACIONES_VACIO(ex_lbl_Destino_NombreEquipo.Text));

                    return;
                }

                //Comprobar si puedo acceder a la carpeta
                using (AccesoCarpetasCompartidas.Access(ex_txt_Destino_NombreEquipo.Text, ex_txt_Destino_Dominio.Text, ex_txt_Destino_Usuario.Text, ex_txt_Destino_Clave.Text))
                {
                    Mensajes.MostrarMensaje(Mensajes.G_STR_KRONOS_MENSAJES_TAREAPROGRAMADA_DESTINO_CONEXIONREALIZADACONEXITO());
                }
            }
            catch (Win32Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion

    }
}
