public static async Task Execute(string id, PackageUpdate update) { try { await PackageDAO.UpdatePackage(id, update); } catch (Exception e) { throw e; } }
//TODO separar em metodos individuais privados public static async Task UpdatePackage(string id, PackageUpdate packageUpdate) { try { var filter = Builders <Package> .Filter.Where(package => package.Id == ObjectId.Parse(id)); } catch (Exception) { throw; } }
public Task HandleUpdateAsync(PackageUpdate update, CancellationToken cancellationToken) { // TODO: Each call to ParseMessageFor needs to be localized for each user var tasks = new List <Task>(update.Channels.Count()); foreach (var channel in update.Channels) { Thread.CurrentThread.CurrentUICulture = new CultureInfo(channel.LanguageCode); var message = _parser.ParseMessageFor(update.Updates, update.Previous, true); tasks.Add(SendMessageToChats(message, channel.Channels, cancellationToken)); } return(Task.WhenAll(tasks)); }
protected void updateTools(PackageChange change, int index) { if (Users.Count == 0 && WeakUsers.Count == 0) { return; } PackageUpdate update = new PackageUpdate(change, index); bool isNewUpdate; lock (_updatelock) { isNewUpdate = !pendingUpdates.Contains(update); } if (isNewUpdate) { lock (_updatelock) { pendingUpdates.Add(update); } Task task = Task.Delay(queuingDelay); taskCompletion[task.Id] = false; tasks.Add(task); task.ContinueWithOnUIThread(x => { taskCompletion[x.Id] = true; if (tasks.TrueForAll(t => taskCompletion[t.Id])) { tasks.Clear(); taskCompletion.Clear(); List <PackageUpdate> updates; lock (_updatelock) { updates = pendingUpdates.ToList(); pendingUpdates.Clear(); } var removedImports = updates.Where(u => u.Change == PackageChange.ImportRemove).Select(u => u.Index).ToList(); var removedExports = updates.Where(u => u.Change == PackageChange.ExportRemove).Select(u => u.Index).ToList(); var pendingUpdatesList = new List <PackageUpdate>(); //remove add/change updates for entries that have been removed foreach (PackageUpdate upd in updates) { switch (upd.Change) { case PackageChange.ExportAdd: case PackageChange.ExportData: case PackageChange.ExportHeader: { if (!removedExports.Contains(upd.Index)) { pendingUpdatesList.Add(upd); } break; } case PackageChange.ImportAdd: case PackageChange.ImportHeader: { if (!removedImports.Contains(upd.Index)) { pendingUpdatesList.Add(upd); } break; } default: pendingUpdatesList.Add(upd); break; } } foreach (var item in Users.Concat(WeakUsers)) { item.handleUpdate(pendingUpdatesList); } PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsModified))); } }); } }