Пример #1
0
        /*
         * Dette er bare en statisk variabel så fagsiden alltid viser et resultat
         */

        protected void Page_Load(object sender, EventArgs e)
        {
            /*
             * Under henter vi ut en string query. Denne inneholder
             * fagkoden siden skal vise. Denne kommer enten fra søk eller en lenke.
             * Denne blir formatert ved hjelp av formaterQueryString metoden deretter
             * brukes den i en SQL spørring mot databasen.
             */

            String uformatertQueryString = Request.Url.Query;
            String formatertQueryString  = FormaterQueryString.FormaterString(uformatertQueryString);


            if (formatertQueryString != "" || formatertQueryString == null)
            {
                sidensFagkode = formatertQueryString;
            }

            int foreleserId; //Denne trenger vi for å få informasjon om foreleser

            String query = "SELECT f.*, s.fakultet FROM f*g as f, studier as s  WHERE f.fagkode = @SidensFagkode AND f.studieretning = s.studieretning";
            var    cmd   = db.SqlCommand(query);

            cmd.Parameters.AddWithValue("@SidensFagkode", sidensFagkode);


            db.OpenConnection();
            MySqlDataReader leser = cmd.ExecuteReader();

            if (!leser.HasRows)
            {
                //Hvis fagkoden ikke inneholder informasjon eller er feil sender serveren deg til default.aspx
                Server.Transfer("Default.aspx");
            }
            leser.Read();

            /*
             * Her blir databaseresultatet skrevet rett inn i labels,
             * noen av labels inneholder htmlformatering, dette er for å gjøre de
             * til linker så man lettere kan navigere siden.
             * ForeleserId blir castet til int fordi den brukes til en sql
             * spørring lenger nede
             */

            foreleserId           = (int)leser[2];
            fagkodeLbl.Text       = "Fagkode: " + leser[0].ToString();
            fagnavnLbl.Text       = "Fagnavn: " + leser[1].ToString();
            studieretningLbl.Text = "Studieretning: <a href = 'linjeside.aspx?" + leser[3].ToString() + "'>" + leser[3].ToString() + "</a>";
            String forkurs = leser[4].ToString();

            fakultetLbl.Text = "Fakultet: <a href = 'fakultet.aspx?" + leser[5].ToString() + "'>" + leser[5].ToString() + "</a>";

            //Her sjekkes det om forkurs finnes, og skriver ut et forkurs label hvis det eksisterer
            if (forkurs != "")
            {
                forkursLbl.Text = "Forkurs: <a href = 'fagside.aspx?" + forkurs + "'>" + forkurs + "</a>";
            }
            else
            {
                forkursLbl.Text = "";
            }
            leser.Close();
            db.CloseConnection();

            query = "SELECT fornavn, etternavn FROM foreleser WHERE foreleserid = @ForeleserId";
            cmd   = db.SqlCommand(query);
            cmd.Parameters.AddWithValue("@ForeleserId", foreleserId);

            db.OpenConnection();
            leser = cmd.ExecuteReader();
            leser.Read();

            //Setter sammen fornavn og etternavn fra databasen
            String foreleserNavn = leser[0].ToString() + " " + leser[1].ToString();

            leser.Close();
            db.CloseConnection();
            foreleserLbl.Text = "Foreleser: <a href = 'foreleserside.aspx?" + foreleserNavn + "'>" + foreleserNavn + "</a>";


            /*
             * Under bruker vi en metode for å kalle på database prosedyrene våre
             * de blir deretter lagt inn i et int array
             */

            int[] prosedyreSvarSpm1 = ProsedyreKaller("hent_spm1_verdier", sidensFagkode, 1);
            int[] prosedyreSvarSpm2 = ProsedyreKaller("hent_spm2_verdier", sidensFagkode, 2);
            int[] prosedyreSvarSpm3 = ProsedyreKaller("hent_spm3_verdier", sidensFagkode, 3);
            int[] prosedyreSvarSpm4 = ProsedyreKaller("hent_spm4_verdier", sidensFagkode, 4);
            int[] prosedyreSvarSpm5 = ProsedyreKaller("hent_spm5_verdier", sidensFagkode, 5);

            /*
             * Under sjekker vi om et eller flere av spørsmålene ikke har data
             * de uten data blir deretter skjult fra nettsiden, da de mest sannsynlig
             * ikke er valide.
             */

            int sumSpm1 = prosedyreSvarSpm1.Sum();
            int sumSpm2 = prosedyreSvarSpm2.Sum();
            int sumSpm3 = prosedyreSvarSpm3.Sum();
            int sumSpm4 = prosedyreSvarSpm4.Sum();
            int sumSpm5 = prosedyreSvarSpm5.Sum();


            /*
             * if (sumSpm1 != 0 || sumSpm2 != 0 || sumSpm3 != 0 )
             * if Setningen under fungerer på samme måte som denne.
             * istendenfor at vi sjekker en og en variabel, legger vi
             * de inn i et anonymt array som og brukes Contains metoden til array
             * klassen
             */

            if (!new int[] { sumSpm1, sumSpm2, sumSpm3, sumSpm4, sumSpm5 }.Contains(0))
            {
                /*
                 * Her kaller vi på en metode som gir oss gjennomsnittet
                 * til spørsmålene, tallene blir lagt til å spm1RatingLbl.
                 * Og for å få det vist som stjerner blir det lagt inn i
                 * spm1RatingStjerne.Value, men her må vi først bytte ut
                 * komma med punktum. Fordi i noen land bruker de punktum
                 * til å vise tall med desimaler
                 */

                String gjennomsnittSpm1 = BeregnGjennomsnittsRating(prosedyreSvarSpm1);
                String gjennomsnittSpm2 = BeregnGjennomsnittsRating(prosedyreSvarSpm2);
                String gjennomsnittSpm3 = BeregnGjennomsnittsRating(prosedyreSvarSpm3);
                String gjennomsnittSpm4 = BeregnGjennomsnittsRating(prosedyreSvarSpm4);
                String gjennomsnittSpm5 = BeregnGjennomsnittsRating(prosedyreSvarSpm5);

                spm1RatingLbl.Text = gjennomsnittSpm1;
                spm2RatingLbl.Text = gjennomsnittSpm2;
                spm3RatingLbl.Text = gjennomsnittSpm3;
                spm4RatingLbl.Text = gjennomsnittSpm4;
                spm5RatingLbl.Text = gjennomsnittSpm5;

                spm1RatingStjerne.Value = gjennomsnittSpm1.Replace(",", ".");
                spm2RatingStjerne.Value = gjennomsnittSpm2.Replace(",", ".");
                spm3RatingStjerne.Value = gjennomsnittSpm3.Replace(",", ".");
                spm4RatingStjerne.Value = gjennomsnittSpm4.Replace(",", ".");
                spm5RatingStjerne.Value = gjennomsnittSpm5.Replace(",", ".");

                //Koden under lager kakediagramet
                String diagramTittel = "Var faget vanskelig?";
                String seriesname    = "seriesName";
                diagram.Series.Clear();
                diagram.Legends.Clear();
                diagram.Series.Add(seriesname);
                diagram.Series[seriesname].ChartType = SeriesChartType.Pie;
                Title tittel = diagram.Titles.Add(diagramTittel);

                //Her forandreres skrifttypen til diagramtittelen
                tittel.Font = new System.Drawing.Font("Verdana", 16, System.Drawing.FontStyle.Bold);

                diagram.Legends.Add("Legende");
                diagram.Legends[0].Alignment   = StringAlignment.Center;
                diagram.Legends[0].BorderColor = Color.Black;

                /*
                 * #PERCENT{P0} Gjør at man får prosenter på diagramet.
                 * og points vil tilsvarer verdiene. De første parameterne
                 * som går fra 1-5 er for å gi punktene en Id så vi kan sette vår egen
                 * forklaring til dem i Legend. Under vil du se at vi vi setter vår egen
                 * tekst i legende ved å gjøre slik:
                 * diagram.Series[seriesname].Points[0].LegendText = "Svært misfornøyd";
                 */

                diagram.Series[seriesname].Label = "#PERCENT{P0}";
                diagram.Series[seriesname].Points.AddXY(0, prosedyreSvarSpm1[1]);
                diagram.Series[seriesname].Points.AddXY(1, prosedyreSvarSpm1[2]);
                diagram.Series[seriesname].Points.AddXY(2, prosedyreSvarSpm1[3]);
                diagram.Series[seriesname].Points.AddXY(3, prosedyreSvarSpm1[4]);
                diagram.Series[seriesname].Points.AddXY(4, prosedyreSvarSpm1[5]);

                //Teksten under er den som kommer opp i legend.
                diagram.Series[seriesname].Points[0].LegendText = "Svært misfornøyd";
                diagram.Series[seriesname].Points[1].LegendText = "Litt misfornøyd";
                diagram.Series[seriesname].Points[2].LegendText = "Hverken/eller";
                diagram.Series[seriesname].Points[3].LegendText = "Litt fornøyd";
                diagram.Series[seriesname].Points[4].LegendText = "Meget fornøyd";
            }
            else
            {
                /*
                 * Hvis if setningen feiler fordi en av verdiene inneholder 0,
                 * vil det si at det ikke er foretatt en fagvurdering i faget
                 * og siden vil kun vise foreleser, fagkode osv.
                 */

                pensumLbl.ForeColor = System.Drawing.Color.Red;
                pensumLbl.Text      = "Det er ikke foretatt en fagvurdering i dette faget. Prøv igjen senere.";

                //Kodesnutten under trenger vi for å skjule rateit. Uten den vil stjernene vises
                spm1Div.InnerHtml = "";
                spm2Div.InnerHtml = "";
                spm3Div.InnerHtml = "";
                spm4Div.InnerHtml = "";
                spm5Div.InnerHtml = "";

                kvalitetLbl.Text          = "";
                vanskelighetsgradLbl.Text = "";
                pensumFormidlingLbl.Text  = "";
                fagRelevantLbl.Text       = "";
            }
        }
Пример #2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //Sjekker om en bruker er logget inn
            if (Session["studentID"] == null)
            {
                Response.Redirect("Default.aspx", true);
            }

            /*
             * Under henter vi ut en string query. Denne inneholder
             * fagkoden siden skal vise. Denne kommer enten fra søk eller en lenke.
             * Denne blir formatert ved hjelp av formaterQueryString metoden deretter
             * brukes den i en SQL spørring mot databasen
             */

            String uformatertQueryString = Request.Url.Query;
            String formatertQueryString  = FormaterQueryString.FormaterString(uformatertQueryString);

            if (formatertQueryString != "" || formatertQueryString == null)
            {
                sidensFagkode = formatertQueryString;
            }
            else
            {
                Response.Redirect("velkomstside.aspx", true);
            }

            /*
             * På denne siden får vi tak i fagkoden til faget som skal vurderes
             * fra string query. Den blir sendt med nå en student trykker på
             * knappen for vurdering på MineVurderinger.aspx
             */

            String query = "SELECT spm1, spm2, spm3, spm4, spm5, spm6, spm7, spm8, spm9, spm10 FROM student as s, f*g as f, vurderingsskjema as v WHERE s.studentid = @Studentid AND v.fagkode = @Fagkode AND s.studieretning = f.studieretning AND v.fagkode = f.fagkode";

            var cmd = db.SqlCommand(query);

            cmd.Parameters.AddWithValue("@Studentid", Session["studentID"].ToString());
            cmd.Parameters.AddWithValue("@Fagkode", sidensFagkode);
            db.OpenConnection();
            MySqlDataReader leser = cmd.ExecuteReader();

            //Arrayet blir satt til 10 siden det kun er 10 spørsmål per vurderingsskjema
            String[] skjemaSpm = new String[10];
            while (leser.Read())
            {
                for (int i = 0; i < 10; i++)
                {
                    skjemaSpm[i] = leser[i].ToString();
                }
            }
            db.CloseConnection();

            /*
             * Her bruker vi foreach loop for å fylle på spørsmålsteksten til
             * labelene på asp.net siden.
             */

            Label[] spmLabel = new Label[10] {
                spm1Lbl, spm2Lbl, spm3Lbl, spm4Lbl, spm5Lbl, spm6Lbl, spm7Lbl, spm8Lbl, spm9Lbl, spm10Lbl
            };
            int spmIndex = 0;

            foreach (Label lbl in spmLabel)
            {
                lbl.Text = skjemaSpm[spmIndex];
                spmIndex++;
            }
        }
Пример #3
0
        //Setter en standard foreleserId så det alltid vil vises noe informasjon på nettsiden

        protected void Page_Load(object sender, EventArgs e)
        {
            /*
             * Under henter vi ut en string query. Denne inneholder
             * fagkoden siden skal vise. Denne kommer enten fra søk eller en lenke.
             * Denne blir formatert ved hjelp av formaterQueryString-metoden, deretter
             * brukes den i en SQL-spørring mot databasen.
             */

            String uformatertQueryString = Request.Url.Query;
            String formatertQueryString  = FormaterQueryString.FormaterString(uformatertQueryString);

            if (formatertQueryString != "" || formatertQueryString == null)
            {
                sidensForeleser = formatertQueryString;
            }

            //Henter ut navn, fagkode, fagnavn, fakultet, studieretning
            String query = "SELECT CONCAT(f.fornavn, ' ', f.etternavn) as navn, f*g.fagkode, f*g.fagnavn, f*g.studieretning, s.fakultet from foreleser as f, f*g, studier as s WHERE CONCAT(f.fornavn, ' ', f.etternavn) = @SidensForeleser AND f*g.foreleserid = f.foreleserid AND f*g.studieretning = s.studieretning";
            var    cmd   = db.SqlCommand(query);

            cmd.Parameters.AddWithValue("@SidensForeleser", sidensForeleser);

            db.OpenConnection();
            String foreleserNavn = null;


            /*
             * "using" passer på at objektet som blir definert innenfor
             * parantesene i blir "destroyed" eller tatt hånd om av
             * garbage collector så fort krøllparantesene tar slutt.
             *
             * Innenfor while løkken legger vi inn informasjonen som er
             * hentet ut fra databasen i ForeleserInfo objekter som legges
             * i en liste.
             */

            using (MySqlDataReader leser = cmd.ExecuteReader())
            {
                if (!leser.HasRows)
                {
                    //Hvis sql feilet/ugyldig parameter til siden blir man sendt til default.aspx
                    Server.Transfer("Default.aspx");
                }
                while (leser.Read())
                {
                    foreleserNavn = leser["navn"].ToString();

                    foreleserInfoListe.Add(new ForeleserInfo()
                    {
                        Fagkode       = leser["fagkode"].ToString(),
                        Fagnavn       = leser["fagnavn"].ToString(),
                        Fakultet      = leser["fakultet"].ToString(),
                        Studieretning = leser["studieretning"].ToString()
                    });
                }
            }
            db.CloseConnection();

            foreleserLbl.Text = "Foreleser: " + foreleserNavn;


            /*
             * Her lager vi en tekststreng ved hjelp av string builder-klassen.
             * Vi legger tekststrengene som ble hentet ut fra databasen og inn i
             * ForeleserInfo klassen inn i html kode. Hver iterasjon i foreach-løkken tilsvarer
             * et FakultetInfo-objekt som igjen tilsvarer en rad i SQL spørringen.
             * Helt til slutt blir hele tekststrengen skrevet ut til HTML, ved hjelp av InnerHtml.
             *
             * Html-formateringen under er for å legge dataene inn i en tabell og gjøre de til linker
             * så man enkelt kan navigere på nettsiden
             */

            StringBuilder sb = new StringBuilder();

            foreach (var info in foreleserInfoListe)
            {
                sb.Append(
                    "<tr>" +
                    "<td><a href = 'fagside.aspx?" + info.Fagkode + "'>" + info.Fagkode + "</a></td>" +
                    "<td><a href = 'fagside.aspx?" + info.Fagkode + "'>" + info.Fagnavn + "</a></td>" +
                    "<td><a href = 'linjeside.aspx?" + info.Studieretning + "'>" + info.Studieretning + "</a></td>" +
                    "<td>" + info.Fakultet + "</td>" +
                    "</tr>");
            }
            tableBody.InnerHtml = sb.ToString();
        }