public async Task <string> Save(int processId, int placeId) { string res = "OK"; if (res == "OK") { List <Task <string> > SaveTasks = new List <Task <string> >(); foreach (PartUsage pu in Items) { pu.ProcessId = processId; pu.PlaceId = placeId; if (pu.PartUsageId == 0) { pu.CreatedBy = RuntimeSettings.CurrentUser.UserId; SaveTasks.Add(pu.Add()); } else { //if (!pu.IsSaved) //{ SaveTasks.Add(pu.Edit()); //} } } if (RemovedItems.Any()) { foreach (PartUsage pu in RemovedItems) { SaveTasks.Add(pu.Remove()); } } IEnumerable <string> results = await Task.WhenAll <string>(SaveTasks); for (int i = RemovedItems.Count; i > 0; i--) { if (RemovedItems[i - 1].IsSaved) { RemovedItems.Remove(RemovedItems[i - 1]); } } Task.Run(() => TakeSnapshot()); if (results.Where(r => r != "OK").Any()) { return(string.Join("; ", results.Where(r => r != "OK"))); } else { return("OK"); } } return(res); }
public async Task <string> Save(int?processId = null, int?partId = null, int?placeId = null) { string res = "OK"; if (res == "OK") { List <Task <string> > SaveTasks = new List <Task <string> >(); foreach (File f in Items) { if (f.FileId == 0) { f.CreatedBy = RuntimeSettings.CurrentUser.UserId; f.CreatedOn = DateTime.Now; try { f.Type = System.IO.Path.GetExtension(f.Link).Substring(1, 3); var s = new System.IO.FileInfo(f.Link); f.Size = s.Length; }catch (Exception ex) { } if (processId != null) { SaveTasks.Add(f.Add($"ProcessId={processId}")); } else if (partId != null) { SaveTasks.Add(f.Add($"PartId={partId}")); } else if (placeId != null) { SaveTasks.Add(f.Add($"PlaceId={placeId}")); } } else { //if (!pu.IsSaved) //{ //SaveTasks.Add(f.Edit()); //} } } if (RemovedItems.Any()) { foreach (File f in RemovedItems) { SaveTasks.Add(f.Remove()); } } IEnumerable <string> results = await Task.WhenAll <string>(SaveTasks); for (int i = RemovedItems.Count; i > 0; i--) { if (RemovedItems[i - 1].IsSaved) { RemovedItems.Remove(RemovedItems[i - 1]); } } FileKeeper.Items = Items; FileKeeper.AddToUploadQueue(); Task.Run(() => TakeSnapshot()); if (results.Where(r => r != "OK").Any()) { return(string.Join("; ", results.Where(r => r != "OK"))); } else { return("OK"); } } return(res); }