Exemple #1
0
        public JsonResult <Object> RemoveBookFromBasket(string UserID, int BookID)
        {
            bool results = false;

            try
            {
                using (var db = new BookPoolEntities())
                {
                    UserCart userCart = db.UserCarts.FirstOrDefault(x => x.UserID == UserID);
                    if (userCart != null)
                    {
                        List <int> booksIDsInCart = userCart.BooksIDsCSV.Split(',').Select(int.Parse).ToList();
                        booksIDsInCart.Remove(BookID);

                        userCart.BooksIDsCSV = string.Join(",", booksIDsInCart);
                        db.SaveChanges();
                    }
                }

                results = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(Json((object)new { results }));
        }
Exemple #2
0
        public JsonResult <Object> AddUserAddress(string UserID, string AddressTitle, string Address)
        {
            bool result = false;

            try
            {
                UsersAddress userAddress = new UsersAddress();
                userAddress.AspNetUserID = UserID;
                userAddress.AddressTitle = AddressTitle;
                userAddress.Address      = Address;
                userAddress.DeliveringTo = true;

                using (var db = new BookPoolEntities())
                {
                    db.UsersAddresses.Where(x => x.AspNetUserID == UserID).Select(x => x).ForEach(x => x.DeliveringTo = false);
                    db.UsersAddresses.Add(userAddress);
                    db.SaveChanges();
                }

                result = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(Json((object)new { result }));
        }
Exemple #3
0
        // GET: Checkout
        public async Task <ActionResult> Index()
        {
            ViewBag.UserAddresses = await Global.Globals.GetUserAddresses(User.Identity.GetUserId());

            Dictionary <string, List <BookPoolResult> > apiResults = new Dictionary <string, List <BookPoolResult> >();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Global.Globals.baseURL);
                StringBuilder httpRoute = new StringBuilder();
                httpRoute.Append("api/Books/GetBooksInCart");
                httpRoute.Append("?");
                httpRoute.AppendFormat("UserID={0}", User.Identity.GetUserId());

                var response = await client.GetAsync(httpRoute.ToString());

                if (response.IsSuccessStatusCode)
                {
                    apiResults = await response.Content.ReadAsAsync <Dictionary <string, List <BookPoolResult> > >();

                    ViewBag.BooksInCart = apiResults["results"];
                }
            }


            using (var db = new BookPoolEntities())
            {
                string thisUserID = User.Identity.GetUserId();
                ViewBag.AspNetUser = db.AspNetUsers.First(x => x.Id == thisUserID);
            }

            return(View());
        }
        public ActionResult UpdateUserInfo(string FirstName, string LastName, string Email, string PhoneNumber)
        {
            bool result = false;

            try
            {
                using (var db = new BookPoolEntities())
                {
                    string     thisUserID = User.Identity.GetUserId();
                    AspNetUser aspNetUser = db.AspNetUsers.First(x => x.Id == thisUserID);
                    aspNetUser.FirstName   = FirstName;
                    aspNetUser.LastName    = LastName;
                    aspNetUser.Email       = Email;
                    aspNetUser.PhoneNumber = PhoneNumber;

                    db.SaveChanges();
                }
                result = true;
            }
            catch (Exception ex)
            {
            }

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
Exemple #5
0
        public static decimal GetBookpoolCharges()
        {
            decimal bookpoolCharges = 0;

            using (var db = new BookPoolEntities())
            {
                bookpoolCharges = db.BookPoolCharges.First().Charge;
            }

            return(bookpoolCharges);
        }
        public async Task <ActionResult> MyProfile()
        {
            ViewBag.UserAddresses = await Global.Globals.GetUserAddresses(User.Identity.GetUserId());

            AspNetUser aspNetUser = new AspNetUser();

            using (var db = new BookPoolEntities())
            {
                string thisUserID = User.Identity.GetUserId();
                aspNetUser = db.AspNetUsers.First(x => x.Id == thisUserID);
            }

            return(View(aspNetUser));
        }
Exemple #7
0
        public JsonResult <Object> GetUserAddresses(string UserID)
        {
            List <UsersAddress> results = new List <UsersAddress>();

            try
            {
                using (var db = new BookPoolEntities())
                {
                    results = db.UsersAddresses.Where(x => x.AspNetUserID == UserID).Select(x => x).ToList();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(Json((object)new { results }));
        }
        public JsonResult<Object> GetInstitutions()
        {
            List<object> results = new List<object>();
            List<Institution> institutions = new List<Institution>();

            try
            {
                using (var db = new BookPoolEntities())
                {
                    institutions = db.Institutions.Where(x => x.InstitutionType != "school").ToList();
                }

                results.AddRange(institutions);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return Json((object)new { results });
        }
        public JsonResult<Object> GetConditions()
        {
            List<object> results = new List<object>();
            List<Condition> conditions = new List<Condition>();

            try
            {
                using (var db = new BookPoolEntities())
                {
                    conditions = db.Conditions.ToList();
                }

                results.AddRange(conditions);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return Json((object)new { results });
        }
        public JsonResult<Object> GetLanguages()
        {
            List<object> results = new List<object>();
            List<Language> languages = new List<Language>();

            try
            {
                using (var db = new BookPoolEntities())
                {
                    languages = db.Languages.ToList();
                }

                results.AddRange(languages);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return Json((object)new { results });
        }
Exemple #11
0
        public async Task <ActionResult> PlacedOrder(string books, string FirstName, string LastName, string Email, string PhoneNumber)
        {
            ViewBag.UserAddresses = await Global.Globals.GetUserAddresses(User.Identity.GetUserId());

            using (var db = new BookPoolEntities())
            {
                string     thisUserID = User.Identity.GetUserId();
                AspNetUser aspNetUser = db.AspNetUsers.First(x => x.Id == thisUserID);
                aspNetUser.FirstName   = FirstName;
                aspNetUser.LastName    = LastName;
                aspNetUser.Email       = Email;
                aspNetUser.PhoneNumber = PhoneNumber;

                db.SaveChanges();
            }

            Dictionary <string, string> apiResults = new Dictionary <string, string>();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Global.Globals.baseURL);
                StringBuilder httpRoute = new StringBuilder();
                httpRoute.Append("api/Users/PlaceOrder");
                httpRoute.Append("?");
                httpRoute.AppendFormat("BuyerID={0}", User.Identity.GetUserId());
                httpRoute.Append("&");
                httpRoute.AppendFormat("BooksIDs={0}", books);

                var response = await client.GetAsync(httpRoute.ToString());

                if (response.IsSuccessStatusCode)
                {
                    apiResults = await response.Content.ReadAsAsync <Dictionary <string, string> >();

                    ViewBag.OrderNumber = apiResults["results"];
                }
            }
            return(View());
        }
Exemple #12
0
        public JsonResult <Object> DeliveringToUserAddress(string UserID, int AddressID)
        {
            bool result = false;

            try
            {
                using (var db = new BookPoolEntities())
                {
                    db.UsersAddresses.Where(x => x.AspNetUserID == UserID).Select(x => x).ForEach(x => x.DeliveringTo = false);
                    UsersAddress usersAddress = db.UsersAddresses.First(x => x.ID == AddressID);
                    usersAddress.DeliveringTo = true;
                    db.SaveChanges();
                }

                result = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(Json((object)new { result }));
        }
Exemple #13
0
        public async Task <JsonResult <Object> > PlaceOrder(string BuyerID, string BooksIDs)
        {
            string results = string.Empty;

            decimal bookpoolCharges = Global.Globals.GetBookpoolCharges();

            try
            {
                using (var db = new BookPoolEntities())
                {
                    decimal    totalPrice     = 0;
                    List <int> booksIDsInCart = BooksIDs.Split(',').Select(int.Parse).ToList();
                    foreach (var bookID in booksIDsInCart)
                    {
                        AvailableBook availableBook = db.AvailableBooks.FirstOrDefault(x => x.ID == bookID);
                        totalPrice += (availableBook.Price + bookpoolCharges);
                    }

                    OrderHeader orderHeader = new OrderHeader();
                    orderHeader.ClientUserID = BuyerID;
                    orderHeader.OrderedOn    = DateTime.Now;
                    orderHeader.Status       = Globals.OrderStatusPending;
                    orderHeader.TotalPrice   = totalPrice;


                    db.OrderHeaders.Add(orderHeader);

                    db.SaveChanges();

                    results = orderHeader.ID.ToString() + orderHeader.OrderedOn.ToString("ddMMyy");

                    UserCart userCart = db.UserCarts.FirstOrDefault(x => x.UserID == BuyerID);

                    foreach (var bookID in booksIDsInCart)
                    {
                        AvailableBook availableBook = db.AvailableBooks.FirstOrDefault(x => x.ID == bookID);
                        if (availableBook != null)
                        {
                            availableBook.SellingStatus = Global.Globals.BookSellingStatus_NotAvailable;

                            OrderDetail orderDetail = new OrderDetail();
                            orderDetail.BookName      = availableBook.BookName;
                            orderDetail.BookPrice     = availableBook.Price + bookpoolCharges;
                            orderDetail.OrderHeaderID = orderHeader.ID;
                            orderDetail.Status        = Globals.OrderStatusPending;
                            orderDetail.SellerUserID  = availableBook.OwnerUserID;
                            orderDetail.BookID        = availableBook.ID;

                            GoogleBook googleResult = new GoogleBook();
                            using (var client = new HttpClient())
                            {
                                client.BaseAddress = new Uri(DataObjects.Global.Globals.googleBaseAPI_SearchByID);
                                StringBuilder httpRoute = new StringBuilder();
                                httpRoute.Append(availableBook.GoogleID);

                                var response = await client.GetAsync(httpRoute.ToString());

                                if (response.IsSuccessStatusCode)
                                {
                                    googleResult = await response.Content.ReadAsAsync <GoogleBook>();
                                }
                            }

                            orderDetail.BookImage = googleResult.volumeInfo.imageLinks.thumbnail.Replace("http:", "https:");
                            orderDetail.Authors   = string.Join(",", googleResult.volumeInfo.authors);
                            orderDetail.GoogleID  = googleResult.id;

                            db.OrderDetails.Add(orderDetail);

                            db.SaveChanges();
                        }


                        if (userCart != null)
                        {
                            List <int> userCartBooks = userCart.BooksIDsCSV.Split(',').Select(int.Parse).ToList();
                            userCartBooks.Remove(bookID);
                            userCart.BooksIDsCSV = string.Join(",", userCartBooks);
                            db.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }

            return(Json((object)new { results }));
        }
Exemple #14
0
        public async Task <ActionResult> MyBooks()
        {
            ViewBag.UserAddresses = await Global.Globals.GetUserAddresses(User.Identity.GetUserId());

            Dictionary <string, List <BookPoolResult> > apiResults = new Dictionary <string, List <BookPoolResult> >();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Global.Globals.baseURL);
                StringBuilder httpRoute = new StringBuilder();
                httpRoute.Append("api/Books/GetMyBooks");
                httpRoute.Append("?");
                httpRoute.AppendFormat("UserID={0}", User.Identity.GetUserId());

                var response = await client.GetAsync(httpRoute.ToString());

                if (response.IsSuccessStatusCode)
                {
                    apiResults = await response.Content.ReadAsAsync <Dictionary <string, List <BookPoolResult> > >();

                    ViewBag.MyBooks = apiResults["results"];
                }
            }

            Dictionary <string, List <Category> > apiCategoriesResults = new Dictionary <string, List <Category> >();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Global.Globals.baseURL);
                StringBuilder httpRoute = new StringBuilder();
                httpRoute.Append("api/Values/GetCategories");

                var response = await client.GetAsync(httpRoute.ToString());

                if (response.IsSuccessStatusCode)
                {
                    apiCategoriesResults = await response.Content.ReadAsAsync <Dictionary <string, List <Category> > >();

                    ViewBag.Categories = apiCategoriesResults["results"];
                }
            }

            Dictionary <string, List <Language> > apiLanguagesResults = new Dictionary <string, List <Language> >();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Global.Globals.baseURL);
                StringBuilder httpRoute = new StringBuilder();
                httpRoute.Append("api/Values/GetLanguages");

                var response = await client.GetAsync(httpRoute.ToString());

                if (response.IsSuccessStatusCode)
                {
                    apiLanguagesResults = await response.Content.ReadAsAsync <Dictionary <string, List <Language> > >();

                    ViewBag.Languages = apiLanguagesResults["results"];
                }
            }

            Dictionary <string, List <Condition> > apiConditionsResults = new Dictionary <string, List <Condition> >();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Global.Globals.baseURL);
                StringBuilder httpRoute = new StringBuilder();
                httpRoute.Append("api/Values/GetConditions");

                var response = await client.GetAsync(httpRoute.ToString());

                if (response.IsSuccessStatusCode)
                {
                    apiConditionsResults = await response.Content.ReadAsAsync <Dictionary <string, List <Condition> > >();

                    ViewBag.Conditions = apiConditionsResults["results"];
                }
            }

            Dictionary <string, List <Institution> > apiInstitutionsResults = new Dictionary <string, List <Institution> >();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Global.Globals.baseURL);
                StringBuilder httpRoute = new StringBuilder();
                httpRoute.Append("api/Values/GetInstitutions");

                var response = await client.GetAsync(httpRoute.ToString());

                if (response.IsSuccessStatusCode)
                {
                    apiInstitutionsResults = await response.Content.ReadAsAsync <Dictionary <string, List <Institution> > >();

                    ViewBag.Institutions = apiInstitutionsResults["results"];
                }
            }

            Dictionary <string, List <Cours> > apiCoursesResults = new Dictionary <string, List <Cours> >();

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(Global.Globals.baseURL);
                StringBuilder httpRoute = new StringBuilder();
                httpRoute.Append("api/Values/GetCourses");

                var response = await client.GetAsync(httpRoute.ToString());

                if (response.IsSuccessStatusCode)
                {
                    apiCoursesResults = await response.Content.ReadAsAsync <Dictionary <string, List <Cours> > >();

                    ViewBag.Courses = apiCoursesResults["results"];
                }
            }

            using (var db = new BookPoolEntities())
            {
                string thisUserID = User.Identity.GetUserId();
                ViewBag.AspNetUser = db.AspNetUsers.First(x => x.Id == thisUserID);
            }

            return(View());
        }
Exemple #15
0
        public async Task <ActionResult> Index()
        {
            using (var db = new BookPoolEntities())
            {
                ViewBag.Users = db.AspNetUsers.ToList();
            }


            //Books For Sale
            GoogleBook        googleResult      = new GoogleBook();
            List <GoogleBook> googleBooksResult = new List <GoogleBook>();

            List <BookPoolResult> dbResult = new List <BookPoolResult>();

            List <string> myGoogleBooksIDs = new List <string>();

            using (var db = new BookPoolEntities())
            {
                myGoogleBooksIDs = db.AvailableBooks.Select(x => x.GoogleID).ToList();
            }

            foreach (var googleID in myGoogleBooksIDs)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(BookPool.DataObjects.Global.Globals.googleBaseAPI_SearchByID);
                    StringBuilder httpRoute = new StringBuilder();
                    httpRoute.Append(googleID);

                    var response = await client.GetAsync(httpRoute.ToString());

                    if (response.IsSuccessStatusCode)
                    {
                        googleResult = await response.Content.ReadAsAsync <GoogleBook>();

                        googleBooksResult.Add(googleResult);
                    }
                }
            }

            using (var db = new BookPoolEntities())
            {
                ViewBag.AvailableBooks = (from googleBooks in googleBooksResult
                                          join availableBooks in db.AvailableBooks on googleBooks.id equals availableBooks.GoogleID
                                          join ownerUser in db.AspNetUsers on availableBooks.OwnerUserID equals ownerUser.Id

                                          select new BookPoolResult
                {
                    ID = availableBooks.ID,
                    Academic = availableBooks.Academic,
                    BookConditionID = availableBooks.BookConditionID,
                    BookLanguageID = availableBooks.BookLanguageID,
                    BookName = availableBooks.BookName,
                    CategoryID = availableBooks.CategoryID,
                    GoogleID = availableBooks.GoogleID,
                    OwnerUserID = availableBooks.OwnerUserID,
                    Price = availableBooks.Price,
                    Authors = googleBooks.volumeInfo.authors,
                    AverageRating = googleBooks.volumeInfo.averageRating,
                    Categories = googleBooks.volumeInfo.categories,
                    Description = googleBooks.volumeInfo.description,
                    ImageURL = googleBooks.volumeInfo.imageLinks?.thumbnail?.Replace("http:", "https:"),
                    PageCount = googleBooks.volumeInfo.pageCount,
                    PreviewLink = googleBooks.volumeInfo.previewLink,
                    PrintType = googleBooks.volumeInfo.printType,
                    PublishedDate = googleBooks.volumeInfo.publishedDate,
                    Publisher = googleBooks.volumeInfo.publisher,
                    Subtitle = googleBooks.volumeInfo.subtitle,
                    SellingStatus = availableBooks.SellingStatus,
                    PostedOn = availableBooks.PostedOn,
                    OwnerUserName = ownerUser.Email,
                    OwnerPhoneNumber = ownerUser.PhoneNumber
                }).DistinctBy(x => x.ID).ToList();
            }



            //Books For Search
            GoogleBook        googleSearchResult      = new GoogleBook();
            List <GoogleBook> googleSearchBooksResult = new List <GoogleBook>();

            List <BookPoolResult> dbSearchResult = new List <BookPoolResult>();

            List <string> myGoogleSearchBooksIDs = new List <string>();

            using (var db = new BookPoolEntities())
            {
                myGoogleSearchBooksIDs = db.SearchForBooks.Select(x => x.GoogleID).ToList();
            }

            foreach (var googleID in myGoogleSearchBooksIDs)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(BookPool.DataObjects.Global.Globals.googleBaseAPI_SearchByID);
                    StringBuilder httpRoute = new StringBuilder();
                    httpRoute.Append(googleID);

                    var response = await client.GetAsync(httpRoute.ToString());

                    if (response.IsSuccessStatusCode)
                    {
                        googleSearchResult = await response.Content.ReadAsAsync <GoogleBook>();

                        googleSearchBooksResult.Add(googleSearchResult);
                    }
                }
            }

            using (var db = new BookPoolEntities())
            {
                ViewBag.SearchBooks = (from googleBooks in googleSearchBooksResult
                                       join searchBooks in db.SearchForBooks on googleBooks.id equals searchBooks.GoogleID
                                       join userToSearch in db.AspNetUsers on searchBooks.AspNetUserID equals userToSearch.Id

                                       select new BookPoolResult
                {
                    ID = searchBooks.ID,
                    BookName = googleBooks.volumeInfo.title,
                    GoogleID = googleBooks.id,
                    Authors = googleBooks.volumeInfo.authors,
                    AverageRating = googleBooks.volumeInfo.averageRating,
                    Categories = googleBooks.volumeInfo.categories,
                    Description = googleBooks.volumeInfo.description,
                    ImageURL = googleBooks.volumeInfo.imageLinks?.thumbnail?.Replace("http:", "https:"),
                    PageCount = googleBooks.volumeInfo.pageCount,
                    PreviewLink = googleBooks.volumeInfo.previewLink,
                    PrintType = googleBooks.volumeInfo.printType,
                    PublishedDate = googleBooks.volumeInfo.publishedDate,
                    Publisher = googleBooks.volumeInfo.publisher,
                    Subtitle = googleBooks.volumeInfo.subtitle,
                    OwnerUserName = userToSearch.Email,
                    OwnerPhoneNumber = userToSearch.PhoneNumber
                }).DistinctBy(x => x.ID).ToList();
            }

            using (var db = new BookPoolEntities())
            {
                ViewBag.Orders = (from orders in db.OrderHeaders
                                  join details in db.OrderDetails on orders.ID equals details.OrderHeaderID
                                  join userSeller in db.AspNetUsers on details.SellerUserID equals userSeller.Id
                                  join userBuyer in db.AspNetUsers on orders.ClientUserID equals userBuyer.Id
                                  select new OrderResult
                {
                    BookName = details.BookName,
                    BookPrice = details.BookPrice,
                    BuyerAddress = "",
                    BuyerPhoneNumber = userBuyer.PhoneNumber,
                    BuyerUserName = userBuyer.UserName,
                    SellerUserName = userSeller.UserName,
                    SellerPhoneNumber = userSeller.PhoneNumber,
                    OrderID = orders.ID,
                    TotalPrice = orders.TotalPrice
                }).ToList();
            }



            return(View());
        }