Beispiel #1
0
 string tryGetUserEmail()
 {
     try {
         string sql = "SELECT email FROM users WHERE @id = id;";
         var    cmd = new MySqlCommand(sql, QSMain.connectionDB);
         cmd.Parameters.AddWithValue("@id", Id);
         using (var rdr = cmd.ExecuteReader()) {
             if (rdr.Read())
             {
                 return(DBWorks.GetString(rdr, "email", String.Empty));
             }
         }
     } catch (MySqlException myEx) {
         if (myEx.Number == 1054)
         {
             logger.Warn(myEx, "В базе отсутствует поле email в таблице users. Требуется обновление версии базы.");
             return(String.Empty);
         }
         else
         {
             throw myEx;
         }
     }
     return(String.Empty);
 }
Beispiel #2
0
        public void UserFill(int UserId)
        {
            NewUser = false;
            logger.Info("Запрос пользователя №{0}...", UserId);
            string sql = "SELECT * FROM users WHERE users.id = @id";

            try {
                QSMain.CheckConnectionAlive();
                MySqlCommand cmd = new MySqlCommand(sql, QSMain.connectionDB);

                cmd.Parameters.AddWithValue("@id", UserId);

                MySqlDataReader rdr = cmd.ExecuteReader();

                rdr.Read();
                bool   deactivated = false;
                string email       = String.Empty;
                try {
                    deactivated = DBWorks.GetBoolean(rdr, "deactivated", false);
                    email       = DBWorks.GetString(rdr, "email", String.Empty);
                } catch {
                }

                entryID.Text    = rdr["id"].ToString();
                entryLogin.Text = rdr["login"].ToString();
                //Если SaaS - запретить редактировать логин.
                entryLogin.Sensitive       = !Session.IsSaasConnection;
                OriginLogin                = rdr["login"].ToString();
                entryName.Text             = rdr["name"].ToString();
                entryPassword.Text         = passFill;
                entryEmail.Text            = email;
                checkDeactivated.Active    = deactivated;
                checkDeactivated.Sensitive = QSMain.User.Login != OriginLogin;
                checkAdmin.Active          = rdr.GetBoolean(QSMain.AdminFieldName);

                if (deactivated && Session.IsSaasConnection)                  //FIXME Очень странное условие. Нужно разобраться. Что делает этот блок и зачем?
                {
                    entryName.Sensitive        = entryPassword.Sensitive = entryEmail.Sensitive = false;
                    checkDeactivated.Sensitive = checkAdmin.Sensitive = false;
                }

                foreach (KeyValuePair <string, CheckButton> Pair in RightCheckButtons)
                {
                    Pair.Value.Active = rdr.GetBoolean(QSMain.ProjectPermission[Pair.Key].DataBaseName);
                }

                if (permissionViews != null)
                {
                    foreach (var view in permissionViews)
                    {
                        view.DBFieldValue = DBWorks.GetString(rdr, view.DBFieldName);
                    }
                }

                textviewComments.Buffer.Text = rdr["description"].ToString();
                rdr.Close();

                this.Title = entryName.Text;
                logger.Info("Ok");
            } catch (Exception ex) {
                logger.Error(ex, "Ошибка получения информации о пользователе!");
                QSMain.ErrorMessage(this, ex);
            }
        }