public ActionResult <TaskReadDto> GetTaskById(long id) { _logger.LogInformation("Consultando a tarefa de Id: {id}", id); Models.Task task = _tasksRepo.GetTaskById(id); if (task == null) { _logger.LogWarning("A tarefa de Id: {id} não existe", id); return(NotFound()); } _logger.LogInformation("Mapeando a tarefa de Id: {id} para a classe de DTO", id); TaskReadDto taskReadDto = _mapper.Map <TaskReadDto>(task); if (task.TaskTags != null && task.TaskTags.Count > 0) { _logger.LogInformation("Mapeando as tags da tarefa de Id: {id} para a classe de DTO", id); List <Tag> tags = task.TaskTags.Select(tt => tt.Tag).ToList(); taskReadDto.Tags = _mapper.Map <List <TagReadDto> >(tags); } return(Ok(taskReadDto)); }
/**/ /* * NAME: * GenerateUserActivity - generates UserActivity objects for the given user * SYNOPSIS: * GenerateUserActivity(string userId) * userId --> the id of the user whose activities are to be generated * DESCRIPTION: * This function goes through the database and extracts all the TaskComment, TaskUpdate, and TaskUserUpdate entries * associated with the given user, and it interprests those entries to generate descriptions of all the user's activites * in the form of a list of UserActivity objects * RETURNS * a List of the UserActivity objects associated with the user * AUTHOR * Biplab Thapa Magar * DATE * 10/04/2020 * / * /**/ public List <UserActivity> GenerateUserActivity(string userId) { //get the user's name string userFullName = GetUserFullName(userId); var userComments = _usersRepo.GetCommentsByUser(userId); var userTaskUpdates = _usersRepo.GetTaskUpdatesByUpdater(userId); var userTaskUserUpdates = _usersRepo.GetTaskUserUpdatesByUpdater(userId); //add comment activity var userActivities = new List <UserActivity>(); string activity = new string(""); //loop through all the user comments and make UserActivity objects out of them for (int i = 0; i < userComments.Count; i++) { activity = userFullName + " commented on " + GetTaskNameById(userComments[i].TaskId) + ": " + userComments[i].Comment; //create userActivity object userActivities.Add(new UserActivity { Activity = activity, ProjectId = _tasksRepo.GetTaskById(userComments[i].TaskId).ProjectId, TaskId = userComments[i].TaskId, Time = userComments[i].TimeAdded }); } //add task update activity List <string> updated; //loop through all the task updates by the user for (int i = 0; i < userTaskUpdates.Count; i++) { updated = GetUpdatedAttributeAndValue(userTaskUpdates[i]); if (updated == null) { activity = userFullName + " created a new task: " + GetTaskNameById(userTaskUpdates[i].TaskId); } else { activity = userFullName + " changed the " + updated[0] + " for " + GetTaskNameById(userTaskUpdates[i].TaskId) + " to " + updated[1]; } //create userActivity object userActivities.Add(new UserActivity { Activity = activity, ProjectId = _tasksRepo.GetTaskById(userTaskUpdates[i].TaskId).ProjectId, TaskId = userTaskUpdates[i].TaskId, Time = userTaskUpdates[i].TimeStamp }); } //add task user update activity for (int i = 0; i < userTaskUserUpdates.Count; i++) { //if the task user update is about user being added to task if (userTaskUserUpdates[i].TimeAdded != null) { activity = userFullName + " assigned " + GetUserFullName(userTaskUserUpdates[i].AppUserId) + " to " + GetTaskNameById(userTaskUserUpdates[i].TaskId); //create userActivity object userActivities.Add(new UserActivity { Activity = activity, ProjectId = _tasksRepo.GetTaskById(userTaskUpdates[i].TaskId).ProjectId, TaskId = userTaskUserUpdates[i].TaskId, Time = (DateTime)userTaskUserUpdates[i].TimeAdded }); } else { activity = userFullName + " unassigned " + GetUserFullName(userTaskUserUpdates[i].AppUserId) + " from " + GetTaskNameById(userTaskUserUpdates[i].TaskId); //create userActivity object userActivities.Add(new UserActivity { Activity = activity, ProjectId = _tasksRepo.GetTaskById(userTaskUpdates[i].TaskId).ProjectId, TaskId = userTaskUserUpdates[i].TaskId, Time = (DateTime)userTaskUserUpdates[i].TimeRemoved }); } } //now sort the list of user activity by date userActivities.Sort((activity1, activity2) => DateTime.Compare(activity2.Time, activity1.Time)); return(userActivities); }