/// <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); }
/// <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); }
/// <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)); }
/// <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); }
/// <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)); }
/// <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)); } }
/// <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); }