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")); //ανακατεύθυνση στην αρχική σελίδα }
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)))); //ο χρήστης μεταβαίνει στην αρχική του σελίδα που αποτελείται από τα μαθήματα στα οποία είναι εγγεγραμμένος }
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")); }
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)); }
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 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))); //και εμφανίζουμε τα μαθήματα που διδάσκει ο συγκεκριμένος καθηγητής }
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 = "******"; } }
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()); }
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)); }
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 ή ο κωδικός πρόσβασής σας είναι λάθος. Ελέγξτε τα στοιχεία εισόδου." })); }
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)); }
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)); }