コード例 #1
0
        /// <summary>
        /// Signs in a student, optionally updating the database if it has updated fields.
        /// </summary>
        /// <returns>The SignIn page</returns>
        public ActionResult SignIn(string ID, string name, string major, string machineNumber)
        {
            /* Sanitize: Name*/
            if (Request.Params.AllKeys.Contains ("name") && Request.Params ["name"].Contains (" ")) {
                /* Sanitize: Major */
                if (Request.Params.AllKeys.Contains ("major")) {
                    /*Sanitize: MachineNumber */
                    if (Request.Params.AllKeys.Contains ("machineNumber")) {
                        StudentDatabase db = new StudentDatabase ();
                        db.Connect ();

                        db.SignIn(
                            int.Parse(Request.Params["ID"]), //ID
                            Request.Params["name"].Split(' ')[0], //First
                            Request.Params["name"].Split(' ')[1], //Last
                            Request.Params["major"], // Major
                            int.Parse(Request.Params["machineNumber"]), //MachineNumber
                            (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds); //TimeIn is now

                        db.Disconnect ();

                        return View ("~/Views/Home/Index.cshtml", new Warning(""));
                    }
                }
            }

            return View ("~/Views/SignIn/Index.cshtml", "Warning: Improper Value Detected");
        }
コード例 #2
0
        void StudentFunction()
        {
            StudentDatabase studentData  = new StudentDatabase();
            StudentLogic    studentLogic = new StudentLogic();

            Console.WriteLine("\t1. Add Students details. ");
            Console.WriteLine("\t2. Get student detail by ID.");
            Console.WriteLine("\t3. Exit.");
            Console.Write("Enter Choice: ");
            int Choice = Convert.ToInt32(Console.ReadLine());

            switch (Choice)
            {
            case 1:
                // call to GiveStudentDetail to enter student's details
                Student student = studentLogic.GetStudentDetailsFromUser();
                // call to AddStudent method to store entered details in Database
                studentData.AddStudent(student);
                break;

            case 2:
                // call to GetStudent method to fetch data from Database
                studentLogic.CheckStudentDetailsFromDatabase();
                break;

            case 3:
                System.Environment.Exit(0);
                break;

            default:
                Console.WriteLine("Please enter Correct choice!!!");
                break;
            }
        }
コード例 #3
0
        /// <summary>
        /// Signs in a student, optionally updating the database if it has updated fields.
        /// </summary>
        /// <returns>The SignIn page</returns>
        public ActionResult SignIn(string ID, string name, string major, string machineNumber)
        {
            /* Sanitize: Name*/
            if (Request.Params.AllKeys.Contains("name") && Request.Params ["name"].Contains(" "))
            {
                /* Sanitize: Major */
                if (Request.Params.AllKeys.Contains("major"))
                {
                    /*Sanitize: MachineNumber */
                    if (Request.Params.AllKeys.Contains("machineNumber"))
                    {
                        StudentDatabase db = new StudentDatabase();
                        db.Connect();

                        db.SignIn(
                            int.Parse(Request.Params["ID"]),                                           //ID
                            Request.Params["name"].Split(' ')[0],                                      //First
                            Request.Params["name"].Split(' ')[1],                                      //Last
                            Request.Params["major"],                                                   // Major
                            int.Parse(Request.Params["machineNumber"]),                                //MachineNumber
                            (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds); //TimeIn is now

                        db.Disconnect();

                        return(View("~/Views/Home/Index.cshtml", new Warning("")));
                    }
                }
            }

            return(View("~/Views/SignIn/Index.cshtml", "Warning: Improper Value Detected"));
        }
コード例 #4
0
        /// <summary>
        /// Return the Sign out page
        /// </summary>
        /// <returns>The sign out.</returns>
        public ActionResult RequestSignOut()
        {
            StudentDatabase db = new StudentDatabase ();
            db.Connect ();

            return View ("~/Views/SignOut/Index.cshtml", db.SignedInStudents());
        }
コード例 #5
0
 public IActionResult OnPost()
 {
     if (!ModelState.IsValid)
     {
         return(Page());
     }
     else
     {
         staff = StudentDatabase.Login(LoginStaff.Username, LoginStaff.Password);
         if (staff.staffId != 0)
         {
             if (staff.Administration == true) // hvis brugeren hentet fra SQL er i administration, så sættes det til True i session.
             {
                 HttpContext.Session.SetString("Administration", "TRUE");
             }
             if (staff.Teacher == true) // hvis brugeren hentet fra SQL er underviser, så sættes det til True i session.
             {
                 HttpContext.Session.SetString("Teacher", "TRUE");
             }
             HttpContext.Session.SetString("LoggedIn", "TRUE");
             return(RedirectToPage("/Students/StudentList")); // Efter login foretages redirect til studentlist.
         }
         else
         {
             TempData["LoginMessage"] = "Invalid login"; // Hvis login fejler, sættes en midlertidig besked som vises på login siden bagefter.
             return(Page());
         }
     }
 }
コード例 #6
0
        /// <summary>
        /// Return the Sign out page
        /// </summary>
        /// <returns>The sign out.</returns>
        public ActionResult RequestSignOut()
        {
            StudentDatabase db = new StudentDatabase();

            db.Connect();

            return(View("~/Views/SignOut/Index.cshtml", db.SignedInStudents()));
        }
コード例 #7
0
        public ActionResult Index()
        {
            StudentDatabase db = new StudentDatabase ();
            db.Connect ();

            string pw = System.IO.File.ReadAllLines ("/databases/password")[0];
            if (Request.Params.AllKeys.Contains ("password") && Request.Params ["password"].Equals (pw)) {
                return View (db.SessionHistory ());
            } else
                return View ("~/Views/Validator/Index.cshtml", new ValidationRequest ("/History", "password"));
        }
コード例 #8
0
        }                                                  // Der bliver et enumerable object array til at opbevare students, bliver til foreach i html koden.

        public IActionResult OnGet()
        {
            if (HttpContext.Session.GetString("Administration") == "TRUE" || HttpContext.Session.GetString("Teacher") == "TRUE")
            {
                Students = StudentDatabase.GetStudents(SearchTerm); // Der foretages GetStudents på baggrund af searchTerm, som default alle studerende.
                return(Page());
            }
            else
            {
                return(RedirectToPage("/Staff/StaffLogin"));
            }
        }
コード例 #9
0
 public IActionResult OnGet()
 {
     if (HttpContext.Session.GetString("Administration") == "TRUE") // Login tjek
     {
         Subjects = StudentDatabase.GetSubjects(SearchTerm);        //
         return(Page());
     }
     else
     {
         return(RedirectToPage("/Staff/StaffLogin"));
     }
 }
コード例 #10
0
 public IActionResult OnGet()
 {
     if (HttpContext.Session.GetString("Administration") == "TRUE") // Der foretages login tjek
     {
         AllStaff = StudentDatabase.GetStaff(SearchTerm);           // Alle ansatte der matcher searchterm hentes, som default % (alle)
         return(Page());
     }
     else
     {
         return(RedirectToPage("./StaffLogin"));
     }
 }
コード例 #11
0
        /// <summary>
        /// Gets some information about the student from the database (if any exists),
        /// and sends it as JSON to the requestor. 
        /// </summary>
        /// <returns>The JSON information about the student, including Name (first last) and major</returns>
        public string GetStudent()
        {
            int requestID = int.Parse (Request.Params ["studentID"]);

            StudentDatabase db = new StudentDatabase ();
            db.Connect ();

            Student requestedStudent = db.RetrieveStudent (requestID);

            db.Disconnect ();

            return requestedStudent.ToJSON ();
        }
コード例 #12
0
 public IActionResult OnPost()
 {
     if (!ModelState.IsValid) // Data valideres, hvis der er fejl så returneres Edit siden
     {
         return(Page());
     }
     else // Hvis data valideres uden fejl gemmes dataen.
     {
         StudentDatabase.EditGrade(Grade);
     }
     TempData["Message"] = "Grade saved";
     return(RedirectToPage("./GradeList", new { studentId = Grade.StudentId }));
 }
コード例 #13
0
        /// <summary>
        /// Gets some information about the student from the database (if any exists),
        /// and sends it as JSON to the requestor.
        /// </summary>
        /// <returns>The JSON information about the student, including Name (first last) and major</returns>
        public string GetStudent()
        {
            int requestID = int.Parse(Request.Params ["studentID"]);

            StudentDatabase db = new StudentDatabase();

            db.Connect();

            Student requestedStudent = db.RetrieveStudent(requestID);

            db.Disconnect();

            return(requestedStudent.ToJSON());
        }
コード例 #14
0
        /// <summary>
        /// Signs a student out of the lab, both removing them from the loggedIn table
        /// and adding their session to the history table
        /// </summary>
        /// <returns>The out.</returns>
        public ActionResult SignOut()
        {
            StudentDatabase db       = new StudentDatabase();
            int             IDnumber = int.Parse(Request.Params ["ID"]);

            db.Connect();

            db.SignOut(IDnumber);
            IEnumerable <Session> students = db.SignedInStudents();

            db.Disconnect();

            return(View("~/Views/Home/Index.cshtml", new Warning("")));
        }
コード例 #15
0
        public IActionResult OnPost()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            else
            {
                StudentDatabase.AddGrade(Grade);
            }
            TempData["Message"] = "Grade saved";
            return(RedirectToPage("./GradeList", new { studentId = Grade.GradeId }));
        }
コード例 #16
0
        public IActionResult OnGet(int gradeId)
        {
            if (HttpContext.Session.GetString("Administration") == "TRUE")
            {
                Subjects = StudentDatabase.GetAllSubjects();
                var subjectList = new SelectList(Subjects, "SubjectId", "SubjectName");
                SubjectList = subjectList;
                Grade       = StudentDatabase.GetGradeById(gradeId);

                return(Page());
            }
            else
            {
                return(RedirectToPage("./StaffLogin"));
            }
        }
コード例 #17
0
 public IActionResult OnGet(int SubjectId)
 {
     if (HttpContext.Session.GetString("Administration") == "TRUE") // Login tjek
     {
         Subject = StudentDatabase.GetSubjectById(SubjectId);
         if (Subject == null || SubjectId == 0) // Hvis subject er null er Id er 0 redirect til subjectlist
         {
             return(RedirectToPage("/Subjects/SubjectList"));
         }
         return(Page());
     }
     else
     {
         return(RedirectToPage("./StaffLogin"));
     }
 }
コード例 #18
0
        public ActionResult Index()
        {
            if (Request.Params.AllKeys.Contains("ID"))
            {
                StudentDatabase db = new StudentDatabase();
                db.Connect();

                int ID = 000000;
                ID = int.Parse(Request.Params["ID"]);

                return(View("~/Views/History/Index.cshtml", db.SessionHistory(ID)));
            }
            else
            {
                return(View("~/Views/Home/Index.cshtml", new Warning("You must specify which ID you want")));
            }
        }
コード例 #19
0
        public IActionResult OnGet(int studentId)
        {
            if (HttpContext.Session.GetString("Administration") == "TRUE") // Login tjek
            {
                Grades   = StudentDatabase.GetGrades(studentId);           // Alle karakterer der er tilknyttet en given studerende hentes
                Student  = StudentDatabase.GetStudentById(studentId);      // Den gældende studerende hentes.
                Subjects = StudentDatabase.GetAllSubjects();               // Alle f*g hentes
                var subjectList = new SelectList(Subjects, "SubjectId", "SubjectName");
                SubjectList = subjectList;

                return(Page());
            }
            else
            {
                return(RedirectToPage("./StaffLogin"));
            }
        }
コード例 #20
0
        }                                    // Bruges til at gemme data samt opbygge detail siden.

        public IActionResult OnGet(int studentId)
        {   // Der tjekkes hvorvidt der er blevet logget ind og brugeren enten er administrator eller underviser. Hvis ikke foretages der redirect til login siden.
            // Der bruges typen IActionResult så der kan bruges logik ift. til hvilken side der returneres.
            if (HttpContext.Session.GetString("Administration") == "TRUE" || HttpContext.Session.GetString("Teacher") == "TRUE")
            {
                Student = StudentDatabase.GetStudentById(studentId); // Den studerende hentes på baggrund af Id.
                if (Student == null || studentId == 0)
                {
                    return(RedirectToPage("/Students/StudentList")); // Hvis der ikke findes en studerende med det Id, sendes man til studenlist.
                }
                return(Page());
            }
            else
            {
                return(RedirectToPage("/Staff/StaffLogin"));
            }
        }
コード例 #21
0
        public ActionResult Index()
        {
            string pw = System.IO.File.ReadAllLines("/databases/password")[0];

            if (Request.Params.AllKeys.Contains("password") && Request.Params ["password"].Equals(pw))
            {
                StudentDatabase db = new StudentDatabase();

                db.Connect();

                return(View(db.SignedInStudents()));
            }
            else
            {
                return(View("~/Views/Validator/Index.cshtml", new ValidationRequest("/List", "password")));
            }
        }
コード例 #22
0
        public IActionResult OnPost()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            if (Subject.SubjectId > 0) // Hvis subjectId ikke er null og højere end 0, opdateres faget.
            {
                StudentDatabase.UpdateSubject(Subject);
            }
            else // Hvis subjectId ikke er sat oprettes et nyt f*g.
            {
                StudentDatabase.CreateSubject(Subject);
            }
            TempData["Message"] = "Subject saved";
            return(RedirectToPage("./SubjectDetail", new { subjectId = Subject.SubjectId }));
        }
コード例 #23
0
        public IActionResult OnPost()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            if (staff.staffId > 0) // Hvis staffId er højere end 0 er der tale om at en ansat skal opdateres
            {
                StudentDatabase.UpdateStaff(staff);
            }
            else // Ellers oprettes en ny ansat i databasen.
            {
                StudentDatabase.CreateStaff(staff);
            }
            TempData["Message"] = "Staff saved";
            return(RedirectToPage("./StaffDetail", new { staffId = staff.staffId }));
        }
コード例 #24
0
 public IActionResult OnPost()
 {
     if (!ModelState.IsValid)
     {
         return(Page());
     }
     if (Student.StudentId > 0) // Hvis studentId er højere end 0 er der tale om en eksisterende bruger der skal opdateres.
     {
         StudentDatabase.UpdateStudent(Student);
     }
     else // Hvis studentId er 0 eller ikke sat må det være en ny bruger. Den oprettes i Nextcloud og StudentDB.
     {
         Nextcloud.AddUserToNextcloud(Student.NextcloudUsername, Student.FirstName, Student.LastName, Student.NextcloudOneTimePassword);
         StudentDatabase.CreateStudent(Student);
     }
     TempData["Message"] = "Student saved";
     return(RedirectToPage("./StudentDetail", new { studentId = Student.StudentId }));
 }
コード例 #25
0
        }                                       // Er nødt til at kolde Models.Staff da jeg har været så klog at kalde mappen i pages staff også.

        public IActionResult OnGet(int staffId)
        {
            if (HttpContext.Session.GetString("Administration") == "TRUE") // Der foretages login tjek
            {
                Staff = StudentDatabase.GetStaffById(staffId);             // Staff hentes fra databasen
                if (Staff == null)                                         // Hvis der ikke kunne findes en ansat redirectes man tilbage til stafflist.
                {
                    return(RedirectToPage("./StaffList"));
                }
                else // Hvis der blev fundet en ansat vises detail siden.
                {
                    return(Page());
                }
            }
            else
            {
                return(RedirectToPage("./StaffLogin"));
            }
        }
コード例 #26
0
 public IActionResult OnGet(int?staffId)
 {
     if (HttpContext.Session.GetString("Administration") == "TRUE") // Der foretages login tjek
     {
         if (staffId.HasValue)                                      // Hvis der koms staffId med hentes staff fra StudentDB
         {
             staff = StudentDatabase.GetStaffById(staffId.Value);
         }
         else // Hvis ikke oprettes et nyt staff objekt
         {
             staff = new Models.Staff();
         }
         if (staff == null) // Hvis staff er null på dette tidspunkt sendes man til notfound siden.
         {
             return(RedirectToPage("/NotFound"));
         }
         return(Page());
     }
     else
     {
         return(RedirectToPage("./StaffLogin"));
     }
 }
コード例 #27
0
 public IActionResult OnGet(int?subjectId)
 {
     if (HttpContext.Session.GetString("Administration") == "TRUE") // Der foretages login tjek
     {
         if (subjectId.HasValue)                                    // Hvis der kommer et subjectId
         {
             Subject = StudentDatabase.GetSubjectById(subjectId.Value);
         }
         else // Hvis ikke der kom studentId med
         {
             Subject = new Subject();
         }
         if (Subject == null) // Hvis der ikke er noget subject redirectes til notfound.
         {
             RedirectToPage("/NotFound");
         }
         return(Page());
     }
     else
     {
         return(RedirectToPage("./StaffLogin"));
     }
 }
コード例 #28
0
        public IActionResult OnGet(int?studentId)
        {
            if (HttpContext.Session.GetString("Administration") == "TRUE") // Der foretages login tjek
            {
                if (studentId.HasValue)                                    // Hvis der kom studentId med i get requesten, bliver denne forsøgt hentet fra studentdb.
                {
                    Student = StudentDatabase.GetStudentById(studentId.Value);
                }
                else // Hvis der ikke var et student Id oprettes der er en nyt.
                {
                    Student = new Student();
                }

                if (Student == null) // Hvis student er null når koden når hertil, bliver man sendt til NotFound siden.
                {
                    RedirectToPage("/NotFound");
                }
                return(Page());
            }
            else
            {
                return(RedirectToPage("./StaffLogin"));
            }
        }
コード例 #29
0
ファイル: Program.cs プロジェクト: schletz/Dbi3Sem
        private static void Main(string[] args)
        {
            var studentDb = new StudentDatabase("127.0.0.1", "Stundenplan");

            studentDb.Seed();                        // Löscht die DB und befüllt sie mit Musterdaten.
            var schuelerCollection = studentDb.Db.GetCollection <Schueler>(nameof(Schueler));

            Console.WriteLine("BEISPIEL 1: ZÄHLEN VON SCHÜLERN EINER KLASSE *********************");
            studentDb.EnableLogging = true;
            int count = schuelerCollection.AsQueryable().Count(s => s.KlasseId == "5AHIF");

            Console.WriteLine($"Die 5AHIF hat {count} Schüler.");

            Console.WriteLine("BEISPIEL 2: ZÄHLEN VON SCHÜLERN ALLER KLASSEN ********************");
            var schueleranz = schuelerCollection
                              .AsQueryable()
                              .GroupBy(s => s.KlasseId)
                              .Select(g => new { Id = g.Key, Count = g.Count() })
                              .OrderBy(g => g.Count).ThenBy(g => g.Id)
                              .ToDictionary(g => g.Id, g => g.Count);

            foreach (var s in schueleranz)
            {
                Console.WriteLine($"{s.Value} Schüler in der {s.Key} gefunden.");
            }

            Console.WriteLine("BEISPIEL 3: ÄLTESTER SCHÜLER PRO KLASSE *************************");
            // Es kann sein, dass mehrere Schüler am ältesten sind (wenn sie am selben Tag Geburtstag haben).

            // Folgender Ausdruck wird nicht unterstützt (Unable to determine the serialization information for the outer key selector)
            //var aelteste = schuelerCollection
            //    .AsQueryable()
            //    .GroupBy(s => s.KlasseId)
            //    .Select(g => new
            //    {
            //        KlasseId = g.Key,
            //        Gebdat = g.Min(s => s.Gebdat)
            //    })
            //    .Join(schuelerCollection.AsQueryable(), s => new { s.KlasseId, s.Gebdat }, s => new { s.KlasseId, s.Gebdat }, (s1, s2) => s2)
            //    .ToList();

            // Man könnte 2x AsQueryable().ToList() verwenden, jedoch wird dann die gesamte Collection
            // übertragen. Daher senden wir eine selbst definierte Pipeline.

            var pipeline = PipelineDefinition <Schueler, ClassStatDto> .Create(
                @"{
    '$group': {
      '_id': '$KlasseId',
      'Klasse': { '$first': '$KlasseId' },
      'MinGebdat': { '$min': '$Gebdat' }
    }
  }",
                @"{
    '$lookup': {
      'from': 'Schueler',
      'let': {
        'klasse': '$_id',
        'minGebdat': '$MinGebdat'
      },
      'pipeline': [
        {
          '$match': {
            '$expr': {
              '$and': [
                { '$eq': [ '$$klasse', '$KlasseId' ] },
                { '$eq': [ '$$minGebdat', '$Gebdat' ] }
              ]
            }
          }
        }
      ],
      'as': 'Schueler'
    }
  }",
                @"{
    '$sort': { 'Klasse': 1 }
}");

            var result = schuelerCollection.Aggregate(pipeline).ToList();

            foreach (var r in result)
            {
                Console.WriteLine($"Die ältesten Schüler der {r.Klasse} sind: ");
                foreach (var s in r.Schueler)
                {
                    Console.WriteLine($"   {s.Zuname} {s.Vorname}, geb. am {s.Gebdat:dd.MM.yyyy}");
                }
            }
        }
コード例 #30
0
 public void OnPostDelete(Student student) // Hvis der trykkes på slet knappen, foretages delete og efterfølgende redirect til Studentlist.
 {
     StudentDatabase.DeleteStudent(student);
     RedirectToPage("/Students/StudentList");
 }