/// <summary> /// Retrieve all tasks based on their task.type (conflict, review or both) /// </summary> /// <param name="taskIDs">list of ids of tasks to retrieve</param> /// <param name="userId">Id of user who has the tasks to retrieve</param> /// <param name="count">number of tasks to return</param> /// <param name="filter">the given filter </param> /// <param name="type">the given type</param> /// <returns></returns> public IEnumerable<StudyTask> GetTasks(List<int> taskIDs, int userId, int count, TaskRequestDto.Filter filter, TaskRequestDto.Type type) { switch (type) { case TaskRequestDto.Type.Conflict: return (from task in GetTasksFiltered(taskIDs, userId, filter) where task.TaskType == StudyTask.Type.Conflict select task).Take(count); case TaskRequestDto.Type.Review: return (from task in GetTasksFiltered(taskIDs, userId, filter) where task.TaskType == StudyTask.Type.Review select task).Take(count); case TaskRequestDto.Type.Both: return (from task in GetTasksFiltered(taskIDs, userId, filter) select task).Take(count); default: throw new ArgumentOutOfRangeException(nameof(filter), filter, null); } }
/// <summary> /// Retrieve tasks based on a filter /// </summary> /// <param name="taskIDs">List of Ids of tasks to retrieve</param> /// <param name="userId">Id of user who has the tasks to retrieve</param> /// <param name="filter">a given filter for which tasks to retrieve</param> /// <returns></returns> public IEnumerable<StudyTask> GetTasksFiltered(List<int> taskIDs, int userId, TaskRequestDto.Filter filter) { switch (filter) { case TaskRequestDto.Filter.Remaining: return GetRemainingTasks(taskIDs, userId); case TaskRequestDto.Filter.Done: return GetFinishedTasks(taskIDs, userId); case TaskRequestDto.Filter.Editable: return GetEditableTasks(taskIDs, userId); default: throw new ArgumentOutOfRangeException(nameof(filter), filter, null); } }
/// <summary> /// Return the ids of all tasks for a given user /// </summary> /// <param name="studyId">Id of the study to retrieve tasks for</param> /// <param name="userId">Id of the user to retrieve tasks for</param> /// <param name="filter">Filter what kinds of tasks to list (remaining, editible, done)</param> /// <param name="type">Choose whether review or conflict tasks to be returned or both</param> /// <returns></returns> public IEnumerable<int> GetTasksIDs(int studyId, int userId, TaskRequestDto.Filter filter, TaskRequestDto.Type type) { var study = _studyStorageManager.GetAll() .Where(s => s.ID == studyId) .Include(s => s.Stages.Select(t => t.Tasks)) .FirstOrDefault(); if (study == null) { throw new NullReferenceException("Study not found"); } if (!study.Team.Users.Select(u => u.ID).Contains(userId)) { throw new ArgumentException("The user is not part of this study"); } var taskIDs = study.CurrentStage().Tasks.Select(t => t.ID).ToList(); return _taskManager.GetTasksIDs(taskIDs, userId, filter, type); }
/// <summary> /// Retrieve ids of tasks, for a given user /// </summary> /// <param name="taskIDs">List of Ids for tasks to be retrieved</param> /// <param name="userId">Id of user to retrieve tasks for</param> /// <param name="filter">Filter what kinds of tasks to list(remaining, editible, done)></param> /// <param name="type">Choose whether review or conflict tasks to be returned or both</param> /// <returns></returns> public IEnumerable<int> GetTasksIDs(List<int> taskIDs, int userId, TaskRequestDto.Filter filter, TaskRequestDto.Type type) { return _taskRequester.GetTaskIDs(taskIDs, userId, filter, type); }
/// <summary> /// Convert tasks to taskDtos /// </summary> /// <param name="visibleFields"></param> /// <param name="taskIDs"></param> /// <param name="userId"></param> /// <param name="count"></param> /// <param name="filter"></param> /// <param name="type"></param> /// <returns></returns> public IEnumerable<TaskRequestDto> GetTasksDtOs(ICollection<FieldType> visibleFields, List<int> taskIDs, int userId, int count, TaskRequestDto.Filter filter, TaskRequestDto.Type type) { var tasks = _taskRequester.GetTasks(taskIDs, userId, count, filter, type); return from StudyTask task in tasks select new TaskRequestDto(task, visibleFields, userId); }
public IHttpActionResult GetTasks(int id, int userId, int count = 1, TaskRequestDto.Filter filter = TaskRequestDto.Filter.Remaining, TaskRequestDto.Type type = TaskRequestDto.Type.Both) { // GET: api/Study/4/Task?userId=5&count=1&filter=Remaining&type=Review try { return Ok(_controller.GetTasks(id, userId, count, filter, type)); } catch (Exception e) { if (e.GetType() == typeof (NullReferenceException)) { return NotFound(); } if (e.GetType() == typeof (ArgumentException)) { return BadRequest(); } throw; } }
public IHttpActionResult GetTaskIDs(int id, int userId, TaskRequestDto.Filter filter = TaskRequestDto.Filter.Editable, TaskRequestDto.Type type = TaskRequestDto.Type.Both) { // GET: api/Study/4/TaskIDs?userId=5&filter=Editable try { return Ok(_controller.GetTasksIDs(id, userId, filter, type)); } catch (Exception e) { if (e.GetType() == typeof (NullReferenceException)) { return NotFound(); } if (e.GetType() == typeof (ArgumentException)) { return BadRequest(); } throw; } }