Advertisement
Guest User

Untitled

a guest
Nov 12th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.45 KB | None | 0 0
  1. using menushell.Models;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5.  
  6. namespace menushell.Data
  7. {
  8. public static class Database
  9. {
  10. private static UserEntities _userEntities = new UserEntities();
  11.  
  12. public static IEnumerable<User> Users => _userEntities.Users.Values;
  13.  
  14. public static void LoadUsers()
  15. {
  16. _userEntities.LoadMockUser();
  17. }
  18.  
  19. public static bool TryAddUser(User user)
  20. {
  21. user.Id = Users.Count();
  22. return _userEntities.Users.TryAdd(user.Id, user);
  23. }
  24.  
  25. public static bool TryRemoveUser(User user)
  26. {
  27. return _userEntities.Users.Remove(user.Id);
  28. }
  29. }
  30. -------
  31. using menushell.Models;
  32. using System;
  33. using System.Collections.Generic;
  34.  
  35. namespace menushell.Data
  36. {
  37. public class UserEntities
  38. {
  39. public Dictionary<int, User> Users = new Dictionary<int, User>();
  40.  
  41. public void LoadMockUser()
  42. {
  43. Users.Add(0, new User() { Id = 0, Username = "Reiko", Password = "abc123" });
  44. }
  45. }
  46. }
  47. ----
  48. namespace menushell.Models
  49. {
  50. public class User
  51. {
  52. public int Id { get; set; }
  53. public int ID { get; internal set; }
  54. public string Username { get; set; }
  55. public string Password { get; set; }
  56. public object Name { get; internal set; }
  57. }
  58. }
  59. -----
  60. using System;
  61.  
  62. namespace menushell.Views
  63. {
  64. public class AdminView : menushellView
  65. {
  66. public override void Display()
  67. {
  68. ClearPreviousView();
  69.  
  70. Console.WriteLine($"Welcome to the administrative view, {Program.CurrentUser.Username}!");
  71. Console.WriteLine("F1. Delete user");
  72. Console.WriteLine("F2. Logout");
  73.  
  74. var input = Console.ReadKey();
  75. menushellView view;
  76. switch (input.Key)
  77. {
  78. case ConsoleKey.F1:
  79. view = new DeleteUserView();
  80. break;
  81. case ConsoleKey.F2:
  82. Program.CurrentUser = null;
  83. view = new MenuView();
  84. break;
  85. default:
  86. Display();
  87. return;
  88. }
  89.  
  90. view.Display();
  91. }
  92. }
  93. }
  94. -----
  95. namespace menushell.Views
  96. {
  97. public class CreateUserView : menushellView
  98. {
  99. public override void Display()
  100. {
  101. ClearPreviousView();
  102.  
  103. Console.WriteLine("Creating new user...");
  104. Console.WriteLine();
  105. Console.Write("Enter the username: ");
  106. var username = Console.ReadLine();
  107.  
  108. Console.WriteLine();
  109.  
  110. Console.Write("Enter the password: ");
  111. var password = Console.ReadLine();
  112.  
  113. Console.WriteLine();
  114.  
  115. Console.Write("Confirm the password: ");
  116. var passwordConfirmation = Console.ReadLine();
  117.  
  118. if (password != passwordConfirmation)
  119. {
  120. Display();
  121. return;
  122. }
  123.  
  124. Database.TryAddUser(new User() { Username = username, Password = password });
  125. Console.WriteLine("User added to the database! Press any key to return to the main menu...");
  126. Console.ReadKey();
  127.  
  128. var view = new MenuView();
  129. view.Display();
  130. }
  131. }
  132. }
  133. -----
  134. namespace menushell.Views
  135. {
  136. public class DeleteUserView : menushellView
  137. {
  138. public override void Display()
  139. {
  140. ClearPreviousView();
  141.  
  142. Console.WriteLine("Currently deleting user...");
  143. Console.WriteLine();
  144. Console.Write("Enter the username of user: ");
  145. var username = Console.ReadLine();
  146. Console.WriteLine();
  147.  
  148. var user = Database.Users.FirstOrDefault(u => u.Username == username);
  149. if (user == default(User))
  150. {
  151. Display();
  152. return;
  153. }
  154.  
  155. menushellView view;
  156. Console.WriteLine($"Confirm: Delete user {user.Username}? F1 to delete, any other key to cancel.");
  157. if (Console.ReadKey().Key == ConsoleKey.F1)
  158. {
  159. if (Database.TryRemoveUser(user))
  160. {
  161. if (user == Program.CurrentUser)
  162. Program.CurrentUser = null;
  163.  
  164. ClearPreviousView();
  165. Console.WriteLine($"User {user.Username} deleted! Press any key to return to the main menu...");
  166. Console.ReadKey();
  167. }
  168. else
  169. {
  170. ClearPreviousView();
  171. Console.WriteLine($"Error attempting to delete user {user.Username}. Press any key to return to the main menu...");
  172. Console.ReadKey();
  173. }
  174. }
  175.  
  176. if (Program.CurrentUser == null)
  177. view = new MenuView();
  178. else view = new AdminView();
  179.  
  180. view.Display();
  181. }
  182. }
  183. }
  184. -----
  185. namespace menushell.Views
  186. {
  187. class ListUserView
  188. {
  189. public static void ListUsers(List<User> users)
  190. {
  191. Console.Clear();
  192. foreach (User user in users)
  193. {
  194. Console.WriteLine(user.Username);
  195. }
  196. Console.ReadKey();
  197. }
  198. }
  199. }
  200. ------
  201. namespace menushell.Views
  202. {
  203. public class LoginView : menushellView
  204. {
  205. public override void Display()
  206. {
  207. ClearPreviousView();
  208.  
  209. menushellView view;
  210.  
  211. Console.WriteLine("Attemping to login... type exit at any time to exit to the main menu.");
  212. Console.WriteLine();
  213. Console.Write("Username: ");
  214. var username = Console.ReadLine();
  215. if (username.ToLower() == "exit")
  216. {
  217. view = new MenuView();
  218. view.Display();
  219. return;
  220. }
  221.  
  222. Console.Write("Password: ");
  223. var password = Console.ReadLine();
  224. if (password.ToLower() == "exit")
  225. {
  226. view = new MenuView();
  227. view.Display();
  228. return;
  229. }
  230.  
  231. var user = Database.Users.FirstOrDefault(u => u.Username.ToLower() == username.ToLower() && u.Password == password);
  232. if (user == default(User))
  233. {
  234. Display();
  235. return;
  236. }
  237.  
  238. Program.CurrentUser = user;
  239.  
  240. view = new AdminView();
  241. view.Display();
  242. }
  243. }
  244. }
  245. ---
  246. namespace menushell.Views
  247. {
  248. public abstract class menushellView
  249. {
  250. public abstract void Display();
  251.  
  252. public void ClearPreviousView()
  253. {
  254. Console.Clear();
  255. }
  256. }
  257. }
  258. ---
  259. namespace menushell.Views
  260. {
  261. public class MenuView : menushellView
  262. {
  263. public override void Display()
  264.  
  265. {
  266. ClearPreviousView();
  267.  
  268. Console.WriteLine("This is the main menu. Pick an option...");
  269. Console.WriteLine("F1. Login as user");
  270. Console.WriteLine("F2. Create new user");
  271. Console.WriteLine("F3. Search user");
  272.  
  273. var input = Console.ReadKey();
  274. menushellView view;
  275. switch (input.Key)
  276. {
  277. case ConsoleKey.F1:
  278. view = new LoginView();
  279. break;
  280. case ConsoleKey.F2:
  281. view = new CreateUserView();
  282. break;
  283. case ConsoleKey.F3:
  284. view = new SearchUserView();
  285. break;
  286. default:
  287. Display();
  288. return;
  289. }
  290. view.Display();
  291. }
  292. }
  293. }
  294. ----
  295. using System;
  296. using System.Collections.Generic;
  297. using System.Linq;
  298. using System.Security.Cryptography.X509Certificates;
  299. using System.Text;
  300. using System.Threading;
  301. using menushell.Data;
  302. using menushell.Models;
  303.  
  304. namespace menushell.Views
  305. {
  306.  
  307. public class SearchUserView : menushellView
  308. {
  309. private List<User> users = new List<User>();
  310.  
  311. public override void Display()
  312. {
  313. // Provide output
  314.  
  315. //Modify users
  316.  
  317. Print(users); // Print all users
  318. }
  319.  
  320. public override void Print(List<User> users)
  321. {
  322. foreach (var user in users)
  323. {
  324. Console.WriteLine(user.Name);
  325. }
  326. }
  327.  
  328.  
  329. private void SearchUser(int id)
  330. {
  331. users.First(x =>
  332. x.ID == id); // Finds users based on id, this will work for names but id provides a faster look up
  333. }
  334.  
  335. private void DeleteUser(int id)
  336. {
  337. users.RemoveAll(x =>
  338. x.ID == id); // Removes users based on id, this will work for names but id provides a faster look up
  339. }
  340. }
  341. }
  342. ---
  343. namespace menushell
  344. {
  345. class Program
  346. {
  347. private static menushellView _view;
  348.  
  349. public static User CurrentUser;
  350.  
  351. static void Main(string[] args)
  352. {
  353. _view = new MenuView();
  354. _view.Display();
  355. }
  356.  
  357.  
  358. }
  359. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement