Beispiel #1
0
        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);
        }