Ejemplo n.º 1
0
        private void getDataAndCompareWithOld(bool msgBoxWhenFinished = false)
        {
            Dispatcher.Invoke(() =>
            {
                labelNumOfChangesValue.Content = 0;
                treeView.Items.Clear();
            });

            string rssFeedUrl = Properties.Settings.Default.FEEDURL;

            if (rssFeedUrl == "")
            {
                MessageBox.Show("Invalid Feed URL", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            using (var client = new WebClient())
            {
                client.Encoding = Encoding.UTF8;

                IWebProxy defaultProxy = WebRequest.DefaultWebProxy;
                if (defaultProxy != null)
                {
                    defaultProxy.Credentials = CredentialCache.DefaultCredentials;
                    client.Proxy             = defaultProxy;
                }

                client.UseDefaultCredentials = false;
                client.Credentials           = new NetworkCredential(Properties.Settings.Default.USERNAME,
                                                                     Properties.Settings.Default.PASSWORD);
                List <ILIASCourse> newCourseList = new List <ILIASCourse>();
                try
                {
                    string result = client.DownloadString(rssFeedUrl);

                    File.WriteAllText(OLD_DATA_FILE_NAME, result);
                    XDocument doc = XDocument.Parse(result);
                    newCourseList = XDocToILIASCourseList(doc);
                }
                catch (WebException ex)
                {
                    string msg = ex.Message.ToLower();
                    // ex.Message -> ...Remoteserver/Remotename... = no internet
                    if ((!Regex.IsMatch(msg, ".*(remoteserver|remotename).*") && !msg.Contains("timeout")) ||
                        msg.Contains("(401)"))   // 401 => not authorized
                    {
                        Dispatcher.Invoke(() =>
                        {
                            MessageBox.Show("Feed URL / Username / Passwort falsch?\n\n" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        });
                    }
                    return;
                }
                catch (Exception ex)
                {
                    Dispatcher.Invoke(() =>
                    {
                        MessageBox.Show("Feed URL / Username / Passwort falsch?\n\n" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    });
                    return;
                }

                List <ILIASCourse> newChangeList = CompareCourseLists(oldCourseList, newCourseList);
                changeList.InsertRange(0, newChangeList);
                foreach (var course in changeList)
                {
                    var item = new TreeViewItem();
                    item.DataContext       = course;
                    item.PreviewMouseDown += OnTitleClick;
                    treeView.Items.Add(item);
                    item.Header = course.title;
                    var pubDateItem = new TreeViewItem();

                    pubDateItem.Header = course.pubDate;
                    var guidItem = new TreeViewItem();
                    guidItem.Header            = course.guid;
                    guidItem.PreviewMouseDown += OnLinkClick;
                    item.Items.Add(pubDateItem);
                    item.Items.Add(guidItem);
                }

                oldCourseList = newCourseList;
                Dispatcher.Invoke(() =>
                {
                    labelNumOfChangesValue.Content = changeList.Count.ToString();
                });
                if (newChangeList.Count > 0)
                {
                    try
                    {
                        PlaySound();
                        if (notifyIcon != null)
                        {
                            notifyIcon.ShowBalloonTip(10000, "New ILIAS stuff (" + changeList.Count + ")!");
                        }
                        Dispatcher.Invoke(() =>
                        {
                            Visibility         = Visibility.Visible;
                            this.ShowInTaskbar = true;
                        });
                    }
                    catch (Exception ex)
                    {
                        Dispatcher.Invoke(() =>
                        {
                            MessageBox.Show(ex.Message);
                        });
                        return;
                    }
                }
            }
            if (msgBoxWhenFinished)
            {
                Dispatcher.Invoke(() =>
                {
                    MessageBox.Show("Finished!", "Finished", MessageBoxButton.OK, MessageBoxImage.Information);
                });
            }
        }
Ejemplo n.º 2
0
        private void browser_LoadCompleted(object sender, NavigationEventArgs e)
        {
            var document = browser.Document as mshtml.HTMLDocument;

            switch (currentStep)
            {
            case Steps.Starting:

                var usernameElem = document.getElementById("asdf");
                usernameElem.setAttribute("value", Properties.Settings.Default.USERNAME);

                var passwordElem = document.getElementById("fdsa");
                passwordElem.setAttribute("value", Properties.Settings.Default.PASSWORD);

                document.getElementsByName("submit").item(0).click();


                currentStep = Steps.ExamAdministration;
                break;

            case Steps.ExamAdministration:
                browser.Navigate("https://www.fh-bielefeld.de/qisserver/rds?state=change&type=1&moduleParameter=studyPOSMenu&nextdir=change&next=menu.vm&subdir=applications&xml=menu&purge=y&navigationPosition=functions%2CstudyPOSMenu&breadcrumb=studyPOSMenu&topitem=functions&subitem=studyPOSMenu");
                currentStep = Steps.GradeOverview;
                break;

            case Steps.GradeOverview:
                var links = document.getElementsByTagName("a");
                foreach (HTMLAnchorElement link in links)
                {
                    if (link.innerText != null && link.innerText.Contains("Notenspiegel"))
                    {
                        link.click();
                    }
                }
                currentStep = Steps.ChooseDegree;
                break;

            case Steps.ChooseDegree:
                var    degrees       = document.getElementsByTagName("a");
                string searchPattern = "MA";
                if (!Properties.Settings.Default.GET_MASTER)
                {
                    searchPattern = "BA";
                }
                foreach (HTMLAnchorElement degree in degrees)
                {
                    if (degree.title != null && degree.title.Contains("Leistungen für Abschluss " + searchPattern))
                    {
                        degree.click();
                    }
                }
                currentStep = Steps.ExamAdmin2;
                break;

            case Steps.ExamAdmin2:

                GetModulesMain();     // Main grades

                // exam administration
                browser.Navigate("https://www.fh-bielefeld.de/qisserver/rds?state=change&type=1&moduleParameter=studyPOSMenu&nextdir=change&next=menu.vm&subdir=applications&xml=menu&purge=y&navigationPosition=functions%2CstudyPOSMenu&breadcrumb=studyPOSMenu&topitem=functions&subitem=studyPOSMenu");

                if (Properties.Settings.Default.GET_MASTER)
                {
                    currentStep = Steps.ExternalGrades;
                }
                else
                {
                    currentStep = Steps.Done;
                }


                break;

            case Steps.ExternalGrades:

                var links2 = document.getElementsByTagName("a");
                foreach (HTMLAnchorElement link in links2)
                {
                    if (link.innerText != null && link.innerText.Contains("Nur Noten für erbrachte Fremdleistungen"))
                    {
                        link.click();
                    }
                }
                currentStep = Steps.ExternalGradesClick;
                break;

            case Steps.ExternalGradesClick:

                var links3 = document.getElementsByTagName("a");
                foreach (HTMLAnchorElement link in links3)
                {
                    if (link.title != null && link.title.Contains("Leistungen für Abschluss BA"))
                    {
                        link.click();
                    }
                }

                currentStep = Steps.Done;
                break;

            case Steps.Done:
                GetModulesExternal();     // Main grades

                lViewModules.Items.Refresh();

                XmlSerializer x = new System.Xml.Serialization.XmlSerializer(Modules.GetType());

                using (var fs = new FileStream(filePath, FileMode.Create))
                {
                    x.Serialize(fs, Modules);
                }


                // Remove old

                foreach (Module module in Modules)
                {
                    bool foundModule = false;
                    foreach (Module oldModule in OldModules)
                    {
                        if (module.Name == oldModule.Name)
                        {
                            foundModule = true;
                        }
                    }

                    if (!foundModule)
                    {
                        lViewModules.Items.Add(module);
                    }
                }
                progressBar.IsIndeterminate = false;
                if (lViewModules.Items.Count > 0)
                {
                    if (notifyIcon != null)
                    {
                        notifyIcon.ShowBalloonTip(10000, "New LSF entry!");
                        Dispatcher.Invoke(() =>
                        {
                            Visibility         = Visibility.Visible;
                            this.ShowInTaskbar = true;
                        });
                    }
                }
                break;
            }
        }