Esempio n. 1
0
        public BookSignedOut Post(int libraryId, int bookId, int memberId)
        {
            var bookSid = db.LibraryBook.FirstOrDefault(@lb => @lb.LibraryId == libraryId && @lb.BookId == bookId);

            if (bookSid == null)
            {
                throw new StatusCodeException(HttpStatusCode.NotFound);
            }

            BookSignedOut bookSignedOut = new BookSignedOut()
            {
                MemberId = memberId, LibraryBookSid = bookSid.LibraryBookSid, WhenSignedOut = DateTime.Now
            };

            db.BookSignedOut.Add(bookSignedOut);

            try
            {
                db.SaveChanges();
            }
            catch (Exception)
            {
                throw new StatusCodeException(HttpStatusCode.NotFound);
            }

            return(bookSignedOut);
        }
Esempio n. 2
0
 public void IncreaseSignout(AvailableBookModel data)
 {
     try
     {
         var result = _db.Library_Book.Where(r => r.LibraryBookSId == data.Id).FirstOrDefault();
         if (result != null)
         {
             BookSignedOut info = new BookSignedOut
             {
                 LibraryBookSId = data.Id.Value,
                 MemberId       = data.MemberId,
                 WhenSignedOut  = DateTime.UtcNow,
                 WhenReturned   = null
             };
             _db.BookSignedOuts.Add(info);
             result.Signout = result.Signout == null ? 1 : result.Signout.Value + 1;
             _db.SaveChangesAsync();
         }
     }
     catch (Exception ex)
     {
         ErrorLog.GetDefault(null).Log(new Error(ex));
         throw;
     }
 }
Esempio n. 3
0
        public async Task <ActionResult> Create([Bind(Include = "LibraryBookSId,MemberId,WhenSignedOut,WhenReturned")] BookSignedOut bookSignedOut)
        {
            /*
             * 5.Enforce this restriction No member can have more than two books signed out of the library at any one time.
             */

            if (db.Members
                .Include(m => m.BookSignedOuts)
                .First(m => m.MemberId == bookSignedOut.MemberId)
                .BookSignedOuts.Any(so => so.WhenReturned == null))
            {
                ModelState.AddModelError("", "Let the user sign out one book at a time");
            }

            if (ModelState.IsValid)
            {
                db.BookSignedOuts.Add(bookSignedOut);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index", "Libraries"));
            }

            ViewBag.MemberId = new SelectList(db.Members, "MemberId", "FullName", bookSignedOut.MemberId);
            return(View(bookSignedOut));
        }
Esempio n. 4
0
        public async Task <ActionResult> Edit([Bind(Include = "LibraryBookSId,MemberId,WhenSignedOut,WhenReturned")] BookSignedOut bookSignedOut)
        {
            /*
             * 4. The member can return a book
             */

            db.Entry(bookSignedOut).State = EntityState.Modified;
            bookSignedOut.WhenReturned    = DateTime.Now;
            await db.SaveChangesAsync();

            return(RedirectToAction("List", new { id = bookSignedOut.LibraryBookSId }));
        }