예제 #1
0
        public async Task <IActionResult> Approve(PendingBookViewModel viewModel)
        {
            // remove the pending book from that table
            var removeBook = ctx.PendingBooks.Where(a => a.ID == viewModel.id).FirstOrDefault();

            ctx.PendingBooks.Remove(removeBook);

            // add to the actual book table
            Book newBook = new Book();

            newBook.Title       = viewModel.title;
            newBook.AuthorLName = viewModel.authorLName;
            newBook.AuthorFName = viewModel.authorFName;
            newBook.ISBN        = viewModel.isbn;
            newBook.Edition     = viewModel.edition;
            newBook.Publisher   = viewModel.publisher;
            newBook.Description = viewModel.description;
            newBook.Image       = viewModel.image;
            newBook.Status      = 1;
            ctx.Books.Add(newBook);

            ctx.SaveChanges();

            // Send email notification to User that submitted the book.
            var user = await usrCtx.FindByIdAsync(removeBook.UserID);

            var callbackUrl = Url.Action("Login", "Account", null, protocol: HttpContext.Request.Scheme);
            await _emailSender.SendEmailAsync(user.Email, "NYBE Book Approval",
                                              $"Your recent book request for \"{removeBook.Title}\" has been approved!  <a href='{callbackUrl}'>Sign in</a> and check it out!");

            return(RedirectToAction("Manage"));
        }
예제 #2
0
        public async Task <IActionResult> GoogleBookSubmission(PendingBookViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var user = await GetCurrentUserAsync();

                Book pBook = new Book();
                pBook.Title       = viewModel.title;
                pBook.AuthorFName = viewModel.authorFName;
                pBook.AuthorLName = viewModel.authorLName;
                pBook.ISBN        = viewModel.isbn;
                pBook.Edition     = viewModel.edition;
                pBook.Publisher   = viewModel.publisher;
                pBook.Description = viewModel.description;
                pBook.Image       = viewModel.image;
                pBook.Status      = 1;

                ctx.Books.Add(pBook);
                ctx.SaveChanges();

                return(View("Confirm"));
            }
            else
            {
                return(View(viewModel));
            }
        }
예제 #3
0
        public IActionResult Enable(PendingBookViewModel viewModel)
        {
            Book book = ctx.Books.Where(a => a.ID == viewModel.id).FirstOrDefault();

            book.Status = 1;
            ctx.SaveChanges();

            return(RedirectToAction("Manage"));
        }
예제 #4
0
        public async Task <IActionResult> ViewBook(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var         viewModel = new PendingBookViewModel();
            PendingBook book      = ctx.PendingBooks.Where(a => a.ID == id).FirstOrDefault();

            // Add in search with google books api for first/best result
            HttpClient client  = new HttpClient();
            string     api_url = "https://www.googleapis.com/books/v1/volumes?q=isbn:" + book.ISBN + "&key=AIzaSyAFr1FsZceoWiIHKFdSnMPeixy_ePvMG6U";

            client.BaseAddress = new Uri(api_url);

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.GetAsync(api_url);

            if (response.IsSuccessStatusCode)
            {
                var formatters = new List <MediaTypeFormatter>()
                {
                    new JsonMediaTypeFormatter()
                };
                GoogleBooksAPIResponse responseObject = await response.Content.ReadAsAsync <GoogleBooksAPIResponse>(formatters);

                if (responseObject.totalItems > 0)
                {
                    viewModel.googleBook = responseObject.getBooks()[0];
                }
            }

            // make sure we found the book
            if (book != null)
            {
                viewModel.id          = book.ID;
                viewModel.title       = book.Title;
                viewModel.authorLName = book.AuthorLName;
                viewModel.authorFName = book.AuthorFName;
                viewModel.isbn        = book.ISBN;
                viewModel.edition     = book.Edition;
                viewModel.publisher   = book.Publisher;
                viewModel.description = book.Description;
                viewModel.image       = book.Image;
            }
            return(View(viewModel));
        }
예제 #5
0
        public async Task <IActionResult> Deny(PendingBookViewModel viewModel)
        {
            // remove the pending book from that table
            var removeBook = ctx.PendingBooks.Where(a => a.ID == viewModel.id).FirstOrDefault();

            ctx.PendingBooks.Remove(removeBook);

            ctx.SaveChanges();

            // Send email notification to User that submitted the book.
            var user = await usrCtx.FindByIdAsync(removeBook.UserID);

            var callbackUrl = Url.Action("Login", "Account", null, protocol: HttpContext.Request.Scheme);
            await _emailSender.SendEmailAsync(user.Email, "NYBE Book Denial",
                                              $"Your recent book request for \"{removeBook.Title}\" has been denied. =[  <a href='{callbackUrl}'>Sign in</a> and try a different book!");

            return(RedirectToAction("Manage"));
        }
예제 #6
0
        public IActionResult Enable(int?id)
        {
            var  viewModel = new PendingBookViewModel();
            Book book      = ctx.Books.Where(a => a.ID == id).FirstOrDefault();

            // make sure we found the book
            if (book != null)
            {
                viewModel.id          = book.ID;
                viewModel.title       = book.Title;
                viewModel.authorLName = book.AuthorLName;
                viewModel.authorFName = book.AuthorFName;
                viewModel.isbn        = book.ISBN;
                viewModel.edition     = book.Edition;
                viewModel.publisher   = book.Publisher;
                viewModel.description = book.Description;
            }

            return(View(viewModel));
        }
예제 #7
0
        public IActionResult Index()
        {
            var viewModel = new PendingBookViewModel();

            return(View(viewModel));
        }