public async Task <bool> DeleteTaskItem(TaskItem taskItem) { if (await EnsureLogin()) { //TODO delete all TaskSubItems var taskSubItemDataService = new TaskSubitemService(base.AccessToken); var taskSubItems = await taskSubItemDataService.GetTaskSubitems(taskItem.Id); taskSubItems.ForEach(async t => await taskSubItemDataService.DeleteTaskSubitem(t)); await MobileService.GetTable <TaskItem>().DeleteAsync(taskItem); return(true); } return(false); }
public async Task <ObservableCollection <TaskSubitemWork> > GetGroupTaskSubitemWorksForUser(string userId, string groupId, DateTime fromDate, DateTime toDate) { if (await EnsureLogin()) { var taskService = new TaskItemService(base.AccessToken); var taskSubitemService = new TaskSubitemService(base.AccessToken); var taskSubitemWorksService = new TaskSubitemWorkService(base.AccessToken); var taskItems = await taskService.GetTaskItemsTableForGroup(groupId); var results = new List <TaskSubitemWork>(); foreach (var taskItem in taskItems) { var subItems = await taskSubitemService.GetTaskSubitems(taskItem.Id); //TODO var userTaskSubitems = subItems.Where(t => t.ExecutorId == userId); foreach (var subitem in userTaskSubitems) { var works = await taskSubitemWorksService.GetTaskSubitemWorks(subitem.Id); var worksBetweenDates = works.Where( w => w.StartDateTime >= fromDate && w.EndDateTime.HasValue && w.EndDateTime.Value < toDate); if (worksBetweenDates.Any()) { results.AddRange(worksBetweenDates); } } } return(results.ToObservableCollection()); } return(null); }