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); }
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; } }
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)); }
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 })); }