Exemple #1
0
        public async Task <IActionResult> Create(SlotRoomsViewModel slotRoomsViewModel)
        {
            // get logged in user
            ApplicationUser currentUser = _context.ApplicationUser
                                          .FirstOrDefault(u => u.Email == HttpContext.User.Identity.Name);

            if (ModelState.IsValid)
            {
                var slot = new Slot
                {
                    StartTime = slotRoomsViewModel.StartTime,
                    RoomID    = slotRoomsViewModel.RoomID,
                    StaffID   = currentUser.Id,
                };

                _context.Add(slot);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            // re-fetch the rooms
            var rooms = _context.Room.Select(x => x.RoomID);

            slotRoomsViewModel.Rooms = new SelectList(await rooms.ToListAsync());

            return(View(slotRoomsViewModel));
        }
Exemple #2
0
        public async Task <IActionResult> Create([Bind("AdminID,FirstName,LastName,Email")] Admin admin)
        {
            if (ModelState.IsValid)
            {
                _context.Add(admin);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(admin));
        }
        public async Task <IActionResult> Create([Bind("RoomID,RoomName")] Room room)
        {
            if (ModelState.IsValid)
            {
                if (_context.Room.Any(rm => rm.RoomName == room.RoomName))
                {
                    ModelState.AddModelError("", "Room name already exist");
                    return(View(room));
                }
                else
                {
                    room.RoomName = room.RoomName.ToUpper();
                    _context.Add(room);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
            }
            return(View(room));
        }
        public async Task <IActionResult> Create([Bind("RoomID,StartTime,StaffID,StudentID")] Slot slot, string StartHour)
        {
            slot.StudentID = null;
            slot.StartTime = slot.StartTime + TimeSpan.Parse(StartHour);

            if (ModelState.IsValid)
            {
                _context.Add(slot);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            //Check if room is already selected
            if (string.IsNullOrEmpty(slot.RoomID))
            {
                ModelState.AddModelError("", "Please select a room");
            }

            ViewData["RoomID"]  = new SelectList(_context.Room, "RoomID", "RoomName", slot.RoomID);
            ViewData["StaffID"] = new SelectList(_context.Staff, "StaffID", "StaffID", slot.StaffID);

            return(View(slot));
        }
Exemple #5
0
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                // If email is already in use for login
                if (_context.Users.Any(e => e.Email == Input.Email.ToLower()))
                {
                    ModelState.AddModelError("", "This email has already exist");
                    return(Page());
                }

                //if email is new but user id already exist
                if (_context.Users.Any(e => e.StaffID == Input.UserID.ToLower()) || _context.Users.Any(e => e.StudentID == Input.UserID.ToLower()))
                {
                    ModelState.AddModelError("", "This user ID has already exist");
                    return(Page());
                }


                if ((staffEmailRegex.IsMatch(Input.Email) && !staffIDRegex.IsMatch(Input.UserID)) ||
                    (studentEmailRegex.IsMatch(Input.Email) && !studentIDRegex.IsMatch(Input.UserID)))
                {
                    ModelState.AddModelError("", "Email and ID type does not match");
                    return(Page());
                }

                if (((staffEmailRegex.IsMatch(Input.Email)) && (Input.Email.Substring(0, 6).ToLower() != Input.UserID.ToLower())) ||
                    ((studentEmailRegex.IsMatch(Input.Email)) && (Input.Email.Substring(0, 8).ToLower() != Input.UserID.ToLower())))
                {
                    ModelState.AddModelError("", "Please use your own RMIT credentials only");
                    return(Page());
                }

                var user = new AccountUser {
                    UserName = Input.Email.ToLower(), Email = Input.Email.ToLower()
                };
                var result = await _userManager.CreateAsync(user);

                if (staffEmailRegex.IsMatch(Input.Email))
                {
                    await _userManager.AddToRoleAsync(user, Constants.StaffRole);

                    var staff = new Staff
                    {
                        StaffID   = Input.UserID.ToLower(),
                        FirstName = Input.FirstName,
                        Email     = Input.Email,
                    };
                    //Adding staff into staff table
                    _context.Add(staff);
                    await _context.SaveChangesAsync();

                    //Adding the staffID column at AspNetUser Table
                    _context.Users.FirstOrDefault(u => u.Email == Input.Email.ToLower()).StaffID = staff.StaffID;
                    await _context.SaveChangesAsync();
                }
                else if (studentEmailRegex.IsMatch(Input.Email))
                {
                    await _userManager.AddToRoleAsync(user, Constants.StudentRole);

                    var student = new Student
                    {
                        StudentID = Input.UserID.ToLower(),
                        FirstName = Input.FirstName,
                        Email     = Input.Email,
                    };
                    //Adding student into student table
                    _context.Add(student);
                    await _context.SaveChangesAsync();

                    //Adding the studentID column at AspNetUser Table
                    _context.Users.FirstOrDefault(u => u.Email == Input.Email.ToLower()).StudentID = student.StudentID;
                    await _context.SaveChangesAsync();
                }
                else
                {
                    throw new Exception();
                }


                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        // Initial login after sign in with external provider
                        if (staffEmailRegex.IsMatch(Input.Email))
                        {
                            returnUrl = Url.Content($"~/Staffs/Index/{Input.Email}");
                        }
                        else if (studentEmailRegex.IsMatch(Input.Email))
                        {
                            returnUrl = Url.Content($"~/Students/Index/{Input.Email}");
                        }

                        await _signInManager.SignInAsync(user, isPersistent : false);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);

                        ViewData["Message"] = "You have been successfully registered into our system";
                        ViewData["role"]    = staffEmailRegex.IsMatch(Input.Email) ? "Staffs" : studentEmailRegex.IsMatch(Input.Email) ? "Students" : "Home";
                        ViewData["userID"]  = Input.Email;
                        return(Page());
                        //return LocalRedirect(returnUrl);
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (ModelState.IsValid)
            {
                // If email is already in use for login
                if (_context.Users.Any(e => e.Email == Input.Email.ToLower()))
                {
                    ModelState.AddModelError("", "This email has already exist");
                    return(Page());
                }

                //if email is new but user id already exist
                if (_context.Users.Any(e => e.StaffID == Input.UserID.ToLower()) || _context.Users.Any(e => e.StudentID == Input.UserID.ToLower()))
                {
                    ModelState.AddModelError("", "This user ID has already exist");
                    return(Page());
                }


                if ((staffEmailRegex.IsMatch(Input.Email) && !staffIDRegex.IsMatch(Input.UserID)) ||
                    (studentEmailRegex.IsMatch(Input.Email) && !studentIDRegex.IsMatch(Input.UserID)))
                {
                    ModelState.AddModelError("", "Email and ID type does not match");
                    return(Page());
                }

                if (((staffEmailRegex.IsMatch(Input.Email)) && (Input.Email.Substring(0, 6).ToLower() != Input.UserID.ToLower())) ||
                    ((studentEmailRegex.IsMatch(Input.Email)) && (Input.Email.Substring(0, 8).ToLower() != Input.UserID.ToLower())))
                {
                    ModelState.AddModelError("", "Please use your own RMIT credentials only");
                    return(Page());
                }

                var user = new AccountUser {
                    UserName = Input.Email.ToLower(), Email = Input.Email.ToLower()
                };
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (staffEmailRegex.IsMatch(Input.Email))
                {
                    await _userManager.AddToRoleAsync(user, Constants.StaffRole);

                    var staff = new Staff
                    {
                        StaffID   = Input.UserID.ToLower(),
                        FirstName = Input.FirstName,
                        LastName  = Input.LastName,
                        Email     = Input.Email.ToLower(),
                    };
                    //Adding staff into staff table
                    _context.Add(staff);
                    await _context.SaveChangesAsync();

                    //Adding the staffID column at AspNetUser Table
                    _context.Users.FirstOrDefault(u => u.Email == Input.Email.ToLower()).StaffID = staff.StaffID;
                    await _context.SaveChangesAsync();
                }
                else if (studentEmailRegex.IsMatch(Input.Email))
                {
                    await _userManager.AddToRoleAsync(user, Constants.StudentRole);

                    var student = new Student
                    {
                        StudentID = Input.UserID.ToLower(),
                        FirstName = Input.FirstName,
                        LastName  = Input.LastName,
                        Email     = Input.Email.ToLower(),
                    };
                    //Adding student into student table
                    _context.Add(student);
                    await _context.SaveChangesAsync();

                    //Adding the studentID column at AspNetUser Table
                    _context.Users.FirstOrDefault(u => u.Email == Input.Email.ToLower()).StudentID = student.StudentID;
                    await _context.SaveChangesAsync();
                }
                else
                {
                    throw new Exception();
                }


                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");
                    await _signInManager.SignInAsync(user, isPersistent : false);

                    ViewData["Message"] = "You have been successfully registered into our system";
                    ViewData["role"]    = staffEmailRegex.IsMatch(Input.Email) ? "Staffs" : studentEmailRegex.IsMatch(Input.Email) ? "Students" : "Home";
                    ViewData["userID"]  = Input.Email;
                    return(Page());
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }