/// <summary> /// Allows you to check the users session timer, if non action is made in 15 minutes, /// User is considered inactive. /// </summary> /// <param name="user"></param> /// <returns>boolean true if timer < 15, false if not.</returns> public bool CheckSessionTimer(Users user) { using (var db = new WebbshopContext()) { try { var timer = DateTime.Now - user.SessionTimer; var minutes = timer.TotalMinutes; if (minutes < 15) { user.IsActive = true; user.SessionTimer = DateTime.Now; db.SaveChanges(); return(true); } user.IsActive = false; db.SaveChanges(); return(false); } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Allows you to promote a user to Admin user. /// </summary> /// <param name="adminID"></param> /// <param name="userID"></param> /// <returns>true if success, false if fail</returns> public bool Promote(int adminID, int userID) { using (var db = new WebbshopContext()) { try { var adminUser = db.Users.FirstOrDefault(u => u.ID == adminID); bool isActive = CheckSessionTimer(adminUser); if (!isActive) { Console.WriteLine("You have to login to proceed"); return(false); } if (adminUser.IsAdmin) { var user = db.Users.FirstOrDefault(u => u.ID == userID); if (user != null) { user.IsAdmin = true; db.SaveChanges(); return(true); } } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Allows you to update the name of a category /// </summary> /// <param name="adminId"></param> /// <param name="categoryId"></param> /// <param name="name"></param> /// <returns>boolean true if success, false if not</returns> public bool UpdateCategory(int adminId, int categoryId, string name) { using (var db = new WebbshopContext()) { try { var adminUser = db.Users.FirstOrDefault(u => u.ID == adminId); bool isActive = CheckSessionTimer(adminUser); if (!isActive) { Console.WriteLine("You have to login to proceed"); return(false); } if (adminUser.IsAdmin) { var bookCategory = db.BookCategories.FirstOrDefault(b => b.ID == categoryId); if (bookCategory != null) { bookCategory.Genere = name; db.SaveChanges(); return(true); } } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Allows you to update an existing book /// </summary> /// <param name="adminId"></param> /// <param name="bookId"></param> /// <param name="title"></param> /// <param name="author"></param> /// <param name="price"></param> /// <returns>boolean true if successful, false if not</returns> public bool UpdateBook(int adminId, int bookId, string title, string author, int price) { using (var db = new WebbshopContext()) { try { var adminUser = db.Users.FirstOrDefault(u => u.ID == adminId); bool isActive = CheckSessionTimer(adminUser); if (!isActive) { Console.WriteLine("You have to login to proceed"); return(false); } if (adminUser.IsAdmin) { var book = db.Books.FirstOrDefault(b => b.ID == bookId); if (book != null) { book.Title = title; book.Author = author; book.Price = price; db.SaveChanges(); return(true); } } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Allows you to set a new amount to existing book /// </summary> /// <param name="adminId"></param> /// <param name="bookId"></param> /// <param name="newAmount"></param> /// <returns>boolean true if success, false if not</returns> //Assumption that this method should return true or false public bool SetAmount(int adminId, int bookId, int newAmount) { using (var db = new WebbshopContext()) { try { var adminUser = db.Users.FirstOrDefault(u => u.ID == adminId); bool isActive = CheckSessionTimer(adminUser); if (!isActive) { Console.WriteLine("You have to login to proceed"); return(false); } if (adminUser.IsAdmin) { var book = db.Books.FirstOrDefault(b => b.ID == bookId); if (book != null) { book.Amount = newAmount; db.SaveChanges(); return(true); } } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Allows you to register a new user /// </summary> /// <param name="name"></param> /// <param name="password"></param> /// <param name="passwordVerify"></param> /// <returns>boolean true if successful, false if not</returns> public bool Register(string name, string password, string passwordVerify) { using (var db = new WebbshopContext()) { try { var user = db.Users.FirstOrDefault(u => u.Name == name); if (user == null && password == passwordVerify) { var newlyCreatedUser = new Users { Name = name, Password = password, IsActive = true, IsAdmin = false }; db.Users.Add(newlyCreatedUser); db.SaveChanges(); return(true); } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Removes book, completely if the book amount is 0 or just the amount by 1 if higher /// </summary> /// <param name="adminId"></param> /// <param name="bookId"></param> /// <returns>boolean true if successful, false if not.</returns> public bool DeleteBook(int adminId, int bookId) { // would like to add ON DELETE SET NULL (Unsure of correct set up for this one, possibly modelbuilder in context(?)) using (var db = new WebbshopContext()) { try { var adminUser = db.Users.FirstOrDefault(u => u.ID == adminId); bool isActive = CheckSessionTimer(adminUser); if (!isActive) { Console.WriteLine("You have to login to proceed"); return(false); } if (adminUser.IsAdmin) { var book = db.Books.FirstOrDefault(b => b.ID == bookId); if (book != null) { if (book.Amount > 0) { book.Amount -= 1; db.SaveChanges(); return(true); } if (book.Amount == 0) { db.Books.Remove(book); db.SaveChanges(); return(true); } } } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Allows you to buy a book if the user exists, is active and if the book is available in stock /// </summary> /// <param name="userID"></param> /// <param name="bookID"></param> /// <returns>boolean true if successful, false if not</returns> public bool BuyBook(int userID, int bookID) { using (var db = new WebbshopContext()) { try { var user = db.Users.FirstOrDefault(u => u.ID == userID); if (user == null) { Console.WriteLine("User does not exist"); return(false); } bool isActive = CheckSessionTimer(user); if (!isActive) { Console.WriteLine("You have to login to proceed"); return(false); } var book = db.Books.Include(b => b.BookCategory).FirstOrDefault(b => b.ID == bookID); if (book != null) { if (book.Amount == 0) { Console.WriteLine("Book not available in stock."); return(false); } var soldBook = new SoldBooks { Title = book.Title, Author = book.Author, Price = book.Price, Amount = book.Amount, BookCategory = book.BookCategory, UsersId = userID, PurchaseDate = DateTime.Now }; db.SoldBooks.Add(soldBook); book.Amount -= 1; db.SaveChanges(); return(true); } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Allows you to delete a category as long as the category does not have any relation to books /// </summary> /// <param name="adminId"></param> /// <param name="categoryId"></param> /// <returns>true if successful, false if not</returns> public bool DeleteCategory(int adminId, int categoryId) { //would like to add ON DELETE SET NULL (Unsure of correct set up for this one, possibly modelbuilder in context(?)) using (var db = new WebbshopContext()) { try { var adminUser = db.Users.FirstOrDefault(u => u.ID == adminId); bool isActive = CheckSessionTimer(adminUser); if (!isActive) { Console.WriteLine("You have to login to proceed"); return(false); } if (adminUser.IsAdmin) { var category = db.BookCategories.FirstOrDefault(b => b.ID == categoryId); if (category != null) { var categoryRelation = db.Books .Include(b => b.BookCategory) .Where(b => b.BookCategoryId == categoryId).ToList(); if (categoryRelation.Count == 0) { db.BookCategories.Remove(category); db.SaveChanges(); return(true); } if (categoryRelation.Count > 0) { Console.WriteLine("Failed to delete category, there are books related to this category."); return(false); } } } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Logs out Users. /// </summary> /// <param name="userId"></param> public void Logout(int userId) { using (var db = new WebbshopContext()) { try { var user = db.Users.FirstOrDefault(u => u.ID == userId); if (user != null) { user.IsActive = false; user.SessionTimer = DateTime.MinValue; db.SaveChanges(); } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } } }
/// <summary> /// Allows you to add a new user if user does not already exist /// </summary> /// <param name="adminId"></param> /// <param name="userName"></param> /// <param name="userPassword"></param> /// <returns>true if success, false if not</returns> public bool AddUser(int adminId, string userName, string userPassword = "******") { using (var db = new WebbshopContext()) { try { var adminUser = db.Users.FirstOrDefault(u => u.ID == adminId); bool isActive = CheckSessionTimer(adminUser); if (!isActive) { Console.WriteLine("You have to login to proceed"); return(false); } if (adminUser.IsAdmin) { var user = db.Users.FirstOrDefault(u => u.Name == userName); if (user == null) { var newlyCreatedUser = new Users { Name = userName, Password = userPassword, IsActive = true, IsAdmin = false }; db.Users.Add(newlyCreatedUser); db.SaveChanges(); return(true); } } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(false); } }
/// <summary> /// Logs in Users /// </summary> /// <param name="userName"></param> /// <param name="userPassword"></param> /// <returns>boolean, true if successful, false if not</returns> public int Login(string userName, string userPassword) { using (var db = new WebbshopContext()) { try { var user = db.Users.FirstOrDefault(u => u.Name == userName && u.Password == userPassword); if (user != null) { user.IsActive = true; user.SessionTimer = DateTime.Now; user.LastLogin = DateTime.Now; db.SaveChanges(); return(user.ID); } } catch (Exception e) { Console.WriteLine($"Exception was thrown: {e.Message}"); } return(0); } }