public void getTypeBySpeed(RamModel thisRam)
        {
            int clockSpeed;

            if (thisRam.speed.Length > 5)
            {
                clockSpeed = Convert.ToInt32(thisRam.speed.Remove(4));
            }
            else
            {
                clockSpeed = 0;
            }

            if (clockSpeed <= 1066)
            {
                thisRam.type = 21;
            }
            else if (clockSpeed > 2133)
            {
                thisRam.type = 26;
            }
            else
            {
                thisRam.type = 24;
            }
        }
        public PCinfoModel getPcInfo()
        {
            PCinfoModel thisPC = new PCinfoModel();

            try {
                if (new ManagementObjectSearcher(@"SELECT * FROM Win32_Processor") == null || new ManagementObjectSearcher(@"SELECT * FROM Win32_Processor").Get().Count <= 0)
                {
                    thisPC.proesser = "No CPU";
                }
                else
                {
                    foreach (var CPU in new ManagementObjectSearcher(@"SELECT * FROM Win32_Processor").Get())
                    {
                        thisPC.proesser = CPU["Name"].ToString();
                    }
                }

                if (new ManagementObjectSearcher(@"SELECT * FROM Win32_BaseBoard") == null || new ManagementObjectSearcher(@"SELECT * FROM Win32_BaseBoard").Get().Count <= 0)
                {
                    thisPC.motherBoard = "No motherBoard";
                }
                else
                {
                    foreach (var MTB in new ManagementObjectSearcher(@"SELECT * FROM Win32_BaseBoard").Get())
                    {
                        thisPC.motherBoard = MTB["Manufacturer"].ToString() + " " + MTB["Product"].ToString();
                    }
                }

                int i = 0;
                if (new ManagementObjectSearcher(@"Select * From Win32_PhysicalMemory") == null || new ManagementObjectSearcher(@"Select * From Win32_PhysicalMemory").Get().Count <= 0)
                {
                    RamModel thisRam = new RamModel();
                    thisRam.Maker = "No Ram";
                    thisPC.rams.Add(thisRam);
                }
                else
                {
                    foreach (var RAM in new ManagementObjectSearcher(@"Select * From Win32_PhysicalMemory").Get())
                    {
                        RamModel thisRam = new RamModel();
                        thisRam.Maker    = Convert.ToString(RAM["Manufacturer"]);
                        thisRam.speed    = Convert.ToString(RAM["Speed"]) + "MHz";
                        thisRam.type     = Convert.ToInt32(RAM["MemoryType"]);
                        thisRam.capacity = Convert.ToInt64(RAM["Capacity"]);

                        thisPC.rams.Add(thisRam);
                    }
                }

                if (new ManagementObjectSearcher(@"Select * From Win32_DiskDrive") == null || new ManagementObjectSearcher(@"Select * From Win32_DiskDrive").Get().Count <= 0)
                {
                    deviceModle thisdevice = new deviceModle();
                    thisdevice.modleName = "No Drive";
                    thisPC.drives.Add(thisdevice);
                }
                else
                {
                    foreach (var Drive in new ManagementObjectSearcher(@"Select * From Win32_DiskDrive").Get())
                    {
                        deviceModle thisdevice = new deviceModle();

                        thisdevice.modleName = Convert.ToString(Drive["Model"]) + ++i;

                        if (Convert.ToInt64(Drive["Size"]) > 0)
                        {
                            thisdevice.Size = Math.Round((Convert.ToInt64(Drive["Size"]) / Math.Pow(1024, 3)), 3) + "GB";
                        }


                        thisPC.drives.Add(thisdevice);
                    }
                }

                if (new ManagementObjectSearcher(@"Select * From Win32_VideoController") == null || new ManagementObjectSearcher(@"Select * From Win32_VideoController").Get().Count <= 0)
                {
                    thisPC.videoCard = "No GPU";
                }
                else
                {
                    foreach (var GPU in new ManagementObjectSearcher(@"Select * From Win32_VideoController").Get())
                    {
                        thisPC.videoCard = Convert.ToString(GPU["Name"]);
                    }
                }

                if (new ManagementObjectSearcher(@"Select * From Win32_OperatingSystem").Get() == null || new ManagementObjectSearcher(@"Select * From Win32_OperatingSystem").Get().Count <= 0)
                {
                    thisPC.os = "No OS";
                }
                else
                {
                    foreach (var OS in new ManagementObjectSearcher(@"Select * From Win32_OperatingSystem").Get())
                    {
                        if (String.IsNullOrEmpty(Convert.ToString(OS["Name"])) || Convert.ToString(OS["Name"]).Split().Length < 1)
                        {
                            thisPC.os = Convert.ToString(OS["Name"]) + " " + Convert.ToString(OS["OSArchitecture"]) + " ";
                        }
                        else
                        {
                            thisPC.os = Convert.ToString(OS["Name"]).Split('|')[0] + " " + Convert.ToString(OS["OSArchitecture"]) + " ";
                        }


                        string version = "";

                        #region Switch OS Name case
                        switch (Convert.ToString(OS["BuildNumber"]))
                        {
                        case "2600":
                            version = "Windows XP";
                            break;

                        case "2600.1105-1106":
                            version = "Windows XP, Service Pack 1";
                            break;

                        case "2600.218":
                            version = "Windows XP, Service Pack 2";
                            break;

                        case "3790.118":
                            version = "Windows Server 2003, Service Pack 1";
                            break;

                        case "3790":
                            version = "Windows Server 2003 R2";
                            break;

                        case "6000":
                            version = "Windows Vista";
                            break;

                        case "4500":
                            version = "Windows Home Server";
                            break;

                        case "6001":
                            version = "Windows Vista, Service Pack 1";
                            break;

                        case "6002":
                            version = "Windows Vista, Service Pack 2";
                            break;

                        case "7600":
                            version = "Windows 7";
                            break;

                        case "7601":
                            version = "Windows Server 2008 R2, Service Pack 1";
                            break;

                        case "8400":
                            version = "Windows Home Server 2011";
                            break;

                        case "9200":
                            version = "Windows 8";
                            break;

                        case "9600":
                            version = "Windows 8.1";
                            break;

                        case "10240":
                            version = "Windows 10, Version 1507";
                            break;

                        case "10586":
                            version = "Windows 10, Version 1511";
                            break;

                        case "14393":
                            version = "Windows 10, Version 1607";
                            break;

                        case "15063":
                            version = "Windows 10, Version 1703";
                            break;

                        case "16299":
                            version = "Windows 10, Version 1709";
                            break;

                        case "17134":
                            version = "Windows 10, Version 1803";
                            break;

                        case "17763":
                            version = "Windows 10, Version 1809";
                            break;

                        case "6003":
                            version = "Windows Server 2008, Service Pack 2, Rollup KB4489887";
                            break;

                        case "18362":
                            version = "Windows 10, Version 1903";
                            break;

                        case "18363":
                            version = "Windows 10, Version 1909";
                            break;

                        case "19041":
                            version = "Windows 10, Version 2004";
                            break;

                        case "19042":
                            version = "Windows 10, Version 20H2";
                            break;

                        default:
                            version = "Can't Find " + OS["BuildNumber"];
                            break;
                        }
                        #endregion

                        thisPC.os += version;
                    }
                }
            } catch (Exception ex) {
                System.Diagnostics.Trace.Write(ex.ToString());

                System.Diagnostics.Trace.Assert(false, ex.ToString());
                string debugTxetPath = "C:\\getPcInfo.txt";
                using (TextWriterTraceListener _DebugLog = new TextWriterTraceListener(debugTxetPath)) {
                    Trace.Listeners.Add(_DebugLog);
                    Trace.AutoFlush = true;
                    Trace.WriteLine("SQL Area error:" + ex.StackTrace.ToString() + ex.Source.ToString() + ex.Data.ToString());
                    Trace.WriteLine(ex.ToString());
                    Trace.Write(thisPC.proesser + "\n" + thisPC.motherBoard + "\n" + thisPC.rams.ToArray() + "\n" + thisPC.drives.ToArray() + "\n" + thisPC.videoCard + "\n" + thisPC.os);
                    Trace.Listeners.Clear();
                    Trace.Close();
                }

                throw ex;
            }

            return(thisPC);
        }