private void TsmVerVencimientos_Click(object sender, EventArgs e)
        {
            string InformacionDelError = string.Empty;

            ClsVencimientosFuncionalidades VencimientosFuncionalidades = new ClsVencimientosFuncionalidades();
            VencimientoFuncionalidades     ComprobarVencimientos       = VencimientosFuncionalidades.LeerPorNumero(1, ref InformacionDelError);

            if (ComprobarVencimientos != null)
            {
                using (FrmInformacion FormInformacion = new FrmInformacion($"Vencimiento de todo el programa [ {ComprobarVencimientos.VencimientoGeneral.ToShortDateString()} ]\r\n\r\n" +
                                                                           $"Vencimiento de funciones especificas (estadisticas) [ {ComprobarVencimientos.VencimientoFunciones.ToShortDateString()} ]", ClsColores.Blanco, 200, 600))
                {
                    FormInformacion.ShowDialog();
                }
            }
            else if (InformacionDelError == string.Empty)
            {
                MessageBox.Show("Fallo al leer los datos para compobar el vencimiento de las funciones " +
                                "del sistema", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        private void FrmVencimientoFuncionalidades_Load(object sender, EventArgs e)
        {
            string InformacionDelError = string.Empty;

            ClsVencimientosFuncionalidades VencimientosFuncionalidades = new ClsVencimientosFuncionalidades();
            VencimientoFuncionalidades     CargarFechas = VencimientosFuncionalidades.LeerPorNumero(1, ref InformacionDelError);

            if (CargarFechas != null)
            {
                dtpVencimientoGeneral.Value = CargarFechas.VencimientoGeneral.Date;
                dtpVencimientoFuncionesEspecificas.Value = CargarFechas.VencimientoFunciones.Date;
            }
            else if (InformacionDelError == string.Empty)
            {
                MessageBox.Show("Fallo al leer los datos", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Close();
            }
            else
            {
                MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Close();
            }
        }
        private void BtnActualizar_Click(object sender, EventArgs e)
        {
            if (dtpVencimientoGeneral.Value.Date >= dtpVencimientoFuncionesEspecificas.Value.Date)
            {
                using (FrmValidarUsuario FormValidarUsuario = new FrmValidarUsuario(FrmValidarUsuario.EFiltroUsuariosAutorizados.Desarrolladores))
                {
                    FormValidarUsuario.ShowDialog();

                    if (FormValidarUsuario.DialogResult == DialogResult.OK)
                    {
                        string InformacionDelError = string.Empty;

                        ClsVencimientosFuncionalidades VencimientoFuncionalidades = new ClsVencimientosFuncionalidades();
                        VencimientoFuncionalidades     ActualizarFechas           = VencimientoFuncionalidades.LeerPorNumero(1, ref InformacionDelError);

                        if (ActualizarFechas != null)
                        {
                            ActualizarFechas.VencimientoGeneral   = dtpVencimientoGeneral.Value.Date;
                            ActualizarFechas.VencimientoFunciones = dtpVencimientoFuncionesEspecificas.Value.Date;

                            if (VencimientoFuncionalidades.Actualizar(ActualizarFechas, ref InformacionDelError) != 0)
                            {
                                using (FrmInformacion FormInformacion = new FrmInformacion($"Se actualizaron las fechas de vencimiento con exito:\r\n\r\n" +
                                                                                           $"Fecha de vencimiento general = {ActualizarFechas.VencimientoGeneral.ToShortDateString()}\r\n\r\n" +
                                                                                           $"Fecha de vencimiento de funciones especificas = {ActualizarFechas.VencimientoFunciones.ToShortDateString()}", ClsColores.Blanco, 200, 500))
                                {
                                    FormInformacion.ShowDialog();
                                }
                                Close();
                            }
                            else if (InformacionDelError != string.Empty)
                            {
                                MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            }
                        }
                        else if (InformacionDelError == string.Empty)
                        {
                            MessageBox.Show("Fallo al leer los datos", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                        else
                        {
                            MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                    else
                    {
                        using (FrmInformacion FormInformacion = new FrmInformacion("Usuario no autorizado, actualizacion de vencimientos cancelada.", ClsColores.Blanco, 150, 300))
                        {
                            FormInformacion.ShowDialog();
                        }
                    }
                }
            }
            else
            {
                using (FrmInformacion FormInformacion = new FrmInformacion("La fecha de vencimiento de las funciones generales no puede ser menor " +
                                                                           "a la de las funciones especificas.", ClsColores.Blanco, 150, 300))
                {
                    FormInformacion.ShowDialog();
                }
            }
        }
        private void ComprobarVencimientos()
        {
            bool   MostrarMensaje       = false;
            bool   LicenciaExpirada     = false;
            string MensajesDeAviso      = string.Empty;
            int    AnchoFormInformacion = 200;

            string InformacionDelError = string.Empty;

            ClsVencimientosFuncionalidades VencimientosFuncionalidades = new ClsVencimientosFuncionalidades();
            VencimientoFuncionalidades     ComprobarVencimientos       = VencimientosFuncionalidades.LeerPorNumero(1, ref InformacionDelError);

            if (ComprobarVencimientos != null)
            {
                if (FrmInicioSesion.ObtenerInstancia().G_ID_PerfilUsuarioInicioSesion != (int)ClsPerfiles.EPerfiles.Administrador)
                {
                    // Vencimiento general
                    if (ComprobarVencimientos.VencimientoGeneral.Date < DateTime.Now.Date)
                    {
                        LicenciaExpirada = true;

                        MostrarMensaje        = true;
                        AnchoFormInformacion += 50;
                        MensajesDeAviso      += $"Se vencieron las funcionalidades del sistema.\r\n\r\n";
                    }
                    else if (ComprobarVencimientos.VencimientoGeneral.Date >= DateTime.Now.Date && ComprobarVencimientos.VencimientoGeneral.Date <= DateTime.Now.Date.AddDays(7))
                    {
                        MostrarMensaje        = true;
                        AnchoFormInformacion += 50;
                        MensajesDeAviso      += $"Aviso: Se venceran las funciones de todo el programa " +
                                                $"en {(ComprobarVencimientos.VencimientoGeneral.Date - DateTime.Now.Date).TotalDays} dias, al " +
                                                $"cumplirse la fecha limite de uso (esto se realizara automaticamente). Contacte con el " +
                                                $"programador para actualizar su fecha de vencimiento (no perdera los dias restantes que falten " +
                                                $"para el vencimiento, estos seran acumulados).\r\n\r\n";
                    }

                    // Vencimiento especifico de funcionalidades del sistema
                    if (ComprobarVencimientos.VencimientoFunciones.Date < DateTime.Now.Date)
                    {
                        BtnEstadisticasCaja.Enabled      = false;
                        BtnEstadisticasDelivery.Enabled  = false;
                        BtnEstadisticasGenerales.Enabled = false;
                        BtnEstadisticasReservas.Enabled  = false;
                        BtnEstadisticasCarta.Enabled     = false;

                        if (ComprobarVencimientos.VencimientoFunciones.Date >= DateTime.Now.Date.AddDays(7))
                        {
                            MostrarMensaje        = true;
                            AnchoFormInformacion += 50;
                            MensajesDeAviso      += $"Se vencieron las funcionalidades especificas en el sistema (estadisticas).\r\n\r\n";
                        }
                    }
                    else if (ComprobarVencimientos.VencimientoFunciones.Date >= DateTime.Now.Date && ComprobarVencimientos.VencimientoFunciones.Date <= DateTime.Now.Date.AddDays(7))
                    {
                        MostrarMensaje        = true;
                        AnchoFormInformacion += 50;
                        MensajesDeAviso      += $"Se vencera las funciones especificas del programa (estadisticas)" +
                                                $"en {(ComprobarVencimientos.VencimientoFunciones.Date - DateTime.Now.Date).TotalDays} dias.\r\n\r\n";
                    }

                    if (MostrarMensaje)
                    {
                        using (FrmInformacion FormInformacion = new FrmInformacion(MensajesDeAviso, ClsColores.Blanco, AnchoFormInformacion, 450))
                        {
                            FormInformacion.ShowDialog();
                        }
                    }
                }
                else
                {
                    BtnEstadisticasCaja.Enabled      = true;
                    BtnEstadisticasDelivery.Enabled  = true;
                    BtnEstadisticasGenerales.Enabled = true;
                    BtnEstadisticasReservas.Enabled  = true;
                    BtnEstadisticasCarta.Enabled     = true;
                }

                // Habilitar los botones de los forms si se reinicio el programa y la licencia se actualizo
                BloquearDesbloquearFuncionalidades(LicenciaExpirada);
            }
            else if (InformacionDelError == string.Empty)
            {
                MessageBox.Show("Fallo al leer los datos para compobar el vencimiento de las funciones " +
                                "del sistema", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Close();
            }
            else
            {
                MessageBox.Show($"{InformacionDelError}", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                Close();
            }
        }