public LessonViewAtLessonListByTfd(Lesson l)
 {
     LessonId = l.LessonId;
     CalendarDate = l.Calendar.Date.ToString("dd.MM.yyyy");
     RingTime = l.Ring.Time.ToString("H:mm");
     AuditoriumName = l.Auditorium.Name;
 }
Ejemplo n.º 2
0
 private string LessonToString(Lesson lesson, bool groupsNotEqual)
 {
     return (groupsNotEqual ? lesson.TeacherForDiscipline.Discipline.StudentGroup.Name + Environment.NewLine : "") +
         lesson.TeacherForDiscipline.Discipline.Name + Environment.NewLine +
         lesson.TeacherForDiscipline.Teacher.FIO + Environment.NewLine +
         lesson.Auditorium.Name;
 }
Ejemplo n.º 3
0
 public MySQLLesson(Lesson lesson)
 {
     LessonId = lesson.LessonId;
     IsActive = lesson.IsActive ? 1 : 0;
     TeacherForDisciplineId = lesson.TeacherForDiscipline.TeacherForDisciplineId;
     CalendarId = lesson.Calendar.CalendarId;
     RingId = lesson.Ring.RingId;
     AuditoriumId = lesson.Auditorium.AuditoriumId;
 }
 public LessonViewAtLessonListByTeacher(Lesson l)
 {
     LessonId = l.LessonId;
     DisciplineName = l.TeacherForDiscipline.Discipline.Name;
     GroupName = l.TeacherForDiscipline.Discipline.StudentGroup.Name;
     CalendarDate = l.Calendar.Date.ToString("dd.MM.yyyy");
     RingTime = l.Ring.Time.ToString("H:mm");
     AuditoriumName = l.Auditorium.Name;
 }
 public DailyScheduleGroupLessonView(Lesson l, int groupId)
 {
     LessonId = l.LessonId;
     Ring = l.Ring.Time.ToString("H:mm");
     if (l.TeacherForDiscipline.Discipline.StudentGroup.StudentGroupId != groupId)
     {
         LessonSummary = l.TeacherForDiscipline.Discipline.StudentGroup.Name + "\n";
     }
     LessonSummary += l.TeacherForDiscipline.Discipline.Name + "\n";
     LessonSummary += l.TeacherForDiscipline.Teacher.FIO + "\n";
     LessonSummary += l.Auditorium.Name;
 }
Ejemplo n.º 6
0
        private void Execute_Click(object sender, EventArgs e)
        {
            if (teacherForDisciplineBox.SelectedValue == null)
            {
                MessageBox.Show("Неправильно выбран TFD.");
                return;
            }

            var weekList = CommonFunctions.WeeksStringToList(lessonWeeks.Text);

            var tfd = _repo.TeacherForDisciplines.GetTeacherForDiscipline((int)teacherForDisciplineBox.SelectedValue);
            var disc = tfd.Discipline;
            var studentGroup = disc.StudentGroup;
            var sigFromGroup = _repo.StudentsInGroups.GetFiltredStudentsInGroups(sig => sig.StudentGroup.StudentGroupId == studentGroup.StudentGroupId && !sig.Student.Expelled);
            var studentIdsInGroup = sigFromGroup.Select(studentsInGroupse => studentsInGroupse.Student.StudentId).ToList();
            var studentGroupsIds = _repo.StudentsInGroups.GetFiltredStudentsInGroups(sig => studentIdsInGroup.Contains(sig.Student.StudentId)).Select(sing => sing.StudentGroup.StudentGroupId).Distinct();

            var rings = (
                    from object ringView in ringsListBox.SelectedItems
                    select _repo.Rings.GetRing(((RingView) ringView).RingId))
                .ToList();
            var ringIds = rings.Select(r => r.RingId).ToList();

            var calendarsList = (
                    from week in weekList
                    select _repo.CommonFunctions.GetDateFromDowAndWeek((int)DayOfWeekListBox.SelectedValue, week)
                    into date
                    select _repo.Calendars.FindCalendar(date)
                    into calendar
                    where calendar != null
                    select calendar)
                .ToList();

            var calendarIdsList = calendarsList.Select(c => c.CalendarId).ToList();

            // Есть уроки в это время
            var groupsLessons = _repo
                .Lessons
                .GetFiltredLessons(
                    l => studentGroupsIds.Contains(l.TeacherForDiscipline.Discipline.StudentGroup.StudentGroupId) &&
                         calendarIdsList.Contains(l.Calendar.CalendarId) &&
                         ringIds.Contains(l.Ring.RingId) &&
                         (l.State == 1));

            if (groupsLessons.Count != 0)
            {
                var outOfMind = MessageBox.Show("У студентов группы есть занятия. Всё равно добавить?", "ЕГГОГ", MessageBoxButtons.YesNo);
                if (outOfMind == DialogResult.No)
                {
                    return;
                }
            }
            // Есть уроки в это время

            // Есть практика/каникулы и т.п. в это время
            var periods =
                _repo.CustomStudentGroupAttributes.GetFiltredCustomStudentGroupAttributes(
                    csga => studentGroupsIds.Contains(csga.StudentGroup.StudentGroupId) && csga.Value.EndsWith("+"));

            var lessonsPeriods = new List<CustomStudentGroupAttribute>();

            foreach (var period in periods)
            {
                var startDate = DateTime.ParseExact(period.Value.Split('@')[1], "dd.MM.yyyy",
                    CultureInfo.InvariantCulture);

                var endDate = DateTime.ParseExact(period.Value.Split('@')[2], "dd.MM.yyyy",
                    CultureInfo.InvariantCulture);

                foreach (var calendar in calendarsList)
                {
                    if ((calendar.Date.Date >= startDate.Date) && (calendar.Date.Date <= endDate.Date))
                    {
                        lessonsPeriods.Add(period);
                    }
                }

            }

            if (lessonsPeriods.Count != 0)
            {
                var outOfMind = MessageBox.Show("У студентов группы есть периоды без занятий в это время. Всё равно добавить?", "ЕГГОГ", MessageBoxButtons.YesNo);
                if (outOfMind == DialogResult.No)
                {
                    return;
                }
            }

            // Есть практика/каникулы и т.п. в это время

            var audWeekList = Utilities.GetAudWeeksList(auditoriums.Text);

            foreach (int week in weekList)
            {
                foreach (var ring in rings)
                {
                    var lesson = new Lesson
                    {
                        State = ProposedLesson.Checked ? 2 : (isActive.Checked ? 1 : 0),
                        TeacherForDiscipline = tfd,
                        Ring = ring
                    };

                    var date = _repo.CommonFunctions.GetDateFromDowAndWeek((int)DayOfWeekListBox.SelectedValue, week);
                    var calendar = _repo.Calendars.FindCalendar(date) ?? new Calendar(date);
                    lesson.Calendar = calendar;

                    // Auditorium
                    Auditorium aud;
                    if (audList.SelectedIndex != -1)
                    {
                        aud = _repo.Auditoriums.Get((int)audList.SelectedValue);
                    }
                    else
                    {
                        if (audWeekList.Keys.Count == 1)
                        {
                            var lessonAud = audWeekList[0];
                            audWeekList.Clear();
                            foreach (var localWeek in weekList)
                            {
                                audWeekList.Add(localWeek, lessonAud);
                            }
                        }

                        aud = _repo.Auditoriums.Find(audWeekList[week]);
                        if (aud == null)
                        {
                            var firstBuilding = _repo.Buildings.GetFirstFiltredBuilding(b => true);

                            if (firstBuilding != null)
                            {
                                _repo.Auditoriums.Add(new Auditorium(audWeekList[week], firstBuilding));
                                aud = _repo.Auditoriums.Find(audWeekList[week]);
                            }
                        }
                    }
                    lesson.Auditorium = aud;

                    // State
                    if (ProposedLesson.Checked)
                    {
                        lesson.State = 2;
                    }

                    _repo.Lessons.AddLesson(lesson, publicComment.Text, hiddenComment.Text);
                }
            }

            Close();
        }
Ejemplo n.º 7
0
        private void Execute_Click(object sender, EventArgs e)
        {
            if (teacherForDisciplineBox.SelectedValue == null)
            {
                MessageBox.Show("Неправильно выбран TFD.");
                return;
            }

            var weekList = ScheduleRepository.WeeksStringToList(lessonWeeks.Text);

            var tfd = _repo.GetTeacherForDiscipline((int)teacherForDisciplineBox.SelectedValue);
            var disc = tfd.Discipline;
            var studentGroup = disc.StudentGroup;
            var sigFromGroup = _repo.GetFiltredStudentsInGroups(sing => sing.StudentGroup.StudentGroupId == studentGroup.StudentGroupId);
            var studentIdsInGroup = sigFromGroup.Select(studentsInGroupse => studentsInGroupse.Student.StudentId).ToList();
            var studentGroupsIds = _repo.GetFiltredStudentsInGroups(sig => studentIdsInGroup.Contains(sig.Student.StudentId)).Select(sing => sing.StudentGroup.StudentGroupId).Distinct();

            var ring = _repo.GetRing((int)ringsBox.SelectedValue);

            var calendarIdsList = new List<int>();
            for (int i = 0; i < weekList.Count; i++)
            {
                var date = _repo.GetDateFromDowAndWeek((int)dayOfWeekBox.SelectedValue, weekList[i]);
                var calendar = _repo.FindCalendar(date);
                if (calendar != null)
                {
                    calendarIdsList.Add(calendar.CalendarId);
                }
            }
            var groupsLessons = _repo
                .GetFiltredLessons(
                    l => studentGroupsIds.Contains(l.TeacherForDiscipline.Discipline.StudentGroup.StudentGroupId) &&
                         calendarIdsList.Contains(l.Calendar.CalendarId) &&
                         l.Ring.RingId == ring.RingId &&
                         l.IsActive);

            if (groupsLessons.Count != 0)
            {
                MessageBox.Show("У студентов группы есть занятия.");
                return;
            }

            Dictionary<int, string> audWeekList = new Dictionary<int,string>();
            audWeekList = Utilities.GetAudWeeksList(auditoriums.Text);

            for (int i = 0; i < weekList.Count; i++)
            {
                var lesson = new Lesson();

                lesson.IsActive = isActive.Checked;
                lesson.TeacherForDiscipline = tfd;
                lesson.Ring = _repo.GetRing((int)ringsBox.SelectedValue);

                var date = _repo.GetDateFromDowAndWeek((int)dayOfWeekBox.SelectedValue, weekList[i]);
                var calendar = _repo.FindCalendar(date);
                if (calendar == null)
                {
                    calendar = new Calendar(date);
                }
                lesson.Calendar = calendar;

                // Auditorium
                Auditorium aud;
                if (audList.SelectedIndex != -1)
                {
                    aud = _repo.GetAuditorium((int)audList.SelectedValue);
                }
                else
                {
                    if (audWeekList.Keys.Count == 1)
                    {
                        var lessonAud = audWeekList[0];
                        audWeekList.Clear();
                        foreach (var week in weekList)
                        {
                            audWeekList.Add(week, lessonAud);
                        }
                    }

                    aud = _repo.FindAuditorium(audWeekList[weekList[i]]);
                    if (aud == null)
                    {
                        _repo.AddAuditorium(new Auditorium(audWeekList[weekList[i]]));
                        aud = _repo.FindAuditorium(audWeekList[weekList[i]]);
                    }
                }
                lesson.Auditorium = aud;

                _repo.AddLesson(lesson, publicComment.Text, hiddenComment.Text);
            }

            this.Close();
        }
Ejemplo n.º 8
0
        private void CopyINOGroupLessonsFromRealSchedule()
        {
            _repo.ConnectionString = "data source=tcp:127.0.0.1,1433; Database=ScheduleDB;User ID = "+
                    ";User ID = " + Schedule.Properties.Settings.Default.DBUserName +
                    ";Password = "******"-") && tfd.Discipline.AuditoriumHours != 0)
                .Select(tfd => tfd.Discipline.Name)
                .OrderBy(a => a)
                .ToList();

            var result = new Dictionary<string, List<Lesson>>();

            foreach (var tfd in _repo.GetAllTeacherForDiscipline())
            {
                if (tfd.Discipline.StudentGroup.Name.Contains("-") && tfd.Discipline.AuditoriumHours != 0)
                {
                    var tfdLessons = _repo.GetFiltredLessons(l =>
                        l.IsActive &&
                        l.TeacherForDiscipline.TeacherForDisciplineId == tfd.TeacherForDisciplineId);

                    if (!result.ContainsKey(tfd.Discipline.StudentGroup.Name))
                    {
                        result.Add(tfd.Discipline.StudentGroup.Name, tfdLessons);
                    }
                }

            }

            _repo.ConnectionString = "data source=tcp:127.0.0.1,1433; Database=S-13-14-2;User ID = " +
                    ";User ID = " + Schedule.Properties.Settings.Default.DBUserName +
                    ";Password = " + Schedule.Properties.Settings.Default.DBPassword;

            var newLessonsList = new List<Lesson>();

            foreach (var kvp in result)
            {
                var tefd = _repo.GetFirstFiltredTeacherForDiscipline(tfd => tfd.Discipline.StudentGroup.Name == kvp.Key);
                if (tefd != null)
                {
                    foreach (var lesson in kvp.Value)
                    {
                        var calendar = _repo.GetFirstFiltredCalendar(c => c.Date.Date == lesson.Calendar.Date.Date);
                        var ring = _repo.GetFirstFiltredRing(r => r.Time.TimeOfDay == lesson.Ring.Time.TimeOfDay);
                        var auditorium = _repo.GetFirstFiltredAuditoriums(a => a.Name == lesson.Auditorium.Name);

                        if ((calendar == null) || (ring == null) || (auditorium == null))
                        {
                            throw new Exception();
                        }

                        var newLesson = new Lesson() { Auditorium = auditorium, Ring = ring, Calendar = calendar, IsActive = true, TeacherForDiscipline = tefd };

                        newLessonsList.Add(newLesson);
                    }
                }
            }

            foreach (var l in newLessonsList)
            {
                _repo.AddLesson(l);
            }
        }
Ejemplo n.º 9
0
        private void SaveChangesClick(object sender, EventArgs e)
        {
            var oldWeeks = _curLessons[_curLessons.Keys.ElementAt(_curTfdIndex)].Item2.Select(l => _repo.CommonFunctions.CalculateWeekNumber(l.Calendar.Date)).ToList();
            var newWeeks = CommonFunctions.WeeksStringToList(lessonWeeks.Text);

            var oldAuds = _curLessons[_curLessons.Keys.ElementAt(_curTfdIndex)].Item2.ToDictionary(
                l => _repo.CommonFunctions.CalculateWeekNumber(l.Calendar.Date),
                l => l.Auditorium.Name);
            var newAuds = Utilities.GetAudWeeksList(auditoriums.Text);
            var singleNewAud = newAuds.FirstOrDefault(a => a.Key == 0);
            if (singleNewAud.Value != null)
            {
                newAuds.Clear();
                foreach (var week in newWeeks)
                {
                    newAuds.Add(week, singleNewAud.Value);
                }
            }

            var keys = oldAuds.Keys.ToList();
            foreach (var audKey in keys)
            {
                if (newAuds.ContainsKey(audKey) && (oldAuds[audKey] == newAuds[audKey]))
                {
                    oldAuds[audKey] = "-1";
                    oldWeeks.Remove(audKey);
                    newWeeks.Remove(audKey);
                    newAuds.Remove(audKey);
                }

                if (newAuds.ContainsKey(audKey) && (oldAuds[audKey] != newAuds[audKey]))
                {

                    var oldLesson = _curLessons[_curLessons.Keys.ElementAt(_curTfdIndex)].Item2
                        .FirstOrDefault(l => audKey == _repo.CommonFunctions.CalculateWeekNumber(l.Calendar.Date));

                    var weekNumber = -1;
                    if (oldLesson != null)
                    {
                        weekNumber = _repo.CommonFunctions.CalculateWeekNumber(_repo.Lessons.GetLesson(oldLesson.LessonId).Calendar.Date);
                        _repo.Lessons.RemoveLessonActiveStateWoLog(oldLesson.LessonId);
                    }

                    var newLesson = new Lesson
                    {
                        TeacherForDiscipline = _repo.TeacherForDisciplines.GetTeacherForDiscipline(int.Parse(_curLessons.Keys.ElementAt(_curTfdIndex).Split('+')[0])),
                        Ring = _ring,
                        Auditorium = _repo.Auditoriums.Find(newAuds[weekNumber]),
                        State = 1
                    };

                    // lesson.Calendar
                    var date = _repo.CommonFunctions.GetDateFromDowAndWeek(_dow, weekNumber);
                    var calendar = _repo.Calendars.FindCalendar(date) ?? new Calendar(date);
                    newLesson.Calendar = calendar;

                    _repo.Lessons.AddLessonWoLog(newLesson);

                    _repo.LessonLogEvents.AddLessonLogEvent(new LessonLogEvent
                                                {
                                                    DateTime = DateTime.Now,
                                                    OldLesson = oldLesson,
                                                    NewLesson = newLesson,
                                                    PublicComment = "",
                                                    HiddenComment = ""
                                                });

                    oldAuds[audKey] = "-1";
                    oldWeeks.Remove(audKey);
                    newWeeks.Remove(audKey);
                    newAuds.Remove(audKey);
                }
            }

            var idsToRemove = oldAuds.Where(a => a.Value == "-1").Select(a => a.Key).ToList();
            foreach (var audId in idsToRemove)
            {
                oldAuds.Remove(audId);
            }

            var oldLessonsIdToDelete = _curLessons[_curLessons.Keys.ElementAt(_curTfdIndex)].Item2
                .Where(l => oldWeeks.Contains(_repo.CommonFunctions.CalculateWeekNumber(l.Calendar.Date)))
                .Select(l => l.LessonId);
            foreach (var lessonId in oldLessonsIdToDelete)
            {
                _repo.Lessons.RemoveLesson(lessonId);
            }

            var curTfd = _repo.TeacherForDisciplines.GetTeacherForDiscipline(int.Parse(_curLessons.Keys.ElementAt(_curTfdIndex).Split('+')[0]));
            foreach (var week in newWeeks)
            {
                var lesson = new Lesson {
                    TeacherForDiscipline = curTfd,
                    Ring = _ring,
                    Auditorium = _repo.Auditoriums.Find(newAuds[week]),
                    State = 1
                };

                // lesson.Calendar
                var date = _repo.CommonFunctions.GetDateFromDowAndWeek(_dow, week);
                var calendar = _repo.Calendars.FindCalendar(date) ?? new Calendar(date);
                lesson.Calendar = calendar;

                _repo.Lessons.AddLesson(lesson);
            }

            Close();
        }
        public Lesson AddLessonWOLog(Lesson lesson)
        {
            using (var context = new ScheduleContext(ConnectionString))
            {
                lesson.LessonId = 0;

                lesson.TeacherForDiscipline = context.TeacherForDiscipline.FirstOrDefault(tfd => tfd.TeacherForDisciplineId == lesson.TeacherForDiscipline.TeacherForDisciplineId);
                lesson.Calendar = context.Calendars.FirstOrDefault(c => c.CalendarId == lesson.Calendar.CalendarId);
                lesson.Ring = context.Rings.FirstOrDefault(r => r.RingId == lesson.Ring.RingId);
                lesson.Auditorium = context.Auditoriums.FirstOrDefault(a => a.AuditoriumId == lesson.Auditorium.AuditoriumId);

                context.Lessons.Add(lesson);

                context.SaveChanges();

                return lesson;
            }
        }
        public Lesson AddLesson(Lesson lesson, string publicComment = "", string hiddenComment = "")
        {
            using (var context = new ScheduleContext(ConnectionString))
            {
                lesson.LessonId = 0;

                lesson.TeacherForDiscipline = context.TeacherForDiscipline.FirstOrDefault(tfd => tfd.TeacherForDisciplineId == lesson.TeacherForDiscipline.TeacherForDisciplineId);
                lesson.Calendar = context.Calendars.FirstOrDefault(c => c.CalendarId == lesson.Calendar.CalendarId);
                lesson.Ring = context.Rings.FirstOrDefault(r => r.RingId == lesson.Ring.RingId);
                lesson.Auditorium = context.Auditoriums.FirstOrDefault(a => a.AuditoriumId == lesson.Auditorium.AuditoriumId);

                context.Lessons.Add(lesson);

                context.LessonLog.Add(
                    new LessonLogEvent
                    {
                        OldLesson = null,
                        NewLesson = lesson,
                        DateTime = DateTime.Now,
                        PublicComment = publicComment,
                        HiddenComment = hiddenComment
                    }
                );
                context.SaveChanges();

                return lesson;
            }
        }
        public void UpdateLesson(Lesson lesson)
        {
            using (var context = new ScheduleContext(ConnectionString))
            {
                var curLesson = context.Lessons.FirstOrDefault(l => l.LessonId == lesson.LessonId);

                curLesson.Auditorium = lesson.Auditorium;
                curLesson.Calendar = lesson.Calendar;
                curLesson.IsActive = lesson.IsActive;
                curLesson.Ring = lesson.Ring;
                curLesson.TeacherForDiscipline = lesson.TeacherForDiscipline;

                context.SaveChanges();
            }
        }
Ejemplo n.º 13
0
 public ScheduleNote(Lesson lesson, string text)
 {
     Lesson = lesson;
     Text = text;
 }
Ejemplo n.º 14
0
 private string LessonToString(Lesson lesson)
 {
     return lesson.TeacherForDiscipline.Discipline.StudentGroup.Name + Environment.NewLine +
         lesson.TeacherForDiscipline.Discipline.Name + Environment.NewLine +
         lesson.TeacherForDiscipline.Teacher.FIO;
 }