public static EstadoOperacion eliminarCriptografiaCampo(CRIPTOGRAFIA_CAMPO CriptografiaCampo)
        {
            try
            {
                DbFactory Factoria = DataAccessFactory.ObtenerProveedor();
                using (Switch contexto = new Switch())
                {
                    using (contexto.CreateConeccionScope())
                    {
                        string query =
                            "DELETE FROM CRIPTOGRAFIA_CAMPO" +
                            " WHERE CRC_CODIGO =@codigo;";

                        DbCommand Comando = contexto.CreateCommand(query, CommandType.Text);

                        Comando.Parameters.Add(Factoria.CrearParametro("@codigo", CriptografiaCampo.CRC_CODIGO));

                        if (Comando.ExecuteNonQuery() != 1)
                        {
                            return new EstadoOperacion(false, null, null);
                        }

                        return new EstadoOperacion(true, null, null);
                    }
                }
            }
            catch (Exception e)
            {
                return new EstadoOperacion(false, e.Message, e);
            }
        }
        public CriptografiaCampo(Mensaje mensaje, CRIPTOGRAFIA_CAMPO criptografiaCampo)
        {
            this.llave1 = Llave.ValorLlave(mensaje, criptografiaCampo.CRC_LLAVE_1
                , criptografiaCampo.CAMPO_LLAVE_1, criptografiaCampo.CRC_TIPO_LLAVE_1);

            this.segundaLlave = criptografiaCampo.CRC_SEGUNDA_LLAVE;

            if (segundaLlave)
            {
                this.llave2 = Llave.ValorLlave(mensaje, criptografiaCampo.CRC_LLAVE_2
                    , criptografiaCampo.CAMPO_LLAVE_2, criptografiaCampo.CRC_TIPO_LLAVE_2.Value);
                this.operacionLlave = (EnumOperacionLlave)Enum.ToObject(typeof(EnumOperacionLlave), criptografiaCampo.CRC_OPERACION_LLAVE);
            }
            this.algoritmo = (EnumAlgoritmo)Enum.ToObject(typeof(EnumAlgoritmo), criptografiaCampo.CRC_ALGORITMO);
        }
        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            int codigoMensaje = int.Parse(Request.QueryString["Mensaje"]);

            CRIPTOGRAFIA_CAMPO criptografiaCampo = new CRIPTOGRAFIA_CAMPO();
            criptografiaCampo.CRC_CODIGO = int.Parse(Request.QueryString["Campo"]);

            DINAMICA_CRIPTOGRAFIA dinamicaCriptografia = new DINAMICA_CRIPTOGRAFIA()
            {
                DNC_CODIGO = int.Parse(Request.QueryString["Dinamica"])
            };
            criptografiaCampo.DINAMICA_CRIPTOGRAFIA = dinamicaCriptografia;

            CAMPO campoOrigen = new CAMPO()
            {
                CAM_CODIGO = int.Parse(this.drlCampoOrigen.SelectedValue),
                MEN_CODIGO = codigoMensaje
            };
            criptografiaCampo.CAMPO_RESULTADO = campoOrigen;

            criptografiaCampo.CRC_ALGORITMO = int.Parse(this.drlAlgoritmo.SelectedValue);
            criptografiaCampo.CRC_TIPO_LLAVE_1 = int.Parse(this.drlTipoLlave1.SelectedValue);

            if (criptografiaCampo.CRC_TIPO_LLAVE_1 == TipoLlaveBL.obtenerCodigoCampo())
            {
                CAMPO campoLlave1 = new CAMPO()
                {
                    CAM_CODIGO = int.Parse(this.drlCampoLlave1.SelectedValue),
                    MEN_CODIGO = codigoMensaje
                };
                criptografiaCampo.CAMPO_LLAVE_1 = campoLlave1;
            }

            if (criptografiaCampo.CRC_TIPO_LLAVE_1 == TipoLlaveBL.obtenerCodigoLlaveFija())
            {
                criptografiaCampo.CRC_LLAVE_1 = this.txtLlaveFija1.Text;
            }

            criptografiaCampo.CRC_SEGUNDA_LLAVE = this.chkSegundaLlave.Checked;
            if (criptografiaCampo.CRC_SEGUNDA_LLAVE)
            {
                criptografiaCampo.CRC_TIPO_LLAVE_2 = int.Parse(this.drlTipoLlave2.SelectedValue);

                if (criptografiaCampo.CRC_TIPO_LLAVE_2 == TipoLlaveBL.obtenerCodigoCampo())
                {
                    CAMPO campoLlave2 = new CAMPO()
                    {
                        CAM_CODIGO = int.Parse(this.drlCampoLlave2.SelectedValue),
                        MEN_CODIGO = codigoMensaje
                    };
                    criptografiaCampo.CAMPO_LLAVE_2 = campoLlave2;
                }

                if (criptografiaCampo.CRC_TIPO_LLAVE_2 == TipoLlaveBL.obtenerCodigoLlaveFija())
                {
                    criptografiaCampo.CRC_LLAVE_2 = this.txtLlaveFija2.Text;
                }

                criptografiaCampo.CRC_OPERACION_LLAVE = int.Parse(this.drlOperacionLlave.SelectedValue);
            }

            EstadoOperacion estadoOperacion = CriptografiaCampoBL.modificarCriptografiaCampo(criptografiaCampo);
            if (estadoOperacion.Estado)
            {
                Regresar();
            }
            else
            {
                this.lblMensaje.Text = estadoOperacion.Mensaje;
            }
        }
 public static EstadoOperacion modificarCriptografiaCampo(CRIPTOGRAFIA_CAMPO CriptografiaCampo)
 {
     return DataAccess.Seguridad.CriptografiaCampoDA.modificarCriptografiaCampo(CriptografiaCampo);
 }
        public static EstadoOperacion insertarCriptografiaCampo(CRIPTOGRAFIA_CAMPO CriptografiaCampo)
        {
            try
            {
                DbFactory Factoria = DataAccessFactory.ObtenerProveedor();
                using (Switch contexto = new Switch())
                {
                    using (contexto.CreateConeccionScope())
                    {
                        int idCriptografiaCampo = (from c in contexto.CRIPTOGRAFIA_CAMPO
                                                   where c.DINAMICA_CRIPTOGRAFIA.DNC_CODIGO ==
                                                        CriptografiaCampo.DINAMICA_CRIPTOGRAFIA.DNC_CODIGO
                                                   orderby c.CRC_CODIGO descending
                                                   select c.CRC_CODIGO).FirstOrDefault() + 1;

                        CriptografiaCampo.CRC_CODIGO = idCriptografiaCampo;

                        string insert = "INSERT INTO CRIPTOGRAFIA_CAMPO" +
                                       "(CRC_CODIGO" +
                                       ",DNC_CODIGO" +
                                       ",CAM_CODIGO_RESULTADO" +
                                       ",MEN_CODIGO_RESULTADO" +
                                       ",CAM_CODIGO_LLAVE_1" +
                                       ",MEN_CODIGO_LLAVE_1" +
                                       ",CAM_CODIGO_LLAVE_2" +
                                       ",MEN_CODIGO_LLAVE_2" +
                                       ",CRC_LLAVE_1" +
                                       ",CRC_LLAVE_2" +
                                       ",CRC_TIPO_LLAVE_1" +
                                       ",CRC_TIPO_LLAVE_2" +
                                       ",CRC_SEGUNDA_LLAVE" +
                                       ",CRC_ALGORITMO" +
                                       ",CRC_OPERACION_LLAVE)" +
                                 " VALUES " +
                                       "(@codigo" +
                                       ",@dinamica_codigo" +
                                       ",@campoResultado_codigo" +
                                       ",@mensajeResultado_codigo" +
                                       ",@campoLlave1_codigo" +
                                       ",@mensajeLlave1_codigo" +
                                       ",@campoLlave2_codigo" +
                                       ",@mensajeLlave2_codigo" +
                                       ",@llave1" +
                                       ",@llave2" +
                                       ",@tipoLlave1" +
                                       ",@tipoLlave2" +
                                       ",@segundaLlave" +
                                       ",@algoritmo" +
                                       ",@operacionLlave)";

                        DbCommand Comando = crearComando(contexto, CriptografiaCampo, insert);

                        if (Comando.ExecuteNonQuery() != 1)
                        {
                            return new EstadoOperacion(false, null, null);
                        }

                        return new EstadoOperacion(true, null, null);
                    }
                }
            }
            catch (Exception e)
            {
                return new EstadoOperacion(false, e.Message, e);
            }
        }
        private static DbCommand crearComando(Switch contexto, CRIPTOGRAFIA_CAMPO CriptografiaCampo, string query)
        {
            DbFactory Factoria = DataAccessFactory.ObtenerProveedor();

            DbCommand Comando = contexto.CreateCommand(query, CommandType.Text);
            Comando.Parameters.Add(Factoria.CrearParametro("@codigo", CriptografiaCampo.CRC_CODIGO));
            Comando.Parameters.Add(Factoria.CrearParametro("@dinamica_codigo", CriptografiaCampo.DINAMICA_CRIPTOGRAFIA.DNC_CODIGO));
            Comando.Parameters.Add(Factoria.CrearParametro("@campoResultado_codigo", CriptografiaCampo.CAMPO_RESULTADO.CAM_CODIGO));
            Comando.Parameters.Add(Factoria.CrearParametro("@mensajeResultado_codigo", CriptografiaCampo.CAMPO_RESULTADO.MEN_CODIGO));
            Comando.Parameters.Add(Factoria.CrearParametro("@tipoLlave1", CriptografiaCampo.CRC_TIPO_LLAVE_1));
            Comando.Parameters.Add(Factoria.CrearParametro("@algoritmo", CriptografiaCampo.CRC_ALGORITMO));

            if (CriptografiaCampo.CRC_TIPO_LLAVE_1 == (int)EnumTipoLlave.Campo)
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@campoLlave1_codigo", CriptografiaCampo.CAMPO_LLAVE_1.CAM_CODIGO));
                Comando.Parameters.Add(Factoria.CrearParametro("@mensajeLlave1_codigo", CriptografiaCampo.CAMPO_LLAVE_1.MEN_CODIGO));
            }
            else
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@campoLlave1_codigo", DBNull.Value));
                Comando.Parameters.Add(Factoria.CrearParametro("@mensajeLlave1_codigo", DBNull.Value));
            }

            if (CriptografiaCampo.CRC_TIPO_LLAVE_1 == (int)EnumTipoLlave.LlaveFija)
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@llave1", CriptografiaCampo.CRC_LLAVE_1));
            }
            else
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@llave1", DBNull.Value));
            }

            Comando.Parameters.Add(Factoria.CrearParametro("@segundaLlave", CriptografiaCampo.CRC_SEGUNDA_LLAVE));

            if (CriptografiaCampo.CRC_SEGUNDA_LLAVE)
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@tipoLlave2", CriptografiaCampo.CRC_TIPO_LLAVE_2));
                Comando.Parameters.Add(Factoria.CrearParametro("@operacionLlave", CriptografiaCampo.CRC_OPERACION_LLAVE));
            }
            else
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@tipoLlave2", DBNull.Value));
                Comando.Parameters.Add(Factoria.CrearParametro("@operacionLlave", DBNull.Value));
            }

            if (CriptografiaCampo.CRC_SEGUNDA_LLAVE && CriptografiaCampo.CRC_TIPO_LLAVE_2.Value == (int)EnumTipoLlave.Campo)
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@campoLlave2_codigo", CriptografiaCampo.CAMPO_LLAVE_2.CAM_CODIGO));
                Comando.Parameters.Add(Factoria.CrearParametro("@mensajeLlave2_codigo", CriptografiaCampo.CAMPO_LLAVE_2.MEN_CODIGO));
            }
            else
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@campoLlave2_codigo", DBNull.Value));
                Comando.Parameters.Add(Factoria.CrearParametro("@mensajeLlave2_codigo", DBNull.Value));
            }

            if (CriptografiaCampo.CRC_SEGUNDA_LLAVE && CriptografiaCampo.CRC_TIPO_LLAVE_2.Value == (int)EnumTipoLlave.LlaveFija)
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@llave2", CriptografiaCampo.CRC_LLAVE_2));
            }
            else
            {
                Comando.Parameters.Add(Factoria.CrearParametro("@llave2", DBNull.Value));
            }

            return Comando;
        }
        public static EstadoOperacion modificarCriptografiaCampo(CRIPTOGRAFIA_CAMPO CriptografiaCampo)
        {
            try
            {
                DbFactory Factoria = DataAccessFactory.ObtenerProveedor();
                using (Switch contexto = new Switch())
                {
                    using (contexto.CreateConeccionScope())
                    {
                        string query =
                        "UPDATE Switch.dbo.CRIPTOGRAFIA_CAMPO" +
                           " SET CAM_CODIGO_RESULTADO = @campoResultado_codigo" +
                              ",MEN_CODIGO_RESULTADO = @mensajeResultado_codigo" +
                              ",CAM_CODIGO_LLAVE_1 = @campoLlave1_codigo" +
                              ",MEN_CODIGO_LLAVE_1 = @mensajeLlave1_codigo" +
                              ",CAM_CODIGO_LLAVE_2 = @campoLlave2_codigo" +
                              ",MEN_CODIGO_LLAVE_2 = @mensajeLlave2_codigo" +
                              ",CRC_LLAVE_1 = @llave1" +
                              ",CRC_LLAVE_2 = @llave2" +
                              ",CRC_TIPO_LLAVE_1 = @tipoLlave1" +
                              ",CRC_TIPO_LLAVE_2 = @tipoLlave2" +
                              ",CRC_SEGUNDA_LLAVE = @segundaLlave" +
                              ",CRC_ALGORITMO = @algoritmo" +
                              ",CRC_OPERACION_LLAVE = @operacionLlave" +
                         " WHERE CRC_CODIGO = @codigo  AND " +
                              "DNC_CODIGO = @dinamica_codigo";

                        DbCommand Comando = crearComando(contexto, CriptografiaCampo, query);

                        if (Comando.ExecuteNonQuery() != 1)
                        {
                            return new EstadoOperacion(false, null, null);
                        }

                        return new EstadoOperacion(true, null, null);
                    }
                }
            }
            catch (Exception e)
            {
                return new EstadoOperacion(false, e.Message, e);
            }
        }