/// <summary>
        /// Delega a la Capa de Datos devolver la configuracion de la B.D.
        /// </summary>
        /// <returns></returns>
        public Entidades.Configuracion_Certificado TraerConfiguracion()
        {
            Entidades.Configuracion_Certificado objEntidadesConfigCertificado = new Entidades.Configuracion_Certificado();

            objEntidadesConfigCertificado = objDatosConfCertificado.TraerConfiguracion();

            return objEntidadesConfigCertificado;
        }
Пример #2
0
        /// <summary>
        /// Control del Botón de Pedir Ticket de Acceso.
        /// Si hay uno vigente en la B.D. utiliza este, sino pide uno nuevo al WebService.
        /// </summary>
        private void pedirTicketAcceso()
        {
            objEntidadesConfiguracionCertificado = objLogicaConfiguracionCertificado.TraerConfiguracion();

            /*Verifica si tiene una configuracion cargada en la B.D.*/
            if (objEntidadesConfiguracionCertificado.Cuit != 0)
            {
                /*Tiene una configuracion cargada*/
                //Entidades.Tickets objEntidadesTicket_Rta = new Entidades.Tickets();
                Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
                Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();

                //Devuelve un Ticket Vigente guardado en la B.D.
                objEntidadesTicket_Acceso = objLogicaTicket_Acceso.TraerTicketActivo();

                if (objEntidadesTicket_Acceso.Id_Ticket == 0)
                {
                    /*No hay ningún Ticket de Acceso habilitado en la base de Datos, se pedirá uno nuevo*/
                    Entidades.CertificadosX509 objEntidadesCertificado = new Entidades.CertificadosX509();
                    Logica.CertificadosX509 objLogicaCertificado = new Logica.CertificadosX509();

                    objEntidadesCertificado.IdServicioNegocio = DEFAULT_SERVICIO;

                    if (objEntidadesConfiguracionCertificado.TipoAprobacion == 'P')
                    {
                        objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_PRODUCCION;                        
                    }
                    else
                    {
                        objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_HOMOLOGACION;
                    }

                    /*Pido en el WebService un Nuevo Ticket de Acceso*/
                    Logica.Tickets objTicketRespuesta = new Logica.Tickets();
                    objEntidadesTicket_Acceso = objTicketRespuesta.Gestionar_TA(objEntidadesCertificado);

                    objEntidadesTicket_Acceso.Cuit = objEntidadesConfiguracionCertificado.Cuit;
                    objEntidadesTicket_Acceso.TipoAprobacion = objEntidadesConfiguracionCertificado.TipoAprobacion;

                    if (objEntidadesTicket_Acceso.Sign != null)
                    {
                        Logica.Tickets_Acceso objTicketsAcceso = new Logica.Tickets_Acceso();
                        //Guarda el ticket en la B.D.
                        objTicketsAcceso.Agregar(objEntidadesTicket_Acceso);
                    }
                }

                mostrarDatosTicketAcceso(objEntidadesTicket_Acceso);
            }
            else
            {
                MessageBox.Show("Para utilizar el programa primero debe cargar el certificado desde Configuracion -> Certificado");
            }
        }
Пример #3
0
        /// <summary>
        /// Carga Aplicacion
        /// Verifica si tiene cargada la configuración en la B.D.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmTicketAcceso_Load(object sender, EventArgs e)
        {
            this.Text = Application.ProductName + " - "+ Application.ProductVersion;

            if (objLogicaInternet.hayInternet() == true)
            {
                btnVerificarInternet.Visible = false;
                objEntidadesConfiguracionCertificado = objLogicaConfiguracionCertificado.TraerConfiguracion();
                /*Verifica si tiene una configuracion cargada en la B.D.*/
                if (objEntidadesConfiguracionCertificado.Cuit == 0)
                {
                    MessageBox.Show("Para utilizar el programa primero debe cargar el certificado desde Configuracion -> Certificado");
                }
                else
                {
                    pedirTicketAcceso();
                }
            }
            else
            {
                MessageBox.Show("No hay conexión a Internet. Por favor verificar su conexión");
            }
        }
        /// <summary>
        /// Carga del Form
        /// Busca en la Base si ya hay una configuración cargada
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmConfiguracionCertificado_Load(object sender, EventArgs e)
        {
            Logica.Configuracion_Certificado objLogicaConfiguracionCertificado = new Logica.Configuracion_Certificado();
            
            openArchCertificadoPFX.Title = "Elegir Certificado";
            openArchCertificadoPFX.Filter = "Archivo de Certificado (*.pfx)|*.pfx";
            openArchCertificadoPFX.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.Personal);

            objEntidadesConfiguracionCertificado = objLogicaConfiguracionCertificado.TraerConfiguracion();

            if (objEntidadesConfiguracionCertificado.Cuit != 0)
            {
                txtCuit.Text = objEntidadesConfiguracionCertificado.Cuit.ToString();
                txtArchCertificadoPFX.Text = objEntidadesConfiguracionCertificado.ArchivoCertificadoPFX;
                txtPFXPassword.Text = objEntidadesConfiguracionCertificado.PasswordPFX;
                
                if(objEntidadesConfiguracionCertificado.TipoAprobacion == 'P')
                {
                    rbServidorProduccion.Checked = true;
                }
            }


        }
Пример #5
0
        /// <summary> 
        /// Lee el Certificado desde el archivo abriendolo con la password
        /// </summary> 
        /// <returns>Un objeto certificado X509</returns> 
        /// <remarks></remarks> 
        public X509Certificate2 ObtenerCertificadoDesdeArchivo()
        {
            Entidades.Configuracion_Certificado objEntidadesConf_Certificado = new Entidades.Configuracion_Certificado();
            Logica.Configuracion_Certificado objLogicaConf_Certificado = new Logica.Configuracion_Certificado();
            SecureString passwordCertificadoPFX;

            objEntidadesConf_Certificado = objLogicaConf_Certificado.TraerConfiguracion();
            passwordCertificadoPFX = ConvertirPasswordSecureString(objEntidadesConf_Certificado.PasswordPFX);

            //Se instancia un objeto Certificado
            X509Certificate2 objCertificado = new X509Certificate2();
            
            try
            {
                //Se importa al objeto certificado el archivo leido abriendolo con la password
                objCertificado.Import(Microsoft.VisualBasic.FileIO.FileSystem.ReadAllBytes(objEntidadesConf_Certificado.ArchivoCertificadoPFX), passwordCertificadoPFX, X509KeyStorageFlags.PersistKeySet);
                //Retorno certificado
                return objCertificado;
            }
            catch (Exception excepcionAlImportarCertificado)
            {
                throw new Exception("ERROR: Procedimiento: ObtenerCertificadoDesdeArchivo.  Ruta del archivo=" + objEntidadesConf_Certificado.ArchivoCertificadoPFX + ". Excepcion=" + excepcionAlImportarCertificado.Message + " " + excepcionAlImportarCertificado.StackTrace);
            }
        }
        /// <summary>
        /// Guarda la configuración en la B.D.
        /// La Agrega si es la primera vez o la actualiza si ya existe
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGuardarConf_Click(object sender, EventArgs e)
        {
            
            if (txtCuit.Text != "0" || txtArchCertificadoPFX.Text != "")
            {
                Logica.Configuracion_Certificado objLogicaConfiguracionCertificado = new Logica.Configuracion_Certificado();
                Entidades.Configuracion_Certificado objEntidadesConfiguracionCertificadoForm = new Entidades.Configuracion_Certificado();

                objEntidadesConfiguracionCertificadoForm.Cuit = Convert.ToInt64(txtCuit.Text);
                objEntidadesConfiguracionCertificadoForm.ArchivoCertificadoPFX = txtArchCertificadoPFX.Text;
                objEntidadesConfiguracionCertificadoForm.PasswordPFX = txtPFXPassword.Text;
                if (rbServidorProduccion.Checked == true)
                {
                    objEntidadesConfiguracionCertificadoForm.TipoAprobacion = 'P';
                }
                else
                {
                    objEntidadesConfiguracionCertificadoForm.TipoAprobacion = 'H';
                }

                if (objEntidadesConfiguracionCertificado.Cuit == 0) //No habia nada guardado previamente en la B.D.
                {
                    objLogicaConfiguracionCertificado.Agregar(objEntidadesConfiguracionCertificadoForm);
                    MessageBox.Show("Configuración Guardada");
                }
                else
                {
                    objLogicaConfiguracionCertificado.Modificar(objEntidadesConfiguracionCertificadoForm);
                    MessageBox.Show("Configuración Actualizada");
                }
            }
        }
Пример #7
0
        /// <summary>
        /// Pide un Nuevo Ticket de Acceso con las configuraciones cargadas
        /// </summary>
        /// <returns></returns>
        private bool pedirNuevoTicketAcc()
        {
            bool respuesta = false;
            lblPedirNuevoTicketAccRTA.ForeColor = Color.Black;
            lblPedirNuevoTicketAccRTA.Text = "Procesando...";
            lblPedirNuevoTicketAccRTA.Refresh();

            /*Pide la configuración desde la B.D.*/
            Entidades.Configuracion_Certificado objEntidadesConfiguracionCertificado = new Entidades.Configuracion_Certificado();
            Logica.Configuracion_Certificado objLogicaConfiguracionCertificado = new Logica.Configuracion_Certificado();
            objEntidadesConfiguracionCertificado = objLogicaConfiguracionCertificado.TraerConfiguracion();

            /*Creo un Certificado a partir de la configuración que recuperé desde la B.D.*/
            Entidades.CertificadosX509 objEntidadesCertificado = new Entidades.CertificadosX509();
            const string DEFAULT_SERVICIO = "wsfe";
            const string SERVIDOR_WSAA_PRODUCCION = "https://wsaa.afip.gov.ar/ws/services/LoginCms?WSDL";
            const string SERVIDOR_WSAA_HOMOLOGACION = "https://wsaahomo.afip.gov.ar/ws/services/LoginCms?WSDL";

            objEntidadesCertificado.IdServicioNegocio = DEFAULT_SERVICIO;

            if (objEntidadesConfiguracionCertificado.TipoAprobacion == 'P')
            {
                objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_PRODUCCION;                        
            }
            else
            {
                objEntidadesCertificado.UrlWsaaWsdl = SERVIDOR_WSAA_HOMOLOGACION;
            }

            /*Pido en el WebService un Nuevo Ticket de Acceso*/
            Entidades.Tickets_Acceso objEntidadesTicket_Acceso = new Entidades.Tickets_Acceso();
            Logica.Tickets_Acceso objLogicaTicket_Acceso = new Logica.Tickets_Acceso();
            Logica.Tickets objTicketRespuesta = new Logica.Tickets();

            objEntidadesTicket_Acceso = objTicketRespuesta.Gestionar_TA(objEntidadesCertificado);
            objEntidadesTicket_Acceso.Cuit = objEntidadesConfiguracionCertificado.Cuit;
            objEntidadesTicket_Acceso.TipoAprobacion = objEntidadesConfiguracionCertificado.TipoAprobacion;

            if (objEntidadesTicket_Acceso.Sign != null)
            {
                Logica.Tickets_Acceso objTicketsAcceso = new Logica.Tickets_Acceso();
                //Guarda el ticket en la B.D.
                objTicketsAcceso.Agregar(objEntidadesTicket_Acceso);
                lblPedirNuevoTicketAccRTA.ForeColor = Color.Green;
                lblPedirNuevoTicketAccRTA.Text = "OK";
                lblPedirNuevoTicketAccRTA.Refresh();
                respuesta = true;
            }
            else
            {
                lblPedirNuevoTicketAccRTA.ForeColor = Color.Red;
                lblPedirNuevoTicketAccRTA.Text = "ERROR";
                lblPedirNuevoTicketAccRTA.Refresh();
            }

            return respuesta;
        }
        /// <summary>
        /// Devuelve la configuración cargada en la B.D.
        /// </summary>
        /// <returns></returns>
        public Entidades.Configuracion_Certificado TraerConfiguracion()
        {
            Entidades.Configuracion_Certificado objEntidadesConfigCertificado = new Entidades.Configuracion_Certificado();

            string strSQL = "SELECT Cuit, ArchivoCertificadoPFX, PasswordPFX, TipoAprobacion FROM Configuracion_Certificado WHERE Id_Configuracion = 1";

            SqlConnection objConexion = new SqlConnection(Conexion.strConexion);
            SqlCommand comTraer = new SqlCommand(strSQL, objConexion);
            SqlDataReader drConfigCertificado;

            try
            {
                objConexion.Open();
                drConfigCertificado = comTraer.ExecuteReader();
                drConfigCertificado.Read();
                if (drConfigCertificado.HasRows)
                {
                    objEntidadesConfigCertificado.Cuit = Convert.ToInt64(drConfigCertificado["Cuit"]);
                    objEntidadesConfigCertificado.ArchivoCertificadoPFX = drConfigCertificado["ArchivoCertificadoPFX"].ToString();
                    objEntidadesConfigCertificado.PasswordPFX = drConfigCertificado["PasswordPFX"].ToString();
                    objEntidadesConfigCertificado.TipoAprobacion = Convert.ToChar(drConfigCertificado["TipoAprobacion"]);
                }

            }
            catch (SqlException)
            {
                //Se produjo un error SQL, SqlExcepcion es especifico de sql por eso va arriba de Excepcion
                throw new Exception("Error en la Base de Datos");
            }
            catch (Exception)
            {
                //Pasa la excepción a la capa de lógica
                throw new Exception("No pudo Listar la Configuracion");
            }
            finally
            {
                //Cierro la conexion solo si estaba abierto
                if (objConexion.State == ConnectionState.Open)
                {
                    objConexion.Close();
                }

            }

            return objEntidadesConfigCertificado;
        }