예제 #1
0
        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();
        }
예제 #2
0
파일: Wishes.cs 프로젝트: BesuglovS/UchOtd
        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);            
        }       
예제 #3
0
파일: Wishes.cs 프로젝트: BesuglovS/UchOtd
        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;
                }
                
            }
        }
예제 #4
0
파일: Wishes.cs 프로젝트: BesuglovS/UchOtd
        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);
                }
            }  
        }
예제 #5
0
파일: Wishes.cs 프로젝트: BesuglovS/UchOtd
        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);
                }
            }            
        }