public AllStudentsDetailsViewModel GetAll(int teacherId)
        {
            var students = this.db.Students
                           .Where(s => (teacherId != 0) ? s.Group.TeacherId == teacherId : true)
                           .Where(s => s.Status != StudentStatus.Quit)
                           .Select(student => new AllSingleStudentsViewModel
            {
                Id        = student.Id,
                FullName  = student.FullName,
                Gender    = student.Gender,
                Age       = student.Age,
                GroupName = student.Group == null ? InfoStrings.StudentNotInAGroupYet : student.Group.Name,
            })
                           .ToArray()
                           .OrderBy(x => x.FullName)
                           .ToArray();


            var studentsList = new List <AllSingleStudentsViewModel>(students);

            var model = new AllStudentsDetailsViewModel()
            {
                Students = studentsList
            };

            return(model);
        }
        public async Task <AllStudentsDetailsViewModel> GetElligibleGrouplessStudents(int groupId)
        {
            var elligibleStatuses = new List <StudentStatus>
            {
                StudentStatus.Initial,
                StudentStatus.PassedDemoLesson,
                StudentStatus.Inactive,
                StudentStatus.Waiting
            };

            var students = await this.db.Students
                           .Where(s => elligibleStatuses.Contains(s.Status))
                           .Select(s => new AllSingleStudentsViewModel
            {
                Id       = s.Id,
                FullName = s.FullName,
                Age      = s.Age,
                Gender   = s.Gender,
                Status   = s.Status,
            }
                                   ).ToArrayAsync();

            var model = new AllStudentsDetailsViewModel {
                Students = students
            };

            return(model);
        }
        public async Task <AllStudentsDetailsViewModel> GetNonQuitStudents(int parentId)
        {
            var parent = await this.db.Parents
                         .Include(p => p.Children)
                         .ThenInclude(sp => sp.Student)
                         .FirstOrDefaultAsync(s => s.Id == parentId);

            var students = parent.Children
                           .Where(sp => sp.Student.Status != StudentStatus.Quit)
                           .Select(student => new AllSingleStudentsViewModel
            {
                Id       = student.Student.Id,
                FullName = student.Student.FullName,
                Age      = student.Student.Age,
                Gender   = student.Student.Gender,
                Status   = student.Student.Status
            })
                           .ToArray();

            var studentsList = new List <AllSingleStudentsViewModel>(students);

            var model = new AllStudentsDetailsViewModel()
            {
                Students = studentsList
            };

            return(model);
        }