예제 #1
0
        /// <summary>
        /// Allows admin user to add a new user
        /// </summary>
        /// <param name="adminId"></param>
        private void AddUser(int adminId)
        {
            ManageAccountViews.AddAccount();
            var userName = Console.ReadLine();
            var password = Console.ReadLine();

            if (userName != "" && password != "")
            {
                WebbShopAPI api    = new WebbShopAPI();
                var         result = api.AddUser(adminId, userName, password);
                if (result)
                {
                    MessageViews.DisplaySuccessMessage();
                    return;
                }
            }
            if (userName != "" && password == "")
            {
                WebbShopAPI api    = new WebbShopAPI();
                var         result = api.AddUser(adminId, userName);
                if (result)
                {
                    MessageViews.DisplaySuccessMessage();
                    return;
                }
            }

            ManageAccountViews.RegisterFailed();
        }
예제 #2
0
        /// <summary>
        /// Allows admin user to update an existing category
        /// </summary>
        /// <param name="adminId"></param>
        private void UpdateCategory(int adminId)
        {
            new Book().ViewAllCategories();
            MessageViews.DisplaySelectMessage();
            MessageViews.DisplayReturnMessage();

            var categoryId = InputHelper.ParseInput();

            if (categoryId == 0)
            {
                return;
            }

            AdminView.UpdateCategoryPage();
            var genere = Console.ReadLine();

            if (genere != "")
            {
                WebbShopAPI api    = new WebbShopAPI();
                var         result = api.UpdateCategory(adminId, categoryId, genere);
                if (result)
                {
                    MessageViews.DisplaySuccessMessage();
                    return;
                }
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #3
0
        /// <summary>
        /// Allows an admin user to update an existing book
        /// </summary>
        /// <param name="adminId"></param>
        private void UpdateBook(int adminId)
        {
            new Book().FindAllAvailableBooks();
            MessageViews.DisplaySelectMessage();
            MessageViews.DisplayReturnMessage();

            var bookId = InputHelper.ParseInput();

            if (bookId == 0)
            {
                return;
            }

            AdminView.UpdateBookPage();
            var title  = Console.ReadLine();
            var author = Console.ReadLine();
            var price  = InputHelper.ParseInput();

            if (title != "" && author != "" && price != 0)
            {
                WebbShopAPI api    = new WebbShopAPI();
                bool        result = api.UpdateBook(adminId, bookId, title, author, price);
                if (result)
                {
                    MessageViews.DisplaySuccessMessage();
                    return;
                }
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #4
0
        /// <summary>
        /// Allows an admin user to add a book to category
        /// </summary>
        /// <param name="adminId"></param>
        private void AddBookToCategory(int adminId)
        {
            AdminView.AddBookCategory();
            new Book().SearchBooksByTitle();
            MessageViews.DisplaySelectMessage();
            var bookId = InputHelper.ParseInput();

            new Book().ViewAllCategories();
            MessageViews.DisplaySelectMessage();
            MessageViews.DisplayReturnMessage();

            var categoryId = InputHelper.ParseInput();

            if (categoryId == 0)
            {
                return;
            }

            if (bookId != 0 && categoryId != 0)
            {
                WebbShopAPI api    = new WebbShopAPI();
                var         result = api.AddBookToCategory(adminId, bookId, categoryId);
                if (result)
                {
                    MessageViews.DisplaySuccessMessage();
                    return;
                }
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #5
0
        /// <summary>
        /// Allows admin user to set the amount of a book
        /// </summary>
        /// <param name="adminId"></param>
        private void SetAmount(int adminId)
        {
            new Book().FindAllAvailableBooks();
            AdminView.SetAmountPage();
            MessageViews.DisplayReturnMessage();

            var bookId = InputHelper.ParseInput();

            if (bookId == 0)
            {
                return;
            }

            var newAmount = InputHelper.ParseInput();

            WebbShopAPI api    = new WebbShopAPI();
            bool        result = api.SetAmount(adminId, bookId, newAmount);

            if (result)
            {
                MessageViews.DisplaySuccessMessage();
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #6
0
        public static void ShowCategories()
        {
            var categories = WebbShopAPI.GetCategories();

            foreach (var cat in categories)
            {
                Console.WriteLine($"{cat.Id}. {cat.Name}");
            }
        }
예제 #7
0
        public static void ShowBooks()
        {
            var books = WebbShopAPI.GetAllBooks();

            foreach (var book in books)
            {
                Console.WriteLine($"{book.Id}. {book.Title} by {book.Author}. Price: {book.Price} sek. Available amount: {book.Amount}");
            }
        }
예제 #8
0
        /// <summary>
        /// Checks the status of the registration
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="userPassword"></param>
        /// <param name="verifyPassword"></param>
        /// <returns>boolean, true if success, false if not</returns>
        private bool CheckRegistrationStatus(string userName, string userPassword, string verifyPassword)
        {
            if (userName != "" && userPassword != "" && verifyPassword != "")
            {
                WebbShopAPI api = new WebbShopAPI();
                return(api.Register(userName, userPassword, verifyPassword));
            }

            return(false);
        }
예제 #9
0
        /// <summary>
        /// Runs the logout functionality page
        /// </summary>
        /// <param name="userId"></param>
        public void Run(int userId)
        {
            if (userId != 0)
            {
                WebbShopAPI api = new WebbShopAPI();
                api.Logout(userId);
            }

            AccountViews.LogoutUser();
        }
예제 #10
0
        /// <summary>
        /// Checks an random admin functionality to see if user is admin
        /// </summary>
        /// <param name="userId"></param>
        /// <returns>boolean true if successful, false if not</returns>
        private bool CheckAdmin(int userId)
        {
            WebbShopAPI api = new WebbShopAPI();
            //if the return value is larger than 0 the userId is valid.
            var list = api.ListUsers(userId);

            if (list.Count > 0)
            {
                return(true);
            }
            return(false);
        }
예제 #11
0
        /// <summary>
        /// Allows admin user to view the sum of all sold books
        /// </summary>
        /// <param name="adminId"></param>
        private void ViewTotalIncome(int adminId)
        {
            WebbShopAPI api         = new WebbShopAPI();
            var         totalIncome = api.MoneyEarned(adminId);

            if (totalIncome != 0)
            {
                AdminView.DisplayMoneyEarned(totalIncome);
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #12
0
        /// <summary>
        /// Allows you to view details for a specific book
        /// </summary>
        /// <param name="bookId"></param>
        public void ViewDetails(int bookId)
        {
            WebbShopAPI api         = new WebbShopAPI();
            var         bookDetails = api.GetBook(bookId);

            if (bookDetails != string.Empty)
            {
                BookViews.DisplayDetails(bookDetails);
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #13
0
        /// <summary>
        /// Allows an admin user to view all sold books
        /// </summary>
        /// <param name="adminId"></param>
        private void ViewAllSoldItems(int adminId)
        {
            WebbShopAPI api             = new WebbShopAPI();
            var         listOfSoldItems = api.SoldItems(adminId);

            if (listOfSoldItems != null)
            {
                AdminView.DisplaySoldItems(listOfSoldItems);
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #14
0
        /// <summary>
        /// Allows an admin user to see which customer bought the most books
        /// </summary>
        /// <param name="adminId"></param>
        private void ViewBestCustomer(int adminId)
        {
            WebbShopAPI api        = new WebbShopAPI();
            var         customerId = api.BestCustomer(adminId);

            if (customerId != 0)
            {
                AdminView.DisplayBestCustomer(customerId);
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #15
0
        /// <summary>
        /// Allows an admin user to view all users
        /// </summary>
        /// <param name="adminId"></param>
        private void ViewAllUsers(int adminId)
        {
            WebbShopAPI api         = new WebbShopAPI();
            var         listOfUsers = api.ListUsers(adminId);

            if (listOfUsers != null)
            {
                var sortUserList = listOfUsers.OrderBy(u => u.ID).ToList();
                AdminView.DisplayUsers(sortUserList);
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #16
0
        /// <summary>
        /// Allows you to view all book categories
        /// </summary>
        public void ViewAllCategories()
        {
            WebbShopAPI api = new WebbShopAPI();
            var         listOfCategories = api.GetCategories().ToList();

            if (listOfCategories != null)
            {
                var sortCategoryList = listOfCategories.OrderBy(c => c.ID).ToList();
                BookViews.DisplayCategoryList(sortCategoryList);
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #17
0
        /// <summary>
        /// Allows you to purchase chosen book
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="bookId"></param>
        public void PurchaseBook(int userId, int bookId)
        {
            WebbShopAPI api = new WebbShopAPI();

            if (userId != 0 && bookId != 0)
            {
                var result = api.BuyBook(userId, bookId);
                if (result)
                {
                    MessageViews.DisplaySuccessMessage();
                    return;
                }
            }
            PurchaseViews.DisplayErrorMessage();
        }
예제 #18
0
        /// <summary>
        /// Checks if login succeeded
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="userPassword"></param>
        /// <returns>integer, user id if successful, 0 if not</returns>
        public int CheckLoginStatus(string userName, string userPassword)
        {
            if (userName != "" && userPassword != "")
            {
                WebbShopAPI api  = new WebbShopAPI();
                var         user = api.Login(userName, userPassword);
                if (user != 0)
                {
                    AccountViews.LoginSuccess();
                    return(user);
                }
            }

            AccountViews.LoginFailed();
            return(0);
        }
예제 #19
0
        /// <summary>
        /// Runs the home functionality page
        /// </summary>
        public void Run()
        {
            Seeder.Seed();
            bool keepGoing = true;

            while (keepGoing)
            {
                HomeView.MainMeny();
                var input = InputHelper.ParseInput();
                if (userId > 0)
                {
                    WebbShopAPI api = new WebbShopAPI();
                    api.Ping(userId);
                }
                switch (input)
                {
                case 1:
                    userId = new Login().Run();
                    break;

                case 2:
                    new User().RegisterAccount();
                    break;

                case 3:
                    new Book().Run();
                    break;

                case 4:
                    new Purchase().Run(userId);
                    break;

                case 5:
                    userId = new Admin().Run();
                    break;

                case 6:
                    new Logout().Run(userId);
                    keepGoing = false;
                    break;

                default:
                    MessageViews.DisplayNonAvailableMessage();
                    break;
                }
            }
        }
예제 #20
0
        /// <summary>
        /// Uses all book categories to fetch all books in each category
        /// </summary>
        /// <returns></returns>
        public List <Books> GetAllBooks()
        {
            var listOfBooks = new List <Books>();

            WebbShopAPI api = new WebbShopAPI();
            var         listOfCategories = api.GetCategories().ToList();

            if (listOfCategories != null)
            {
                foreach (var category in listOfCategories)
                {
                    listOfBooks.AddRange(api.GetAvailableBooks(category.ID).ToList());
                }
                return(listOfBooks);
            }

            return(new List <Books>());
        }
예제 #21
0
        /// <summary>
        /// Allows you to search for a specific category
        /// </summary>
        public void SearchFunctionCategories()
        {
            BookViews.SearchPage();
            var keyword = Console.ReadLine();

            if (keyword != "")
            {
                WebbShopAPI api = new WebbShopAPI();
                var         listOfCategories = api.GetCategories(keyword).ToList();
                if (listOfCategories != null)
                {
                    BookViews.DisplayCategoryList(listOfCategories);
                    return;
                }
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #22
0
        /// <summary>
        /// Allows you to search for books based to title
        /// </summary>
        public void SearchBooksByTitle()
        {
            BookViews.SearchPage();
            var keyword = Console.ReadLine();

            if (keyword != "")
            {
                WebbShopAPI api         = new WebbShopAPI();
                var         listOfBooks = api.GetBooks(keyword).ToList();
                if (listOfBooks != null)
                {
                    BookViews.DisplayBookList(listOfBooks);
                    return;
                }
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #23
0
        /// <summary>
        /// Allows admin user to add a new category
        /// </summary>
        /// <param name="adminId"></param>
        private void AddCategory(int adminId)
        {
            AdminView.AddCategoryPage();
            var genere = Console.ReadLine();

            if (genere != "")
            {
                WebbShopAPI api    = new WebbShopAPI();
                var         result = api.AddCategory(adminId, genere);
                if (result)
                {
                    MessageViews.DisplaySuccessMessage();
                    return;
                }
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #24
0
        /// <summary>
        /// Allows an admin user to find another user
        /// </summary>
        /// <param name="adminId"></param>
        private void FindUser(int adminId)
        {
            AdminView.SearchPage();
            var keyword = Console.ReadLine();

            if (keyword != "")
            {
                WebbShopAPI api         = new WebbShopAPI();
                var         listOfUsers = api.FindUser(adminId, keyword);
                if (listOfUsers != null)
                {
                    var sortUserList = listOfUsers.OrderBy(u => u.ID).ToList();
                    AdminView.DisplayUsers(sortUserList);
                    return;
                }
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #25
0
        static void Main(string[] args)
        {
            do
            {
                Login.ShowFirstMenu();
                userId = WebbShopAPI.Login(Controllers.LoginController.username, Controllers.LoginController.password);

                if (userId > 0)
                {
                    if (WebbShopAPI.user.IsAdmin)
                    {
                        Console.Clear();
                        Console.WriteLine("Du är inloggad som Administrator");
                        do
                        {
                            View.AdminMenu.ShowAdminMenu();
                            choise = Console.ReadLine();
                            Controllers.AdminControllers.AdminMenuController.AdminMenu();
                        } while (choise != "q");
                    }
                    else
                    {
                        Console.WriteLine("Du är inloggad som user");
                        do
                        {
                            View.UserMenu.ShowUserMenu();
                            choise = Console.ReadLine();
                            Controllers.UserControllers.UserMenuController.ShowUserMenu();
                        } while (choise != "q");
                    }
                    if (choise == "q")
                    {
                        choise = "n";
                    }
                }
                else
                {
                    Console.WriteLine("Wrong username or password");
                    Console.Write("Try again (y/n): ");
                    choise = Console.ReadLine();
                }
            } while (choise != "n");
        }
예제 #26
0
        /// <summary>
        /// Allows an admin user to add a new book
        /// </summary>
        /// <param name="adminId"></param>
        private void AddBook(int adminId)
        {
            AdminView.AddBookPage();
            var title  = Console.ReadLine();
            var author = Console.ReadLine();
            var price  = InputHelper.ParseInput();
            var amount = InputHelper.ParseInput();

            if (title != "" && author != "" && price != 0 && amount != 0)
            {
                WebbShopAPI api    = new WebbShopAPI();
                bool        result = api.AddBook(adminId, title, author, price, amount);
                if (result)
                {
                    MessageViews.DisplaySuccessMessage();
                    return;
                }
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #27
0
        /// <summary>
        /// Allows admin user to demote another admin user
        /// </summary>
        /// <param name="adminId"></param>
        private void DemoteUser(int adminId)
        {
            ViewAllUsers(adminId);
            MessageViews.DisplaySelectMessage();
            MessageViews.DisplayReturnMessage();
            var userId = InputHelper.ParseInput();

            if (userId == 0)
            {
                return;
            }

            WebbShopAPI api    = new WebbShopAPI();
            bool        result = api.Demote(adminId, userId);

            if (result)
            {
                MessageViews.DisplaySuccessMessage();
                return;
            }
            MessageViews.DisplayErrorMessage();
        }
예제 #28
0
        /// <summary>
        /// Allows admin user to delete book category
        /// </summary>
        /// <param name="adminId"></param>
        private void DeleteCategory(int adminId)
        {
            new Book().ViewAllCategories();
            MessageViews.DisplaySelectMessage();
            MessageViews.DisplayReturnMessage();

            var categoryId = InputHelper.ParseInput();

            if (categoryId == 0)
            {
                return;
            }

            WebbShopAPI api    = new WebbShopAPI();
            var         result = api.DeleteCategory(adminId, categoryId);

            if (result)
            {
                MessageViews.DisplaySuccessMessage();
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #29
0
        /// <summary>
        /// Allows admin user to delete book
        /// </summary>
        /// <param name="adminId"></param>
        private void DeleteBook(int adminId)
        {
            new Book().FindAllAvailableBooks();
            MessageViews.DisplaySelectMessage();
            MessageViews.DisplayReturnMessage();

            var bookId = InputHelper.ParseInput();

            if (bookId == 0)
            {
                return;
            }

            WebbShopAPI api    = new WebbShopAPI();
            bool        result = api.DeleteBook(adminId, bookId);

            if (result)
            {
                MessageViews.DisplaySuccessMessage();
                return;
            }

            MessageViews.DisplayErrorMessage();
        }
예제 #30
0
        /// <summary>
        /// Runs the scenario
        /// </summary>
        public static void Run()
        {
            var api = new WebbShopAPI();

            Console.Write("Logged in as: ");
            int userId = api.Login("Administrator", "CodicRulez");

            Console.WriteLine(userId);

            //-------------------------------------------------------------------------

            Console.WriteLine("Adding new book... ");
            bool success = api.AddBook(userId, "Sagan om ringen", "J.R.R Tolkien", 300, 5);

            if (success)
            {
                Console.WriteLine("Added book: Sagan om ringen by J.R.R Tolkien");
            }

            //-------------------------------------------------------------------------

            Console.WriteLine("Setting amount... ");
            success = api.SetAmount(userId, 2, 4);
            if (success)
            {
                Console.WriteLine("Successfully added new amount.");
            }

            //-------------------------------------------------------------------------
            Console.WriteLine("Searching for all users...");
            var list = api.ListUsers(userId);

            foreach (var user in list)
            {
                Console.WriteLine(user.Name);
            }

            //-------------------------------------------------------------------------

            Console.WriteLine("Searching for all users matching keyword \"te\"... ");
            list = api.FindUser(userId, "te");
            foreach (var user in list)
            {
                Console.WriteLine(user.Name);
            }

            //-------------------------------------------------------------------------

            var book = Helper.GetBookObject("Sagan om ringen");

            if (book != null)
            {
                Console.WriteLine($"Updating {book.Title} with new price 350...");
                success = api.UpdateBook(userId, book.ID, book.Title, book.Author, 350);
                if (success)
                {
                    Console.WriteLine("Sucessfully updated book");
                }
            }

            //-------------------------------------------------------------------------

            Console.WriteLine("Adding new category... ");
            success = api.AddCategory(userId, "Fantasy");
            if (success)
            {
                Console.WriteLine("Added category: Fantasy");
            }

            Console.WriteLine("Adding new category... ");
            success = api.AddCategory(userId, "Action");
            if (success)
            {
                Console.WriteLine("Added category: Action");
            }

            //-------------------------------------------------------------------------

            Console.WriteLine("Adding book to category... ");
            var bookId     = Helper.GetBookID("Sagan om ringen");
            var categoryId = Helper.GetCategoryId("Fantasy");

            success = api.AddBookToCategory(userId, bookId, categoryId);
            if (success)
            {
                Console.WriteLine("Successfully added book Sagan om ringen to category Fantasy");
            }

            //-------------------------------------------------------------------------

            Console.WriteLine("Updating category... ");
            categoryId = Helper.GetCategoryId("Action");
            success    = api.UpdateCategory(userId, categoryId, "ActionPower");
            if (success)
            {
                Console.WriteLine("Successfully updated category genere Action to ActionPower.");
            }

            //-------------------------------------------------------------------------

            Console.WriteLine("Adding new user... ");
            success = api.AddUser(userId, "Legolas", "L3mb4sBr34d");
            if (success)
            {
                Console.WriteLine("Successfully added user: Legolas");
            }

            //-------------------------------------------------------------------------

            Console.WriteLine("Promoting \"Legolas\"... ");
            var customerId = Helper.GetUserID("Legolas");

            success = api.Promote(userId, customerId);
            if (success)
            {
                Console.WriteLine("Sucessfully promoted Legolas to Admin");
            }

            api.Logout(userId);

            //-------------------------------------------------------------------------

            Console.Write("Logged in as: ");
            userId = api.Login("Legolas", "L3mb4sBr34d");
            Console.WriteLine(userId);

            Console.WriteLine("Purchasing \"Sagan om ringen\"... ");
            bookId  = Helper.GetBookID("Sagan om ringen");
            success = api.BuyBook(userId, bookId);
            if (success)
            {
                Console.WriteLine("Purchase successful.");
            }

            Console.WriteLine("Purchasing \"Sagan om ringen\"... ");
            success = api.BuyBook(userId, bookId);
            if (success)
            {
                Console.WriteLine("Purchase successful.");
            }

            Console.WriteLine("Purchasing \"Sagan om ringen\"... ");
            success = api.BuyBook(userId, bookId);
            if (success)
            {
                Console.WriteLine("Purchase successful.");
            }

            api.Logout(userId);

            //-------------------------------------------------------------------------

            Console.Write("Logged in as: ");
            userId = api.Login("Administrator", "CodicRulez");
            Console.WriteLine(userId);

            Console.WriteLine("Searching for all sold items...");
            var soldBooks = api.SoldItems(userId);

            if (soldBooks.Count > 0)
            {
                foreach (var item in soldBooks)
                {
                    Console.WriteLine($"{item.Title} - {item.Author}");
                }
            }

            Console.WriteLine("Searching for total price of all sold items... ");
            int moneyEarned = api.MoneyEarned(userId);

            if (moneyEarned > 0)
            {
                Console.WriteLine($"Money earned: {moneyEarned}");
            }

            Console.WriteLine("Searching \"Best customer\"... ");
            int bestCustomer = api.BestCustomer(userId);

            if (bestCustomer > 0)
            {
                Console.WriteLine($"Best customer's ID: {bestCustomer}");
            }

            Console.WriteLine("Deleting book \"I Robot\"... ");
            bookId  = Helper.GetBookID("I Robot");
            success = api.DeleteBook(userId, bookId);
            if (success)
            {
                Console.WriteLine("Successfully deleted book");
            }

            Console.WriteLine("Deleting category \"Romance\"... ");
            categoryId = Helper.GetCategoryId("Romance");
            success    = api.DeleteCategory(userId, categoryId);
            if (success)
            {
                Console.WriteLine("Successfully deleted category");
            }

            Console.WriteLine("Deleting category \"Fantasy\"... ");
            categoryId = Helper.GetCategoryId("Fantasy");
            success    = api.DeleteCategory(userId, categoryId);
            if (success)
            {
                Console.WriteLine("Successfully deleted category");
            }

            api.Logout(userId);
        }