diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-05-07 14:27:43 +0300 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2021-05-07 14:27:43 +0300 |
| commit | 7470da2719a404b344fec4d6b2fefd92f4ce22a5 (patch) | |
| tree | 2fd27618625fb58c238c468139f37a43731d6ac5 | |
| parent | 380f4d5d6120dcdb36e904aae98dd2e24db8a974 (diff) | |
| download | it-kariera-exam-template-7470da2719a404b344fec4d6b2fefd92f4ce22a5.tar it-kariera-exam-template-7470da2719a404b344fec4d6b2fefd92f4ce22a5.tar.gz it-kariera-exam-template-7470da2719a404b344fec4d6b2fefd92f4ce22a5.zip | |
Implemented user profile page
| -rw-r--r-- | ExamTemplate/Services/Configurations/UserMappings.cs | 1 | ||||
| -rw-r--r-- | ExamTemplate/Services/Models/UserServiceModel.cs | 9 | ||||
| -rw-r--r-- | ExamTemplate/Services/UserService.cs | 7 | ||||
| -rw-r--r-- | ExamTemplate/Web/Configurations/UserMappings.cs | 1 | ||||
| -rw-r--r-- | ExamTemplate/Web/Controllers/UserController.cs | 18 | ||||
| -rw-r--r-- | ExamTemplate/Web/Models/User/UserViewModel.cs | 9 | ||||
| -rw-r--r-- | ExamTemplate/Web/Views/Shared/_Navbar.cshtml | 4 | ||||
| -rw-r--r-- | ExamTemplate/Web/Views/User/Profile.cshtml | 13 | ||||
| -rw-r--r-- | ExamTemplate/Web/Views/_ViewImports.cshtml | 1 |
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
|
