public Volume.Volume GetVolume(string hash) { if (string.IsNullOrEmpty(hash)) { return(null); } return(Volumes.FirstOrDefault(v => hash.StartsWith(v.VolumeId))); }
/// <summary> /// Загружает исходный текст с переводом в кингу /// </summary> /// <param name="package"></param> /// <returns></returns> public async Task Upload(SCIPackage package) { await CreateContext(); await ReadVolumes(); var document = await GetDocumentAsync(_bookUrl); Console.WriteLine("Getting strings"); var resources = package.GetTextResources(); List <ResStrings> resStrings = new List <ResStrings>(); foreach (var res in resources) { var en = res.GetStrings(false); if (en == null || en.Length == 0) { continue; } if (!en.Any(s => s.Length > 0)) { continue; // Full empty resource } var tr = res.GetStrings(true); resStrings.Add(new ResStrings { Resource = res, En = en, Tr = tr }); } resStrings = resStrings.OrderBy(r => r.Resource.Type) .ThenBy(r => r.Resource.Number) .ToList(); resStrings = resStrings.Take(10).ToList(); // DEBUG!! Console.WriteLine($"Create {resStrings.Count} volumes"); foreach (var res in resStrings) { var vol = Volumes.FirstOrDefault(v => v.Name.Equals(res.Resource.FileName, StringComparison.OrdinalIgnoreCase)); if (vol != null) { res.Url = vol.URL; } else { res.Url = await CreateVolume(document, res.Resource.FileName); } } var tasks = resStrings .Select(r => UploadRes(r)) .ToArray(); await Task.WhenAll(tasks); }
public void AddToVolumes(string productName, int quantity) { Volume volume = Volumes.FirstOrDefault(v => v.ProductName.Equals(productName)); if (volume == null) { volume = new Volume(productName, quantity); Volumes.Add(volume); } else { volume.TotalQuantity += quantity; } }
/// <summary> /// Загружает исходный текст с переводом в кингу /// </summary> /// <param name="package"></param> /// <returns></returns> public async Task Upload(SCIPackage package, string resourceName) { await CreateContext(); await ReadVolumes(); var document = await GetDocumentAsync(_bookUrl); Console.WriteLine("Getting strings"); var res = package.GetResouce(resourceName); List <ResStrings> resStrings = new List <ResStrings>(); var en = res.GetStrings(false); if (en == null || en.Length == 0) { return; } if (!en.Any(s => s.Length > 0)) { return; // Full empty resource } var tr = res.GetStrings(true); var str = new ResStrings { Resource = res, En = en, Tr = tr }; resStrings.Add(str); Console.WriteLine($"Create {resStrings.Count} volumes"); var vol = Volumes.FirstOrDefault(v => v.Name.Equals(res.FileName, StringComparison.OrdinalIgnoreCase)); if (vol != null) { str.Url = vol.URL; } else { str.Url = await CreateVolume(document, res.FileName); } var tasks = resStrings .Select(r => UploadRes(r)) .ToArray(); await Task.WhenAll(tasks); }
private async Task GetAllVolumes() { const string query = @" SELECT Caption, DeviceID, Description, FreeSpace, Name, Size, VolumeSerialNumber FROM Win32_LogicalDisk WHERE DriveType = 3"; //fixed disks using (var q = Wmi.Query(Name, query)) { foreach (var disk in await q.GetDynamicResult()) { var id = $"{disk.DeviceID}"; var v = Volumes.FirstOrDefault(x => x.Id == id); if (v == null) { v = new Volume(); Volumes.Add(v); } v.Id = $"{disk.DeviceID}"; v.Available = disk.FreeSpace; v.Caption = disk.VolumeSerialNumber; v.Description = disk.Name + " - " + disk.Description; v.Name = disk.Name; v.NodeId = Id; v.Size = disk.Size; v.Type = "Fixed Disk"; v.Status = NodeStatus.Active; v.Used = v.Size - v.Available; if (v.Size > 0) { v.PercentUsed = (float)(100 * v.Used / v.Size); } } } }
public Volume GetVolume(string id) => Volumes.FirstOrDefault(v => v.Id == id);