Example #1
0
        public static void Main()
        {
            using (var connection = new SqliteConnection("DataSource=:memory:"))
            {
                connection.Open();

                var context = StudentDbContext.Create(connection);

                var classes = new ClassRepository(context);
                classes.Create(new Class {
                    Id = 1, Name = "Math"
                });
                classes.Create(new Class {
                    Id = 2, Name = "History"
                });

                var students = new StudentRepository(context);

                var math    = classes.Get(1);
                var history = classes.Get(2);

                var jim = new Student
                {
                    Id      = 1,
                    Name    = "Jim Doe",
                    Classes = new List <Class> {
                        math, history
                    }
                };
                students.Create(jim);

                var nextOfKins = students.Get(1);
                nextOfKins.NextOfKins =
                    new List <NextOfKin> {
                    NextOfKin.Create("John Doe"), NextOfKin.Create("Jane Doe")
                };
                students.Update(nextOfKins);

                var residence = students.Get(1);
                nextOfKins.Hometown = City.Create("Oslo");
                students.Update(nextOfKins);

                new StudentReport(connection, 1).Write();
                new ClassesReport(connection).Write();

                Console.Out.WriteLine("Classes: " + context.Classes.Count());
                Console.Out.WriteLine("Students: " + context.Students.Count());
            }
        }
 public Class Get(int Id)
 {
     try
     {
         var classes = sqlClassRepository.Get(Id);
         return(classes);
     }
     catch (Exception)
     {
         return(null);
     }
 }
        public Class Get(int id)
        {
            var clazz = repository.Get(id);

            if (clazz != null && clazz.Status == (int)ClassEnums.STATUS_DISABLE)
            {
                clazz = null;
            }
            //get class member which is active
            clazz.ClassMembers = new Collection <ClassMember>
                                     (clazz.ClassMembers.Where(cm => cm.Status == (int)ClassMemberEnums.STATUS_ACTIVE).ToList());
            //get class subject which is active
            clazz.ClassSubjects = new Collection <ClassSubject>
                                      (clazz.ClassSubjects.Where(cs => cs.Status == (int)ClassSubjectEnums.STATUS_ACTIVE).ToList());
            return(clazz);
        }
Example #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();
        }
Example #5
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);
        }
        public ActionResult Details(int id)
        {
            var model = _classRepository.Get(id);

            return(View(model));
        }