From 7470da2719a404b344fec4d6b2fefd92f4ce22a5 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Fri, 7 May 2021 14:27:43 +0300 Subject: Implemented user profile page --- ExamTemplate/Services/Configurations/UserMappings.cs | 1 + ExamTemplate/Services/Models/UserServiceModel.cs | 9 +++++++++ ExamTemplate/Services/UserService.cs | 7 +++++++ ExamTemplate/Web/Configurations/UserMappings.cs | 1 + ExamTemplate/Web/Controllers/UserController.cs | 18 +++++++++++++++++- ExamTemplate/Web/Models/User/UserViewModel.cs | 9 +++++++++ ExamTemplate/Web/Views/Shared/_Navbar.cshtml | 4 +++- ExamTemplate/Web/Views/User/Profile.cshtml | 13 +++++++++++++ ExamTemplate/Web/Views/_ViewImports.cshtml | 1 + 9 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 ExamTemplate/Services/Models/UserServiceModel.cs create mode 100644 ExamTemplate/Web/Models/User/UserViewModel.cs create mode 100644 ExamTemplate/Web/Views/User/Profile.cshtml (limited to 'ExamTemplate') 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(); + CreateMap(); } } } 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 GetUserByUsernameAsync(string username) + { + User user = await this._userRepository.GetByUsernameAsync(username); + + return this._autoMapper.Map(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(); CreateMap(); + CreateMap(); } } } 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 Profile(string username) + { + UserServiceModel userServiceModel = await this._userService.GetUserByUsernameAsync(username); + + if (userServiceModel == default(UserServiceModel)) + { + return RedirectToAction("Login"); + } + + UserViewModel userViewModel = this._autoMapper.Map(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 @@
@if (SignInManager.IsSignedIn(User)) { - @UserManager.GetUserName(User) + + @UserManager.GetUserName(User) +
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"; +} + +

+

+ @Model.FirstName @Model.LastName +

+
+ @Model.Username +
+

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 -- cgit v1.2.3