示例#1
0
        /// <summary>
        /// Gives user administrator privileges
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="userId"></param>
        /// <returns>bool</returns>
        public bool Promote(int adminId, int userId)
        {
            bool isPromoted = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var user = db.Users?.FirstOrDefault(u => u.Id == userId);

                    if (user != null)
                    {
                        user.IsAdmin = true;

                        SessionTimer.AdminSetSessionTimer(adminId);
                        db.Update(user);
                        db.SaveChanges();

                        isPromoted = true;
                    }
                }
            }

            return(isPromoted);
        }
示例#2
0
        /// <summary>
        /// Adds new user to database
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="name"></param>
        /// <param name="password"></param>
        /// <returns>bool</returns>
        public bool AddUser(int adminId, string name, string password)
        {
            bool isUserCreated = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var user = db.Users?.FirstOrDefault(u => u.Name == name);

                    if (user == null)
                    {
                        user = new User {
                            Name = name, Password = password, IsAdmin = false, IsActive = true
                        };

                        if (user.Password == "")
                        {
                            user.Password = "******";
                        }
                        SessionTimer.AdminSetSessionTimer(adminId);
                        db.Update(user);
                        db.SaveChanges();
                        isUserCreated = true;
                    }
                }
            }
            return(isUserCreated);
        }
示例#3
0
        /// <summary>
        /// Deletes book from table
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="bookId"></param>
        /// <param name="amount"></param>
        /// <returns>bool</returns>
        public bool DeleteBook(int adminId, int bookId, int amount = 0)
        {
            bool isBookDeleted = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var book = db.Books?.FirstOrDefault(x => x.Id == bookId);
                    if (book != null)
                    {
                        if (amount == 0)
                        {
                            book.Amount--;
                            db.Update(book);
                        }
                        else if (amount > 0)
                        {
                            book.Amount -= amount;
                            db.Update(book);
                        }
                        if (book.Amount <= 0)
                        {
                            db.Remove(book);
                        }
                        db.SaveChanges();
                        SessionTimer.AdminSetSessionTimer(adminId);
                        isBookDeleted = true;
                    }
                }
            }
            return(isBookDeleted);
        }
示例#4
0
        /// <summary>
        /// Deletes category from table
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="categoryId"></param>
        /// <returns>bool</returns>
        public bool DeleteCategory(int adminId, int categoryId)
        {
            bool isCategoryDeleted = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var category = db.BookCategories?.FirstOrDefault(c => c.Id == categoryId);

                    if (category != null)
                    {
                        var book = db.Books?.FirstOrDefault(c => c.CategoryId == categoryId);

                        if (book == null)
                        {
                            SessionTimer.AdminSetSessionTimer(adminId);
                            db.BookCategories.Remove(category);
                            db.SaveChanges();
                            isCategoryDeleted = true;
                        }
                    }
                }
            }
            return(isCategoryDeleted);
        }
示例#5
0
        /// <summary>
        /// Adds categoryId to book
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="bookId"></param>
        /// <param name="categoryId"></param>
        /// <returns>bool</returns>
        public bool AddBookToCategory(int adminId, int bookId, int categoryId)
        {
            bool isBookAddedToCategory = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var book = db.Books?.FirstOrDefault(b => b.Id == bookId);

                    if (book != null)
                    {
                        var category = db.BookCategories?.FirstOrDefault(c => c.Id == categoryId);

                        if (category != null)
                        {
                            book.CategoryId = category.Id;
                            SessionTimer.AdminSetSessionTimer(adminId);
                            db.Update(category);
                            db.SaveChanges();
                            isBookAddedToCategory = true;
                        }
                    }
                }
            }
            return(isBookAddedToCategory);
        }
示例#6
0
        /// <summary>
        /// Adds new book
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="id"></param>
        /// <param name="title"></param>
        /// <param name="author"></param>
        /// <param name="price"></param>
        /// <param name="amount"></param>
        /// <returns>bool</returns>
        public bool AddBook(int adminId, string title, string author, int price, int amount)
        {
            bool isBookAdded = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var book = db.Books?.FirstOrDefault(i => i.Title == title);
                    if (book == null)
                    {
                        book        = new Book();
                        book.Title  = title;
                        book.Author = author;
                        book.Price  = price;
                        book.Amount = amount;
                    }
                    else if (book != null)
                    {
                        book.Amount += amount;
                    }
                    SessionTimer.AdminSetSessionTimer(adminId);
                    db.Update(book);
                    db.SaveChanges();
                    isBookAdded = true;
                }
            }

            return(isBookAdded);
        }
示例#7
0
        /// <summary>
        /// Lists sold book(s)
        /// </summary>
        /// <param name="adminId"></param>
        /// <returns>List</returns>
        public List <SoldBook> SoldItems(int adminId)
        {
            List <SoldBook> bookList = new List <SoldBook>();

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    SessionTimer.AdminSetSessionTimer(adminId);
                    return(db.SoldBooks?.OrderBy(n => n.PurchaseDate).ToList());
                }
            }
            else
            {
                return(bookList);
            }
        }
示例#8
0
        /// <summary>
        /// Lists user(s) matching keyword
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="keyword"></param>
        /// <returns>List</returns>
        public List <User> FindUser(int adminId, string keyword)
        {
            List <User> userList = new List <User>();

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    SessionTimer.AdminSetSessionTimer(adminId);
                    return(db.Users?.Where(x => x.Name.Contains(keyword)).OrderBy(n => n.Name).ToList());
                }
            }
            else
            {
                return(userList);
            }
        }
示例#9
0
        /// <summary>
        /// Lists user(s) in database
        /// </summary>
        /// <param name="adminId"></param>
        /// <returns>List</returns>
        public List <User> ListUsers(int adminId)
        {
            List <User> userList = new List <User>();

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    SessionTimer.AdminSetSessionTimer(adminId);
                    return(db.Users?.OrderBy(n => n.Name).ToList());
                }
            }
            else
            {
                return(userList);
            }
        }
示例#10
0
        /// <summary>
        /// Calculates sum of price of sold book(s)
        /// </summary>
        /// <param name="adminId"></param>
        /// <returns>int</returns>
        public int?MoneyEarned(int adminId)
        {
            int?earned = null;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var books = db.SoldBooks?.ToList();
                    earned = books.Sum(b => b.Price);
                    SessionTimer.AdminSetSessionTimer(adminId);
                    return(earned);
                }
            }
            else
            {
                return(earned);
            }
        }
示例#11
0
        /// <summary>
        /// Sets amount of book
        /// ADDENDUM: Added return value int amount
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="bookId"></param>
        /// <param name="amount"></param>
        /// <returns>Tuple (bool, int)</returns>
        public (bool isAmountSet, int amount) SetAmount(int adminId, int bookId, int amount)
        {
            bool isAmountSet = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var book = db.Books?.FirstOrDefault(i => i.Id == bookId);
                    if (book != null)
                    {
                        book.Amount = amount;
                        SessionTimer.AdminSetSessionTimer(adminId);
                        db.Update(book);
                        db.SaveChanges();
                        isAmountSet = true;
                    }
                }
            }
            return(isAmountSet, amount);
        }
示例#12
0
        /// <summary>
        /// Gets customer who bought most books
        /// </summary>
        /// <param name="adminId"></param>
        /// <returns>string</returns>
        public User BestCostumer(int adminId)
        {
            User bestCostumer = new User();

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    //Solution found at:https://stackoverflow.com/questions/2655759/how-to-get-the-most-common-value-in-an-int-array-c

                    var costumer = db.SoldBooks.GroupBy(u => u.UserId).OrderByDescending(u => u.Count()).Select(u => u.Key).First();

                    bestCostumer = db.Users?.FirstOrDefault(u => u.Id == costumer);
                    SessionTimer.AdminSetSessionTimer(adminId);
                    return(bestCostumer);
                }
            }
            else
            {
                return(bestCostumer);
            }
        }
示例#13
0
        /// <summary>
        /// Updates category
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="categoryId"></param>
        /// <param name="name"></param>
        /// <returns>bool</returns>
        public bool UpdateCategory(int adminId, int categoryId, string name)
        {
            bool isCategoryUpdated = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var category = db.BookCategories?.FirstOrDefault(c => c.Id == categoryId);

                    if (category != null)
                    {
                        category.Name = name;
                        SessionTimer.AdminSetSessionTimer(adminId);
                        db.Update(category);
                        db.SaveChanges();
                        isCategoryUpdated = true;
                    }
                }
            }

            return(isCategoryUpdated);
        }
示例#14
0
        /// <summary>
        /// Updates properties of book
        /// </summary>
        /// <param name="adminId"></param>
        /// <param name="id"></param>
        /// <param name="title"></param>
        /// <param name="author"></param>
        /// <param name="price"></param>
        /// <returns>bool</returns>
        public bool UpdateBook(int adminId, int id, string title, string author, int price)
        {
            bool isBookUpdated = false;

            if (Security.AdminCheck(adminId) && SessionTimer.AdminCheckSessionTimer(adminId) == false)
            {
                using (var db = new EFContext())
                {
                    var book = db.Books?.FirstOrDefault(x => x.Id == id);
                    if (book != null)
                    {
                        book.Title  = title;
                        book.Author = author;
                        book.Price  = price;
                        SessionTimer.AdminSetSessionTimer(adminId);
                        db.Update(book);
                        db.SaveChanges();
                        isBookUpdated = true;
                    }
                }
            }

            return(isBookUpdated);
        }