public async Task <bool> UpdateTaskByIdAsync(int taskId, TaskDTO taskDTO)
        {
            StudentTask item = await db.Tasks.GetAsync(taskId);

            if (item == null)
            {
                return(false);
            }
            if (!string.IsNullOrEmpty(taskDTO.Name))
            {
                item.Name = taskDTO.Name;
            }
            if (!string.IsNullOrEmpty(taskDTO.Description))
            {
                item.Description = taskDTO.Description;
            }
            item.Private = taskDTO.Private;
            if (taskDTO.ModifierId != null)
            {
                item.Mod_Id = taskDTO.ModifierId;
            }
            item.Youtube_Url = taskDTO.Youtube_Url;
            await db.Tasks.UpdateAsync(item);

            db.Save();
            return(true);
        }
예제 #2
0
        private void SaveTaskProc()
        {
            title = SelectedTask.Title;
            StudentTask task = new StudentTask();

            foreach (var v in AssociatedPerson.Tasks)
            {
                if (v.Title == SelectedTask.Title && v.Description == SelectedTask.Description)
                {
                    task = v;
                }
            }

            AssociatedPerson.Tasks.Remove(task);
            AssociatedPerson.Tasks.Add(TaskModel);


            //if (!string.IsNullOrEmpty(task.Title) )
            //{
            //    task.Title = TaskModel.Title;
            //    task.Description = TaskModel.Description;

            //}
            EditTask();

            ReadToDoListFromTextFile();
            EditTaskWindow.Close();
        }
        public async Task <bool> AddTaskToPlanAsync(TaskDTO taskDTO, int?selectedPriority, int?selectedSection)
        {
            StudentTask task = new StudentTask
            {
                Name        = taskDTO.Name,
                Description = taskDTO.Description,
                Private     = taskDTO.Private,
                Create_Id   = taskDTO.CreatorId,
                Create_Date = taskDTO.CreateDate,
            };
            await db.Tasks.AddAsync(task);

            db.Save();

            int taskId = await db.Tasks.GetTaskIdAsync(task);

            PlanTask planTask = new PlanTask
            {
                Plan_Id    = taskDTO.PlanTaskId.Value,
                Task_Id    = taskId,
                Priority   = selectedPriority,
                Section_Id = selectedSection
            };

            await db.PlanTasks.AddAsync(planTask);

            db.Save();
            return(true);
        }
예제 #4
0
        public IActionResult AddStudentTag(int id)
        {
            StudentTask       studentTask  = context.StudentTasks.Find(id);
            List <StudentTag> possibleTags = context.StudentTags.ToList();

            AddTaskTagViewModel viewModel = new AddTaskTagViewModel(studentTask, possibleTags);

            return(View(viewModel));
        }
예제 #5
0
 public ExtendedTaskViewModel(StudentTask task)
 {
     TaskName         = task.Name;
     Type             = task.IsContest ? "Контест" : "Контрольная работа";
     GroupName        = task.Group.Name;
     NumberOfAttempts = task.NumberOfAttempts;
     Deadline         = task.To.ToString();
     TaskId           = task.Id;
 }
        public async Task <TaskDTO> GetTaskByIdAsync(int taskId)
        {
            StudentTask taks = await db.Tasks.GetAsync(taskId);

            if (taks == null)
            {
                return(null);
            }
            return(await TaskToTaskDTOAsync(taks));
        }
예제 #7
0
        public IActionResult Delete(int[] studentTaskIds)
        {
            foreach (int studentTaskId in studentTaskIds)
            {
                //StudentTaskData.Remove(studentTaskId);
                StudentTask theStudentTask = context.StudentTasks.Find(studentTaskId);
                context.StudentTasks.Remove(theStudentTask);
            }
            context.SaveChanges();

            return(Redirect("/StudentTask"));
        }
예제 #8
0
        public IActionResult DetailStudent(int id)
        {
            StudentTask theStudentTask = context.StudentTasks.Single(e => e.Id == id);

            //List<TaskTag> studentNamesText = context.TaskTags
            //    .Where(et => et.StudentTaskId == id)
            //    .Include(et => et.StudentTag)
            //    .ToList();

            DetailStudentTaskViewModel viewModel = new DetailStudentTaskViewModel(theStudentTask);

            return(View(viewModel));
        }
예제 #9
0
        public TaskViewModelNew(StudentTask task)
        {
            Id      = task.Id;
            Name    = task.Name;
            Text    = task.TaskText;
            GroupId = task.GroupId.Value;
            Time    = new List <DateTime> {
                task.From, task.To
            };
            IsContest      = task.IsContest;
            AttemptsNumber = task.NumberOfAttempts;

            Tests = task.Tests.Select(t => new TestViewModel(t, task.Tests.IndexOf(t))).ToList();
        }
예제 #10
0
        async private void GetMarks()
        {
            this.marks = await APIHandler.GetGroupMarks(group);

            foreach (AbstractMark mark in this.marks)
            {
                StudentTask key = new StudentTask()
                {
                    studentId = mark.GetStudentId(), taskId = mark.GetTaskId()
                };
                studentTaskMarkLinker[key] = mark;
            }
            ProgressBarIncrement();
        }
        public bool CreateTask(TaskDTO taskDTO)
        {
            var task = new StudentTask()
            {
                Name        = taskDTO.Name,
                Description = taskDTO.Description,
                Private     = taskDTO.Private,
                Create_Id   = taskDTO.CreatorId,
                Mod_Id      = taskDTO.ModifierId
            };

            db.Tasks.AddAsync(task);
            db.Save();
            return(true);
        }
        public AddTaskTagViewModel(StudentTask studentTask, List <StudentTag> possibleTags)
        {
            StudentTags = new List <SelectListItem>();

            foreach (var tag in possibleTags)
            {
                StudentTags.Add(new SelectListItem
                {
                    Value = tag.Id.ToString(),
                    Text  = tag.StudentName
                });
            }

            StudentTask = studentTask;
        }
예제 #13
0
 private void EditTaskProc()
 {
     if (SelectedTask == null)
     {
         MessageBox.Show("Select task to edit first");
         return;
     }
     EditTaskWindow = new EditTaskWindow();
     TaskModel      = new StudentTask()
     {
         Title       = SelectedTask?.Title,
         Description = SelectedTask?.Description
     };
     EditTaskWindow.Show();
 }
        public async Task <bool> RemoveTaskByIdAsync(int taskId)
        {
            await db.Tasks.DeleteTaskAsync(taskId);

            StudentTask item = await db.Tasks.GetAsync(taskId);

            if (item != null || await db.Tasks.IsRemovableAsync(taskId))
            {
                await db.Tasks.RemoveAsync(item);

                db.Save();
                return(true);
            }
            return(false);
        }
        public async Task <TaskDTO> GetTaskForPlanAsync(int taskId, int planId)
        {
            StudentTask task = await db.Tasks.GetAsync(taskId);

            if (task == null)
            {
                return(null);
            }
            var planTask = await db.PlanTasks.Get(taskId, planId);

            if (planTask == null)
            {
                return(null);
            }
            return(await GetTaskForPlanAsync(planTask.Id));
        }
예제 #16
0
        public async Task <ActionResult <StudentTaskDTO> > PostStudentTask(StudentTaskDTO studentTaskDTO)
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            StudentTask newStudentTask = new StudentTask
            {
                StudentTaskName = studentTaskDTO.StudentTaskName,
                TaskDueDate     = studentTaskDTO.TaskDueDate,
                Priority        = studentTaskDTO.Priority,
                UserId          = user.Id,
            };

            _context.StudentTasks.Add(newStudentTask);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetStudentTask", new { id = newStudentTask.StudentTaskId }, newStudentTask));
        }
 private async Task <TaskDTO> TaskToTaskDTOAsync(StudentTask task)
 {
     return(new TaskDTO(task.Id,
                        task.Name,
                        task.Description,
                        task.Private,
                        task.Create_Id,
                        await db.Users.ExtractFullNameAsync(task.Create_Id),
                        task.Mod_Id,
                        await db.Users.ExtractFullNameAsync(task.Mod_Id),
                        task.Create_Date,
                        task.Mod_Date,
                        null,
                        null,
                        null,
                        task.Youtube_Url));
 }
        public async Task <int?> AddAndGetIdAsync(TaskDTO taskDTO)
        {
            if (!(await db.Users.ContainsIdAsync(taskDTO.CreatorId)))
            {
                return(null);
            }
            var task = new StudentTask
            {
                Name        = taskDTO.Name,
                Description = taskDTO.Description,
                Private     = taskDTO.Private,
                Create_Id   = taskDTO.CreatorId,
                Mod_Id      = taskDTO.ModifierId
            };
            var createdTask = db.Tasks.AddAndReturnElement(task);

            db.Save();
            return(createdTask?.Id);
        }
예제 #19
0
        public IActionResult Add(AddStudentTaskViewModel addStudentTaskViewModel)
        {
            var currentUserId = userManager.GetUserId(User);

            StudentTask newStudentTask = new StudentTask
            {
                Name        = addStudentTaskViewModel.Name,
                Description = addStudentTaskViewModel.Description,
                DueDate     = addStudentTaskViewModel.DueDate,
                UserId      = currentUserId
            };

            //StudentTaskData.Add(newStudentTask);
            //New two lines store to persistent database
            context.StudentTasks.Add(newStudentTask);
            context.SaveChanges();

            return(Redirect("/StudentTask"));
        }
예제 #20
0
        public TaskTestViewModel(TaskTest t, StudentTask task, string[] frameworkTypes, CodeStyleFilesViewModel[] codeStyleFiles)
        {
            CodeStyleFiles = codeStyleFiles;
            FrameworkTypes = frameworkTypes;
            TaskName       = task.Name;
            GroupName      = task.Group.Name;
            Id             = t.Id;
            TaskId         = t.TaskId;
            Type           = t.TestType;

            Name = TestsNamesConverter.ConvertTypeToName(t.TestType);

            if (TestsNamesConverter.IsValidType(Type))
            {
                object obj = null;
                if (t.TestData != null)
                {
                    switch (Type)
                    {
                    case "reflectionTest":
                        obj = JsonConvert.DeserializeObject <ReflectionTestData>(t.TestData);
                        break;

                    case "functionalTest":
                        obj = JsonConvert.DeserializeObject <FunctionalTestData>(t.TestData);
                        break;

                    case "codeStyleTest":
                        obj = JsonConvert.DeserializeObject <CodeStyleTestData>(t.TestData);
                        break;
                    }
                }

                Data  = obj;
                IsRaw = false;
            }
            else
            {
                Data  = t.TestData;
                IsRaw = true;
            }
        }
예제 #21
0
        public async ThreadTask.Task <bool> AddTaskToPlanAsync(int planId, int taskId, int?sectionId, int?priority)
        {
            var plan = await db.Plans.Get(planId);

            if (plan == null)
            {
                return(false);
            }
            StudentTask task = await db.Tasks.GetAsync(taskId);

            if (task == null)
            {
                return(false);
            }
            await db.Plans.AddTaskToPlanAsync(planId, taskId, sectionId, priority);

            await CreateUserTasksForAllLearningByPlanAsync(planId, taskId);

            db.Save();
            return(true);
        }
예제 #22
0
        private void ProcessData()
        {
            dataGrid.ColumnCount = this.tasks.Length;
            dataGrid.RowCount    = this.students.Length;
            this.markGrid        = new AbstractMark[dataGrid.ColumnCount, dataGrid.RowCount]; // Used to store references to each mark - making the tooltips work

            for (int i = 0; i < this.tasks.Length; i++)
            {
                dataGrid.Columns[i].HeaderCell.Value = this.tasks[i].title;
                dataGrid.Columns[i].ReadOnly         = false;
            }

            for (int i = 0; i < this.students.Length; i++)
            {
                Student student = this.students[i];
                dataGrid.Rows[i].HeaderCell.Value = student.fullName;

                for (int j = 0; j < this.tasks.Length; j++)
                {
                    Assignment  task = this.tasks[j];
                    StudentTask key  = new StudentTask()
                    {
                        studentId = student.id, taskId = task.id
                    };

                    AbstractMark mark;
                    bool         exists = studentTaskMarkLinker.TryGetValue(key, out mark);
                    if (exists)
                    {
                        this.markGrid[j, i] = mark;
                    }
                    else
                    {
                        this.markGrid[j, i] = new AbstractMark(student.id, task.id); // Add an empty mark
                    }
                    // The tooltip should not be set here because it can cause performance issues - https://docs.microsoft.com/en-us/dotnet/desktop/winforms/controls/add-tooltips-to-individual-cells-in-a-wf-datagridview-control?view=netframeworkdesktop-4.8#robust-programming
                }
            }
            this.dataGridInitialised = true;
        }
        protected bool CanSend(StudentTask task, string studentId, Solution[] solutions = null)
        {
            bool canSend = false;

            if (task.To > DateTime.Now)
            {
                if (solutions is null)
                {
                    solutions = _db.Solutions.Where(s => s.StudentId == studentId && s.TaskId == task.Id).ToArray();
                }

                if (task.IsContest)
                {
                    canSend = solutions.Length < task.NumberOfAttempts;
                }
                else
                {
                    canSend = solutions.Length == 0;
                }
            }

            return(canSend);
        }
        //public string StudentNamesText { get; set; }

        public DetailStudentTaskViewModel(StudentTask studentTask)
        {
            this.TaskId      = studentTask.Id;
            this.Name        = studentTask.Name;
            this.Description = studentTask.Description;
            this.DueDate     = studentTask.DueDate;
            this.SubmitDate  = studentTask.SubmitDate;
            this.ApproveDate = studentTask.ApproveDate;
            this.Approved    = studentTask.Approved;

            //this.StudentNamesText = "";

            //for (var i = 0; i < taskTags.Count; i++)
            //{
            //    StudentNamesText += taskTags[i].StudentTag.StudentName;

            //    if (i < taskTags.Count - 1)
            //    {
            //        StudentNamesText += ", ";
            //    }

            //}
        }
예제 #25
0
        public async Task <IActionResult> PutStudentTask(int id, StudentTaskDTO studentTaskDTO)
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            StudentTask taskToUpdate = await _context.StudentTasks.FindAsync(id);

            if (id != taskToUpdate.StudentTaskId)
            {
                return(BadRequest("Task Id does not match any task."));
            }

            taskToUpdate.Priority        = studentTaskDTO.Priority;
            taskToUpdate.StudentTaskName = studentTaskDTO.StudentTaskName;
            taskToUpdate.TaskDueDate     = studentTaskDTO.TaskDueDate;
            taskToUpdate.UserId          = user.Id; // Added UserId

            _context.Entry(taskToUpdate).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!StudentTaskExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
예제 #26
0
        public async Task <IActionResult> PostNewTask(string json)
        {
            TaskViewModelNew jsonTask = JsonConvert.DeserializeObject <TaskViewModelNew>(json);
            StudentTask      newTask  = new StudentTask
            {
                Name             = jsonTask.Name,
                GroupId          = jsonTask.GroupId,
                TaskText         = jsonTask.Text,
                IsContest        = jsonTask.IsContest,
                From             = jsonTask.Time[0],
                To               = jsonTask.Time[1],
                NumberOfAttempts = jsonTask.AttemptsNumber
            };

            var  x           = _db.StudentTasks.Add(newTask);
            var  beforeState = x.State;
            int  r           = _db.SaveChanges();
            var  afterState  = x.State;
            bool ok          = beforeState == Microsoft.EntityFrameworkCore.EntityState.Added && afterState == Microsoft.EntityFrameworkCore.EntityState.Unchanged && r == 1;

            if (ok)
            {
                var newTaskTests = jsonTask.Tests.Select(tt =>
                                                         new TaskTest
                {
                    TaskId   = newTask.Id,
                    TestType = tt.Type,
                    Block    = tt.Block,
                    Weight   = tt.Weight / 100.0,
                    TestData = null
                }).ToArray();

                _db.TaskTests.AddRange(newTaskTests);
                r  = _db.SaveChanges();
                ok = r == newTaskTests.Length;
            }

            if (ok)
            {
                var plagCheck = new PlagiarismCheck
                {
                    TaskId   = newTask.Id,
                    Settings = new PlagiarismCheckSettings
                    {
                        Language   = "csharp",
                        MaxMatches = 5,
                        MinPercent = 0.4,
                        MakeCheck  = false
                    }
                };

                _db.Add(plagCheck);
                _db.SaveChanges();

                try
                {
                    var msgQueue = RabbitHutch.CreateBus(_config.MessageQueueInfo, _config.FrontEnd);

                    var request = new PlagiarismCheckRequest
                    {
                        TaskId = newTask.Id,
                    };
                    await msgQueue.SendAsync(_config.MessageQueueInfo.PlagiarismQueueName, request);
                }
                catch (RabbitMQ.Client.Exceptions.BrokerUnreachableException e)
                {
                    return(Content("error"));
                }
            }

            return(Content(ok ? "/TestingSystem/Professor/ChangeTask?id=" + newTask.Id.ToString() : "error"));
        }
예제 #27
0
 public TaskDetailPage(StudentTask task)
 {
     Task = task;
     InitializeComponent();
 }
예제 #28
0
 private void ShowAddNewTaskProc()
 {
     AddNewTaskWindow = new AddNewTaskWindow();
     TaskModel        = new StudentTask();
     AddNewTaskWindow.Show();
 }