+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Final_Project/Final_Project/Areas/MemberLinks/Views/Link/Links.cshtml b/Final_Project/Final_Project/Areas/MemberLinks/Views/Link/Links.cshtml
new file mode 100644
index 0000000..f9b1cfe
--- /dev/null
+++ b/Final_Project/Final_Project/Areas/MemberLinks/Views/Link/Links.cshtml
@@ -0,0 +1,76 @@
+@using Final_Project.Models.DomainModels;
+@using Final_Project.Areas.MemberLinks.Models.DomainModels
+@model Final_Project.Areas.MemberLinks.Models.LinksModel
+@using Final_Project.Areas.Mentor.Controllers;
+@{
+ ViewData["Title"] = " | Teams";
+}
+
+@if (!(Model.type == "All"))
+{
+
@Model.type Resources
+}
+else
+{
+
Showing all Resources
+}
+
+@if (User.IsInRole("Admin"))
+{
+
+}
+
+
+
+ | Resource Name | Link | | | |
+
+
+
+ @if (Model.links.Count() == 0)
+ {
+ | There are no links |
+ }
+ else
+ {
+
+ @foreach (Link link in Model.links)
+ {
+
+ | @link.name |
+
+ @if (link.LinkData.ToLower().Contains("https://"))
+ {
+ View this Resource |
+ }
+ else
+ {
+
+
+ View this Resource |
+ }
+
+
+
+ @if (User.IsInRole("Admin"))
+ {
+
+
+ |
+ }
+
+
+
+
+ }
+
+ }
+
+
+
+
+
diff --git a/Final_Project/Final_Project/Areas/MemberLinks/Views/Link/redirect.cshtml b/Final_Project/Final_Project/Areas/MemberLinks/Views/Link/redirect.cshtml
new file mode 100644
index 0000000..dd55bea
--- /dev/null
+++ b/Final_Project/Final_Project/Areas/MemberLinks/Views/Link/redirect.cshtml
@@ -0,0 +1,3 @@
+
+
Link added successfully
+
Home
\ No newline at end of file
diff --git a/Final_Project/Final_Project/Areas/MemberLinks/Views/_ViewImports.cshtml b/Final_Project/Final_Project/Areas/MemberLinks/Views/_ViewImports.cshtml
new file mode 100644
index 0000000..1e4c6b4
--- /dev/null
+++ b/Final_Project/Final_Project/Areas/MemberLinks/Views/_ViewImports.cshtml
@@ -0,0 +1,3 @@
+@using Final_Project
+@using Final_Project.Models
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
diff --git a/Final_Project/Final_Project/Areas/MemberLinks/Views/_ViewStart.cshtml b/Final_Project/Final_Project/Areas/MemberLinks/Views/_ViewStart.cshtml
new file mode 100644
index 0000000..a5f1004
--- /dev/null
+++ b/Final_Project/Final_Project/Areas/MemberLinks/Views/_ViewStart.cshtml
@@ -0,0 +1,3 @@
+@{
+ Layout = "_Layout";
+}
diff --git a/Final_Project/Final_Project/Areas/Mentor/Controllers/UserController.cs b/Final_Project/Final_Project/Areas/Mentor/Controllers/UserController.cs
index e06ea62..749a21a 100644
--- a/Final_Project/Final_Project/Areas/Mentor/Controllers/UserController.cs
+++ b/Final_Project/Final_Project/Areas/Mentor/Controllers/UserController.cs
@@ -6,6 +6,8 @@
using Final_Project.Models.ViewModels;
using Final_Project.Areas.Mentor.Models;
+using Final_Project.Areas.Mentor.Models.ViewModels;
+using System.Reflection.Metadata.Ecma335;
namespace Final_Project.Areas.Mentor.Controllers
{
@@ -15,12 +17,18 @@ public class UserController : Controller
{
private UserManager
userManager;
private RoleManager roleManager;
-
+ private SiteContext siteContext;
+ private List requests = new List();
+
public UserController(UserManager userMngr,
- RoleManager roleMngr)
+ RoleManager roleMngr,SiteContext ctx)
{
userManager = userMngr;
roleManager = roleMngr;
+ siteContext = ctx;
+ requests = siteContext.VolReqs
+ .OrderBy(c => c.id)
+ .ToList();
}
public async Task Approval()
@@ -31,10 +39,16 @@ public async Task Approval()
user.RoleNames = await userManager.GetRolesAsync(user);
users.Add(user);
}
+ List reqs= new List();
+ foreach (Final_Project.Areas.VolunteerRequest.Models.DomainModels.Request r in siteContext.VolReqs)
+ {
+ reqs.Add(r);
+ }
UserViewModel model = new UserViewModel
{
Users = users,
- Roles = roleManager.Roles
+ Roles = roleManager.Roles,
+ requests= reqs
};
return View(model);
}
@@ -58,7 +72,22 @@ public async Task Delete(string id)
}
return RedirectToAction("Approval");
}
+ [HttpPost]
+ public RedirectToActionResult Resolve(int id)
+ {
+ foreach (Final_Project.Areas.VolunteerRequest.Models.DomainModels.Request req in siteContext.VolReqs)
+ {
+ if(req.id==id)
+ {
+ siteContext.VolReqs.Remove(req);
+ }
+ }
+
+ siteContext.SaveChanges();
+
+ return RedirectToAction("Approval");
+ }
[HttpGet]
public IActionResult Add()
{
@@ -161,5 +190,150 @@ public async Task CreateStudentRole()
if (result.Succeeded) { }
return RedirectToAction("Approval");
}
+ /*[HttpGet]
+ public RedirectToActionResult ChangePassword(string id)
+ {
+ foreach (Account Acct in userManager.Users)
+ {
+ if (Acct.Id == id)
+ {
+ Acct.PasswordHash = null ;
+
+ Acct.RoleNames = null ;
+
+ }
+ }
+ return RedirectToAction("Approval");
+ }*/
+ [HttpGet]
+ public async Task ResetPassword(string Id)
+ {
+ if(Id== null)
+ {
+ return RedirectToAction("FFFFFF");
+ }
+ var acc=await userManager.FindByIdAsync(Id);
+ if(acc.Id == null) {
+ return RedirectToAction("error");
+ }
+ //AHHHHHHHH its broken
+
+ /* Account ac=await userManager.FindByNameAsync(userName);
+ Account user = new Account();
+ user.UserName= User.UserName;
+ Account[] users = userManager.Users.ToArray() ;
+ IQueryable queryable = userManager.Users;
+ foreach (Account account in queryable)
+ {
+ if (account.UserName == userName)
+ {
+ user=account; break;
+ }
+ }*/
+
+ /*foreach (Account userNumber in users)
+ {
+ if (userNumber.UserName == userName)
+ {
+ user = userNumber;
+ }
+ }*/
+
+ var model = new Final_Project.Areas.Mentor.Models.ViewModels.ResetPasswordViewModel
+ {
+
+ id = acc.Id,
+ Username= acc.UserName,
+ user=acc
+
+
+ //Username = User.Identity?.Name ?? ""
+
+ //Massive Bugger! accounts must still be signed in for this to work properly/text for details
+
+ };
+ //model.user = acc;
+ return View(model);
+
+ }
+
+ [HttpPost]
+ public async Task ResetPassword(ResetPasswordViewModel model)
+ {
+ // Account acct = new Account();
+ /* acct.UserName = model.Username;
+ acct.Id = model.id;
+ var pass = model.NewPassword;
+ model.NewPassword = pass;
+ model.Username=acct.UserName;
+ model.id = acct.Id;
+ model.user=acct;*/
+ model.user = await userManager.FindByIdAsync(model.id);
+
+
+ if (ModelState.ErrorCount<2)//Modelstate appears to be evaluated upon button click.
+ //one error is expected
+ //due to setting of user property above in this method
+ {
+ //this works
+ string resetToken = await userManager.GeneratePasswordResetTokenAsync(model.user);
+ IdentityResult passwordChangeResult = await userManager.ResetPasswordAsync(model.user, resetToken, model.NewPassword);
+ TempData["message"] = "Password changed successfully";
+ return RedirectToAction("Approval");
+ }
+
+ /*if(model.Username==null)
+ {
+ return RedirectToAction("false");
+ }*/
+ return View(model);
+ }
+ [HttpPost]
+ public async Task ResetPass(ResetPasswordViewModel model)
+ {
+
+ string err = "errors: ";
+ if (ModelState.IsValid)
+ {
+
+ var user = await userManager.FindByIdAsync(model.id);
+ string resetToken = await userManager.GeneratePasswordResetTokenAsync(model.user);
+ var result = await userManager.ResetPasswordAsync(model.user, resetToken,model.NewPassword);
+
+ if (result.Succeeded)
+ {
+ TempData["message"] = "Password changed successfully";
+ return RedirectToAction("Index", "Home");
+ }
+ else
+ {
+ string errList = "ERRs: ";
+ foreach (IdentityError error in result.Errors)
+ {
+ errList += error.Description;
+ err += error.Description;
+ ModelState.AddModelError("", error.Description);
+ return View(error.Description);
+ }
+ return View(errList);
+ }
+ }
+ return View(err);
+ /*Account account = new Account();
+
+ model.user = account;
+ if (ModelState.IsValid)
+ {
+ string resetToken = await userManager.GeneratePasswordResetTokenAsync(model.user);
+ IdentityResult passwordChangeResult = await userManager.ResetPasswordAsync(model.user, resetToken, model.NewPassword);
+ TempData["message"] = "Password changed successfully";
+ return RedirectToAction("Approval");
+ }
+ else
+ {
+
+ }
+ return RedirectToAction(model.Username);*/
+ }
}
}
\ No newline at end of file
diff --git a/Final_Project/Final_Project/Areas/Mentor/Models/ResetPasswordViewModel.cs b/Final_Project/Final_Project/Areas/Mentor/Models/ResetPasswordViewModel.cs
new file mode 100644
index 0000000..8eb502d
--- /dev/null
+++ b/Final_Project/Final_Project/Areas/Mentor/Models/ResetPasswordViewModel.cs
@@ -0,0 +1,27 @@
+using Final_Project.Models.DomainModels;
+using System.ComponentModel.DataAnnotations;
+
+namespace Final_Project.Areas.Mentor.Models.ViewModels
+{
+ public class ResetPasswordViewModel
+ {
+ [Required(ErrorMessage ="errr")]
+ public string Username { get; set; } = string.Empty;
+
+ [Required(ErrorMessage = "Please enter your new password.")]
+ [MaxLength(255)]
+ [MinLength(6)]
+ [DataType(DataType.Password)]
+ [Compare("ConfirmPassword")]
+ public string NewPassword { get; set; } = string.Empty;
+
+ [Required(ErrorMessage = "Please confirm your new password.")]
+ [DataType(DataType.Password)]
+ [Display(Name = "Confirm Password")]
+ public string ConfirmPassword { get; set; } = string.Empty;
+
+ public Account user { get; set; } = null!;
+
+ public string id { get; set; } =string.Empty;
+ }
+}
diff --git a/Final_Project/Final_Project/Areas/Mentor/Models/UserViewModel.cs b/Final_Project/Final_Project/Areas/Mentor/Models/UserViewModel.cs
index 587a7b0..c5ce748 100644
--- a/Final_Project/Final_Project/Areas/Mentor/Models/UserViewModel.cs
+++ b/Final_Project/Final_Project/Areas/Mentor/Models/UserViewModel.cs
@@ -7,5 +7,6 @@ public class UserViewModel
{
public IEnumerable Users { get; set; } = null!;//this returned null
public IEnumerable Roles { get; set; } = null!;
+ public IEnumerable requests { get; set; }=null!;
}
}
diff --git a/Final_Project/Final_Project/Areas/Mentor/Views/User/Approval.cshtml b/Final_Project/Final_Project/Areas/Mentor/Views/User/Approval.cshtml
index 0f443a8..3d38866 100644
--- a/Final_Project/Final_Project/Areas/Mentor/Views/User/Approval.cshtml
+++ b/Final_Project/Final_Project/Areas/Mentor/Views/User/Approval.cshtml
@@ -1,6 +1,7 @@
@using Final_Project.Models.DomainModels;
@model Final_Project.Areas.Mentor.Models.UserViewModel
@using Final_Project.Areas.Mentor.Controllers;
+
@{
ViewData["Title"] = " | Manage Users";
}
@@ -11,7 +12,7 @@
- | Username | Roles | | | |
+ | Username | Email | First Name | Last Name | Roles |
@@ -25,52 +26,86 @@
{
| @user.UserName |
+ @user.Email |
+ @user.FirstName |
+ @user.LastName |
@foreach (string roleName in user.RoleNames)
{
@roleName
}
|
-
-
|
-
-
+ |
+ @if (!user.isRole("Admin")&&user.isRole("Student"))
+ {
+
+
|
+ }
+ @if (user.isRole("Admin"))
+ {
|
-
+ }
+ @if (!user.isRole("Student"))
+ {
+ /* |
- |
+ */
+ }
+ @if (user.isRole("Student")&&!user.isRole("Admin"))
+ {
|
+ }
+
+
+ |
}
@@ -78,4 +113,39 @@
+Volunteer Requests
+
+
+
+
+
+ | First Name | Last Name | Email | Phone | Reason/event/skill |
+
+
+ @if(Model.requests.Count()==0)
+ {
+ | There are no volunteer requests |
+ }
+ else{
+ @foreach (Final_Project.Areas.VolunteerRequest.Models.DomainModels.Request request in Model.requests)
+ {
+
+ | @request.FirstName |
+ @request.LastName |
+ @request.Email |
+ @request.Phone |
+ @request.Reason |
+
+
+ |
+
+ }
+ }
+
+
diff --git a/Final_Project/Final_Project/Areas/Mentor/Views/User/ResetPassword.cshtml b/Final_Project/Final_Project/Areas/Mentor/Views/User/ResetPassword.cshtml
new file mode 100644
index 0000000..f23988f
--- /dev/null
+++ b/Final_Project/Final_Project/Areas/Mentor/Views/User/ResetPassword.cshtml
@@ -0,0 +1,43 @@
+@model Final_Project.Areas.Mentor.Models.ViewModels.ResetPasswordViewModel
+@{
+ ViewBag.Title = "Change Password";
+}
+
+Change Password
+
+
+