Exemplo n.º 1
0
        public ActionResult RegisterToSubjectStudent(string subjectID, string subjectTitle)
        {
            //εγγραφή φοιτητή σε μάθημα

            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var userId      = User.Identity.GetUserId <int>();
            var user        = userManager.FindById(userId);


            Subjects subject   = db.Subjects.Find(subjectID); //βρίσκουμε το id του συγκεκριμένου μαθήματος
            string   prevValue = subject.regStudent;          //βρίσκουμε τους ήδη εγγεγραμμένους φοιτητές σε αυτό το μάθημα

            if (prevValue == null)
            {
                subject.regStudent = user.UserName; //αν δεν υπάρχουν εγγεγραμμένοι φοιτητές, βάζουμε κατευθείαν ως πρώτο φοιτήτή τον συνδεδεμένο χρήστη
            }
            else
            {
                subject.regStudent = prevValue + "," + user.UserName; //αν υπάρχουν κι ΄΄αλλοι εγγεγραμμένοι φοιτητές, προσθέτουμε πρώτα εκείνους και μετά τον συνδεδεμένο φοιτητή,
            }                                                         //χωρίζοντάς του με ένα κόμμα

            db.SaveChanges();

            return(RedirectToAction("MySubjectsStudent")); //ανακατεύθυνση στην αρχική σελίδα
        }
Exemplo n.º 2
0
        public ActionResult MySubjectsStudent()
        {
            //παίρνουμε τα στοιχεία του χρήστη με τη βοήθεια του AspNet Identity της Microsoft
            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var user        = userManager.FindById(System.Web.HttpContext.Current.User.Identity.GetUserId <int>());

            return(View(db.Subjects.Where(t => t.regStudent.Contains(user.UserName)))); //ο χρήστης μεταβαίνει στην αρχική του σελίδα που αποτελείται από τα μαθήματα στα οποία είναι εγγεγραμμένος
        }
Exemplo n.º 3
0
        public ActionResult UnregisterFromSubjectStudentConfirmed(string subjectID)
        {
            //παίρνουμε τα στοιχεία του χρήστη με τη βοήθεια του AspNet Identity της Microsoft
            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var user        = userManager.FindById(System.Web.HttpContext.Current.User.Identity.GetUserId <int>());

            Subjects subject = db.Subjects.Find(subjectID);


            string regStudents = subject.regStudent;



            char[] separator = { ',', ' ' }; //ορίζουμε ως διαχωριστικό το ,

            // ορίζουμε τη λίστα που θα περιέχει τους εγγεγραμμένους φοιτητές

            List <string> regStudentsList = new List <string>();


            string[] registeredStudents = regStudents.Split(separator); //διαχωρίζουμε το string βάσει του κόμματος, χρησιμοποιώντας τη μέθοδο Split, και τα προσθέτουμε σε μια λίστα από strings


            //προσθέτουμε κάθε ΑΜ στη λίστα των φοιτητών που ορίσαμε παραπάνω
            foreach (var item in registeredStudents)
            {
                regStudentsList.Add(item);
            }

            //αν ο συνδεδεμένος χρήστης ανήκει στους εγγεγραμμένος φοιτητές, τότε τον αφαιρούμε από τη λίστα
            if (regStudentsList.Contains(user.UserName))
            {
                regStudentsList.Remove(user.UserName);
            }
            else
            {
                return(HttpNotFound());
            }

            //ορίζουμε το string που θα περιέχει όλους τους υπόλοιπους φοιτητές που είναι εγγεγραμμένοι στο μάθημα
            string newRegStudents = "";

            foreach (var item in regStudentsList)
            {
                if (newRegStudents == "")
                {
                    newRegStudents = item;
                }
                else
                {
                    newRegStudents = newRegStudents + "," + item;
                }
            }
            subject.regStudent = newRegStudents; //αποθηκεύουμε το νέο string στη βάση δεδομένων
            db.SaveChanges();

            return(RedirectToAction("MySubjectsStudent"));
        }
Exemplo n.º 4
0
        public ActionResult EditProfileProfessor(string message)
        {
            ViewBag.Message = message;
            //χρησιμοποιώντας το AspNet Identity της Microsoft, παίρνουμε τα στοιχεία του συνδεδεμενου χρήστη και μεταβαίνει στην αντίστοιχη σελίδα για να επεξεργαστεί το προφίλ του
            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var userId      = User.Identity.GetUserId <int>();
            var user        = userManager.FindById(userId);

            return(View(user));
        }
Exemplo n.º 5
0
        public ActionResult MyLabsStudent()
        {
            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var userId      = User.Identity.GetUserId <int>();
            var user        = userManager.FindById(userId);

            string userID = user.UserName;

            return(View(db.Enrollments.Where(t => t.teamMembers.Contains(user.UserName)))); //εμφανίζουμε τιςεγγραφές στα εργαστήρια στα οποία εχει εγγραφεί ο συνδεδεμένος χρήστης
        }
        public ActionResult EditProfileAdmin(string message)
        {
            ViewBag.Message = message;
            //ο χρήστης που είναι συνδεδεμένος τη δεδομένη στιγμή, μπορεί να επεξεργαστεί τις πληροφορίες του προφίλ του

            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var userId      = User.Identity.GetUserId <int>();
            var user        = userManager.FindById(userId);

            return(View(user));
        }
 public override void OnResultExecuting(ResultExecutingContext filterContext)
 {
     if (HttpContext.Current.Request.IsAuthenticated)
     {
         var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
         var user        = userManager.FindById(HttpContext.Current.User.Identity.GetUserId <int>());
         filterContext.Controller.ViewBag.UserName = user.UserName;
     }
     else
     {
         filterContext.Controller.ViewBag.UserName = "******";
     }
 }
Exemplo n.º 8
0
        public ActionResult Index(string message)
        {
            //σε περίπτωση που ο χρήστης δεν είχε αποσυνδεθεί από την τελευταία του είσοδο, μετα΄φέρεται στην αρχική του σελίδα ανάλογα με την ιδιότητά του
            //διαφορετικά του εμφανίζεται η σελίδα του login για να κάνει είσοδο
            if (Request.IsAuthenticated)
            {
                var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
                var user        = userManager.FindById(System.Web.HttpContext.Current.User.Identity.GetUserId <int>());
                return(redirectLoggedInUser(user));
            }

            ViewBag.Message = message;
            return(View());
        }
Exemplo n.º 9
0
        public ActionResult UnregisterFromSubjectStudent(string subjectID)
        {
            //παίρνουμε τα στοιχεία του χρήστη με τη βοήθεια του AspNet Identity της Microsoft
            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var user        = userManager.FindById(System.Web.HttpContext.Current.User.Identity.GetUserId <int>());

            Subjects subject = db.Subjects.Find(subjectID);

            if (subject == null)
            {
                return(HttpNotFound());
            }
            return(View(subject));
        }
Exemplo n.º 10
0
        public ActionResult AddMyTeamStudent([Bind(Include = "primKeyID, subjectID, labID, teamID, selectedExamSlot, team, teamMembers, subjectTitle, labTitle, labDate, labTime")] Enrollments enrollments, int primKeyID, string labID, string subID, List <string> team)
        {
            var hubContext = GlobalHost.ConnectionManager.GetHubContext <NotificationHub>(); //δημιουργία μεταβλητής για σύνδεση με το hub που χρησιμοποιούμε για τις ειδοποιήσεις SignalR


            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var user        = userManager.FindById(System.Web.HttpContext.Current.User.Identity.GetUserId <int>());

            string userID = user.UserName;

            LabsAnnouncements lab = db.LabsAnnouncements.Find(labID);


            //προσθέτουμε τα μέλη της ομάδας στη βάση δεδομένων στα Enrollments και στα Subjects
            enrollments.teamMembers = enrollments.team[0];

            for (int i = 1; i <= enrollments.team.Count() - 1; i++)
            {
                enrollments.teamMembers = enrollments.teamMembers + "," + enrollments.team[i];
            }


            if (lab.regStudents == null)
            {
                lab.regStudents = enrollments.teamMembers;
            }
            else
            {
                lab.regStudents = lab.regStudents + "," + enrollments.teamMembers;
            }
            db.Entry(lab).State = EntityState.Modified;
            db.SaveChanges();


            ExamSlotsAvailability availabilitySlot = db.ExamSlotsAvailability.Find(primKeyID);



            availabilitySlot.registeredTeamsNumber = enrollments.teamID; //ο αριθμός των εγγεγραμμένων ομάδων ισούται με το team ID της ομάδας ξεχωριστά σε κάθε slot

            LabsAvailability availability = db.LabsAvailability.Find(labID);



            if (availabilitySlot.registeredTeamsNumber >= availability.availableComputers)
            {
                availabilitySlot.available = false; //εάν ο αριθμός των εγγεγραμμένων ομάδων είναι >= του αριθμού των διαθέσιμων υπολογιστών του εργαστηρίου, τότε δεν ελιναι πλέον διαθέσιμο
            }

            enrollments.primKeyID = primKeyID;


            if (ModelState.IsValid)
            {
                team.Remove(userID); //αφαιρούμε τον συνδεδεμένο χρήστη από την ομάδα για να μην πάει και σε εκείνον ειδοποίηση ότι γράφτηκε στην ομάδα του, παρά μόνο στα υπόλοιπα
                                     //μέλη της ομάδας του

                //σε κάθε μέλος της ομάδας, μέσω του hub πο δημιουργήσαμε προηγουμένως, πηγαίνει ειδοποίηση ότι ο συνδεδεμένος χρήστης τους έγραψε στην ομάδα του στο συγκεκριμένο εργαστήριο
                hubContext.Clients.Users(team).addNewMessageToPage("Ο χρήστης με ΑΜ " + userID + " σας πρόσθεσε στην ομάδα του στο εργαστήριο με τίτλο " + lab.labTitle);

                //προσθέτουμε τα μέλη της ομάδας στους εγγεγραμμένους φοιτητές του εργαστηρίου
                LabsAnnouncements labRegistered = db.LabsAnnouncements.Find(labID);
                if (labRegistered.regStudents == null)
                {
                    labRegistered.regStudents = enrollments.teamMembers;
                }
                else
                {
                    labRegistered.regStudents = labRegistered.regStudents + enrollments.teamMembers;
                }


                db.Enrollments.Add(enrollments); //αποθήκευση εγγραφής στη βάση δεδομένων
                db.SaveChanges();


                return(RedirectToAction("MyLabsStudent", enrollments)); //ανακατεύθυνση στα εργαστήρια στα οποία συμμετέχει ο συνδεδεμένος φοιτητής
            }


            return(View(enrollments));
        }