예제 #1
0
        /// <summary>
        /// Обновление информации о должности по Id
        /// </summary>
        /// <param name="id"></param>
        /// <param name="data"></param>
        /// <param name="session"></param>
        /// <returns></returns>
        public bool UpdatePost(int id, PostDataIn data, string session)
        {
            var result    = false;
            var flagname  = !string.IsNullOrWhiteSpace(data.PostsName);
            var flaggrade = data.Grade != 0;

            try
            {
                using (var _connection = new NpgsqlConnection(MainConnection.GetConnectionString()))
                {
                    _connection.Open();

                    var sqlValue = string.Format("{0}{2}{1}",
                                                 flagname ? "namepost = @name" : string.Empty,
                                                 flaggrade ? "grade = @grade" : string.Empty,
                                                 flagname && flaggrade ? "," : string.Empty);

                    var sqlQueryPosts = string.Format(@"UPDATE {0}posts SET {1}
                                                         WHERE id = @id",
                                                      MainConnection.GetSQLNamespace(), sqlValue);

                    using (var _postgreCommand = new NpgsqlCommand(sqlQueryPosts, _connection))
                    {
                        _postgreCommand.Parameters.AddWithValue("id", id);

                        if (flagname)
                        {
                            _postgreCommand.Parameters.AddWithValue("name", data.PostsName);
                        }

                        if (flaggrade)
                        {
                            _postgreCommand.Parameters.AddWithValue("grade", data.Grade);
                        }

                        result = _postgreCommand.ExecuteReader().HasRows;
                    }
                }
            } catch (Exception e)
            {
                throw new Exception("Ошибка обновления должности с ID = " + id, e);
            }

            if (_setting.Value.ChachedPosts)
            {
                try
                {
                    _cache.EditPost(id, data, session);
                }
                catch
                {
                    // Логгирование ошибки, работа продолжится через БД
                }
            }

            return(result);
        }