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
            }));
        }