From 234f9496efab1f6245399f37c746661161ae9c45 Mon Sep 17 00:00:00 2001 From: samke404 Date: Mon, 30 Jan 2023 16:41:20 +0200 Subject: [PATCH] Update module UpdateViewModel GetViewModel --- Foodmoji.Api/Controllers/AccountController.cs | 37 +++++++++++++++++-- .../Helpers/Extensions/AccountExtensions.cs | 11 ++++++ .../Account/UpdateAccountViewModel.cs | 30 +++++++++++++++ .../Account/getAllAccountsViewModel.cs | 29 +++++++++++++++ Foodmoji_Domain/Models/Account.cs | 5 +-- Foodmoji_Domain/Models/AccountRole.cs | 6 +-- Foodmoji_Domain/Models/Customer.cs | 5 +-- Foodmoji_Domain/Models/Order.cs | 5 +-- Foodmoji_Domain/Models/Product.cs | 5 +-- Foodmoji_Domain/Models/Role.cs | 5 +-- 10 files changed, 115 insertions(+), 23 deletions(-) create mode 100644 Foodmoji_Application/ViewModels/Account/UpdateAccountViewModel.cs create mode 100644 Foodmoji_Application/ViewModels/Account/getAllAccountsViewModel.cs diff --git a/Foodmoji.Api/Controllers/AccountController.cs b/Foodmoji.Api/Controllers/AccountController.cs index 795b301..d01791b 100644 --- a/Foodmoji.Api/Controllers/AccountController.cs +++ b/Foodmoji.Api/Controllers/AccountController.cs @@ -68,8 +68,10 @@ public async Task createUserAccount([FromBody] RegisterAccountVie [Route("login")] public async Task userLogin([FromBody] LoginViewModel account) { + if (!ModelState.IsValid) return BadRequest(ModelState); try { + //String userPassword = password.hashPassword(account.Password); var dbUser = _accountRepo.Where(user => user.Email == account.Email && user.Password == account.Password).Select(user => new { @@ -97,15 +99,16 @@ public async Task userLogin([FromBody] LoginViewModel account) [HttpPut] [Route("updateUserAccount")] - public async Task updateUserAccount([FromBody] RegisterAccountViewModel account) + public async Task updateUserAccount([FromBody] UpdateAccountViewModel model) { + if (!ModelState.IsValid) return BadRequest(ModelState); try { - var userAccount = _accountRepo.FindAll(); + var userAccount = _accountRepo.Where(x => x.Id == model.Id).FirstOrDefault(); if (userAccount != null) { - var updateAccount = account.ToEntity(); + var updateAccount = model.ToEntity(userAccount); _accountRepo.Update(updateAccount); _accountRepo.Save(); @@ -131,7 +134,33 @@ public async Task updateUserAccount([FromBody] RegisterAccountVie [Route("getAllAccounts")] public async Task getAllAccounts() { - return Ok(_accountRepo.FindAll()); + try + { + + return Ok(_accountRepo.FindAll); + } + catch (Exception) + { + return StatusCode(StatusCodes.Status500InternalServerError, "Error retrieving data from the database"); + } + + } + + [HttpGet] + [Route("userAccount/{id}")] + public async Task getId(int id) + { + + return Ok(new {userID = id}); + } + + [HttpGet] + [Route("Users/currentUser")] + public async Task getLoggedInUserID() + { + int id = Convert.ToInt32(HttpContext.User.FindFirstValue("userID")); + + return Ok(new { userID = id }); } } diff --git a/Foodmoji_Application/Helpers/Extensions/AccountExtensions.cs b/Foodmoji_Application/Helpers/Extensions/AccountExtensions.cs index 5816a02..a345969 100644 --- a/Foodmoji_Application/Helpers/Extensions/AccountExtensions.cs +++ b/Foodmoji_Application/Helpers/Extensions/AccountExtensions.cs @@ -21,5 +21,16 @@ public static Account ToEntity(this RegisterAccountViewModel model) Password = model.Password }; } + + public static Account ToEntity(this UpdateAccountViewModel model, Account entity) + { + entity.FirstName = model.FirstName; + entity.Surname = model.Surname; + entity.Email = model.Email; + entity.PhoneNumber = model.PhoneNumber; + entity.Password = model.Password; + + return entity; + } } } diff --git a/Foodmoji_Application/ViewModels/Account/UpdateAccountViewModel.cs b/Foodmoji_Application/ViewModels/Account/UpdateAccountViewModel.cs new file mode 100644 index 0000000..d29bca0 --- /dev/null +++ b/Foodmoji_Application/ViewModels/Account/UpdateAccountViewModel.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Foodmoji_Application.ViewModels.Account +{ + public class UpdateAccountViewModel + { + public int Id { get; set; } + + [MaxLength(50), Required(ErrorMessage = "Firstname is required")] + public string FirstName { get; set; } + + [MaxLength(50), Required(ErrorMessage = "Surname is required")] + public string Surname { get; set; } + + [MaxLength(100)] + [Required, EmailAddress(ErrorMessage = "Email address is required, please enter a valid email address")] + public string Email { get; set; } + + [MaxLength(15), Phone(ErrorMessage = "Please enter a valid phone number")] + public string PhoneNumber { get; set; } + + [MaxLength(6), Required(ErrorMessage = "Please enter a password with maximum of 6 characters")] + public string Password { get; set; } + } +} diff --git a/Foodmoji_Application/ViewModels/Account/getAllAccountsViewModel.cs b/Foodmoji_Application/ViewModels/Account/getAllAccountsViewModel.cs new file mode 100644 index 0000000..fd74cdb --- /dev/null +++ b/Foodmoji_Application/ViewModels/Account/getAllAccountsViewModel.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Foodmoji_Application.ViewModels.Account +{ + public class getAllAccountsViewModel + { + [MaxLength(50), Required(ErrorMessage = "Firstname is required")] + public string FirstName { get; set; } + + [MaxLength(50), Required(ErrorMessage = "Surname is required")] + public string Surname { get; set; } + + [MaxLength(100)] + [Required, EmailAddress(ErrorMessage = "Email address is required, please enter a valid email address")] + public string Email { get; set; } + + [MaxLength(15), Phone(ErrorMessage = "Please enter a valid phone number")] + public string PhoneNumber { get; set; } + + [MaxLength(6), Required(ErrorMessage = "Please enter a password with maximum of 6 characters")] + public string Password { get; set; } + + } +} diff --git a/Foodmoji_Domain/Models/Account.cs b/Foodmoji_Domain/Models/Account.cs index d7dd5ea..628881f 100644 --- a/Foodmoji_Domain/Models/Account.cs +++ b/Foodmoji_Domain/Models/Account.cs @@ -8,10 +8,9 @@ namespace Foodmoji_Domain.Models { - public class Account + public class Account : AuditEntity { - [Key] - public int Id { get; set; } + [MaxLength(50), Required(ErrorMessage = "Firstname is required")] public string FirstName { get; set; } diff --git a/Foodmoji_Domain/Models/AccountRole.cs b/Foodmoji_Domain/Models/AccountRole.cs index 12bdebd..1dd0bd1 100644 --- a/Foodmoji_Domain/Models/AccountRole.cs +++ b/Foodmoji_Domain/Models/AccountRole.cs @@ -7,11 +7,9 @@ namespace Foodmoji_Domain.Models { - public class AccountRole + public class AccountRole : AuditEntity { - [Key] - - public int Id { get; set; } + public int AccountId { get; set; } public virtual Account Account { get; set; } // Public List Accounts { get: set} = new List(); lookup diff --git a/Foodmoji_Domain/Models/Customer.cs b/Foodmoji_Domain/Models/Customer.cs index 38b0037..4860508 100644 --- a/Foodmoji_Domain/Models/Customer.cs +++ b/Foodmoji_Domain/Models/Customer.cs @@ -4,10 +4,9 @@ namespace Foodmoji_Domain.Models { - public class Customer + public class Customer : AuditEntity { - [Key] - public int Id { get; set; } + [MaxLength(100), Required(ErrorMessage = "Name is required")] public string Firstname { get; set; } diff --git a/Foodmoji_Domain/Models/Order.cs b/Foodmoji_Domain/Models/Order.cs index 4522a65..5a41929 100644 --- a/Foodmoji_Domain/Models/Order.cs +++ b/Foodmoji_Domain/Models/Order.cs @@ -5,10 +5,9 @@ namespace Foodmoji_Domain.Models { - public class Order + public class Order : AuditEntity { - [Key] - public int Id { get; set; } + public DateTime Date { get; set; } [Required(ErrorMessage = "Please enter the quantity for this order")] public int Quantity { get; set; } diff --git a/Foodmoji_Domain/Models/Product.cs b/Foodmoji_Domain/Models/Product.cs index 718ba07..cc976bc 100644 --- a/Foodmoji_Domain/Models/Product.cs +++ b/Foodmoji_Domain/Models/Product.cs @@ -4,10 +4,9 @@ namespace Foodmoji_Domain.Models { - public class Product + public class Product : AuditEntity { - [Key] - public int Id { get; set; } + [Required (ErrorMessage = "Please provide a valid product name")] public string ProductName { get; set; } diff --git a/Foodmoji_Domain/Models/Role.cs b/Foodmoji_Domain/Models/Role.cs index 616c237..c390138 100644 --- a/Foodmoji_Domain/Models/Role.cs +++ b/Foodmoji_Domain/Models/Role.cs @@ -8,10 +8,9 @@ namespace Foodmoji_Domain.Models { - public class Role + public class Role : AuditEntity { - [Key] - public int Id { get; set; } + [MaxLength(100), Required(ErrorMessage = "Nmae is required")] public string Name { get; set; }