예제 #1
0
        /// <summary>
        /// Получение информации о сотруднике
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="session"></param>
        /// <returns></returns>
        public OfficerData GetOfficerInfoByID(int ID, string session)
        {
            OfficerData result = null;

            if (_setting.Value.ChachedEmployee)
            {
                try
                {
                    result = _cache.GetOfficer(ID, session);

                    if (result != null)
                    {
                        return(result);
                    }
                }
                catch (Exception e)
                {
                    // Логгирование ошибки, работа продолжится через БД
                }
            }

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

                    var sqlQuery = string.Format(@"select ID, FirstName, Surname, Patronymic,  BirthDate
                                                     from {0}Officer
                                                    where ID = @id", MainConnection.GetSQLNamespace());

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

                        using (var _reader = _postgreCommand.ExecuteReader())
                        {
                            if (_reader.Read())
                            {
                                result = new OfficerData();

                                result.ID         = ID;
                                result.Name       = _reader["FirstName"].ToString();
                                result.SurName    = _reader["Surname"].ToString();
                                result.Patronymic = _reader["Patronymic"].ToString();
                                result.BirthDate  = _reader["BirthDate"] == null ? DateTime.MinValue : Convert.ToDateTime(_reader["BirthDate"]);

                                result.Posts = GetPostsInfoByOfficerID(ID, session);
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception("Ошибка получения информации из БД о сотруднике с ID = " + ID, e);
            }

            if (_setting.Value.ChachedEmployee)
            {
                try
                {
                    _cache.AddOfficer(ID, result, session);
                }
                catch (Exception e)
                {
                    // Логгирование ошибки, работа продолжится через БД
                    //throw new Exception("Ошибка добавления информации из кэша о сотруднике с ID = " + ID, e);
                }
            }

            return(result);
        }