diff --git a/LuminousSales/Business/Business/Interfaces/IController.cs b/LuminousSales/Business/Business/Interfaces/IController.cs index 9ada98c..26ac945 100644 --- a/LuminousSales/Business/Business/Interfaces/IController.cs +++ b/LuminousSales/Business/Business/Interfaces/IController.cs @@ -1,4 +1,5 @@ -using Models.Models; +using Models; +using Models.Models; using System; using System.Collections.Generic; using System.Text; @@ -8,12 +9,12 @@ namespace Business.Business.UserManagment interface IController { ICollection GetAll(); - T SearchById(int id); - ICollection SearchByApproximateName(string name); - T SearchByExactName(string name); - void UpdateNameById(int id, string newName); - void UpdateNameByOldName(string oldName, string newName); - void DeleteById(int id); - void DeleteByName(string name); + T Get(int id); + T Get(string name); + ICollection GetByApproximateName(string name); + void UpdateName(int id, string newName); + void UpdateName(string oldName, string newName); + void Delete(int id); + void Delete(string name); } } diff --git a/LuminousSales/Business/Business/Interfaces/IReadOnlyController.cs b/LuminousSales/Business/Business/Interfaces/IReadOnlyController.cs new file mode 100644 index 0000000..b52815f --- /dev/null +++ b/LuminousSales/Business/Business/Interfaces/IReadOnlyController.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Business.Business.Interfaces +{ + interface IReadOnlyController + { + ICollection GetAll(); + T Get(int id); + T Get(string name); + ICollection GetByApproximateName(string name); + } +} diff --git a/LuminousSales/Business/Business/UserManagment/Controllers/RoleController.cs b/LuminousSales/Business/Business/UserManagment/Controllers/RoleController.cs new file mode 100644 index 0000000..a91397a --- /dev/null +++ b/LuminousSales/Business/Business/UserManagment/Controllers/RoleController.cs @@ -0,0 +1,32 @@ +using Business.Business.Interfaces; +using Models; +using Models.Models; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Business.Business.UserManagment.Controllers +{ + class RoleController : IReadOnlyController + { + private LuminousContext context = new LuminousContext(); + + public ICollection GetAll() + { + return context.Role.ToList(); + } + public Role Get(int id) + { + return context.Role.Find(id); + } + public Role Get(string name) + { + return context.Role.FirstOrDefault(u => u.Name == name); + } + public ICollection GetByApproximateName(string name) + { + return context.Role.Where(u => u.Name.Contains(name)).ToList(); + } + } +} diff --git a/LuminousSales/Business/Business/UserManagment/Controllers/UserController.cs b/LuminousSales/Business/Business/UserManagment/Controllers/UserController.cs index 0e95bda..8b82427 100644 --- a/LuminousSales/Business/Business/UserManagment/Controllers/UserController.cs +++ b/LuminousSales/Business/Business/UserManagment/Controllers/UserController.cs @@ -1,52 +1,105 @@ -using Models; +using Business.Business.UserManagment.Controllers; +using Models; using Models.Models; using System; using System.Collections.Generic; -using System.Collections.ObjectModel; using System.Linq; -using System.Text; namespace Business.Business.UserManagment { public class UserController : IController { private LuminousContext context = new LuminousContext(); - + private RoleController rolectrl = new RoleController(); public ICollection GetAll() { return context.User.ToList(); } - public void DeleteById() + public void CheckIfUserEverCreated() { - throw new NotImplementedException(); + if (!GetAll().Any()) + { + throw new ArgumentException("No users in the database!"); + } } - - public void DeleteByName() + public User Get(int id) { - throw new NotImplementedException(); + return context.User.Find(id); } - public User SearchById(int id) - { - return context.User.FirstOrDefault(u => u.Id == id); - } - - public ICollection SearchByApproximateName(string name) - { - return context.User.Where(u => u.Name.Contains(name)).ToList(); - } - public User SearchByExactName(string name) + public User Get(string name) { return context.User.FirstOrDefault(u => u.Name == name); } - - public void UpdateNameById(int id, string newName) + public void ValidatePassword(string password) { - var user = SearchById(id); + if (!GetAll().Where(u => u.Password == password).Any()) + { + throw new ArgumentException("Invalid User!"); + } + } + public ICollection GetByApproximateName(string name) + { + return context.User.Where(u => u.Name.Contains(name)).ToList(); + } + public void RegisterItem(string name, string password, int roleId) + { + if (GetAll().Where(u => u.Name == name).Any()) + { + throw new ArgumentException("The username is already taken!"); + } + else if (GetAll().Where(u => u.Password == password).Any()) + { + throw new ArgumentException("The password is already taken"!); + } + else + { + var foundRole = rolectrl.Get(roleId); + if (foundRole != null) + { + var user = new User(name, password, roleId); + context.User.Add(user); + context.SaveChanges(); + } + else + { + throw new ArgumentException("Role not found!"); + } + } + } + public void RegisterItem(string name, string password, string roleName) + { + if (GetAll().Where(u => u.Name == name).Any()) + { + throw new ArgumentException("The username is already taken!"); + } + else if (GetAll().Where(u => u.Password == password).Any()) + { + throw new ArgumentException("The password is already taken"!); + } + else + { + var foundRole = rolectrl.Get(roleName); + if (foundRole != null) + { + var user = new User(name, password, foundRole.Id); + context.User.Add(user); + context.SaveChanges(); + } + else + { + throw new ArgumentException("Role not found!"); + } + } + } + public void UpdateName(int id, string newName) + { + var user = Get(id); if (user != null) { if (user.Name != newName) { user.Name = newName; + context.SaveChanges(); } else { @@ -58,15 +111,15 @@ namespace Business.Business.UserManagment throw new ArgumentException("No user with such id"); } } - - public void UpdateNameByOldName(string oldName, string newName) + public void UpdateName(string oldName, string newName) { if (oldName != newName) { - var user = SearchByExactName(oldName); + var user = Get(oldName); if (user != null) { user.Name = newName; + context.SaveChanges(); } else { @@ -79,14 +132,15 @@ namespace Business.Business.UserManagment } } - public void UpdatePasswordById(int id, string newPassword) + public void UpdatePassword(int id, string newPassword) { - var user = SearchById(id); + var user = Get(id); if (user != null) { if (user.Password != newPassword) { user.Password = newPassword; + context.SaveChanges(); } else { @@ -98,14 +152,15 @@ namespace Business.Business.UserManagment throw new ArgumentException("User not found"); } } - public void UpdatePasswordByName(string name, string newPassword) + public void UpdatePassword(string name, string newPassword) { - var user = SearchByExactName(name); + var user = Get(name); if (user != null) { if (user.Password != newPassword) { user.Password = newPassword; + context.SaveChanges(); } else { @@ -117,15 +172,115 @@ namespace Business.Business.UserManagment throw new ArgumentException("User not found"); } } - - public void DeleteById(int id) + public void UpdateRole(int id, int RoleId) { - throw new NotImplementedException(); + var user = Get(id); + if (user != null) + { + var foundRole = rolectrl.Get(RoleId); + if (foundRole != null) + { + user.RoleId = RoleId; + context.SaveChanges(); + } + else + { + throw new ArgumentException("Role not found!"); + } + } + else + { + throw new ArgumentException("User not found"); + } } - - public void DeleteByName(string name) + public void UpdateRole(int id, string roleName) { - throw new NotImplementedException(); + var user = Get(id); + if (user != null) + { + var foundRole = rolectrl.Get(roleName); + if (foundRole != null) + { + user.RoleId = foundRole.Id; + context.SaveChanges(); + } + else + { + throw new ArgumentException("Role not found!"); + } + } + else + { + throw new ArgumentException("User not found"); + } + } + public void UpdateRole(string name, int roleId) + { + var user = Get(name); + if (user != null) + { + var foundRole = rolectrl.Get(roleId); + if (foundRole != null) + { + user.RoleId = roleId; + context.SaveChanges(); + } + else + { + throw new ArgumentException("Role not found!"); + } + } + else + { + throw new ArgumentException("User not found"); + } + } + public void UpdateRole(string name, string roleName) + { + var user = Get(name); + if (user != null) + { + var foundRole = rolectrl.Get(roleName); + if (foundRole != null) + { + user.RoleId = foundRole.Id; + context.SaveChanges(); + } + else + { + throw new ArgumentException("Role not found!"); + } + } + else + { + throw new ArgumentException("User not found"); + } + } + public void Delete(int id) + { + var user = Get(id); + if (user != null) + { + context.User.Remove(user); + context.SaveChanges(); + } + else + { + throw new ArgumentException("User not found"); + } + } + public void Delete(string name) + { + var user = Get(name); + if (user != null) + { + context.User.Remove(user); + context.SaveChanges(); + } + else + { + throw new ArgumentException("User not found"); + } } } -} +} \ No newline at end of file diff --git a/LuminousSales/Business/Business/UserManagment/CreateInitialUser.cs b/LuminousSales/Business/Business/UserManagment/CreateInitialUser.cs index d6df069..711856a 100644 --- a/LuminousSales/Business/Business/UserManagment/CreateInitialUser.cs +++ b/LuminousSales/Business/Business/UserManagment/CreateInitialUser.cs @@ -34,7 +34,7 @@ namespace Business.Business.UserManagment using (context = new LuminousContext()) { int roleToAttach = context.Role.FirstOrDefault(r => r.Name == "Admin").Id; - userctl.CreateUser(this.Username, this.Password, roleToAttach); + userctl.RegisterItem(this.Username, this.Password, roleToAttach); } } diff --git a/LuminousSales/Business/UserManagment/IController.cs b/LuminousSales/Business/UserManagment/IController.cs deleted file mode 100644 index 4ff079f..0000000 --- a/LuminousSales/Business/UserManagment/IController.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Business.Business.UserManagment -{ - public interface IController - { - } -} \ No newline at end of file diff --git a/LuminousSales/Display/Program.cs b/LuminousSales/Display/Program.cs index 8137f9b..7c3a204 100644 --- a/LuminousSales/Display/Program.cs +++ b/LuminousSales/Display/Program.cs @@ -10,13 +10,14 @@ namespace Display { static void Main(string[] args) { - var val = new UserValidator(); try { - val.CheckIfUserEverCreated(); - var InitialCreation = new CreateInitialUser("Admin", "pass123"); - InitialCreation.CreateRoles(); - InitialCreation.CreateFirstUser(); + var a = new UserController(); + a.UpdateRole(1, "Cashier"); + foreach (var item in a.GetAll()) + { + Console.WriteLine($"{item.Name} {item.Role.Name}"); + } } catch (Exception e) {