public async Task ChangeChecklistTaskStatus(ChangeChecklistTaskStatusRequest request) { var filter = Filter.And(Filter.Eq(x => x.Id, request.ChecklistId), Filter.ElemMatch(x => x.ChecklistTasks, x => x.Id == request.ChecklistTaskId)); var checklist = await Collection.Find(filter).FirstAsync(); var checklistTask = checklist.ChecklistTasks.First(x => x.Id == request.ChecklistTaskId); var update = Update.Set("checklistTasks.$.done", request.IsChecked); await Collection.UpdateOneAsync(filter, update); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "patch", Route = null)] HttpRequest req, ILogger log, [RequestBody] ChangeChecklistTaskStatusRequest request) { if (await UserRepo.HasAccessToChecklist(request.ChecklistId, request.Auth)) { await ChecklistsRepo.ChangeChecklistTaskStatus(request); log.LogInformation("Checklist {id} task {id2} status changed to {d}", request.ChecklistId, request.ChecklistTaskId, request.IsChecked); return(Ok()); } return(Unauthorized()); }