private async Task UpdateTaskWithoutExternalId(API.Task task, Func <API.Task, string> externalIdLookup) { var externalId = externalIdLookup(task); if (!String.IsNullOrEmpty(externalId)) { logger.LogInformation($"Updating previous untracked Task(Name={task.name}) with ExternalId: {externalId}"); try { await timrSync.SetTaskExternalIdAsync(new API.SetTaskExternalIdRequest1(new API.SetTaskExternalIdRequest { name = task.name, newExternalTaskId = externalId, parentExternalId = task.parentExternalId } )).ConfigureAwait(false); task.externalId = externalId; } catch (FaultException e) { logger.LogError($"Failed SetTaskExternalId Task(Name={task.name}, ExternalId={externalId}): {e.Message}"); } catch (Exception e) { logger.LogError(e, $"Failed SetTaskExternalId Task(Name={task.name}, ExternalId={externalId})"); } } }
public async Task AddTask(API.Task task) { logger.LogInformation($"Adding Task(Name={task.name}, ExternalId={task.externalId})"); await timrSync.AddTaskAsync(new API.AddTaskRequest(task)).ConfigureAwait(false); }
protected async Task AddOrUpdateTask(IDictionary <string, API.Task> existingTaskIDs, API.Task task, bool updateTask, IEqualityComparer <API.Task> equalityComparer) { logger.LogDebug($"Checking Task(Name={task.name}, ExternalId={task.externalId})"); if (existingTaskIDs.TryGetValue(task.externalId, out var existingTask)) { if (updateTask && !equalityComparer.Equals(task, existingTask)) { logger.LogInformation($"Updating Task(Name={task.name}, ExternalId={task.externalId})"); await timrSync.UpdateTaskAsync(new API.UpdateTaskRequest(task)).ConfigureAwait(false); existingTaskIDs[task.externalId] = task; } } else { logger.LogInformation($"Adding Task(Name={task.name}, ExternalId={task.externalId})"); await timrSync.AddTaskAsync(new API.AddTaskRequest(task)).ConfigureAwait(false); existingTaskIDs.Add(task.externalId, task); if (task.subtasks != null) { foreach (API.Task subtask in task.subtasks) { await timrSync.AddTaskAsync(new API.AddTaskRequest(subtask)).ConfigureAwait(false); existingTaskIDs.Add(subtask.externalId, subtask); } } } }