aboutsummaryrefslogtreecommitdiff
path: root/ExamTemplate
diff options
context:
space:
mode:
Diffstat (limited to 'ExamTemplate')
-rw-r--r--ExamTemplate/Services/Configurations/UserMappings.cs1
-rw-r--r--ExamTemplate/Services/Models/UserServiceModel.cs9
-rw-r--r--ExamTemplate/Services/UserService.cs7
-rw-r--r--ExamTemplate/Web/Configurations/UserMappings.cs1
-rw-r--r--ExamTemplate/Web/Controllers/UserController.cs18
-rw-r--r--ExamTemplate/Web/Models/User/UserViewModel.cs9
-rw-r--r--ExamTemplate/Web/Views/Shared/_Navbar.cshtml4
-rw-r--r--ExamTemplate/Web/Views/User/Profile.cshtml13
-rw-r--r--ExamTemplate/Web/Views/_ViewImports.cshtml1
9 files changed, 61 insertions, 2 deletions
diff --git a/ExamTemplate/Services/Configurations/UserMappings.cs b/ExamTemplate/Services/Configurations/UserMappings.cs
index 13c6633..1852139 100644
--- a/ExamTemplate/Services/Configurations/UserMappings.cs
+++ b/ExamTemplate/Services/Configurations/UserMappings.cs
@@ -9,6 +9,7 @@ namespace ExamTemplate.Services.Configurations
public UserMappings()
{
CreateMap<RegisterUserServiceModel, User>();
+ CreateMap<User, UserServiceModel>();
}
}
}
diff --git a/ExamTemplate/Services/Models/UserServiceModel.cs b/ExamTemplate/Services/Models/UserServiceModel.cs
new file mode 100644
index 0000000..8dcea69
--- /dev/null
+++ b/ExamTemplate/Services/Models/UserServiceModel.cs
@@ -0,0 +1,9 @@
+namespace ExamTemplate.Services.Models
+{
+ public class UserServiceModel
+ {
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string Username { get; set; }
+ }
+}
diff --git a/ExamTemplate/Services/UserService.cs b/ExamTemplate/Services/UserService.cs
index 332dccb..6b5078b 100644
--- a/ExamTemplate/Services/UserService.cs
+++ b/ExamTemplate/Services/UserService.cs
@@ -43,5 +43,12 @@ namespace ExamTemplate.Services
{
await this._signInManager.SignOutAsync();
}
+
+ public async Task<UserServiceModel> GetUserByUsernameAsync(string username)
+ {
+ User user = await this._userRepository.GetByUsernameAsync(username);
+
+ return this._autoMapper.Map<UserServiceModel>(user);
+ }
}
}
diff --git a/ExamTemplate/Web/Configurations/UserMappings.cs b/ExamTemplate/Web/Configurations/UserMappings.cs
index 37476ed..6a98477 100644
--- a/ExamTemplate/Web/Configurations/UserMappings.cs
+++ b/ExamTemplate/Web/Configurations/UserMappings.cs
@@ -10,6 +10,7 @@ namespace ExamTemplate.Services.Configurations
{
CreateMap<RegisterUserViewModel, RegisterUserServiceModel>();
CreateMap<LoginUserViewModel, LoginUserServiceModel>();
+ CreateMap<UserServiceModel, UserViewModel>();
}
}
}
diff --git a/ExamTemplate/Web/Controllers/UserController.cs b/ExamTemplate/Web/Controllers/UserController.cs
index 622a616..4a9cf31 100644
--- a/ExamTemplate/Web/Controllers/UserController.cs
+++ b/ExamTemplate/Web/Controllers/UserController.cs
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace ExamTemplate.Web.Controllers
{
- public class UserController : Controller
+ public class UserController : Controller
{
private readonly IMapper _autoMapper;
private readonly UserService _userService;
@@ -73,5 +73,21 @@ namespace ExamTemplate.Web.Controllers
return RedirectToAction("Login");
}
+
+ [HttpGet]
+ [Route("/Profile/{username}")]
+ public async Task<IActionResult> Profile(string username)
+ {
+ UserServiceModel userServiceModel = await this._userService.GetUserByUsernameAsync(username);
+
+ if (userServiceModel == default(UserServiceModel))
+ {
+ return RedirectToAction("Login");
+ }
+
+ UserViewModel userViewModel = this._autoMapper.Map<UserViewModel>(userServiceModel);
+
+ return View(userViewModel);
+ }
}
}
diff --git a/ExamTemplate/Web/Models/User/UserViewModel.cs b/ExamTemplate/Web/Models/User/UserViewModel.cs
new file mode 100644
index 0000000..4cd815f
--- /dev/null
+++ b/ExamTemplate/Web/Models/User/UserViewModel.cs
@@ -0,0 +1,9 @@
+namespace ExamTemplate.Web.Models.User
+{
+ public class UserViewModel
+ {
+ public string FirstName { get; set; }
+ public string LastName { get; set; }
+ public string Username { get; set; }
+ }
+}
diff --git a/ExamTemplate/Web/Views/Shared/_Navbar.cshtml b/ExamTemplate/Web/Views/Shared/_Navbar.cshtml
index cde4b15..7ae8f50 100644
--- a/ExamTemplate/Web/Views/Shared/_Navbar.cshtml
+++ b/ExamTemplate/Web/Views/Shared/_Navbar.cshtml
@@ -13,7 +13,9 @@
<section>
@if (SignInManager.IsSignedIn(User))
{
- <a asp-controller="User" asp-action="">@UserManager.GetUserName(User)</a>
+ <a asp-controller="User" asp-action="Profile" asp-route-username="@UserManager.GetUserName(User)">
+ @UserManager.GetUserName(User)
+ </a>
<form asp-controller="User" asp-action="Logout" method="post">
<input type="submit" value="Logout">
diff --git a/ExamTemplate/Web/Views/User/Profile.cshtml b/ExamTemplate/Web/Views/User/Profile.cshtml
new file mode 100644
index 0000000..279de82
--- /dev/null
+++ b/ExamTemplate/Web/Views/User/Profile.cshtml
@@ -0,0 +1,13 @@
+@model UserViewModel
+@{
+ ViewData["Title"] = Model.Username + "'s Profile";
+}
+
+<p>
+ <h2>
+ @Model.FirstName @Model.LastName
+ </h2>
+ <div>
+ @Model.Username
+ </div>
+</p>
diff --git a/ExamTemplate/Web/Views/_ViewImports.cshtml b/ExamTemplate/Web/Views/_ViewImports.cshtml
index fcc5117..18502e4 100644
--- a/ExamTemplate/Web/Views/_ViewImports.cshtml
+++ b/ExamTemplate/Web/Views/_ViewImports.cshtml
@@ -1,4 +1,5 @@
@using ExamTemplate.Web
@using ExamTemplate.Web.Models
+@using ExamTemplate.Web.Models.User
@using ExamTemplate.Data.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers