public async Task <IActionResult> AddGroups(AddGroupsToTeacherViewModel model)
        {
            var teacherId = await CheckTeacherId(this.TempData["teacherId"]);

            await this.teachersService.AddGroups(model);

            return(await Task.Run(() => RedirectToAction("Details", new { teacherId = teacherId })));
        }
        public async Task <IActionResult> AddGroups(int teacherId)
        {
            await CheckTeacherId(teacherId);

            this.TempData["teacherId"] = teacherId;
            var groupsList  = this.groupsService.GetAllForSelection(false).ToList();
            var outputModel = new AddGroupsToTeacherViewModel()
            {
                Groups = groupsList
            };

            return(await Task.Run(() => this.View("AddGroups", outputModel)));
        }
        public async Task <int> AddGroups(AddGroupsToTeacherViewModel model)
        {
            var teacher = await this.db.Teachers.FirstOrDefaultAsync(x => x.Id == model.TeacherId);

            var groupsIds        = model.Groups.Where(x => x.Selected).Select(x => x.Id).ToArray();
            var groupsForTeacher = this.db.Groups.Where(x => groupsIds.Contains(x.Id)).ToArray();

            foreach (var group in groupsForTeacher)
            {
                group.TeacherId = teacher.Id;
            }
            teacher.Status = TeacherStatus.Active;

            return(await this.db.SaveChangesAsync());
        }