private void OK_Click(object sender, EventArgs e) { var teacherRingIds = _repo .CustomTeacherAttributes .GetFiltredCustomTeacherAttributes(cta => (cta.Teacher.TeacherId == _teacher.TeacherId) && (cta.Key == "TeacherRing")) .Select(cta => int.Parse(cta.Value)) .ToList(); for (int i = 0; i < RingsList.Items.Count; i++) { bool selected = RingsList.GetSelected(i); int ringId = ((List<RingView>)RingsList.DataSource)[i].RingId; var ring = _repo.Rings.GetRing(ringId); if (selected && !teacherRingIds.Contains(ringId)) { Wishes.NeedsUpdateAfterChoosingRings = true; var newTeacherRingAttribute = new CustomTeacherAttribute(_teacher, "TeacherRing", ringId.ToString(CultureInfo.InvariantCulture)); _repo.CustomTeacherAttributes.AddCustomTeacherAttribute(newTeacherRingAttribute); var newTeacherWishList = new List<TeacherWish>(); newTeacherWishList.AddRange( _repo.Calendars.GetAllCalendars() .Select(calendar => new TeacherWish(_teacher, calendar, ring, 0))); _repo.TeacherWishes.AddTeacherWishRange(newTeacherWishList); } if (!selected && teacherRingIds.Contains(ringId)) { Wishes.NeedsUpdateAfterChoosingRings = true; var teacherRingAttribute = _repo .CustomTeacherAttributes .GetFirstFiltredCustomTeacherAttribute( cta => cta.Teacher.TeacherId == _teacher.TeacherId && cta.Key == "TeacherRing" && cta.Value == ringId.ToString(CultureInfo.InvariantCulture)); _repo.CustomTeacherAttributes.RemoveCustomTeacherAttribute(teacherRingAttribute.CustomTeacherAttributeId); var teacherWishes = _repo .TeacherWishes .GetFiltredTeacherWishes(tw => tw.Teacher.TeacherId == _teacher.TeacherId && tw.Ring.RingId == ringId); foreach (var wish in teacherWishes) { _repo.TeacherWishes.RemoveTeacherWish(wish.TeacherWishId); } } } Close(); }
private void FillAllWishesAsEmpty_Click(object sender, EventArgs e) { if (_tokenSource != null) { _tokenSource.Cancel(); } _cToken = _tokenSource.Token; Task.Factory.StartNew(() => { progress.BeginInvoke(new Action(() => progress.Text = "Удаление")); var wishIds = _repo.TeacherWishes.GetAllTeacherWishes().Select(tw => tw.TeacherWishId).ToList(); var wishCount = wishIds.Count; for (int i = 0; i < wishIds.Count; i++) { _repo.TeacherWishes.RemoveTeacherWish(wishIds[i]); if (i % 500 == 0) { int counter = i; progress.BeginInvoke(new Action(() => progress.Text = "Удаление - " + counter + " / " + wishCount)); } } progress.BeginInvoke(new Action(() => progress.Text = "Удаление звонков преподавателей")); foreach (var ring in _repo.CustomTeacherAttributes.GetFiltredCustomTeacherAttributes(attr => attr.Key == "TeacherRing")) { _repo.CustomTeacherAttributes.RemoveCustomTeacherAttribute(ring.CustomTeacherAttributeId); } var standard80RingsStrings = new List<string> {"8:00", "9:25", "11:05", "12:35", "14:00", "15:40", "17:05", "18:35"}; var rings = _repo.Rings.GetFiltredRings(r => standard80RingsStrings.Contains(r.Time.ToString("H:mm"))).ToList(); var teachers = _repo.Teachers.GetAllTeachers().OrderBy(t => t.FIO).ToList(); var teachersCount = teachers.Count; for (int i = 0; i < teachersCount; i++) { var teacher = teachers[i]; int counter = i; progress.BeginInvoke(new Action(() => progress.Text = teacher.FIO + " " + counter + " / " + teachersCount + " = " + (counter / teachersCount).ToString("F2"))); foreach (var ring in rings) { var newRing = new CustomTeacherAttribute(teacher, "TeacherRing", ring.RingId.ToString(CultureInfo.InvariantCulture)); _repo.CustomTeacherAttributes.AddCustomTeacherAttribute(newRing); } foreach (var calendar in _repo.Calendars.GetAllCalendars().OrderBy(c => c.Date.Date)) { foreach (var ring in rings) { var newWish = new TeacherWish(teacher, calendar, ring, 0); _repo.TeacherWishes.AddTeacherWish(newWish); } } } progress.BeginInvoke(new Action(() => progress.Text = "")); }, _cToken); }
private void RingsList_SelectedIndexChanged(object sender, EventArgs e) { if (_listBoxInitialization) { return; } var teacher = ((List<Teacher>)teacherList.DataSource)[teacherList.SelectedIndex]; var teacherRingIds = _repo .CustomTeacherAttributes .GetFiltredCustomTeacherAttributes(cta => cta.Teacher.TeacherId == teacher.TeacherId && cta.Key == "TeacherRing") .Select(cta => int.Parse(cta.Value)) .ToList(); for (int i = 0; i < RingsList.Items.Count; i++) { bool selected = RingsList.GetSelected(i); int ringId = ((List<RingView>)RingsList.DataSource)[i].RingId; var ring = _repo.Rings.GetRing(ringId); if (selected && !teacherRingIds.Contains(ringId)) { var newTeacherRingAttribute = new CustomTeacherAttribute(teacher, "TeacherRing", ringId.ToString(CultureInfo.InvariantCulture)); _repo.CustomTeacherAttributes.AddCustomTeacherAttribute(newTeacherRingAttribute); var newTeacherWishList = new List<TeacherWish>(); for (int dow = 1; dow <= 7; dow++) { newTeacherWishList.AddRange( _repo.Calendars.GetDowCalendars(dow) .Select(calendar => new TeacherWish(teacher, calendar, ring, 0))); } _repo.TeacherWishes.AddTeacherWishRange(newTeacherWishList); var cToken = _tokenSource.Token; Task.Run(new Action(() => RefreshWishes(teacher, cToken))); break; } if (!selected && teacherRingIds.Contains(ringId)) { var teacherRingAttribute = _repo .CustomTeacherAttributes .GetFirstFiltredCustomTeacherAttribute(cta => cta.Teacher.TeacherId == teacher.TeacherId && cta.Key == "TeacherRing" && cta.Value == ringId.ToString(CultureInfo.InvariantCulture)); _repo.CustomTeacherAttributes.RemoveCustomTeacherAttribute(teacherRingAttribute.CustomTeacherAttributeId); var teacherWishes = _repo .TeacherWishes .GetFiltredTeacherWishes(tw => tw.Teacher.TeacherId == teacher.TeacherId && tw.Ring.RingId == ringId); foreach (var wish in teacherWishes) { _repo.TeacherWishes.RemoveTeacherWish(wish.TeacherWishId); } var cToken = _tokenSource.Token; Task.Run(new Action(() => RefreshWishes(teacher, cToken))); break; } } }
private void FitAllLessonsInXDays_CheckStateChanged(object sender, EventArgs e) { var teacher = ((List<Teacher>)teacherList.DataSource)[teacherList.SelectedIndex]; if (FitAllLessonsInXDays.Checked) { int fitAllLessonsDaysInt; if (int.TryParse(FitAllLessonsDaysCount.Text, out fitAllLessonsDaysInt)) { var wish = new CustomTeacherAttribute(teacher, "FitAllLessonsDaysCount", fitAllLessonsDaysInt.ToString(CultureInfo.InvariantCulture)); _repo.CustomTeacherAttributes.AddOrUpdateCustomTeacherAttribute(wish); } else { MessageBox.Show(windowsPossibleSize.Text, "Неправильный формат лимита."); } } else { var wish = _repo.CustomTeacherAttributes.GetCustomTeacherAttribute(teacher, "FitAllLessonsDaysCount"); if (wish != null) { _repo.CustomTeacherAttributes.RemoveCustomTeacherAttribute(wish.CustomTeacherAttributeId); } } }
private void windowsPossible_CheckStateChanged(object sender, EventArgs e) { var teacher = ((List<Teacher>)teacherList.DataSource)[teacherList.SelectedIndex]; if (windowsPossible.Checked) { int windowSize; if (int.TryParse(windowsPossibleSize.Text, out windowSize)) { var wish = new CustomTeacherAttribute(teacher, "WindowsPossible", windowSize.ToString(CultureInfo.InvariantCulture)); _repo.CustomTeacherAttributes.AddOrUpdateCustomTeacherAttribute(wish); } else { MessageBox.Show(windowsPossibleSize.Text, "Неправильный формат числа недель."); } } else { var wish = _repo.CustomTeacherAttributes.GetCustomTeacherAttribute(teacher, "WindowsPossible"); if (wish != null) { _repo.CustomTeacherAttributes.RemoveCustomTeacherAttribute(wish.CustomTeacherAttributeId); } } }