Esempio n. 1
0
        public Lesson UpdateLessonGrade(int lessonId, double grade)
        {
            var lessonRepo = new LessonRepository();
            var lesson     = lessonRepo.GetLesson(lessonId);

            lesson.Grade = grade;

            if (!lesson.IsPassed)
            {
                var moduleRepository = new ModuleRepository();
                var module           = moduleRepository.GetModule(lessonId);

                if (grade >= module.MinimumPassingGrade)
                {
                    lesson.IsPassed = true;
                }
                else
                {
                    lesson.IsPassed = false;
                }
            }

            return(lesson);
        }
        public CreateUserViewModel()
        {
            CreateCommand = new RelayCommand(() =>
            {
                if (Username == null)
                    return;
                if(Username.Trim().Length<3)
                {
                    Notifier.ShowMessage("Please enter at least 3 character for a user name!");
                    return;
                }
                if(StudentRepository.GetStudents().Select(s=>s.Username).Contains(Username))
                {
                    Notifier.ShowMessage($"{Username} already exist. Please specify a different one.");
                    return;
                }
                
                Student student = new Student()
                {
                    Username = Username
                };

                StudentRepository.Add(student);
                StudentRepository.Logged = StudentRepository.GetStudents().Where(s => s.Username == student.Username).First();

                PerfomanceMonitor.PopulateLetters();
                LessonRepository.PopulateUserLessons();
                Notifier.ShowMessage($"{Username} created successfully");

                DialogService.HideDialog(GetType());
                DialogService.ShowDialog(typeof(MainVM));
                DialogService.CloseDialog(GetType());
            });

            CancelCommand = new RelayCommand(() => DialogService.CloseDialog(GetType()));
        }
Esempio n. 3
0
        public void UpdateLessonGrade(int lessonId, double grade)
        {
            var lessonRepo = new LessonRepository();
            var lesson     = lessonRepo.GetLesson(lessonId);

            lesson.Grade = grade;

            // For consistency, we need to set the lesson's pass status
            // each time the grade changes
            //if (!lesson.IsPassed)
            //{
            var moduleRepository = new ModuleRepository();
            var module           = moduleRepository.GetModule(lessonId);

            if (grade >= module.MinimumPassingGrade)
            {
                lesson.IsPassed = true;
            }
            else
            {
                lesson.IsPassed = false;
            }
            //}
        }
Esempio n. 4
0
        public static void Save(string path, Schedule[] schedules, ClassRepository classRepository, LessonRepository lessonRepository)
        {
            IWorkbook workbook = null;

            var directoryInfo = new DirectoryInfo(path);

            if (!directoryInfo.Parent.Exists)
            {
                Directory.CreateDirectory(directoryInfo.Parent.FullName);
            }

            var fs = File.OpenWrite(path);

            if (path.IndexOf(".xlsx") > 0) // 2007版本
            {
                workbook = new XSSFWorkbook();
            }
            else if (path.IndexOf(".xls") > 0) // 2003版本
            {
                workbook = new HSSFWorkbook();
            }

            var lessons = lessonRepository.Get();
            var classes = classRepository.Get();

            if (schedules.Length > 0)
            {
                var classSchedules = new Dictionary <Class, List <Schedule> >();

                foreach (var schedule in schedules)
                {
                    var @class = classes.Where(_class => _class.ID == schedule.ClassID).First();

                    if (!classSchedules.ContainsKey(@class))
                    {
                        var _schedules = new List <Schedule>()
                        {
                            schedule
                        };
                        classSchedules.Add(@class, _schedules);
                    }
                    else
                    {
                        classSchedules[@class].Add(schedule);
                    }
                }

                var classSchedulesList = classSchedules.ToList();

                classSchedulesList.Sort((x, y) =>
                {
                    return(x.Key.ID.CompareTo(y.Key.ID));
                });

                foreach (var keyValue in classSchedulesList)
                {
                    var _class     = keyValue.Key;
                    var _schedules = keyValue.Value;

                    ISheet sheet = workbook.CreateSheet(_class.Name);

                    int  rowIndex = 0;
                    int  colIndex = 0;
                    IRow row      = null;

                    row = sheet.CreateRow(rowIndex++);

                    row.CreateCell(colIndex++).SetCellValue("一");
                    row.CreateCell(colIndex++).SetCellValue("二");
                    row.CreateCell(colIndex++).SetCellValue("三");
                    row.CreateCell(colIndex++).SetCellValue("四");
                    row.CreateCell(colIndex++).SetCellValue("五");

                    rowIndex = 0;
                    colIndex = 0;
                    foreach (var schedule in _schedules)
                    {
                        var lesson = lessons.Where(_lesson => _lesson.ID == schedule.LessonID).First();

                        rowIndex = lesson.No;
                        colIndex = lesson.WeekDay - 1;

                        var course = _class.Courses.Where(_course => _course.CourseType == schedule.CourseType).First();

                        row = sheet.GetRow(rowIndex);

                        if (row == null)
                        {
                            row = sheet.CreateRow(rowIndex);
                        }

                        row.CreateCell(colIndex).SetCellValue(course.Name);
                    }
                }
            }

            workbook.Write(fs);

            fs.Close();
        }
Esempio n. 5
0
 public LessonService()
 {
     lessonRepository = new LessonRepository();
 }
Esempio n. 6
0
        // ReSharper disable once UnusedMember.Global
        public LessonResponse Post(LessonUpsertRequest request)
        {
            Guard.AgainstEmpty(request.Provider);
            Guard.AgainstEmpty(request.ProviderId);
            var existingUser = UserHelpers.GetExistingUser(request, UserRepository);

            Guard.IsTrue(eu => eu.IsNew == false, existingUser);
            Guard.IsTrue(eu => eu.IsTeacher, existingUser);

            var lesson = new Lesson
            {
                Id                  = request.Id,
                BookTitle           = request.BookTitle,
                BookAmazonUrl       = request.BookAmazonUrl,
                TheHookYouTubeVideo = request.TheHookYouTubeVideo,
                TheTwoVocabularyWordsYouTubeVideo = request.TheTwoVocabularyWordsYouTubeVideo,
                EnunciationVideo1 = request.EnunciationVideo1,
                EnunciationVideo2 = request.EnunciationVideo2,
                MainIdea          = request.MainIdea,
                SupportingIdea    = request.SupportingIdea,
                StoryDetails      = request.StoryDetails,
                StoryQuestions    = request.StoryQuestions,
                ImportantSentencesForWordScramble = request.ImportantSentencesForWordScramble,
                Provider   = request.Provider,
                ProviderId = request.ProviderId
            };

            if (lesson.IsNew)
            {
                LessonRepository.Add(lesson);
            }
            else
            {
                if (request.Provider != lesson.Provider || request.ProviderId != lesson.ProviderId)
                {
                    throw new HttpError(HttpStatusCode.Unauthorized, "Unauthorized");
                }

                if (lesson.IsDeleted)
                {
                    throw new HttpError(HttpStatusCode.NotFound, "NotFound");
                }

                lesson.UpdateDateUtc = DateTime.UtcNow;
                LessonRepository.Update(lesson);
            }

            // TODO: Use Automapper
            return(new LessonResponse
            {
                Id = lesson.Id,
                BookTitle = lesson.BookTitle,
                BookAmazonUrl = lesson.BookAmazonUrl,
                TheHookYouTubeVideo = lesson.TheHookYouTubeVideo,
                TheTwoVocabularyWordsYouTubeVideo = lesson.TheTwoVocabularyWordsYouTubeVideo,
                EnunciationVideo1 = lesson.EnunciationVideo1,
                EnunciationVideo2 = lesson.EnunciationVideo2,
                MainIdea = lesson.MainIdea,
                SupportingIdea = lesson.SupportingIdea,
                StoryDetails = lesson.StoryDetails,
                StoryQuestions = lesson.StoryQuestions,
                ImportantSentencesForWordScramble = lesson.ImportantSentencesForWordScramble,
                LessonAuthor = existingUser
            });
        }
Esempio n. 7
0
 public LessonService(DefaultContext context)
 {
     this.repository = new LessonRepository(context);
 }
Esempio n. 8
0
        public Schedule[] Do(ClassRepository classRepository, ScheduleRepository scheduleRepository, LessonRepository lessonRepository)
        {
            Schedule[] result = null;

            var             lessons           = new List <Lesson>(lessonRepository.Get());
            var             classes           = classRepository.Get();
            var             classesCount      = classes.Count();
            List <Schedule> schedules         = new List <Schedule>();
            List <Class>    isScheduleClasses = new List <Class>();

            int days   = 0;
            int period = 0;

            foreach (var lesson in lessons)
            {
                days   = Math.Max(lesson.WeekDay, days);
                period = Math.Max(lesson.No, period);
            }

            while (true)
            {
                foreach (var @class in classes)
                {
                    if (isScheduleClasses.Contains(@class))
                    {
                        continue;
                    }

                    @class.ResetCourse();

                    bool            flag1      = false;
                    List <Schedule> _schedules = new List <Schedule>();

                    var keyValuePairs = @class.GetLessonCourses(lessons, days, period);

                    foreach (var keyValuePair in keyValuePairs)
                    {
                        var lesson = keyValuePair.Key;
                        var course = keyValuePair.Value;

                        var teacherID = course.TeacherID;
                        var lessonID  = lesson.ID;

                        if (!scheduleRepository.IsTeacherAvaliable(teacherID, lessonID))
                        {
                            flag1 = true;
                            break;
                        }
                        else
                        {
                            if (teacherID > 0)
                            {
                                var temp = new List <Schedule>();
                                temp.AddRange(schedules);
                                temp.AddRange(_schedules);

                                var _schedulesResult = temp.Where(schedule => schedule.TeacherID > 0 && schedule.TeacherID == teacherID && schedule.LessonID == lessonID);
                                if (_schedulesResult.Count() > 0)
                                {
                                    flag1 = true;
                                    break;
                                }
                            }

                            flag1 = false;
                            course.ScheduleLesson();
                            _schedules.Add(new Schedule(ScheduleType.Schedule, @class.ID, lessonID, teacherID, course.CourseType));
                            continue;
                        }
                    }

                    if (flag1)
                    {
                        continue;
                    }
                    else
                    {
                        isScheduleClasses.Add(@class);
                        schedules.AddRange(_schedules);
                    }
                }

                if (isScheduleClasses.Count == classesCount)
                {
                    // 筛选结果
                    foreach (var lesson in lessons)
                    {
                        var id = lesson.ID;

                        var _schedules = schedules.Where(schedule => schedule.LessonID == id && schedule.TeacherID > 0);
                        var distinct   = _schedules.Distinct(m => m.TeacherID);

                        if (distinct.Count() < _schedules.Count())
                        {
                            isScheduleClasses.Clear();
                            schedules.Clear();
                        }
                    }


                    if (schedules.Count > 0)
                    {
                        // 保存结果
                        result = new Schedule[schedules.Count];
                        schedules.CopyTo(result);

                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
            }

            return(result);
        }
Esempio n. 9
0
        // ReSharper disable once UnusedMember.Global
        public IEnumerable <GroupedStudentLessonAnswerResponse> Post(StudentLessonAnswerGetAllRequest request)
        {
            Guard.AgainstEmpty(request.Provider);
            Guard.AgainstEmpty(request.ProviderId);
            var existingUser = UserHelpers.GetExistingUser(request, UserRepository);

            Guard.IsTrue(eu => eu.IsNew == false, existingUser);
            Guard.GreaterThan(0, request.LessonId, "LessonId");
            Guard.IsTrue(eu => eu.IsTeacher, existingUser);

            var lesson = LessonRepository.Find(request.LessonId);

            if (request.Provider != lesson.Provider || request.ProviderId != lesson.ProviderId)
            {
                throw new HttpError(HttpStatusCode.Unauthorized, "Unauthorized");
            }

            var studentLessonAnswers        = StudentLessonAnswerRepository.GetAllByLessonId(request.LessonId);
            var groupedStudentLessonAnswers = studentLessonAnswers.GroupBy(g => new { g.Provider, g.ProviderId }).ToList();
            var allStudents = groupedStudentLessonAnswers.Select(g => UserRepository.GetUserByProviderAndProviderId(g.Key.Provider, g.Key.ProviderId)).ToList();

            var response = new List <GroupedStudentLessonAnswerResponse>();

            foreach (var grouping in groupedStudentLessonAnswers)
            {
                var student = allStudents.SingleOrDefault(a => a.Provider == grouping.Key.Provider && a.ProviderId == grouping.Key.ProviderId);
                if (student == null || student.IsStudent == false)
                {
                    ErrorLogRepository.Add(new ErrorLog
                    {
                        Application = "MetacognitiveTutor.Api",
                        Message     = $"No student found for Provider '{grouping.Key.Provider}', ProviderId '{grouping.Key.ProviderId}'; LessonId: '{request.LessonId}'.",
                        Provider    = request.Provider,
                        ProviderId  = request.ProviderId,
                    });
                    continue;
                }

                var grade = GradeRepository.GetGrade(request.LessonId, student.Provider, student.ProviderId);
                response.Add(new GroupedStudentLessonAnswerResponse
                {
                    LessonId             = request.LessonId,
                    BookTitle            = lesson.BookTitle,
                    Name                 = student.Name,
                    Provider             = student.Provider,
                    ProviderId           = student.ProviderId,
                    ProviderPic          = student.ProviderPic,
                    StudentLessonAnswers = grouping.Select(g => new StudentLessonAnswerResponse
                    {
                        Id           = g.Id,
                        LessonId     = g.LessonId,
                        QuestionType = g.QuestionType,
                        QuestionId   = g.QuestionId,
                        Question     = g.Question,
                        Answer       = g.Answer
                    }).OrderByDescending(sla => sla.QuestionType.Equals("card_pyramid", StringComparison.OrdinalIgnoreCase)).ThenByDescending(sla => sla.QuestionType.Equals("word_scramble", StringComparison.OrdinalIgnoreCase)),
                    GradeResponse = grade == null ? new GradeResponse {
                        IsGraded = false
                    } : new GradeResponse {
                        IsGraded = true, Comments = grade.Comments, Grade = grade.Grade
                    }
                });
            }

            return(response);
        }
Esempio n. 10
0
 public LessonService()
 {
     _lessonRepository       = new LessonRepository();
     _lessonsSetupRepository = new LessonsSetupRepository();
     _exerciseService        = new ExerciseService();
 }
Esempio n. 11
0
        // GET: api/Lesson
        public async Task <IEnumerable <Lesson> > Get()
        {
            LessonRepository repository = new LessonRepository();

            return(await repository.Get());
        }
Esempio n. 12
0
 ///<summary>
 /// Constructor for initialize
 ///</summary>
 public LessonCoreModel()
 {
     _repository = new LessonRepository <object>();
 }
 public void Setup()
 {
     // Let's make sure every test starts with a clean slate
     _lessonRepo = new LessonRepository();
 }
Esempio n. 14
0
 public LessonsController(LessonRepository lessonRepository, SessionRepository sessionRepository)
 {
     _lessonRepository  = lessonRepository;
     _sessionRepository = sessionRepository;
 }