private void PopulateRequirementsTasks(int projectId, Requirement requirement) { requirement.RelatedTasks = new List <RequirementTask>(); MySqlCommand command = new MySqlCommand("SELECT taskId, name, stage FROM tasks WHERE requirementId=@requirementId AND projectId=@projectId", _connection); command.Parameters.Add("@projectId", MySqlDbType.Int32).Value = projectId; command.Parameters.Add("@requirementId", MySqlDbType.Int32).Value = requirement.Id; using (IDataReader reader = command.ExecuteReader()) { while (reader.Read()) { RequirementTask requirementTask = new RequirementTask() { Id = int.Parse(reader["taskId"].ToString()), Name = reader["name"].ToString(), Stage = (TaskStage)int.Parse(reader["stage"].ToString()) }; requirement.RelatedTasks.Add(requirementTask); } } }
public async Task <IActionResult> CreateTask([FromBody] ProjectDetailsViewModel projectTask) { var user = await GetCurrentUserAsync(); List <NotificationUser> notificationUsers = _context.ProjectUser.Where(x => x.ProjectId == projectTask.ProjectId).Select(u => new NotificationUser { UserId = u.UserId }).ToList(); List <TaskUser> selectedUsers = new List <TaskUser>(); if (projectTask.Users != null) { selectedUsers = projectTask.Users.Where(u => u.IsSelected).Select(u => new TaskUser { UserId = u.UserId, Username = u.Username }).ToList(); } ICollection <SubTask> requirementTasks = _mapper.Map <List <SubTaskViewModel>, ICollection <SubTask> >(projectTask.SubTasks); RequirementTask projTask = new RequirementTask { Name = projectTask.TaskName, Description = projectTask.TaskDescription, Users = selectedUsers, ProjectRequirementId = projectTask.RequirementId, SubTasks = requirementTasks }; ProjectUpdate projectUpdate = new ProjectUpdate { Title = "New Task Added", Description = "'" + projTask.Name + "' was added.", Date = DateTime.UtcNow, Type = UpdateType.Add }; var project = _context.Projects.Include(p => p.Updates).FirstOrDefault(x => x.Id == projectTask.ProjectId); project.Updates.Add(projectUpdate); _context.Tasks.Add(projTask); Notification notification = new Notification { Title = "A new task was added to " + project.Name, Body = user.FirstName + " " + user.LastName + " added the following task to the " + project.Name + " project: " + projectTask.TaskName + ".", Type = UpdateType.Add, Users = notificationUsers, UserLink = user.Id, ProjectLink = projectTask.ProjectId, DateTime = DateTime.Now }; _context.Notifications.Add(notification); await _context.SaveChangesAsync(); List <SubTaskViewModel> subTasks = _mapper.Map <ICollection <SubTask>, List <SubTaskViewModel> >(projTask.SubTasks); List <TaskUserViewModel> users = _mapper.Map <ICollection <TaskUser>, List <TaskUserViewModel> >(projTask.Users); return(Ok(new CreateTaskResponse { Id = projTask.Id, Name = projTask.Name, Description = projTask.Description, ProjectRequirementId = projTask.ProjectRequirementId, IsCompleted = false, Status = projTask.Status, SubTasks = subTasks, Users = users, //Update = projectUpdate })); }