private void TimeFree(DataGridViewCell cell) { SchedulePointer pointer = cell.Tag as SchedulePointer; SetCellFreeStyle(cell, pointer); ScheduleLesson lesson1 = Schedule.GetLesson(pointer.Time1, pointer.Room1); if (lesson1 != null) { lesson1.Clear(); } ScheduleLesson lesson2 = Schedule.GetLesson(pointer.Time2, pointer.Room2); if (lesson2 != null) { lesson2.Clear(); } string Name = dgvSchedule.Rows[cell.RowIndex].Cells[0].Value.ToString(); Schedule.Employments.RemoveInView(ViewShedule, new Employment(Name, pointer.Time1, ReasonEmployment.Another)); Schedule.Employments.RemoveInView(ViewShedule, new Employment(Name, pointer.Time2, ReasonEmployment.Another)); }
private void ThrowIfNotValidate(ScheduleLesson lesson) { if (lesson.StartTime >= lesson.EndTime) { throw new ApplicationException($"Дата начала урока [{lesson.StartTime}] больше окончания [{lesson.EndTime}]"); } }
private void ViewSelectLesson(DataGridViewCell cell) { SchedulePointer Tag = cell.Tag as SchedulePointer; ScheduleLesson lesson1 = Schedule.GetLesson(Tag.Time1, Tag.Room1); ScheduleLesson lesson2 = Schedule.GetLesson(Tag.Time2, Tag.Room2); if (NumSelectLesson == 1) { SetDataSelectLessonForm(lesson1, lesson2, txtTeacher1, txtDiscipline1, txtRoom1, txtTypeLesson1); L1 = lesson1; L2 = lesson2; T1 = Tag.Time1.Copy(); T2 = Tag.Time2.Copy(); } else if (NumSelectLesson == 2) { SetDataSelectLessonForm(lesson1, lesson2, txtTeacher2, txtDiscipline2, txtRoom2, txtTypeLesson2); L3 = lesson1; L4 = lesson2; T3 = Tag.Time1.Copy(); T4 = Tag.Time2.Copy(); } NumSelectLesson = 0; }
private static void SetElementView(List <ScheduleLesson> LessonsByView, string nameElementProjection, ScheduleClasses.View view, ScheduleWeeks Shedule, DataGridView table, Employments Employments, bool watchAll) { for (int Hour = 1; Hour <= Shedule.Setting.CountLessonsOfDay; Hour++) { DataGridViewRow row = CreateNewRow(table, nameElementProjection, ScheduleTime.GetHourDiscription(Hour)); for (int Week = 1, CellIndex = 2; Week <= Shedule.Setting.CountWeeksShedule; Week++) { for (int Day = 1; Day <= Shedule.Setting.CountDaysEducationWeek; Day++, CellIndex++) { //время занятия на 1-2 недели ScheduleTime Time1 = new ScheduleTime((Week)Week, (ScheduleClasses.Day)Day, Hour); //время занятия на 3-4 недели ScheduleTime Time2 = GetTimeAfterTwoWeek(Time1); //занятие на 1-2 недели ScheduleLesson item1 = Shedule.FindLessonInList(LessonsByView, Time1); //занятие на 3-4 недели ScheduleLesson item2 = Shedule.FindLessonInList(LessonsByView, Time2); string Room1 = item1 != null ? item1.Room : String.Empty; string Room2 = item2 != null ? item2.Room : String.Empty; Employment employmentCell = FindEmployment(view, Employments, nameElementProjection, Time1); string cellContent = item1 == null && item2 == null ? String.Empty : IsLessonsEqualAndNonEmpty(item1, item2) ? GetCellContentIdenticalLessons(view, item1) : GetCellContentDiffrentLessons(view, item1, item2); // задать значения ячейки в DataGridViewCell cell = row.Cells[CellIndex]; cell.Value = cellContent; cell.Tag = new SchedulePointer(Time1, Time2, Room1, Room2); // задать цвет и стиль ячейке if (cellContent != String.Empty) { cell.Style.BackColor = IsLessonsEqualAndNonEmpty(item1, item2) ? Color.LightGreen : Color.LightGreen; } if (employmentCell != null && employmentCell.Reason == ReasonEmployment.UserBlocked) { SetCellBlockedStyle(cell); } } } if (watchAll || (!watchAll && Shedule.Lessons.Where(x => x.Hour == Hour && !x.IsEmpty).Count() > 0)) { table.Rows.Add(row); } } //добавить разделитель int index = table.Rows.GetLastRow(DataGridViewElementStates.None); if (index >= 0) { table.Rows[index].DividerHeight = 3; } }
private void SetRoomsUI(ComboBox cmb, ScheduleLesson lesson, ScheduleTime time) { List <string> rooms = new List <string>(); foreach (ScheduleRoom room in Rooms) { if (Employments.Rooms.IsFree(room.Name, time)) { rooms.Add(room.Name); } } if (lesson != null) { rooms.Add(lesson.Room); } BindingSource bs = new BindingSource(); bs.DataSource = rooms; cmb.DataSource = bs; cmb.Text = (lesson != null && !lesson.IsEmpty) ? lesson.Room : String.Empty; if (lesson == null || lesson.IsEmpty) { cmb.SelectedItem = null; } }
private void SetGroupsUI(ListView ChooiceGroups, ListView AccessGroups, ScheduleLesson lesson, ScheduleTime time) { List <string> AccGroups = new List <string>(); List <string> ChcGroups = new List <string>(); foreach (string group in Adapter.NamesGroups) { if (Employments.Groups.IsFree(group, time)) { AccGroups.Add(group); } } if (lesson != null && !lesson.IsEmpty) { ChcGroups.AddRange(lesson.Groups); } foreach (string group in ChcGroups) { ChooiceGroups.Items.Add(new ListViewItem(group) { ImageIndex = 0 }); } foreach (string group in AccGroups) { AccessGroups.Items.Add(new ListViewItem(group) { ImageIndex = 0 }); } }
private void SetTeachersUI(ComboBox cmb, ScheduleLesson lesson, ScheduleTime time) { List <string> Teachers = new List <string>(); foreach (string teacher in Adapter.NamesTeachers) { if (Employments.Teachers.IsFree(teacher, time)) { Teachers.Add(teacher); } } if (lesson != null) { Teachers.Add(lesson.Teacher); } BindingSource bs = new BindingSource(); bs.DataSource = Teachers; cmb.DataSource = bs; cmb.Text = (lesson != null && !lesson.IsEmpty) ? lesson.Teacher : String.Empty; if (lesson == null || lesson.IsEmpty) { cmb.SelectedItem = null; } }
public void FillLessons(Worksheet sheet, int monthStart, int row, int column, List <ScheduleLesson> tmp, Week week1, Week week2) { int startRow = row; for (int counterDay = 1; counterDay <= 6; counterDay++) { List <ScheduleLesson> query1 = (from x in tmp from p in x.Dates where x.Day == (ScheduleClasses.Day)counterDay && (x.Week == week1 || x.Week == week2) select x).ToList(); List <int> Hours = (from x in query1 select x.Hour).Distinct().OrderBy(e => e).ToList(); for (int i = 0; i < Hours.Count; i++) { row = Hours[i] + ((Hours[i] - 1) * (lessonHorizontalMult - 1)) + ((counterDay - 1) * lsnCntMult * lessonHorizontalMult) + (startRow - 1); List <ScheduleLesson> t1 = query1.Where(x => x.Hour == Hours[i] && x.Week == week1).ToList(); List <ScheduleLesson> t2 = query1.Where(x => x.Hour == Hours[i] && x.Week == week2).ToList(); ScheduleLesson lesson = (t1.Count > 0) ? t1.First() : null; ScheduleLesson lesson2 = (t2.Count > 0) ? t2.First() : null; if (lesson != null && lesson2 != null && lesson.IsEqual(lesson2)) { WriteLesson(sheet, row, column, 0, lesson, false); } else if (lesson != null && lesson2 != null && !lesson.IsEqual(lesson2)) { WriteLesson(sheet, row, column, 0, lesson, true); WriteLesson(sheet, row, column, 1, lesson2, true); } else { if (lesson != null) { WriteLesson(sheet, row, column, 0, lesson, true); } if (lesson2 != null) { WriteLesson(sheet, row, column, 0, lesson2, true); } } if (!(lesson != null && lesson2 != null && !lesson.IsEqual(lesson2))) { Range range1 = new Range(sheet[column, row], sheet[column + 1, row]); range1.Merge(); Range range2 = new Range(sheet[column, row + 1], sheet[column + 1, row + 1]); range2.Merge(); Range range3 = new Range(sheet[column, row + 2], sheet[column + 1, row + 2]); range3.Merge(); Range range4 = new Range(sheet[column, row + 3], sheet[column + 1, row + 3]); range4.Merge(); Range range5 = new Range(sheet[column, row + 4], sheet[column + 1, row + 4]); range5.Merge(); } } } }
public Dictionary <string, ScheduleLesson[]> getDaysWuthScheduleLessons() { var schedule = new Dictionary <string, ScheduleLesson[]>(); var lessons = context.Lessons.Where(l => l.TeacherId == Teacher.Id).ToList(); var schLessons = new List <ScheduleLesson>(); lessons.ForEach( l => { schLessons.AddRange(context.ScheduleLessons.Where(x => x.LessonId == l.Id).ToArray()); } ); for (int i = 0; i < days.Length; i++) { var dayLessons = new ScheduleLesson[ScheduleLesson.MAX_LESSONS_PER_DAY]; schLessons.ForEach( l => { if (l.DayNumber == i + 1) { dayLessons[l.Order - 1] = l; } } ); schedule.Add(days[i], dayLessons); } return(schedule); }
public void BindScheduleLesson(ScheduleLesson schedule) { _textViewLesson.Text = $"{schedule.LessonNumber} {ItemView.Context.GetString(Resource.String.lesson_str)}"; _lessonNum = schedule.LessonNumber - 1; _listViewLessons.SetAdapter(new ClassroomLessonAdapter( schedule.Classrooms .Where(arg => !String.IsNullOrEmpty(arg.Class) || !String.IsNullOrEmpty(arg.Subject)).ToList())); }
private void WriteLesson(WordTable table, int row, ScheduleLesson lesson, bool outdate) { string str = ""; //0-я строчка if (view != ScheduleClasses.View.Group) { str = lesson.GroupsDescription; table.Cell(row, 8).Write(str); table.Cell(row, 8).WriteLine(); } //1-я строчка if (view == ScheduleClasses.View.Discipline) { str += " (" + ScheduleLessonType.Description(lesson.Type) + ")"; table.Cell(row, 8).Write(str); table.Cell(row, 8).WriteLine(); } else { str = lesson.Discipline + " (" + ScheduleLessonType.Description(lesson.Type) + ")"; table.Cell(row, 8).Write(str); table.Cell(row, 8).WriteLine(); } //2-я строчка if (outdate) { str = lesson.DatesDescription; getDateTimeOfLesson(str); table.Cell(row, 8).Write(str); table.Cell(row, 8).WriteLine(); } //3-я строчка if (view == ScheduleClasses.View.Teacher) { str = lesson.Room; table.Cell(row, 8).Write(str); table.Cell(row, 8).WriteLine(); } if (view == ScheduleClasses.View.Room) { str = lesson.Teacher; table.Cell(row, 8).Write(str); table.Cell(row, 8).WriteLine(); } if (view != ScheduleClasses.View.Teacher && view != ScheduleClasses.View.Room) { str = lesson.Teacher + " " + lesson.Room; table.Cell(row, 8).Write(str); table.Cell(row, 8).WriteLine(); } }
private void SetDisciplinesUI(ComboBox cmb, ScheduleLesson lesson) { BindingSource bs = new BindingSource(); bs.DataSource = Adapter.NamesDisciplines; cmb.DataSource = bs; cmb.Text = (lesson != null && !lesson.IsEmpty) ? lesson.Discipline : String.Empty; if (lesson == null || lesson.IsEmpty) { cmb.SelectedItem = null; } }
private void SetScheduleLesson(DayOfWeek day) { var sl1 = new ScheduleLesson { Id = Guid.NewGuid().ToString(), Day = day, StartTime = new TimeSpan(8, 0, 0), EndTime = new TimeSpan(8, 45, 0) }; ScheduleContext.Add(sl1); var sl2 = new ScheduleLesson { Id = Guid.NewGuid().ToString(), Day = day, StartTime = new TimeSpan(9, 0, 0), EndTime = new TimeSpan(9, 45, 0) }; ScheduleContext.Add(sl2); var sl3 = new ScheduleLesson { Id = Guid.NewGuid().ToString(), Day = day, StartTime = new TimeSpan(10, 0, 0), EndTime = new TimeSpan(10, 45, 0) }; ScheduleContext.Add(sl3); var sl4 = new ScheduleLesson { Id = Guid.NewGuid().ToString(), Day = day, StartTime = new TimeSpan(11, 0, 0), EndTime = new TimeSpan(11, 45, 0) }; ScheduleContext.Add(sl4); var sl5 = new ScheduleLesson { Id = Guid.NewGuid().ToString(), Day = day, StartTime = new TimeSpan(12, 0, 0), EndTime = new TimeSpan(12, 45, 0) }; ScheduleContext.Add(sl5); ScheduleContext.SaveChanges(); }
public async Task <string> AddAsync(ScheduleLesson lesson) { ThrowIfNotValidate(lesson); await ThrowIdCantInsertAsync(lesson); var id = Guid.NewGuid().ToString(); lesson.Id = id; _context.Add(lesson); await _context.SaveChangesAsync(); return(id); }
private void ExchangeLessons(ScheduleLesson item1, ScheduleLesson item2, ScheduleTime time1, ScheduleTime time2) { if (item1 != null && item2 != null) { ScheduleLesson tmp1 = item1.Copy(); ScheduleLesson less1 = Schedule.GetLesson(time1, item1.Room); ScheduleLesson less2 = Schedule.GetLesson(time2, item2.Room); Schedule.Employments.Remove(less1.Teacher, less1.Groups, less1.Room, less1.Time); Schedule.Employments.Remove(less2.Teacher, less2.Groups, less2.Room, less2.Time); less1.UpdateFields(item1.Teacher, item1.Discipline, item1.Groups, item1.Type, item2.Dates); less1.Time = item2.Time.Copy(); less1.Room = item2.Room; less2.UpdateFields(item2.Teacher, item2.Discipline, item2.Groups, item2.Type, tmp1.Dates); less2.Time = tmp1.Time.Copy(); less2.Room = tmp1.Room; Schedule.Employments.Add(less2.Teacher, less2.Groups, less2.Room, less2.Time, ReasonEmployment.UnionLesson); Schedule.Employments.Add(less1.Teacher, less1.Groups, less1.Room, less1.Time, ReasonEmployment.UnionLesson); } else if (item1 == null && item2 != null) { ScheduleLesson lsn = Schedule.GetLesson(time1, item2.Room); if (lsn.GroupsDescription != "" || lsn.Teacher != "" || lsn.Discipline != "") { MessageBox.Show("Занято для " + item2.Week.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ScheduleLesson lsn2 = Schedule.GetLesson(time2, item2.Room).Copy(); Schedule.Employments.Remove(lsn2.Teacher, lsn2.Groups, lsn2.Room, lsn2.Time); lsn.UpdateFields(item2.Teacher, item2.Discipline, item2.Groups, item2.Type, lsn.Dates); item2.Clear(); Schedule.Employments.Add(lsn.Teacher, lsn.Groups, lsn.Room, lsn.Time, ReasonEmployment.UnionLesson); } else if (item1 != null && item2 == null) { ScheduleLesson lsn = Schedule.GetLesson(time2, item1.Room); if (lsn.GroupsDescription != "" || lsn.Teacher != "" || lsn.Discipline != "") { MessageBox.Show("Занято для " + item1.Week.ToString(), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } ScheduleLesson lsn2 = Schedule.GetLesson(time1, item1.Room).Copy(); Schedule.Employments.Remove(lsn2.Teacher, lsn2.Groups, lsn2.Room, lsn2.Time); lsn.UpdateFields(item1.Teacher, item1.Discipline, item1.Groups, item1.Type, lsn.Dates); item1.Clear(); Schedule.Employments.Add(lsn.Teacher, lsn.Groups, lsn.Room, lsn.Time, ReasonEmployment.UnionLesson); } }
/// <summary> /// Сгенерировать предмет. /// </summary> /// <param name="classId">Идентификатор класса.</param> /// <param name="teacherId">Идентификатор учителя.</param> /// <param name="subjectId">Идентификатор предмета.</param> /// <param name="cabineteId">Идентификатор кабинета.</param> /// <param name="lesson">Сетка урока.</param> /// <returns>Фактическое занятие.</returns> private FactLesson GenerateLesson(string classId, string teacherId, string subjectId, string cabineteId, ScheduleLesson lesson) { return(new FactLesson { Id = Guid.NewGuid(), ClassId = classId, Lesson = lesson, SubjectId = subjectId, TeacherId = teacherId, Cabinete = cabineteId }); }
private void SetDatesUI(ListView dates, ScheduleLesson lesson) { if (lesson == null) { return; } dates.Items.Clear(); foreach (DateTime date in lesson.Dates) { string title = String.Format("{0:dd} {0:MMMM} {0:yyyy}", date); dates.Items.Add(new ListViewItem(title) { ImageIndex = 1, Tag = date }); } }
private static string GetLessonInfoFormat1(ScheduleClasses.View view, ScheduleLesson lesson) { string format = "{0} \n {1} \n {2} \n {3}"; switch (view) { case ScheduleClasses.View.Teacher: return(String.Format(format, lesson.Discipline, ScheduleLessonType.Description(lesson.Type), lesson.GroupsDescription, lesson.Room)); case ScheduleClasses.View.Discipline: return(String.Format(format, lesson.GroupsDescription, ScheduleLessonType.Description(lesson.Type), lesson.Teacher, lesson.Room)); case ScheduleClasses.View.Group: return(String.Format(format, lesson.Discipline, ScheduleLessonType.Description(lesson.Type), lesson.Teacher, lesson.Room)); case ScheduleClasses.View.Room: return(String.Format(format, lesson.Discipline, ScheduleLessonType.Description(lesson.Type), lesson.Teacher, lesson.GroupsDescription)); default: return(String.Empty); } }
private void SetDataSelectLessonForm(ScheduleLesson item1, ScheduleLesson item2, Label txtTeacher, Label txtDiscipline, Label txtRoom, Label txtTypeLesson) { if (item1 == null && item2 == null) { txtTeacher.Text = txtDiscipline.Text = txtRoom.Text = txtTypeLesson.Text = String.Empty; return; } txtTeacher.Text = (item1 != null ? item1.Teacher : String.Empty) + " / " + (item2 != null ? item2.Teacher : String.Empty); txtDiscipline.Text = (item1 != null ? item1.Discipline : String.Empty) + " / " + (item2 != null ? item2.Discipline : String.Empty); txtRoom.Text = (item1 != null ? item1.Room : String.Empty) + " / " + (item2 != null ? item2.Room : String.Empty); txtTypeLesson.Text = (item1 != null ? ScheduleLessonType.Description(item1.Type) : String.Empty) + " / " + (item2 != null ? ScheduleLessonType.Description(item2.Type) : String.Empty); }
/// <summary> /// Определяет расписание ученика или учителя /// </summary> /// <param name="userId"></param> /// <returns></returns> public Dictionary <string, ScheduleLesson[]> getDaysWithScheduleLessons(string userId) { var schedule = new Dictionary <string, ScheduleLesson[]>(); var childrenData = context.ChildrenData.FirstOrDefault(d => d.ChildrenId == userId); var lessons = context.ScheduleLessons.Where(l => childrenData.SchoolClassId == l.SchoolClassId).Select(x => x).ToArray(); for (int i = 0; i < days.Length; i++) { var schLessons = new ScheduleLesson[ScheduleLesson.MAX_LESSONS_PER_DAY]; var ls = lessons.Where(l => l.DayNumber == i + 1).OrderBy(l => l.Order).Select(x => x).ToArray(); for (int o = 0; o < ls.Length; o++) { schLessons[ls[o].Order - 1] = ls[o]; } schedule.Add(days[i], schLessons); } return(schedule); }
private async Task ThrowIdCantInsertAsync(ScheduleLesson lesson) { var actuaLessons = await _context.ScheduleLessons.Where(x => x.Day == lesson.Day).ToListAsync(); if (actuaLessons.Any(x => x.StartTime >= lesson.StartTime && x.EndTime <= lesson.StartTime)) { throw new ApplicationException("Время начала не совпадает"); } if (actuaLessons.Any(x => x.StartTime >= lesson.EndTime && x.EndTime <= lesson.EndTime)) { throw new ApplicationException("Время окончания не совпадает"); } if (actuaLessons.Any(x => x.StartTime < lesson.StartTime && x.EndTime > lesson.EndTime)) { throw new ApplicationException("Временной промежуток не совпадает"); } }
private void SetLessonTypesUI(ComboBox cmb, ScheduleLesson lesson) { BindingSource bs = new BindingSource(); if (Type == scheduleType.leesons) { bs.DataSource = ScheduleLessonType.GetBaseType(); } else { bs.DataSource = SheduleExamType.GetBaseType(); } cmb.DisplayMember = "Detail"; cmb.ValueMember = "TypeCode"; cmb.DataSource = bs; cmb.Text = (lesson != null && !lesson.IsEmpty) ? ScheduleLessonType.Description(lesson.Type) : String.Empty; if (lesson == null || lesson.IsEmpty) { cmb.SelectedItem = null; } }
private void btnAccept_Click(object sender, EventArgs e) { if (!((cmbDiscipline1.Text != "" && cmbRooms1.Text != "" && cmbTypeLesson1.SelectedValue != null && cmbTeacher1.Text != "") || ((cmbDiscipline1.Text == "" && cmbRooms1.Text == "" && cmbTypeLesson1.SelectedValue == null && cmbTeacher1.Text == "")))) { MessageBox.Show("Введены не все \n\rзначения для 1-2 недели", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!((cmbDiscipline2.Text != "" && cmbRooms2.Text != "" && cmbTypeLesson2.SelectedValue != null && cmbTeacher2.Text != "") || ((cmbDiscipline2.Text == "" && cmbRooms2.Text == "" && cmbTypeLesson2.SelectedValue == null && cmbTeacher2.Text == "")))) { MessageBox.Show("Введены не все \n\rзначения для 3-4 недели", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (Lesson1 != null) { Employments.Remove(Lesson1.Teacher, Lesson1.Groups, Lesson1.Room, Time1); } if (Lesson1 == null) { Lesson1 = Shedule.GetLesson(Time1, cmbRooms1.Text); } if (Lesson1 != null) { Lesson1.Discipline = cmbDiscipline1.Text; Lesson1.Room = cmbRooms1.Text; Lesson1.Type = (LessonType)cmbTypeLesson1.SelectedValue; Lesson1.Teacher = cmbTeacher1.Text; Lesson1.Groups.Clear(); foreach (ListViewItem Item in lvSelectGroup1.Items) { Lesson1.Groups.Add(Item.Text); } Lesson1.Dates.Clear(); foreach (ListViewItem Item in lvDates1.Items) { Lesson1.Dates.Add(Convert.ToDateTime(Item.Text)); } Employments.Add(Lesson1.Teacher, Lesson1.Groups, Lesson1.Room, Time1, ReasonEmployment.UnionLesson); } //------------------------------------------- if (Lesson2 != null) { Employments.Remove(Lesson2.Teacher, Lesson2.Groups, Lesson2.Room, Time2); } if (Lesson2 == null) { Lesson2 = Shedule.GetLesson(Time2, cmbRooms2.Text); } if (Lesson2 != null) { Lesson2.Discipline = cmbDiscipline2.Text; Lesson2.Room = cmbRooms2.Text; Lesson2.Type = (LessonType)cmbTypeLesson2.SelectedValue; Lesson2.Teacher = cmbTeacher2.Text; Lesson2.Groups.Clear(); foreach (ListViewItem Item in lvSelectGroup2.Items) { Lesson2.Groups.Add(Item.Text); } Lesson2.Dates.Clear(); foreach (ListViewItem row in lvDates2.Items) { Lesson2.Dates.Add(Convert.ToDateTime(row.Text)); } Employments.Add(Lesson2.Teacher, Lesson2.Groups, Lesson2.Room, Time2, ReasonEmployment.UnionLesson); } this.DialogResult = System.Windows.Forms.DialogResult.OK; this.Close(); }
private void FillLessons(WordTable table, int monthStart, int row, List <ScheduleLesson> tmp, Week week1, Week week2) { int column = 1; for (int counterDay = 1; counterDay <= 6; counterDay++) { column = 1; for (int counterMonth = monthStart; counterMonth < monthStart + 5; counterMonth++) { List <int> numbers = (from x in tmp from p in x.Dates where x.Day == (ScheduleClasses.Day)counterDay && p.Month == counterMonth && (x.Week == week1 || x.Week == week2) select p.Day).Distinct().OrderBy(e => e).ToList(); foreach (int day in numbers) { table.Cell(row, column).WriteLine(); table.Cell(row, column).Write(day.ToString()); } column++; } List <ScheduleLesson> query1 = (from x in tmp from p in x.Dates where x.Day == (ScheduleClasses.Day)counterDay && (x.Week == week1 || x.Week == week2) select x).ToList(); List <int> Hours = (from x in query1 select x.Hour).Distinct().OrderBy(e => e).ToList(); foreach (int hour in Hours) { string str = ""; str = ScheduleTime.GetHourDiscription(hour); table.Cell(row, 7).Write(str); table.Cell(row, 7).WriteLine(); } for (int i = 0; i < Hours.Count; i++) { List <ScheduleLesson> t1 = query1.Where(x => x.Hour == Hours[i] && x.Week == week1).ToList(); List <ScheduleLesson> t2 = query1.Where(x => x.Hour == Hours[i] && x.Week == week2).ToList(); ScheduleLesson lesson = (t1.Count > 0) ? t1.First() : null; ScheduleLesson lesson2 = (t2.Count > 0) ? t2.First() : null; if (lesson != null && lesson2 != null && lesson.IsEqual(lesson2)) { WriteLesson(table, row, lesson, false); if (i + 1 < Hours.Count) { List <ScheduleLesson> Next1 = query1.Where(x => x.Hour == Hours[i + 1] && x.Week == week1).ToList(); ScheduleLesson next1 = (t1.Count > 0) ? t1.First() : null; List <ScheduleLesson> Next2 = query1.Where(x => x.Hour == Hours[i + 1] && x.Week == week2).ToList(); ScheduleLesson next2 = (t1.Count > 0) ? t1.First() : null; if (next1 != null && next2 != null && next1.IsEqual(next2) && lesson.IsEqual(next1)) { i++; } } } else { if (lesson != null) { if (lesson2 == null) { WriteLesson(table, row, lesson, false); } else { WriteLesson(table, row, lesson, true); } if (i + 1 < Hours.Count) { List <ScheduleLesson> Next = query1.Where(x => x.Hour == Hours[i + 1] && x.Week == week1).ToList(); ScheduleLesson next = (Next.Count > 0) ? Next.First() : null; if (next != null && lesson.IsEqual(next)) { i++; } } } if (lesson2 != null) { if (lesson == null) { WriteLesson(table, row, lesson2, false); } else { WriteLesson(table, row, lesson2, true); } if (i + 1 < Hours.Count) { List <ScheduleLesson> Next = query1.Where(x => x.Hour == Hours[i + 1] && x.Week == week2).ToList(); ScheduleLesson next = (Next.Count > 0) ? Next.First() : null; if (next != null && lesson2.IsEqual(next)) { i++; } } } } } row++; } }
void WriteLesson(Worksheet sheet, int row, int column, int subClmnShift, ScheduleLesson lesson, bool outdate) { string str = ""; //0-я строчка if (view != ScheduleClasses.View.Group) { str = lesson.GroupsDescription; switch (view) { case ScheduleClasses.View.Discipline: sheet[column + subClmnShift, row].Value = str; break; case ScheduleClasses.View.Room: sheet[column + subClmnShift, row + 4].Value = str; break; case ScheduleClasses.View.Teacher: sheet[column + subClmnShift, row + 3].Value = str; break; } } //1-я строчка if (view == ScheduleClasses.View.Discipline) { sheet[column + subClmnShift, row].Value = str; sheet[column + subClmnShift, row + 1].Value = "(" + ScheduleLessonType.Description(lesson.Type) + ")"; } else { str = lesson.Discipline; sheet[column + subClmnShift, row].Value = str; sheet[column + subClmnShift, row + 1].Value = "(" + ScheduleLessonType.Description(lesson.Type) + ")"; } //2-я строчка if (outdate) { str = lesson.DatesDescription; sheet[column + subClmnShift, row + 2].Value = str; } else { sheet[column + subClmnShift, row + 2].Value = ""; } //3-я строчка if (view == ScheduleClasses.View.Teacher) { str = lesson.Room; sheet[column + subClmnShift, row + 4].Value = str; } if (view == ScheduleClasses.View.Room) { str = lesson.Teacher; sheet[column + subClmnShift, row + 3].Value = str; } if (view != ScheduleClasses.View.Teacher && view != ScheduleClasses.View.Room) { sheet[column + subClmnShift, row + 3].Value = lesson.Teacher; sheet[column + subClmnShift, row + 4].Value = lesson.Room; } }
private static bool IsLessonsEqualAndNonEmpty(ScheduleLesson item1, ScheduleLesson item2) { return(item1 != null && item2 != null && item1.Discipline == item2.Discipline && item1.Room == item2.Room && item1.Teacher == item2.Teacher && item1.Type == item2.Type); }
private static string GetCellContentIdenticalLessons(ScheduleClasses.View view, ScheduleLesson item) { return(GetLessonInfoFormat1(view, item)); }
private static string GetCellContentDiffrentLessons(ScheduleClasses.View view, ScheduleLesson item1, ScheduleLesson item2) { string content = String.Empty; content += item1 != null?GetLessonInfoFormat2(view, item1) : emptyLesson; content += Environment.NewLine + splitLine + Environment.NewLine; content += item2 != null?GetLessonInfoFormat2(view, item2) : emptyLesson; return(content); }