Esempio n. 1
0
        protected void BtnSend_Click(object sender, EventArgs e)
        {

            Page.Validate();
            if (!Page.IsValid) return;


            string tsql = "SELECT [VoteCode] FROM [Attendees] WHERE [VoteCode] = @VoteCode;";

            IDataParameter[] parameters = {
                new SqlParameter{ ParameterName="VoteCode", DbType= DbType.AnsiString, Value = TextBoxCode.Value.ToString().Trim() }

            };
            
            string result = SqlApiSqlClient.GetStringRecordValue(tsql, parameters, Global.Configuration.DB.GetConnectionStringDBMain());

            if (result == null)
            {
                Msg.Visible = true;
                Msg.InnerHtml = "Código Ingresado No Valido.";

            }
            else {

                Session["User.VoteCode"] = result;

                // if you store session in cookies need redirect, not server.transfer:
                Response.Redirect("~/Views/Questions/Questions.aspx", false);

            }


        }
Esempio n. 2
0
            private static string GetParameterClientByName(ParamIdEnum parameter, string cacheKey, string strDBConnection)
            {
                var result = (string)HttpRuntime.Cache["GetParameterClientByName_" + parameter.ToString() + "_" + cacheKey];

                if (result == null)
                {
                    result = SqlApiSqlClient.GetStringRecordValue("EXEC PARAMETROS_CLIENTS_GET_VALUE_BY_NAME '" + parameter.ToString() + "'", strDBConnection);
                    HttpRuntime.Cache.Insert("GetParameterClientByName" + parameter.ToString() + cacheKey, result,
                                             null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(5));
                }
                return(result);
            }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userPerType"></param>
        /// <param name="userId"></param>
        /// <param name="userRolId"></param>
        /// <param name="strDBConnection"></param>
        /// <returns></returns>
        private static bool GetPermissionDB(UserPermissionTypeEnum userPerType, string userId, UserRolEnum userRolId, string strDBConnection)
        {
            if (userRolId == UserRolEnum.System || userRolId == UserRolEnum.SuperAdministrator)
            {
                return(true);
            }

            var bReturn = false;
            var strSql  = "Permission_QueryUser";


            var paramsToSP = new SqlParameter[] { new SqlParameter("@UserId", userId)
                                                  , new SqlParameter("@UserRolId", userRolId)
                                                  , new SqlParameter("@UserPerTypeId", userPerType) };

            var sqlapi = new SqlApiSqlClient();

            using (sqlapi.Connection = new SqlConnection(strDBConnection))
            {
                var reader = sqlapi.DataReaderSqlSP(strSql, paramsToSP);

                if (!reader.HasRows)
                {
                    bReturn = false;
                }
                else
                {
                    if (reader.Read())
                    {
                        if (reader.IsDBNull(0))
                        {
                            bReturn = false;
                        }
                        else
                        {
                            bReturn = Convert.ToBoolean(reader[0]);
                        }
                    }
                    else
                    {
                        bReturn = false;
                    }
                }

                reader.Close();
                sqlapi.Connection.Close();
            }


            return(bReturn);
        }
Esempio n. 4
0
        /// <summary>
        /// http://demos.devexpress.com/ASPxGridViewDemos/GridEditing/Validation.aspx
        /// if (e.NewValues["FirstName"] != null && e.NewValues["FirstName"].ToString().Length
        /// AddError(e.Errors, grid.Columns["Categoria"], grid.Columns["Categoria"].Caption + ": El valor ya existe con otro registro...");
        /// TIP: si el campo esta invisible, e.NewValues devuelve NULL
        /// </summary>
        protected void ASPxGridView1_RowValidating(object sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
        {
            /*
             * if (ASPxGridView1.IsNewRowEditing && e.NewValues["UserPass"] == null)
             * {
             *  AddError(e.Errors, ASPxGridView1.Columns["UserPass"], ASPxGridView1.Columns["UserPass"].Caption + ": Escriba una contraseña.");
             * }
             */


            string tsql = "";

            // validar valores contra DB
            // TIP: si el campo esta invisible, e.NewValues devuelve NULL
            // http://devexpress.com/Support/Center/p/Q109251.aspx
            if (e.NewValues["Shareholding"] != null)
            {
                int Id           = 0;
                int currentIndex = 0;

                if (e.Keys.Count > 0)
                {
                    currentIndex = ASPxGridView1.FindVisibleIndexByKeyValue(e.Keys[0]);
                }

                object IdvalGrid = ASPxGridView1.GetRowValues(currentIndex, "ID");

                if (IdvalGrid != null)
                {
                    Id = Convert.ToInt32(IdvalGrid);
                }

                SqlParameter[] paramsToSP =
                {
                    new SqlParameter("@Shareholding", e.NewValues["Shareholding"].ToString())
                    ,                                 new SqlParameter("@RowID", Id)
                };

                if (e.IsNewRow) // insert
                {
                    tsql = "SELECT SUM([Shareholding]) + @Shareholding  FROM [dbo].[Organizations]";
                }
                else // update
                {
                    tsql = "SELECT SUM([Shareholding]) + @Shareholding FROM [dbo].[Organizations] WHERE ID != @RowID";
                }

                int?codigo = SqlApiSqlClient.GetIntRecordValue(tsql, paramsToSP, Global.Configuration.DB.GetConnectionStringDBMain());
                if (codigo != null)
                {
                    if (codigo > 100)
                    {
                        AddError(e.Errors, ASPxGridView1.Columns["Shareholding"], ASPxGridView1.Columns["Shareholding"].Caption + ": Con este valor sobrepasa el 100%...");
                    }
                }
            }

            if (string.IsNullOrEmpty(e.RowError) && e.Errors.Count > 0)
            {
                e.RowError = "Por favor corrija los errores.";
            }
        }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="userPerType"></param>
        /// <param name="userId"></param>
        /// <param name="userRolId"></param>
        /// <param name="strConnection"></param>
        /// <returns></returns>
        private static bool GetPermissionDB(string userPerType, string userId, string userRolId, string strConnection)
        {
            if (userRolId.Equals(Convert.ToString((int)UserRolEnum.System)) || userRolId.Equals(Convert.ToString((int)UserRolEnum.SuperAdministrator)))
            {
                return(true);
            }

            var bReturn = false;
            var strSql  = "EXEC Permission_QueryUser @UserId, @UserRolId, @UserPerTypeId ;";

            var paramsToSP = new SqlParameter[] {
                new SqlParameter()
                {
                    ParameterName = "@UserId", DbType = DbType.Int32, Value = userId
                }
                , new SqlParameter()
                {
                    ParameterName = "@UserRolId", DbType = DbType.Int32, Value = userRolId
                }
                , new SqlParameter()
                {
                    ParameterName = "@UserPerTypeId", DbType = DbType.Int32, Value = userPerType
                }
            };


            bReturn = SqlApiSqlClient.GetBitRecordValue(strSql, paramsToSP, strConnection);


            /*
             *          var sqlapi = new SqlApiSqlClient();
             *          using (sqlapi.Connection = new SqlConnection(strConnection))
             *          {
             *                  var reader = sqlapi.DataReaderSqlSP(strSql, paramsToSP);
             *
             *                  if (!reader.HasRows)
             *                  {
             *                          bReturn = false;
             *                  }
             *                  else
             *                  {
             *                          if (reader.Read())
             *                          {
             *                                  if (reader.IsDBNull(0))
             *                                  {
             *                                          bReturn = false;
             *                                  }
             *                                  else
             *                                  {
             *                                          bReturn = Convert.ToBoolean(reader[0]);
             *                                  }
             *                          }
             *                          else
             *                          {
             *                                  bReturn = false;
             *                          }
             *                  }
             *
             *                  reader.Close();
             *                  sqlapi.Connection.Close();
             *          }
             */

            return(bReturn);
        }
Esempio n. 6
0
        /// <summary>
        /// http://demos.devexpress.com/ASPxGridViewDemos/GridEditing/Validation.aspx
        /// if (e.NewValues["FirstName"] != null && e.NewValues["FirstName"].ToString().Length
        /// AddError(e.Errors, grid.Columns["Categoria"], grid.Columns["Categoria"].Caption + ": El valor ya existe con otro registro...");
        /// TIP: si el campo esta invisible, e.NewValues devuelve NULL
        /// <2></2></summary>
        protected void grid_RowValidating(object sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
        {
            /*
             * if (ASPxGridView1.IsNewRowEditing && e.NewValues["UserPass"] == null)
             * {
             *  AddError(e.Errors, ASPxGridView1.Columns["UserPass"], ASPxGridView1.Columns["UserPass"].Caption + ": Escriba una contraseña.");
             * }
             */

            string tsql = "";

            // validar valores contra DB
            // TIP: si el campo esta invisible, e.NewValues devuelve NULL
            // http://devexpress.com/Support/Center/p/Q109251.aspx
            if (e.NewValues["UserLogin"] != null)
            {
                int Id           = 0;
                int currentIndex = 0;

                if (e.Keys.Count > 0)
                {
                    currentIndex = ASPxGridView1.FindVisibleIndexByKeyValue(e.Keys[0]);
                }

                object IdvalGrid = ASPxGridView1.GetRowValues(currentIndex, "UserId");

                if (IdvalGrid != null)
                {
                    Id = Convert.ToInt32(IdvalGrid);
                }

                SqlParameter[] paramsToSP =
                {
                    new SqlParameter("@UserLogin", e.NewValues["UserLogin"].ToString())
                    ,                              new SqlParameter("@UserId", Id)
                };


                if (e.IsNewRow) // insert
                {
                    tsql = "SELECT UserId FROM [User] WHERE UserLogin = @UserLogin";
                }
                else // update
                {
                    tsql = "SELECT UserId FROM [User] WHERE UserLogin = @UserLogin AND UserId != @UserId";
                }


                int?codigo = SqlApiSqlClient.GetIntRecordValue(tsql, paramsToSP, Global.DAL.GetConnectionStringDBData());
                if (codigo != null)
                {
                    AddError(e.Errors, ASPxGridView1.Columns["UserLogin"], ASPxGridView1.Columns["UserLogin"].Caption + ": El valor ya existe con otro registro...");
                }
            }


            if (string.IsNullOrEmpty(e.RowError) && e.Errors.Count > 0)
            {
                e.RowError = "Por favor corrija los errores.";
            }
        }
Esempio n. 7
0
        /*
         * protected void btnLogin_Click(object sender, EventArgs e) {
         *  if (Membership.ValidateUser(tbUserName.Text, tbPassword.Text)) {
         *      if(string.IsNullOrEmpty(Request.QueryString["ReturnUrl"])) {
         *          FormsAuthentication.SetAuthCookie(tbUserName.Text, false);
         *          Response.Redirect("~/");
         *      }
         *      else
         *          FormsAuthentication.RedirectFromLoginPage(tbUserName.Text, false);
         *  }
         *  else {
         *      tbUserName.ErrorText = "Invalid user";
         *      tbUserName.IsValid = false;
         *  }
         * }
         */


        protected void ASPxButtonLogin_Click(object sender, EventArgs e)
        {
            Page.Validate();

            if (!Page.IsValid)
            {
                return;
            }


            if (string.IsNullOrEmpty(recaptchaUserValue.Value))
            {
                Msg.Visible   = true;
                Msg.InnerHtml = "Error en los datos de seguridad, vuelva a recargar la página.";
                return;
            }


            var Recaptchav3 = new RecaptchaVerificationHelper();

            // If your site is behind CloudFlare, be sure you're suing the CF-Connecting-IP header value instead:
            // https://support.cloudflare.com/hc/en-us/articles/200170986-How-does-Cloudflare-handle-HTTP-Request-headers

            RecaptchaVerificationResult recaptchaResult = Recaptchav3.VerifyRecaptchav3Response(
                Global.Configuration.Security.Google.Recaptcha.v3.GetGoogleRecaptchaSecretKey()
                , Global.Configuration.Security.Google.Recaptcha.v3.GetGoogleRecaptchaWebsiteKey()
                , Request.UserHostAddress
                , recaptchaUserValue.Value
                );

            if (recaptchaResult == RecaptchaVerificationResult.Success)
            {
                //divMessage.InnerHtml = "Score: " + Recaptchav3.Score;
                decimal?minScore = new decimal(0.6);
                if (Recaptchav3.Score < minScore)
                {
                    Response.Redirect("~/Captcha.aspx", true);
                }


                //create session
                // Global.Sessions.UserCreateSession();

                // Go main menu.
                if (ValidateLogin())
                {
                    HttpCookie userid = new HttpCookie("User.Email", Email.Value.ToString())
                    {
                        Expires = DateTime.Now.AddYears(1)
                    };
                    Response.Cookies.Add(userid);

                    Response.Redirect("~/recursos/");
                }
                else
                {
                    Msg.Visible = true;
                }
                Msg.InnerHtml = "Login fallido. Por favor revise sus datos e intente de nuevo.";
            }
            else
            {
                Msg.Visible   = true;
                Msg.InnerHtml = "Existe un problema para validar la seguridad, intente mas tarde o por favor contacte a soporte técnico.";
            }



            bool ValidateLogin()
            {
                bool   loginOK = false;
                string salt = string.Empty, encrypass = string.Empty, dbpassword = string.Empty;

                SqlParameter[] parameters =
                {
                    new SqlParameter {
                        ParameterName = "Email", DbType = DbType.AnsiString, Size = 50, Value = Email.Value.ToString()
                    }
                };

                string tsql      = @"
SELECT TOP 1 
       [UserRegisterID]
      ,[Names]
      ,[LastName]
      ,[Email]
      ,[Password]
      ,[PasswordSalt]
  FROM [CMSUserRegister]
WHERE
Email = @Email 
ORDER BY [UserRegisterID] DESC
;";
                var    sqlserver = new SqlApiSqlClient();


                using (sqlserver.Connection = new SqlConnection(Global.Configuration.DB.GetConnectionStringDBMain()))
                {
                    using (var dr = sqlserver.DataReaderSqlString(tsql, parameters))
                    {
                        if (dr.Read())
                        {
                            salt       = dr["PasswordSalt"].ToString();;
                            dbpassword = dr["Password"].ToString();;


                            Byte[] _salt;
                            Byte[] _hash;

                            //This is the password policy that all passwords must adhere to, if the password doesn't meet the policy we save CPU processing time by not even bothering to calculate hash of a clearly incorrect password
                            PWDTK.PasswordPolicy PwdPolicy = new PWDTK.PasswordPolicy(numberUpper, numberNonAlphaNumeric, numberNumeric, minPwdLength, maxPwdLength);

                            //or we can just use the default password policy provided by the API like below
                            //PWDTK.PasswordPolicy PwdPolicy = PWDTK.cDefaultPasswordPolicy;

                            _salt = PWDTK.HashHexStringToBytes(salt); // reverse operation ;

                            //Generate the hash value
                            _hash = PWDTK.PasswordToHash(_salt, Password.Value.ToString(), iterations);

                            encrypass = PWDTK.HashBytesToHexString(_hash);


                            if (encrypass == dbpassword)
                            {
                                loginOK = true;

                                // Session["User.UserEmail"] = dr["UserEmail"].ToString();
                            }
                            else
                            {
                                loginOK = false;
                            }
                        }
                        else
                        {
                            loginOK = false;
                        }

                        dr.Close();
                    }

                    sqlserver.Connection.Close();
                };


                if (loginOK)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Esempio n. 8
0
        protected void BtnValidateData_Click(object sender, EventArgs e)
        {
            labelValidateData.CssClass = "alert alert-danger";

            // validate captcha:
            if (Request["g-recaptcha-response"] == null)
            {
                labelValidateData.Text = "Error no Captcha field form.";
                return;
            }

            if (txtCodCliente.Value == null || txtCodPago.Value == null)
            {
                labelValidateData.Text = "Parametros no pueden estar en blanco.";
                return;
            }

            var Recaptcha1 = new Recaptcha2VerificationHelper();
            RecaptchaVerificationResult captchaResult;

            if (string.IsNullOrEmpty(Request["g-recaptcha-response"].ToString()))
            {
                labelValidateData.Text = "El Captcha no puede estar vacio.";
                return;
            }
            else
            {
                string secretkey = Global.Configuration.Security.GetRecaptchaSecretKey();

                captchaResult = Recaptcha1.VerifyRecaptchaResponse(secretkey, Request["g-recaptcha-response"].ToString());

                if (captchaResult == RecaptchaVerificationResult.Success)
                {
                    //Response.Redirect( "Welcome.aspx" );
                    //labelValidateData.Text = "Captcha OK :D";
                }
                else if (captchaResult == RecaptchaVerificationResult.IncorrectCaptchaSolution)
                {
                    labelValidateData.Text = "Valor de Captcha NO Valido.";
                    return;
                }
                else
                {
                    labelValidateData.Text = "Existe un problema para validar el captcha, intente mas tarde o por favor contacte a soporte.";
                    return;
                }
            }

            string CodCliente = txtCodCliente.Value.ToString();
            string CodPago    = txtCodPago.Value.ToString();

            /*
             */
            string tsql = @"
EXEC Factura_Get_Total @CodCliente, @Numero;
";

            SqlParameter[] params1 =
            {
                new SqlParameter {
                    ParameterName = "@CodCliente", DbType = DbType.String, Size = 60, Value = CodCliente
                }
                , new SqlParameter{
                    ParameterName = "@Numero", DbType = DbType.String, Size = 30, Value = CodPago
                }
            };

            decimal?result = SqlApiSqlClient.GetNumericRecordValue(tsql, params1, Global.DAL.GetConnectionStringDBMain(), 60);

            if (result == null)
            {
                labelValidateData.Text     = "No se encuentran datos coincidentes para el pago.";
                labelValidateData.CssClass = "alert alert-warning";
            }
            else
            {
                txtMontoPago.Value         = result.Value;
                labelValidateData.Text     = "Comprobante encontrado, seleccione forma de pago...";
                labelValidateData.CssClass = "alert alert-success";
            }
        }
        /*
         * bool IsUserAlreadyExist()
         * {
         *
         *  SqlParameter[] parameters = {
         *      new SqlParameter { ParameterName="UserLogin", DbType= DbType.AnsiString, Size=128, Value= Email.Value.ToString()}
         *
         *  };
         *
         *  string email = SqlApiSqlClient.GetStringRecordValue("SELECT [UserLogin] FROM Users WHERE [UserLogin] = @UserLogin;", parameters, Global.Configuration.DB.GetConnectionStringDBMain());
         *
         *  if (!string.IsNullOrEmpty(email)) return true;
         *  else return false;
         *
         * }
         */

        //TODO: send confirmation email
        bool CreateUser()
        {
            string salt, encrypass;

            Byte[] _salt;
            Byte[] _hash;

            //This is the password policy that all passwords must adhere to, if the password doesn't meet the policy we save CPU processing time by not even bothering to calculate hash of a clearly incorrect password
            PWDTK.PasswordPolicy PwdPolicy = new PWDTK.PasswordPolicy(numberUpper, numberNonAlphaNumeric, numberNumeric, minPwdLength, maxPwdLength);

            //or we can just use the default password policy provided by the API like below
            //PWDTK.PasswordPolicy PwdPolicy = PWDTK.cDefaultPasswordPolicy;

            //Get a random salt
            _salt = PWDTK.GetRandomSalt(saltSize);
            //Generate the hash value
            _hash = PWDTK.PasswordToHash(_salt, PasswordReg.Value.ToString(), iterations);

            encrypass = PWDTK.HashBytesToHexString(_hash);
            salt      = PWDTK.HashBytesToHexString(_salt); // reverse operation PWDTK.HashHexStringToBytes();


            SqlParameter[] parameters =
            {
                new SqlParameter {
                    ParameterName = "Names", DbType = DbType.AnsiString, Size = 50, Value = Names.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "LastName", DbType = DbType.AnsiString, Size = 50, Value = LastName.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "Mobile", DbType = DbType.AnsiString, Size = 50, Value = Mobile.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "Email", DbType = DbType.AnsiString, Size = 50, Value = Email.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "Business", DbType = DbType.AnsiString, Size = 50, Value = Business.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "Position", DbType = DbType.AnsiString, Size = 50, Value = Position.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "Country", DbType = DbType.AnsiString, Size = 50, Value = Country.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "City", DbType = DbType.AnsiString, Size = 50, Value = City.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "Telephone", DbType = DbType.AnsiString, Size = 50, Value = Telephone.Value.ToString()
                }
                , new SqlParameter{
                    ParameterName = "Password", DbType = DbType.AnsiString, Size = 1000, Value = encrypass
                }
                , new SqlParameter{
                    ParameterName = "PasswordSalt", DbType = DbType.AnsiString, Size = 1000, Value = salt
                }
            };

            string tsql      = @"
SET NOCOUNT OFF;
INSERT INTO [CMSUserRegister] ([Names], [LastName], [Mobile], [Email], [Business], [Position], [Country], [City], [Telephone], [RegisterDate], [Password], [PasswordSalt], [LastLogin]) VALUES (@Names, @LastName, @Mobile, @Email, @Business, @Position, @Country, @City, @Telephone, GETDATE(), @Password, @PasswordSalt, GETDATE());
; ";
            var    sqlserver = new SqlApiSqlClient();
            int    r         = sqlserver.CommandExecuteSqlString(tsql, parameters, Global.Configuration.DB.GetConnectionStringDBMain());

            if (r == 1)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 10
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        private WebPage LoadPage()
        {
            var key = WebUtils.TitleRemoveIllegalCharacters(Request.Url.ToString());
            var obj = GetObjectFromCache(key);

            if (obj != null)
            {
                return((WebPage)obj);
            }
            else
            {
                var stitle = GetTitle();

                var tSql = "CMS_GetPage_byTitle";

                var sqlapi     = new SqlApiSqlClient();
                var paramsToSP = new SqlParameter[] { new SqlParameter("@WebsiteId", SqlDbType.Int)
                                                      {
                                                          Value = Convert.ToInt32(Application["CMS_SitioWebId"].ToString())
                                                      }
                                                      , new SqlParameter("@Title", SqlDbType.NVarChar, 120)
                                                      {
                                                          Value = stitle
                                                      } };

                using (sqlapi.Connection = new SqlConnection(Web4CRM.Global.GetConnectionStringDBWeb4CRM()))
                {
                    var reader = sqlapi.DataReaderSqlSP(tSql, paramsToSP, 60);

                    if (reader.HasRows)
                    {
                        if (reader.Read())
                        {
                            _page.IsFrontpage    = false;
                            _page.ContentTypeId  = 1;
                            _page.MetaRobotsId   = 1;
                            _page.PageStatusId   = 1;
                            _page.Title          = "xxxxxxxxxxxxxxxxx";
                            _page.IsPrivateTheme = true;
                            _page.Theme          = "Softcanon";

                            Page.Title = reader["Title"].ToString();

                            var masterContent = Master.FindControl("ContentPlaceHolderHead") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = "<meta charset=\"UTF-8\" />"
                                });
                                masterContent.Controls.Add(new Literal {
                                    Text = "<meta name=\"description\" content=\"" + reader["MetaDescription"].ToString() + "\" />"
                                });
                                masterContent.Controls.Add(new Literal {
                                    Text = "<meta name=\"keywords\" content=\"" + reader["MetaKeywords"].ToString() + "\" />"
                                });
                                masterContent.Controls.Add(new Literal {
                                    Text = "<meta name=\"author\" content=\"" + reader["MetaAutor"].ToString() + "\" />"
                                });
                                masterContent.Controls.Add(new Literal {
                                    Text = "<meta name=\"copyright\" content=\"" + reader["MetaCopyright"].ToString() + "\" />"
                                });

                                if (!String.IsNullOrEmpty(reader["MetaRobotsId"].ToString()))
                                {
                                    masterContent.Controls.Add(new Literal {
                                        Text = "<meta name=\"robots\" content=\"" + GetEnumMetaRobotsValue((EnumMetaRobots)reader.GetInt32(reader.GetOrdinal("MetaRobotsId"))) + "\" />"
                                    });
                                }
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderHead"].ToString()
                                });
                                masterContent.Controls.Add(new Literal {
                                    Text = "<style type=\"text/css\">" + Environment.NewLine + reader["ContentPlaceHolderHeadStyles"].ToString() + Environment.NewLine + "</style>"
                                });


                                if (!String.IsNullOrEmpty(reader["GoogleAnalyticsTrackingCode"].ToString()))
                                {
                                    var GoogleAnalyticsTrackingCode = @"
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', '" + reader["GoogleAnalyticsTrackingCode"].ToString() + "', '" + Web4CRM.Global.GetRequestDomainName() + @"');
  ga('send', 'pageview');

</script>
";

                                    masterContent.Controls.Add(new Literal {
                                        Text = GoogleAnalyticsTrackingCode
                                    });
                                }
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderTop") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderTop"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderLogo") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderLogo"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderHeaderTop") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderHeaderTop"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderHeader") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderHeader"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderHeaderBottom") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderHeaderBottom"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderMenuTop") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderMenuTop"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderMenu") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderMenu"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderMenuBottom") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderMenuBottom"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderContentTop") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderContentTop"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderContent") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderContent"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderContentBottom") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderContentBottom"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderSideBarRightTop") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderSideBarRightTop"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderSideBarRight") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderSideBarRight"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderSideBarRightBottom") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderSideBarRightBottom"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderSideBarLeftTop") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderSideBarLeftTop"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderSideBarLeft") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderSideBarLeft"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderFooterTop") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderFooterTop"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderFooter") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderFooter"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderFooterBottom") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderFooterBottom"].ToString()
                                });
                            }

                            masterContent = Master.FindControl("ContentPlaceHolderBottom") as ContentPlaceHolder;
                            if (masterContent != null)
                            {
                                masterContent.Controls.Add(new Literal {
                                    Text = reader["ContentPlaceHolderBottom"].ToString()
                                });
                            }
                        }
                    }
                    else
                    {
                        Web4CRM.Global.LogError(Context, Web4CRM.Global.EnumLogCategories.WEB4CMS, "Page not found");
                        Server.Transfer("~/ErrorPageHttp404.aspx");
                    }

                    HttpRuntime.Cache.Insert(key, _page, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(AppConfiguration.GetCacheWeb4CMSPagesCacheDuration()));


                    _page.IsFrontpage    = false;
                    _page.ContentTypeId  = 1;
                    _page.MetaRobotsId   = 1;
                    _page.PageStatusId   = 1;
                    _page.Title          = "xxxxxxxxxxxxxxxxx";
                    _page.IsPrivateTheme = true;
                    _page.Theme          = "Softcanon";

                    return(_page);
                }
            }
        }