示例#1
0
        public ActionResult ShowBook(string id)
        {
            var model = new MultipleModel.BooksVM();

            model.Book = db.Books.Where(b => b.Id == new Guid(id)).SingleOrDefault();
            return(PartialView("_ShowBook", model));
        }
示例#2
0
        public ActionResult Books()
        {
            var model = new MultipleModel.BooksVM();

            model.Books = db.Books.Where(b => b.Delete == false).OrderByDescending(b => b.CreatedAt).Take(12).ToList();
            return(View(model));
        }
示例#3
0
        public ActionResult ReserveBook(string id)
        {
            var errorList = new List <string>();
            var request   = new MultipleModel.BooksVM();
            var identity  = (System.Security.Claims.ClaimsIdentity)User.Identity;
            var getUserId = identity.Claims.Where(c => c.Type == System.Security.Claims.ClaimTypes.NameIdentifier).Select(c => c.Value).SingleOrDefault();
            var getUser   = db.Users.Where(u => u.Id == new Guid(getUserId) && u.Deleted == false).SingleOrDefault();

            var getBook = db.Books.Where(b => b.Id == new Guid(id) && b.Delete == false).SingleOrDefault();

            if (getUser != null)
            {
                if (getBook != null)
                {
                    if (!(db.Reservations.Where(c => c.UserId == getUser.Id && c.BookId == getBook.Id && c.Delete == false).Any()))
                    {
                        var checkUserReservation = db.Reservations.Where(r => r.UserId == getUser.Id && r.Delete == false).ToList();
                        if (checkUserReservation.Count <= 3)
                        {
                            var newReservation = db.Reservations.Create();
                            newReservation.User      = getUser;
                            newReservation.Book      = getBook;
                            newReservation.CreatedAt = DateTime.UtcNow;

                            db.Reservations.Add(newReservation);
                            db.SaveChanges();
                            ModelState.Clear();
                            request.Error = false;
                            string message = "You have successfully made a reservation";
                            errorList.Add(message);
                            request.Message = errorList;
                        }
                        else if (checkUserReservation.Count > 3)
                        {
                            request.Error = true;
                            string message = "You have already exceeded the maximumum number of reservation";
                            errorList.Add(message);
                            request.Message = errorList;
                        }
                    }
                    else if (db.Reservations.Where(c => c.UserId == getUser.Id && c.BookId == getBook.Id && c.Delete == false).Any())
                    {
                        request.Error = true;
                        string message = "You have already made a reservation for this book";
                        errorList.Add(message);
                        request.Message = errorList;
                    }
                }
                else if (getBook == null)
                {
                    request.Error = true;
                    string message = "The selected book is not existing!!";
                    errorList.Add(message);
                    request.Message = errorList;
                }
            }
            else if (getUser == null)
            {
                request.Error = true;
                string message = "Invalid user!! Kindly sign in again";
                errorList.Add(message);
                request.Message = errorList;
            }
            request.Book = db.Books.Where(b => b.Id == getBook.Id && b.Delete == false).SingleOrDefault();
            return(PartialView("_RateBook", request));
        }
示例#4
0
        public ActionResult RateBook(string id, int rate)
        {
            var errorList = new List <string>();
            var request   = new MultipleModel.BooksVM();
            var identity  = (System.Security.Claims.ClaimsIdentity)User.Identity;
            var getUserId = identity.Claims.Where(c => c.Type == System.Security.Claims.ClaimTypes.NameIdentifier).Select(c => c.Value).SingleOrDefault();
            var getUser   = db.Users.Where(u => u.Id == new Guid(getUserId) && u.Deleted == false).SingleOrDefault();

            var getBook = db.Books.Where(b => b.Id == new Guid(id) && b.Delete == false).SingleOrDefault();

            if (rate == 1 || rate == 2 || rate == 3)
            {
                if (getUser != null)
                {
                    if (getBook != null)
                    {
                        if (!(db.Ratings.Where(c => c.UserId == getUser.Id && c.BookId == getBook.Id).Any()))
                        {
                            var newRate = db.Ratings.Create();
                            newRate.Rate      = rate;
                            newRate.BookId    = getBook.Id;
                            newRate.UserId    = getUser.Id;
                            newRate.CreatedAt = DateTime.UtcNow;

                            db.Ratings.Add(newRate);
                            db.SaveChanges();
                            ModelState.Clear();
                            request.Error = false;
                            string message = "You have successfully rated this book";
                            errorList.Add(message);
                            request.Message = errorList;
                        }
                        else if (db.Ratings.Where(c => c.UserId == getUser.Id && c.BookId == getBook.Id).Any())
                        {
                            request.Error = true;
                            string message = "You have already rated this book";
                            errorList.Add(message);
                            request.Message = errorList;
                        }
                    }
                    else if (getBook == null)
                    {
                        request.Error = true;
                        string message = "The selected book is not existing!!";
                        errorList.Add(message);
                        request.Message = errorList;
                    }
                }
                else if (getUser == null)
                {
                    request.Error = true;
                    string message = "Invalid user!! Kindly sign in again";
                    errorList.Add(message);
                    request.Message = errorList;
                }
            }
            else if (rate > 3)
            {
                request.Error = true;
                string message = "Error";
                errorList.Add(message);
                request.Message = errorList;
            }
            request.Book = db.Books.Where(b => b.Id == getBook.Id && b.Delete == false).SingleOrDefault();
            return(PartialView("_RateBook", request));
        }