public async Task <IActionResult> EditStaff([FromRoute] string id, [FromBody] Staff staff) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != staff.StaffID) { return(BadRequest()); } _context.Entry(staff).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!StaffExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
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)); }
public async Task <IActionResult> EditSlot(string roomid, string startTime, [FromBody][Bind("RoomID,StartTime,StaffID,StudentID")] Slot slot) { var slotTime = DateTime.ParseExact(startTime, "dd/MM/yyyy HH:mm", null, DateTimeStyles.None); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (roomid != slot.RoomID && slotTime != slot.StartTime) { return(BadRequest()); } _context.Entry(slot).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!SlotExists(roomid, slotTime)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <ActionResult <Slot> > PutSlotStudent(string roomID, DateTime startTime, [FromBody] string studentID) { var slot = await _context.Slot.FirstOrDefaultAsync(s => s.RoomID == roomID && s.StartTime == startTime); if (slot == null) { return(NotFound()); } if (String.IsNullOrEmpty(studentID)) { slot.StudentID = null; } else { var student = await _context.Users.FirstOrDefaultAsync(u => u.SchoolID == studentID); if (student == null) { return(BadRequest()); } slot.StudentID = student.Id; } _context.Entry(slot).State = EntityState.Modified; await _context.SaveChangesAsync(); return(NoContent()); }
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 <ActionResult <Room> > Post(Room room) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _context.Room.Add(room); await _context.SaveChangesAsync(); return(CreatedAtAction(nameof(GetRoom), new { id = room.RoomID }, room)); }
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 static async Task InitialiseAsync(IServiceProvider serviceProvider) { using (var userManager = serviceProvider.GetRequiredService <UserManager <ApplicationUser> >()) using (var roleManager = serviceProvider.GetRequiredService <RoleManager <IdentityRole> >()) using (var context = new ASRContext(serviceProvider.GetRequiredService <DbContextOptions <ASRContext> >())) { await InitialiseRolesAsync(roleManager); await InitialiseRoomsAsync(context); await context.SaveChangesAsync(); } }
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)); }
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()); }