public static async Task <IActionResult> Run( [SignalRTrigger(Constants.SignalRTasksHubName, "messages", UpdateTaskMessage.MethodName, ConnectionStringSetting = Constants.SignalRConnectionStringSetting)] InvocationContext invocationContext, [SignalRParameter] UpdateTaskMessage argument, [CosmosDB(Constants.CosmosDbDatabase, Constants.CosmosDbTasksCollection, ConnectionStringSetting = Constants.CosmosDbConnectionStringSetting)] DocumentClient documentClient, [SignalR(HubName = Constants.SignalRTasksHubName, ConnectionStringSetting = Constants.SignalRConnectionStringSetting)] IAsyncCollector <SignalRMessage> signalRMessages, ILogger log) { // Parse body var taskListId = argument.TaskListId; var task = argument.QuickTask; // Send new task to everyone in group await signalRMessages.AddAsync(new SignalRMessage { GroupName = taskListId, Target = GotUpdatedTaskMessage.MethodName, Arguments = new object[] { new GotUpdatedTaskMessage(task) { IgnoreConnectionId = invocationContext.ConnectionId } } }); // Get entire task list var uri = UriFactory.CreateDocumentUri("TaskorateDb", "tasks", taskListId.ToString()); var requestOptions = new RequestOptions { PartitionKey = new PartitionKey(taskListId.ToString()), JsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() } }; var taskList = await documentClient.ReadDocumentAsync <QuickTaskList>(uri, requestOptions); // Add task to task list if (taskList.Document == null) { return(new NotFoundResult()); } if (taskList.Document.Tasks == null) { return(new BadRequestObjectResult("No tasks found for this list.")); } var index = taskList.Document.Tasks.FindIndex(t => t.Id == task.Id); if (index == -1) { return(new BadRequestObjectResult($"Task with id {task.Id} not found on this list.")); } taskList.Document.Tasks[index] = task; await documentClient.ReplaceDocumentAsync(uri, taskList.Document, requestOptions); return(new OkObjectResult(task)); }
private void UpdateTask(UpdateTaskMessage msg) { using (DataContext database = new DataContext()) { var tasks = from t in database.Tasks where t.Id == msg.TaskToUpdate.Id select t; foreach (ToDoTask task in tasks) { task.Title = msg.TaskToUpdate.Title; task.ShortDescription = msg.TaskToUpdate.ShortDescription; task.LongDescription = msg.TaskToUpdate.LongDescription; task.Deadline = msg.TaskToUpdate.Deadline; } database.SaveChanges(); } CurrentTaskTitle = msg.TaskToUpdate.Title; DescribeSection = msg.TaskToUpdate.ShortDescription; CurrentTaskDetails = msg.TaskToUpdate.LongDescription; updateTasksList(TasksList); }