/// <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); }