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);
        }