public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = null)] HttpRequest req, ILogger log, [RequestBody] ReorderChecklistTaskRequest request) { if (await UserRepo.HasAccessToChecklist(request.ChecklistId, request.Auth)) { await ChecklistsRepo.ReorderChecklistTasks(request); log.LogInformation("Checklists {id} tasks reordered", request.ChecklistId); return(Ok()); } return(Unauthorized()); }
public async Task ReorderChecklistTasks(ReorderChecklistTaskRequest request) { var filter = Filter.Eq(x => x.Id, request.ChecklistId); var checklist = await Collection.Find(filter).FirstAsync(); var tasksCopy = new ChecklistTask[checklist.ChecklistTasks.Count]; checklist.ChecklistTasks.CopyTo(tasksCopy); foreach (var checklistTask in tasksCopy) { checklistTask.Order = request.ChecklistTasksOrdering.First(x => x.taskId == checklistTask.Id).order; } var update = Update.Combine(Update.PullFilter(x => x.ChecklistTasks, x => true), Update.PushEach(x => x.ChecklistTasks, tasksCopy)); await Collection.UpdateOneAsync(filter, update); }