/// <summary>
        /// Delete an item from the server
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public async Task <ResultFromServer> DeleteFromServer(AbstractItem item)
        {
            var values = new Dictionary <string, string>();

            values.Add("Guid", item.Guid.ToString());
            return(await Server.Connect("DeleteBook.php", values));
        }
        /// <summary>
        /// Add item to the server
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public async Task <ResultFromServer> AddItemToServer(AbstractItem item)
        {
            var values = new Dictionary <string, string>();

            values.Add("BookName", item.ItemName);
            values.Add("Date", ((DateTimeOffset)item.Date).ToString("d"));
            values.Add("CopyNumber", item.CopyNumber.ToString());
            values.Add("Guid", item.Guid.ToString());
            // The url should be encrypted, otherwise the server will prohibit store links
            values.Add("CoverImage", Crypt.Encrypt("boris", item.CoverImage));
            if (item is Book)
            {
                values.Add("Category", ((Book)item).Category.ToString());
            }
            else
            {
                values.Add("Category", ((Journal)item).Category.ToString());
            }
            values.Add("SubCategory", item.SubCategory);
            values.Add("BorrowedCopies", item.BorrowedCopies.ToString());

            if (await Server.Connect("AddBook.php", values) != ResultFromServer.Yes)
            {
                return(ResultFromServer.ConnectionFailed);
            }

            return(ResultFromServer.Yes);
        }
Esempio n. 3
0
        /// <summary>
        /// Getting the users from the server
        /// </summary>
        /// <returns></returns>
        public async Task <ResultFromServer> GetUsersFromServer()
        {
            var result = await Server.Connect("GetUsers.php");

            if (result == ResultFromServer.Yes)
            {
                // The retrieved content from the server
                string[] words = Server.ResponseWords;

                for (int i = 0; i < (words.Length - 4); i += 4)
                {
                    User newUser = new User();
                    newUser.Username  = words[0 + i];
                    newUser.FirstName = words[1 + i];
                    newUser.LastName  = words[2 + i];
                    if (words[3 + i] == "1")
                    {
                        newUser.IsAdmin = true;
                    }
                    else
                    {
                        newUser.IsAdmin = false;
                    }
                    _users.Add(newUser);
                }
                return(ResultFromServer.Yes);
            }
            return(ResultFromServer.ConnectionFailed);
        }
Esempio n. 4
0
        /// <summary>
        /// Transforms the user into an administrator
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <ResultFromServer> MakeUserAdmin(User user)
        {
            var values = new Dictionary <string, string>();

            values.Add("Username", user.Username);
            return(await Server.Connect("MakeMeAdmin.php", values));
        }
Esempio n. 5
0
        /// <summary>
        /// Authentication by username and password
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <ResultFromServer> Authentication(User user)
        {
            var values = new Dictionary <string, string>();

            values.Add("Username", user.Username);
            values.Add("Password", user.Password);
            //Checking if the username and password is correct
            var result = await Server.Connect("Login.php", values);

            if (result == ResultFromServer.Yes)
            {
                values.Remove("Password");
                //Checking if the user is administrator
                var result2 = await Server.Connect("IsAdmin.php", values);

                if (result2 == ResultFromServer.ConnectionFailed)
                {
                    return(result2);
                }

                CurrentUser.IsAdmin  = result2 == ResultFromServer.Yes;
                CurrentUser.Username = user.Username;
            }
            return(result);
        }
Esempio n. 6
0
        /// <summary>
        /// Register a new user
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <ResultFromServer> Registration(User user)
        {
            var values = new Dictionary <string, string>();

            values.Add("Username", user.Username);
            values.Add("FName", user.FirstName);
            values.Add("LName", user.LastName);
            values.Add("Password", user.Password);
            //Sending the user data to the server
            return(await Server.Connect("SignIn.php", values));
        }
Esempio n. 7
0
        /// <summary>
        /// Removing the user from the server
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <ResultFromServer> RemoveUserFromServer(User user)
        {
            if (user.IsAdmin)
            {
                throw new ArgumentException("Cannot remove administrator user.");
            }

            var values = new Dictionary <string, string>();

            values.Add("Username", user.Username);
            return(await Server.Connect("RemoveUser.php", values));
        }
        /// <summary>
        /// Borrow or return the item of the user on the server
        /// </summary>
        /// <param name="user"></param>
        /// <param name="item"></param>
        /// <param name="borrow">Borrow or return</param>
        /// <returns></returns>
        public async Task <ResultFromServer> BorrowReturnServer(User user, AbstractItem item, bool borrow)
        {
            var values = new Dictionary <string, string>();

            values.Add("Guid", item.Guid.ToString());
            values.Add("Username", user.Username);

            if (borrow)
            {
                return(await Server.Connect("Borrow.php", values));
            }
            else
            {
                return(await Server.Connect("Return.php", values));
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Getting from the server the guids of all items of the user
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <ResultFromServer> GetUserItemsGuid(User user)
        {
            var values = new Dictionary <string, string>();

            values.Add("Username", user.Username);
            var result = await Server.Connect("GetUserItemsGuid.php", values);

            if (result == ResultFromServer.Yes)
            {
                // The retrieved content from the server
                string[] words = Server.ResponseWords;
                // Adding the guids to user's guids list
                for (int i = 0; i < (words.Length - 1); i++)
                {
                    user.MyItems.Add(new Guid(words[i]));
                }

                return(ResultFromServer.Yes);
            }
            return(ResultFromServer.ConnectionFailed);
        }
        /// <summary>
        /// Get the items from the server
        /// </summary>
        /// <returns></returns>
        public async Task <ResultFromServer> GetItemsFromServer()
        {
            var result = await Server.Connect("GetBooks.php");

            if (result != ResultFromServer.ConnectionFailed)
            {
                // The retrieved content from the server
                string[] words = Server.ResponseWords;

                for (int i = 0; i < (words.Length - 8); i += 8)
                {
                    AbstractItem            newItem;
                    Book.BookCategory       bookCategory;
                    Journal.JournalCategory journalCategory;
                    //Trying parse the category to book or journal
                    bool isbook = Enum.TryParse(words[i + 5], out bookCategory);
                    Enum.TryParse(words[i + 5], out journalCategory);

                    if (isbook)
                    {
                        newItem = new Book(words[i + 0], new Guid(words[i + 3]), bookCategory, words[i + 6]);
                    }
                    else
                    {
                        newItem = new Journal(words[i + 0], new Guid(words[i + 3]), journalCategory, words[i + 6]);
                    }

                    newItem.Date = DateTimeOffset.Parse(words[i + 1], CultureInfo.InvariantCulture);

                    //Decrypt the url
                    newItem.CoverImage = Crypt.Decrypt("boris", words[i + 4]);

                    newItem.CopyNumber     = int.Parse(words[i + 2]);
                    newItem.BorrowedCopies = int.Parse(words[i + 7]);
                    _items.Add(newItem);
                }
                return(ResultFromServer.Yes);
            }
            return(result);
        }