public async Task <AllTeachersListViewModel> GetAllEligibleTeacherForGroup(int groupId)
        {
            var group = await this.db.Groups.FirstOrDefaultAsync(g => g.Id == groupId);

            var weekDay   = group.DayOfWeek;
            var startTime = group.StartTime;
            var duration  = group.Duration;

            var teachers = await this.db.Teachers.Include(t => t.Groups).ToArrayAsync();

            var freeTeachers = teachers
                               .Where(t => CheckTeacherIsFree(weekDay, startTime, duration, t))
                               .Select(t => new TeachersListDetailsViewModel
            {
                Id         = t.Id,
                FirstName  = t.FirstName,
                LastName   = t.LastName,
                Groups     = t.Groups.Select(x => x.Name).ToArray(), //do I need this here
                Capacity   = 0,                                      //TODO
                Efficiency = 0,                                      //TODO
            })
                               .ToArray();


            var model = new AllTeachersListViewModel {
                Teachers = freeTeachers
            };

            return(model);
        }
        public AllTeachersListViewModel GetAll()
        {
            var teachers = this.db.Teachers
                           .Where(x => x.Status != TeacherStatus.Quit)
                           .Select(teacher => new TeachersListDetailsViewModel
            {
                Id         = teacher.Id,
                FirstName  = teacher.FirstName,
                LastName   = teacher.LastName,
                Capacity   = 0,             //TODO
                Efficiency = 0,             //TODO
                Groups     = teacher.Groups.Select(x => x.Name).ToArray(),
            })
                           .ToArray()
                           .OrderBy(x => x.Id)
                           .ToArray();

            var model = new AllTeachersListViewModel()
            {
                Teachers = teachers
            };

            return(model);
        }