Exemple #1
0
 public static bool ClassAtTheSameTimeOnOtherWeek(ISchedule schedule, StudentsClass[] sClasses, int dayOfWeek, int classOfDay)
 {
     StudentsClass tempClass = schedule.GetTempClass();
     if (dayOfWeek < Constants.DAYS_IN_WEEK)
     {
         foreach (StudentSubGroup subGroup in tempClass.SubGroups)
         {
             StudentsClass secondClass = schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayOfWeek + Constants.DAYS_IN_WEEK)[classOfDay];
             if (!IsSameClassesAtTheSameTimeOnOtherWeek(sClasses, tempClass, secondClass))
             {
                 return false;
             }
         }
     }
     else
     {
         foreach (StudentSubGroup subGroup in tempClass.SubGroups)
         {
             StudentsClass secondClass = schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayOfWeek - Constants.DAYS_IN_WEEK)[classOfDay];
             if (!IsSameClassesAtTheSameTimeOnOtherWeek(sClasses, tempClass, secondClass))
             {
                 return false;
             }
         }
     }
     return true;
 }
Exemple #2
0
 public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
 {
     StudentSubGroup[] groups = schedule.GetTempClass().SubGroups;
     int fineResult = 0;
     if (IsSaturday(Constants.GetDayOfClass(schedule.GetTimeOfTempClass())))
     {
         for (int groupIndex = 0; groupIndex < groups.Length; groupIndex++)
         {
             PartialSchedule groupSchedule = schedule.GetPartialSchedule(groups[groupIndex]);
             int day = Constants.GetDayOfClass(schedule.GetTimeOfTempClass());
             if (Array.FindAll<StudentsClass>(groupSchedule.GetClassesOfDay(day), (c) => c != null).Count() > 0)
             {
                 if (isBlock)
                     return Constants.BLOCK_FINE;
                 else
                     fineResult += fine;
             }
         }
     }
     else
     {
         return 0;
     }
     return fineResult;
 }
 public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
 {
     int fineResult = 0;
     foreach (StudentSubGroup subGroup in eStorage.StudentSubGroups)
     {
         for (int dayIndex = 0; dayIndex < Constants.DAYS_IN_WEEK; dayIndex++)
         {
             StudentsClass[] subGroupDay = schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayIndex);
             for (int classIndex = 0; classIndex < subGroupDay.Length; classIndex++)
             {
                 if (Array.Find<StudentsClass>(sClassesList.ToArray(), (c) => c == subGroupDay[classIndex]) != null)
                 {
                     StudentsClassPosition? firstClassPosition = schedule.GetClassPosition(subGroupDay[classIndex]);
                     StudentsClass secondClass = schedule.GetClassByRoomAndPosition(firstClassPosition.Value.ClassRoom,
                         firstClassPosition.Value.Time + Constants.CLASSES_IN_DAY * Constants.DAYS_IN_WEEK);
                     if (secondClass != null)
                     {
                         int firstClassRow = ClassesInWeek.GetRow(sClasses, subGroupDay[classIndex]);
                         int secondClassRow = ClassesInWeek.GetRow(sClasses, secondClass);
                         if (secondClassRow == -1 || secondClassRow != firstClassRow)
                         {
                             if (isBlock)
                                 return Constants.BLOCK_FINE;
                             else
                                 fineResult += fine;
                         }
                     }
                 }
             }
         }
     }
     return fineResult;
 }
Exemple #4
0
 public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
 {
     int fineResult = 0;
     for (int groupIndex = 0; groupIndex < eStorage.StudentSubGroups.Length; groupIndex++)
     {
         PartialSchedule groupSchedule = schedule.GetPartialSchedule(eStorage.StudentSubGroups[groupIndex]);
         for (int dayIndex = 0; dayIndex < Constants.DAYS_IN_WEEK; dayIndex++)
         {
             StudentsClass[] sClass = groupSchedule.GetClassesOfDay(dayIndex);
             for (int classIndex = 0; classIndex < sClass.Length; classIndex++)
             {
                 if (sClasses.FindAll((c) => c.sClass == sClass[classIndex]).Count() > 0)
                 {
                     FixedClasses vipClass = sClasses.Find((c) => c.sClass == sClass[classIndex]);
                     if (vipClass.Room != schedule.GetClassRoom(sClass[classIndex]) && vipClass.Time != schedule.GetClassPosition(sClass[classIndex]).Value.Time)
                     {
                         if (isBlock)
                             return Constants.BLOCK_FINE;
                         else
                             fineResult += fine;
                     }
                 }
             }
         }
     }
     return fineResult;
 }
 public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
 {
     StudentSubGroup[] groups = schedule.GetTempClass().SubGroups;
     int classTime = schedule.GetTimeOfTempClass();
     //Считаем день недели последней добавленной пары
     int dayOfWeek = Constants.GetDayOfClass(classTime);
     //Считаем номер пары в этот день
     int classOfDay = Constants.GetTimeOfClass(classTime);
     int otherWeekDay;
     int fineResult = 0;
     if (dayOfWeek < Constants.DAYS_IN_WEEK)
     {
         otherWeekDay = Constants.DAYS_IN_WEEK;
     }
     else
     {
         otherWeekDay = -Constants.DAYS_IN_WEEK;
     }
     if (dayOfWeek == Constants.DAYS_IN_WEEK - 1)
     {
         foreach (StudentSubGroup subGroup in groups)
         {
             StudentsClass[] classes = schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayOfWeek + otherWeekDay);
             if (classes[classOfDay] == null)
             {
                 if (isBlock)
                     return Constants.BLOCK_FINE;
                 else
                     fineResult += fine;
             }
         }
     }
     return fineResult;
 }
        public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
        {
            int fineResult = 0;
            if (sClasses == null)
            { return fineResult; }
            for (int groupIndex = 0; groupIndex < eStorage.StudentSubGroups.Length; groupIndex++)
            {
                PartialSchedule groupSchedule = schedule.GetPartialSchedule(eStorage.StudentSubGroups[groupIndex]);
                for (int dayIndex = 0; dayIndex < Constants.WEEKS_IN_SCHEDULE * Constants.DAYS_IN_WEEK; dayIndex++)
                {
                    for (int classIndex = 0; classIndex < Constants.CLASSES_IN_DAY; classIndex++)
                    {
                        if (!SameClasses.ClassAtTheSameTimeOnOtherWeek(schedule, sClasses, dayIndex, classIndex))
                        {
                            if (isBlock)
                                return Constants.BLOCK_FINE;
                            else
                                fineResult += fine;
                        }

                    }
                }
            }
            return fineResult;
        }
 public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
 {
     int fineCount = 0;
     if (lClasses == null)
     { return fineCount; }
     int classTime = schedule.GetTimeOfTempClass();
     int dayOfWeek = Constants.GetDayOfClass(classTime);
     int lectureCount = 0;
     foreach (StudentSubGroup subGroup in schedule.GetTempClass().SubGroups)
     {
         lectureCount = CountLectureClassesInDay(schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayOfWeek), lClasses);
         if (lectureCount > 3)
         {
             fineCount++;
         }
     }
     if (fineCount != 0)
     {
         if (isBlock)
             return Constants.BLOCK_FINE;
         else
             return fineCount * fine;
     }
     return fineCount;
 }
        public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
        {
            int lectureCount = 0;
            int fineCount = 0;
            foreach (StudentSubGroup subGroup in eStorage.StudentSubGroups)
            {
                for (int dayIndex = 0; dayIndex < Constants.DAYS_IN_WEEK * Constants.WEEKS_IN_SCHEDULE; dayIndex++)
                {

                    lectureCount = CountLectureClassesInDay(schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayIndex), lClasses);
                    if (lectureCount > 3)
                    {
                        fineCount++;
                    }
                }
            }
            if (fineCount != 0)
            {
                if (isBlock)
                    return Constants.BLOCK_FINE;
                else
                    return fineCount * fine;
            }
            return fineCount;
        }
Exemple #9
0
 public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
 {
     StudentSubGroup[] groups = schedule.GetTempClass().SubGroups;
     int day = Constants.GetDayOfClass(schedule.GetTimeOfTempClass());
     List<StudentsClass[]> groupDaySchedule = new List<StudentsClass[]>();
     int fineResult = 0;
     //Проверка является ли добавленная пара пятой
     for (int groupIndex = 0; groupIndex < groups.Length; groupIndex++)
     {
         groupDaySchedule.Add(schedule.GetPartialSchedule(groups[groupIndex]).GetClassesOfDay(day));
         if (schedule.GetTempClass() != groupDaySchedule[groupIndex][Constants.CLASSES_IN_DAY - 2])
         {
             return 0;
         }
     }
     //Проверка отсутствия первой пары
     for (int groupIndex = 0; groupIndex < groups.Length; groupIndex++)
     {
         if (groupDaySchedule[groupIndex][Constants.CLASSES_IN_DAY - 6] == null)
         {
             if (isBlock)
                 return Constants.BLOCK_FINE;
             else
                 fineResult += fine;
         }
     }
     return fineResult;
 }
        public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
        {
            int fineResult = 0;
            for (int groupIndex = 0; groupIndex < eStorage.StudentSubGroups.Length; groupIndex++)
            {
                StudentsClass[] groupFirstWeekSaturdaySchedule = schedule.GetPartialSchedule(eStorage.StudentSubGroups[groupIndex]).GetClassesOfDay(Constants.DAYS_IN_WEEK - 1);
                StudentsClass[] groupSecondWeekSaturdaySchedule = schedule.GetPartialSchedule(eStorage.StudentSubGroups[groupIndex]).GetClassesOfDay(Constants.WEEKS_IN_SCHEDULE * Constants.DAYS_IN_WEEK - 1);
                for (int classIndex = 0; classIndex < Constants.CLASSES_IN_DAY; classIndex++)
                {
                    if ((groupFirstWeekSaturdaySchedule[classIndex] != null && groupSecondWeekSaturdaySchedule[classIndex] == null) ||
                        (groupSecondWeekSaturdaySchedule[classIndex] != null && groupFirstWeekSaturdaySchedule[classIndex] == null))
                    {
                        if (isBlock)
                            return Constants.BLOCK_FINE;
                        else
                            fineResult += fine;
                    }
                }

            }
            return fineResult;
        }
 public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
 {
     int fineResult = 0;
     for (int teacherIndex = 0; teacherIndex < eStorage.Teachers.Length; teacherIndex++)
     {
         PartialSchedule teacherSchedule = schedule.GetPartialSchedule(eStorage.Teachers[teacherIndex]);
         if (Math.Abs(GetCountClassesOnFirstWeek(teacherSchedule) - GetCountClassesOnSecondWeek(teacherSchedule)) > DIFFERENCE)
         {
             if (isBlock)
                 return Constants.BLOCK_FINE;
             else
                 fineResult += fine;
         }
     }
     return fineResult;
 }
        public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
        {
            Teacher[] teachers = schedule.GetTempClass().Teacher;
            for (int teacherIndex = 0; teacherIndex < teachers.Length; teacherIndex++)
            {
                PartialSchedule teacherSchedule = schedule.GetPartialSchedule(teachers[teacherIndex]);
                if (Math.Abs(GetCountClassesOnFirstWeek(teacherSchedule) - GetCountClassesOnSecondWeek(teacherSchedule)) > DIFFERENCE)
                {
                    if (isBlock)
                        return Constants.BLOCK_FINE;
                    else
                        return fine;
                }
            }

            return 0;
        }
 public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
 {
     StudentSubGroup[] groups = schedule.GetTempClass().SubGroups;
     int fineResult = 0;
     for (int groupIndex = 0; groupIndex < groups.Length; groupIndex++)
     {
         PartialSchedule groupSchedule = schedule.GetPartialSchedule(groups[groupIndex]);
         int day = Constants.GetDayOfClass(schedule.GetTimeOfTempClass());
         if (GetCountClassesInRow(groupSchedule.GetClassesOfDay(day)) == 5)
         {
             if (isBlock)
                 return Constants.BLOCK_FINE;
             else
                 fineResult += fine;
         }
     }
     return fineResult;
 }
Exemple #14
0
        public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
        {
            int windowsCount = 0;

            foreach (StudentSubGroup subGroup in eStorage.StudentSubGroups)
            {
                //Получаем количество форточек у одной группы в один день
                windowsCount += Classes.CountUpTwoWindowsOfFullSchedule(schedule.GetPartialSchedule(subGroup));
            }

            if (windowsCount > 0)
            {
                if (isBlock)
                    return Constants.BLOCK_FINE;
                else
                    return windowsCount * fine;
            }
            return 0;
        }
        public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
        {
            int windowCount = 0;

            foreach (Teacher teacher in eStorage.Teachers)
            {
                //Получаем количество форточек у одной группы в один день
                windowCount += Classes.CountUpFourWindowsOfFullSchedule(schedule.GetPartialSchedule(teacher));
            }

            if (windowCount > 0)
            {
                if (isBlock)
                    return Constants.BLOCK_FINE;
                else
                    return windowCount * fine;
            }
            return 0;
        }
 public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
 {
     int fineResult = 0;
     for (int groupIndex = 0; groupIndex < eStorage.StudentSubGroups.Length; groupIndex++)
     {
         PartialSchedule groupSchedule = schedule.GetPartialSchedule(eStorage.StudentSubGroups[groupIndex]);
         for (int dayIndex = 0; dayIndex < Constants.WEEKS_IN_SCHEDULE * Constants.DAYS_IN_WEEK; dayIndex++)
         {
             if (GetCountClassesInRow(groupSchedule.GetClassesOfDay(dayIndex)) == 5)
             {
                 if (isBlock)
                     return Constants.BLOCK_FINE;
                 else
                     fineResult += fine;
             }
         }
     }
     return fineResult;
 }
Exemple #17
0
 public int GetFineOfAddedClass(ISchedule schedule, EntityStorage eStorage)
 {
     int fineResult = 0;
     int classTime = schedule.GetTimeOfTempClass();
     //Считаем день недели последней добавленной пары
     int dayOfWeek = Constants.GetDayOfClass(classTime);
     //Считаем номер пары в этот день
     int classOfDay = Constants.GetTimeOfClass(classTime);
     foreach (StudentSubGroup subGroup in schedule.GetTempClass().SubGroups)
     {
         int windowsCount = Classes.CountUpTwoWindowsOfAddedClass(schedule.GetPartialSchedule(subGroup).GetClassesOfDay(dayOfWeek), classOfDay);
         if (windowsCount > 0)
         {
             if (isBlock)
                 return Constants.BLOCK_FINE;
             else
                 fineResult += windowsCount * fine;
         }
     }
     return fineResult;
 }
Exemple #18
0
 public int GetFineOfFullSchedule(ISchedule schedule, EntityStorage eStorage)
 {
     int fineResult = 0;
     for (int groupIndex = 0; groupIndex < eStorage.StudentSubGroups.Length; groupIndex++)
     {
         PartialSchedule groupSchedule = schedule.GetPartialSchedule(eStorage.StudentSubGroups[groupIndex]);
         for (int dayIndex = 0; dayIndex < Constants.WEEKS_IN_SCHEDULE * Constants.DAYS_IN_WEEK; dayIndex++)
         {
             if (IsSaturday(Constants.GetDayOfClass(dayIndex)))
             {
                 if (Array.FindAll<StudentsClass>(groupSchedule.GetClassesOfDay(dayIndex), (c) => c != null).Count() > 0)
                 {
                     if (isBlock)
                         return Constants.BLOCK_FINE;
                     else
                         fineResult += fine;
                 }
             }
         }
     }
     return fineResult;
 }