Esempio 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")); //ανακατεύθυνση στην αρχική σελίδα
        }
Esempio 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)))); //ο χρήστης μεταβαίνει στην αρχική του σελίδα που αποτελείται από τα μαθήματα στα οποία είναι εγγεγραμμένος
        }
Esempio 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"));
        }
Esempio 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));
        }
Esempio 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));
        }
Esempio n. 7
0
        public async Task <ActionResult> MySubjectsProfessor()
        {
            //παίρνουμε τα στοιχεία του χρήστη που συνδέθηκε

            var userManager = new UnipiUsersManager(new CustomUserStore(db));
            var userId      = User.Identity.GetUserId <int>();
            var user        = await userManager.FindByIdAsync(userId);

            string professor = user.Name + " " + user.Surname;

            return(View(db.Subjects.Where(t => t.professorTeaching == professor))); //και εμφανίζουμε τα μαθήματα που διδάσκει ο συγκεκριμένος καθηγητής
        }
Esempio n. 8
0
        public async Task <ActionResult> CreateNewSubjectProfessor(string message)
        {
            //παίρνουμε τα στοιχεία του χρήστη που συνδέθηκε

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

            ViewData["professor"] = user.Name + " " + user.Surname; //UserName του συνδεδεμένου καθηγητή το οποίο μπαίνει αυτόματα στο πλαίσιο του διδάσκοντα
                                                                    //και δεν μπορεί να επεξεργαστεί από τον χρήστη
            ViewBag.Message = message;
            return(View());
        }
 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 = "******";
     }
 }
Esempio n. 10
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());
        }
Esempio n. 11
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));
        }
Esempio n. 12
0
        public async Task <ActionResult> Login(Users user)
        {
            //χρησιμοποιώντας το AspNet.Identity της Microsoft, ελέγχεται στη βάση δεδομένων εάν υπάρχει ο χρήστης και αν το ΑΜ΄και ο κωδικός ταιριάζουν

            var userManager   = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));
            var signinmanager = new UsersSignInManager(userManager, AuthenticationManager);

            var loginresult = await signinmanager.PasswordSignInAsync(user.UserName, user.Password, true, false);

            //εάν η σύνδεση είναι επιτυχής, αποθηκευουμε τον χρήστη που συνδέθηκε και μεταφερόμαστε στην παρακάτω μέθοδο που ελέγχουμε την ιδίότητά του για να ανακατευθυνθεί στη σωστή σελίδα

            if (loginresult == SignInStatus.Success)
            {
                var userId       = signinmanager.AuthenticationManager.AuthenticationResponseGrant.Identity.GetUserId <int>();
                var loggedInUser = await userManager.FindByIdAsync(userId);

                return(redirectLoggedInUser(loggedInUser));
            }

            //εάν τα στοιχεία είναι λάθος, ο χρήστης ανακατευθύνεται στην Index για να προσπαθήσει να κάνει login ξανά, λαμβάνοτας αντίστοιχο μήνυμα λάθους μέσω javascript alert

            return(RedirectToAction("Index", "Home", new { message = "Το AM ή ο κωδικός πρόσβασής σας είναι λάθος. Ελέγξτε τα στοιχεία εισόδου." }));
        }
Esempio n. 13
0
        public async Task <ActionResult> Registration([Bind(Include = "UserName,Password,ConfirmPassword,Name,Surname,Email,Role")] Users user)
        {
            var userManager = new UnipiUsersManager(new CustomUserStore(new UnipiLabsDbContext()));



            if (ModelState.IsValid)
            {
                bool alreadyExists = db.Users.Any(m => m.UserName == user.UserName);

                if (alreadyExists == true)
                {
                    return(RedirectToAction("Registration", "UsersRegistration", new { message = "Ο αριθμός μητρώου υπάρχει ήδη. Προσπαθήστε ξανά." }));
                }
                //έλεγχος γα το εάν ο χρήστης δίνει τη σωστή του ιδιότητα κατά την εγγραφή του
                string firstLetter = user.UserName.Substring(0, 1);
                if (firstLetter == "P" && user.Role == "Professor")
                {
                    var result = await userManager.CreateAsync(user, user.Password);

                    if (result.Succeeded)
                    {
                        db.SaveChanges();
                        // Log the user in
                        var signInManager = new UsersSignInManager(userManager, AuthenticationManager);
                        await signInManager.SignInAsync(user, true, true);

                        return(RedirectToAction("MySubjectsProfessor", "Professors"));
                    }
                }
                else if (firstLetter == "S" && user.Role == "Student")
                {
                    var result = await userManager.CreateAsync(user, user.Password);

                    if (result.Succeeded)
                    {
                        db.SaveChanges();
                        // Log the user in
                        var signInManager = new UsersSignInManager(userManager, AuthenticationManager);
                        await signInManager.SignInAsync(user, true, true);

                        return(RedirectToAction("MySubjectsStudent", "Students"));
                    }
                }
                else if (firstLetter == "L" && user.Role == "LabAdmin")
                {
                    var result = await userManager.CreateAsync(user, user.Password);

                    if (result.Succeeded)
                    {
                        db.SaveChanges();
                        // Log the user in
                        var signInManager = new UsersSignInManager(userManager, AuthenticationManager);
                        await signInManager.SignInAsync(user, true, true);

                        return(RedirectToAction("ViewLabAvailability", "LabAdmin"));
                    }
                }
                else
                {
                    return(RedirectToAction("Registration", "UsersRegistration", new { message = "Η ιδιότητά σας ή ο ΑΜ σας είναι λάθος. Προσπαθήστε ξανά." }));
                }
            }
            return(View(user));
        }
Esempio n. 14
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));
        }