public async Task <TaskForUserModel> GetShared(ClaimsPrincipal claimsPrincipal, int taskId) { try { var user = await GetUser(claimsPrincipal); var userAndRelatedEntities = await Context.Users.Include(u => u.ListsSharedWithThisUser).ThenInclude(l => l.List).ThenInclude(l => l.Tasks).SingleAsync(u => u.Id == user.Id); var task = userAndRelatedEntities.ListsSharedWithThisUser.SelectMany(l => l.List.Tasks).Single(l => l.Id == taskId); var listsForUseModel = new TaskForUserModel(task); return(listsForUseModel); } catch (Exception e) { Console.WriteLine(e); UiMessagingPipeline.AddUiMessageForUser(claimsPrincipal.FindFirstValue(ClaimTypes.NameIdentifier), new UiMessage("An error occured")); return(null); } }
public async System.Threading.Tasks.Task Update(ClaimsPrincipal claimsPrincipal, int idOfTaskToRemove, TaskForUserModel model, bool isUpdatedBySharee) { try { var user = await GetUser(claimsPrincipal); if (isUpdatedBySharee) { var currentUser = await Context.Users .Include(s => s.ListsSharedWithThisUser).ThenInclude(l => l.List).ThenInclude(l => l.Tasks) .SingleAsync(u => u.Id == user.Id); var task = currentUser.ListsSharedWithThisUser.SelectMany(l => l.List.Tasks).Single(l => l.Id == idOfTaskToRemove); task.Update(model); } else { var currentUser = await Context.Users.Include(s => s.Lists).SingleAsync(u => u.Id == user.Id); var task = currentUser.Lists.SelectMany(l => l.Tasks).Single(l => l.Id == idOfTaskToRemove); task.Update(model); } await Context.SaveChangesAsync(); } catch (Exception e) { Console.WriteLine(e); UiMessagingPipeline.AddUiMessageForUser(claimsPrincipal.FindFirstValue(ClaimTypes.NameIdentifier), new UiMessage("An error occured")); } }