コード例 #1
0
        private string GetBookState(Book book, string lib)
        {
            LibraryBook    lb    = db.LibraryBooks.FirstOrDefault(x => x.BookId == book.Id && x.LibraryId.ToString() == lib);
            LibraryLending llIn  = db.LibraryLendings.FirstOrDefault(ll => ll.CopyLibraryBookId == lb.Id && ll.EndDate == null);
            LibraryLending llOut = db.LibraryLendings.FirstOrDefault(ll => ll.LibraryBookId == lb.Id && ll.EndDate == null);

            if (llIn != null)
            {
                if (llIn.LibraryBookId != null && String.IsNullOrEmpty(llIn.ExternalLender))
                {
                    return("in");
                }
                else if (llIn.LibraryBookId == null && !String.IsNullOrEmpty(llIn.ExternalLender))
                {
                    return("in-ext");
                }
            }
            if (llOut != null)
            {
                if (llOut.CopyLibraryBookId != null && String.IsNullOrEmpty(llOut.ExternalBorrower))
                {
                    return("out");
                }
                else if (llOut.CopyLibraryBookId == null && !String.IsNullOrEmpty(llOut.ExternalBorrower))
                {
                    return("out-ext");
                }
            }
            return("ok");
        }
コード例 #2
0
        public ActionResult ReturnBookByExternal(string lib, string bk)
        {
            LibraryBook    libraryBook    = db.LibraryBooks.First(lb => lb.LibraryId.ToString() == lib && lb.BookId.ToString() == bk);
            LibraryLending libraryLending = db.LibraryLendings.FirstOrDefault(ll => ll.LibraryBookId == libraryBook.Id && ll.EndDate == null);

            libraryLending.EndDate = DateTime.Now;
            db.SaveChanges();
            return(RedirectToAction("Book", new { lib = lib, bk = bk }));
        }
コード例 #3
0
        public ActionResult ReturnBook(string lib, string bk)
        {
            LibraryBook    libraryBook    = db.LibraryBooks.First(lb => lb.LibraryId.ToString() == lib && lb.BookId.ToString() == bk);
            LibraryLending libraryLending = db.LibraryLendings.FirstOrDefault(ll => ll.CopyLibraryBookId == libraryBook.Id);

            libraryLending.EndDate = DateTime.Now;
            db.LibraryBooks.Remove(libraryBook);
            db.SaveChanges();
            return(RedirectToAction("Index", new { lib = lib }));
        }
コード例 #4
0
        private IEnumerable <string> GetNames(IEnumerable <LibraryBook> libraryBooks, string type)
        {
            List <string> names = new List <string>();

            foreach (LibraryBook lb in libraryBooks)
            {
                LibraryLending lending = null;
                switch (type)
                {
                case "borrowed": lending = db.LibraryLendings.FirstOrDefault(ll => ll.CopyLibraryBookId == lb.Id); break;

                case "lent": lending = db.LibraryLendings.FirstOrDefault(ll => ll.LibraryBookId == lb.Id); break;
                }
                if (!String.IsNullOrEmpty(lending.ExternalBorrower) || !String.IsNullOrEmpty(lending.ExternalLender))
                {
                    switch (type)
                    {
                    case "borrowed": names.Add(lending.ExternalLender); break;

                    case "lent": names.Add(lending.ExternalBorrower); break;
                    }
                }
                else
                {
                    Library library = null;
                    switch (type)
                    {
                    case "borrowed": library = db.Libraries.FirstOrDefault(x => x.Id == lending.LibraryBookId); break;

                    case "lent": library = db.Libraries.FirstOrDefault(x => x.Id == lending.CopyLibraryBookId); break;
                    }
                    ApplicationUser user = db.Users.FirstOrDefault(usr => usr.Id == library.UserId);
                    names.Add(user.UserName);
                }
            }
            return(names);
        }
コード例 #5
0
        public ActionResult Book(LibraryBookDetails model, string lib, string bk)
        {
            if (String.IsNullOrEmpty(lib) || String.IsNullOrEmpty(bk))
            {
                return(RedirectToAction(""));
            }
            if (!HasAccessToLib(lib))
            {
                return(RedirectToAction(""));
            }

            Book        book        = db.Books.FirstOrDefault(x => x.Id.ToString() == bk);
            LibraryBook libraryBook = db.LibraryBooks.FirstOrDefault(x => x.BookId.ToString() == bk && x.LibraryId.ToString() == lib);

            //comments
            List <LibraryComment> comments      = db.LibraryComments.Where(x => x.LibraryBookId == libraryBook.Id).ToList();
            List <LibraryComment> modelComments = new List <LibraryComment>();
            var q = (from lc in comments
                     join us in db.Users on lc.UserId equals us.Id
                     select new { lc = lc.Comment, us });

            foreach (var t in q)
            {
                modelComments.Add(new LibraryComment()
                {
                    Comment = t.lc, User = t.us
                });
            }

            //userreading
            var         userID      = User.Identity.GetUserId();
            UserReading userReading = db.UserReadings.FirstOrDefault(x => x.UserId == userID && x.BookId.ToString() == bk);

            //libraryLending
            LibraryLending libraryLending = db.LibraryLendings.FirstOrDefault(ll => ll.EndDate == null && (ll.LibraryBookId == libraryBook.Id || ll.CopyLibraryBookId == libraryBook.Id));

            ViewBag.Lending = GetBookState(book, lib);
            if (ViewBag.Lending == "out")
            {
                LibraryBook     lb         = db.LibraryBooks.FirstOrDefault(x => x.Id == libraryLending.CopyLibraryBookId);
                Library         library    = db.Libraries.FirstOrDefault(l => l.Id == lb.LibraryId);
                ApplicationUser borrowUser = db.Users.FirstOrDefault(usr => usr.Id == library.UserId);
                ViewBag.BorrowingUser = borrowUser;
            }
            else if (ViewBag.Lending == "out-ext")
            {
                ViewBag.BorrowingUserExternal = libraryLending.ExternalBorrower;
            }
            else if (ViewBag.Lending == "in")
            {
                LibraryBook     lb       = db.LibraryBooks.FirstOrDefault(x => x.Id == libraryLending.LibraryBookId);
                Library         library  = db.Libraries.FirstOrDefault(l => l.Id == lb.LibraryId);
                ApplicationUser lendUser = db.Users.FirstOrDefault(usr => usr.Id == library.UserId);
                ViewBag.LendingUser = lendUser;
            }
            else if (ViewBag.Lending == "in-ext")
            {
                ViewBag.LendingUserExternal = libraryLending.ExternalLender;
            }

            //Are you an owner?
            Library libraryOwner = db.Libraries.FirstOrDefault(l => l.Id == libraryBook.LibraryId);

            ViewBag.Owner = userID == libraryOwner.UserId ? true : false;


            model.Book           = book;
            model.Comments       = comments;
            model.UserReading    = userReading;
            model.LibraryLending = libraryLending;
            return(View(model));
        }