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; }
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; }
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; }
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; }
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; }
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; }
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; }