public List <RecentDocument> GetRecentDocument(string username, string searchTerm) { List <RecentDocument> recentDocumentList = null; try { using (SqlConnection con = _databaseFactory.GetDBConnection()) { using (SqlCommand cmd = new SqlCommand()) { if (con.State == ConnectionState.Closed) { con.Open(); } cmd.Connection = con; cmd.CommandText = "[PSA].[GetRecentDocument]"; cmd.Parameters.Add("@SearchValue", SqlDbType.NVarChar, -1).Value = searchTerm; cmd.Parameters.Add("@LoginName", SqlDbType.NVarChar, 250).Value = username; cmd.CommandType = CommandType.StoredProcedure; using (SqlDataReader sdr = cmd.ExecuteReader()) { if ((sdr != null) && (sdr.HasRows)) { recentDocumentList = new List <RecentDocument>(); while (sdr.Read()) { RecentDocument recentDocument = new RecentDocument(); recentDocument.DocumentID = (sdr["DocumentID"].ToString() != "" ? Guid.Parse(sdr["DocumentID"].ToString()) : recentDocument.DocumentID); recentDocument.DocumentDate = (sdr["DocumentDate"].ToString() != "" ? DateTime.Parse(sdr["DocumentDate"].ToString()) : recentDocument.DocumentDate); recentDocument.DocumentDateFormatted = (sdr["DocumentDate"].ToString() != "" ? DateTime.Parse(sdr["DocumentDate"].ToString()).ToString(_settings.DateFormat) : recentDocument.DocumentDateFormatted); recentDocument.DocumentNo = (sdr["DocumentNo"].ToString() != "" ? (sdr["DocumentNo"].ToString()) : recentDocument.DocumentNo); recentDocument.Icon = (sdr["Icon"].ToString() != "" ? (sdr["Icon"].ToString()) : recentDocument.Icon); recentDocument.DocumentLink = (sdr["DocumentLink"].ToString() != "" ? (sdr["DocumentLink"].ToString()) : recentDocument.DocumentLink); recentDocument.Particulars = (sdr["Particulars"].ToString() != "" ? (sdr["Particulars"].ToString()) : recentDocument.Particulars); recentDocumentList.Add(recentDocument); } } } } } } catch (Exception ex) { throw ex; } return(recentDocumentList); }
/// <summary> /// Get a list of recent files by parsing the windows registry /// </summary> /// <returns>The list of recent files</returns> public List <RecentDocument> GetRecentDocuments() { List <RecentDocument> recentDocuments = new List <RecentDocument>(); try { RegistryKey recentDocumentsRegistryKey = Registry.CurrentUser.OpenSubKey(_RECENT_DOCUMENTS); string[] subkeys = recentDocumentsRegistryKey.GetSubKeyNames(); foreach (string subkeyName in subkeys) { UpdateProgress("Working on key " + subkeyName); RegistryKey subkey = recentDocumentsRegistryKey.OpenSubKey(subkeyName); string[] documentEntries = subkey.GetValueNames(); foreach (string entryName in documentEntries) { int id = -1; if (!int.TryParse(entryName, out id)) { continue; } object obVal = subkey.GetValue(entryName, RegistryValueKind.Binary); byte[] bytes = (byte[])obVal; MemoryStream ms = new MemoryStream(); //TO-DO Decode the rest of the data (if possible) in the array, this only extracts the file name for (int i = 0; i < bytes.Length - 1; i++) { if (i > 0 && (bytes[i - 1] | bytes[i] | bytes[i + 1]) == 0) { break; } else { ms.Write(bytes, i, 1); } } string strVal = System.Text.Encoding.Unicode.GetString(ms.ToArray()); RecentDocument rd = new RecentDocument(); rd.Name = strVal; rd.Extension = Path.GetExtension(strVal); recentDocuments.Add(rd); } } } catch (Exception exc) { MyDebugger.Instance.LogMessage(exc, DebugVerbocity.Exception); } MyDebugger.Instance.LogMessage($"Loaded {recentDocuments.Count} recent documents.", DebugVerbocity.Informational); return(recentDocuments); }