public void CheckOutItem(int assetId, int libraryCardId) { var now = DateTime.Now; var checkOut = new Checkout() { LibraryCardId = libraryCardId, LibraryAssetId = assetId, Since = now, Until = now.AddDays(10) }; var libraryAsset = this.db.LibraryAssets.FirstOrDefault(l => l.Id == assetId); libraryAsset.StatusId = (int)StatusType.CheckedOut; this.db.Checkouts.Add(checkOut); var checkoutHistory = new CheckoutHistory() { CheckedOut = now, LibraryAssetId = assetId, LibraryCardId = libraryCardId }; this.db.CheckoutHistories.Add(checkoutHistory); this.db.SaveChanges(); }
public void CheckOutItem(int deviceId, int userId) { if (IsCheckedOut(deviceId)) { return; //Add logic to handle feedback to the user } var item = _context.Devices.FirstOrDefault(a => a.Id == deviceId); UpdateDeviceStatus(deviceId, "Checked Out"); var user = _context.Users .FirstOrDefault(u => u.Id == userId); var now = DateTime.Now; var checkout = new Checkout { Device = item, User = user, Since = now, Until = GetDefaultCheckoutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, Device = item, User = user }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public async Task CheckOutItemAsync(int assetId, int libraryCardId) { if (await IsCheckedOutAsync(assetId)) { return; } await UpdateAssetStatus(assetId, "Checked Out"); var libraryCard = await _context.LibraryCards .FirstOrDefaultAsync(x => x.Id == libraryCardId); if (libraryCard == null) { return; } //In case of libraryCard exists but patron has been deleted, //do not allow to checkout the item var patron = await _context.Users.FirstOrDefaultAsync(x => x.LibraryCard.Id == libraryCardId); if (patron == null) { return; } var now = DateTime.Now; var item = await _context.LibraryAssets.FirstOrDefaultAsync(x => x.Id == assetId); var checkout = new Checkout() { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckoutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory() { LibraryAsset = item, LibraryCard = libraryCard, CheckedOut = now }; _context.Add(checkoutHistory); //Remove patron's hold on the item var hold = await _context.Holds .FirstOrDefaultAsync(x => x.LibraryCard.Id == libraryCardId && x.LibraryAsset.Id == assetId); if (hold != null) { _context.Remove(hold); } await _context.SaveChangesAsync(); }
public void CheckOutItem(int assetId, int libraryCardId) { //check for an item is has been already checkedout if (IsCheckedOut(assetId)) { return; } //UpdateNrOfCopies(assetId); UpdateAssetStatus(assetId, "Checked Out"); var item = assetService.GetById(assetId); var libraryCard = GetLibraryCard(libraryCardId); var checkout = new Checkout { LibraryAsset = item, LibraryCard = libraryCard, Since = dtNow, Until = GetDefaultCheckInTime() }; var checkoutHistory = new CheckoutHistory { CheckIn = GetDefaultCheckInTime(), CheckOut = dtNow, LibraryAsset = item, LibraryCard = libraryCard }; _contex.Add(checkout); _contex.Add(checkoutHistory); _contex.SaveChanges(); }
public void CheckOutBook(int bookId, int patronId) { var now = DateTime.Now; var book = _context.Books.FirstOrDefault(b => b.ID == bookId); book.IsCheckouted = true; var patron = _context.Patrons.FirstOrDefault(p => p.ID == patronId); var checkout = new Checkout { Patron = patron, Book = book, Since = now, Until = now.AddDays(7) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, Book = book, Patron = patron }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public ActionResult CheckIn(int checkoutId) { Checkout checkout = db.Checkouts.FirstOrDefault(a => a.CheckoutId == checkoutId); CheckoutHistory checkoutHistory = new CheckoutHistory { AssetId = checkout.AssetId, PatronId = checkout.PatronId, CheckedOutDate = checkout.CheckoutDate, CheckedInDate = DateTime.Now, Notes = checkout.Notes }; //record checkout in history db.CheckoutHistories.Add(checkoutHistory); //also need to set asset to CheckedIn Asset assetModel = db.Assets.Find(checkout.AssetId); //first check if asset is currently checked out if (assetModel.StatusId == db.Status.FirstOrDefault(a => a.Name == "CheckedIn").StatusId) { ViewBag.errorMessage = "The Asset is already checked in"; return(View(checkout)); } assetModel.StatusId = db.Status.FirstOrDefault(a => a.Name == "CheckedIn").StatusId; db.Entry(assetModel).State = EntityState.Modified; //delete checkout db.Checkouts.Remove(checkout); db.SaveChanges(); return(RedirectToAction("Index")); }
public void CheckOutItem(int id, int libraryCardId) { if (IsCheckedOut(id)) { return; // add logic here to send the feed back to the user } var item = _context.LibraryAssets.FirstOrDefault(a => a.Id == id); UpadateAssetStatus(id, "Checked Out"); var libraryCard = _context.LibraryCards.Include(card => card.Checkouts) .FirstOrDefault(card => card.Id == libraryCardId); var now = DateTime.Now; var checkout = new Checkout { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckOutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = libraryCard, // CheckedIn = GetDefaultCheckOutTime(now) }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public void CheckOutItem(int assetId, int LibraryCardId) { var now = DateTime.Now; var LibraryCard = _context.LibraryCards.FirstOrDefault(l => l.Id == LibraryCardId); var LibraryAsset = _context.LibraryAssets.FirstOrDefault(a => a.Id == assetId); _context.Update(LibraryAsset); LibraryAsset.Status = _context.Statuses.FirstOrDefault(s => s.Name == "Checked Out"); var newCheckout = new Checkout() { LibraryCard = LibraryCard, LibraryAsset = LibraryAsset, Since = now }; _context.Checkouts.Add(newCheckout); var newCheckoutHistrory = new CheckoutHistory() { LibraryAsset = LibraryAsset, LibraryCard = LibraryCard, CheckOut = now }; _context.CheckoutHistories.Add(newCheckoutHistrory); _context.SaveChanges(); }
public void CheckOutItem(int assetId, int libraryCardId) { if (IsCheckedOut(assetId)) { return; } var item = _context.LibraryAssets.FirstOrDefault(a => a.Id == assetId); UpdateAssetStatus(assetId, "Checked Out"); var LibraryCard = _context.LibraryCards .Include(card => card.Checkouts) .FirstOrDefault(card => card.Id == libraryCardId); var now = DateTime.Now; var checkout = new Checkout { LibraryAsset = item, LibraryCard = LibraryCard, Since = now, Until = GetDefaultCheckoutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = LibraryCard, }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public ActionResult DeleteConfirmed(int id) { CheckoutHistory checkoutHistory = db.CheckoutHistories.Find(id); db.CheckoutHistories.Remove(checkoutHistory); db.SaveChanges(); return(RedirectToAction("Index")); }
public void CheckInItem(int assetId) { var now = DateTime.Now; var item = _context.LibraryAssets.FirstOrDefault(a => a.Id == assetId); _context.Update(item); //remove the checkout var Checkout = _context.Checkouts.Where(c => c.LibraryAsset.Id == assetId); if (Checkout != null) { _context.Remove(Checkout); } //Close any existing checkout history var history = _context.CheckoutHistories.FirstOrDefault(h => h.LibraryAsset.Id == assetId && h.CheckedIn == null); if (history != null) { _context.Update(history); history.CheckedIn = now; } var currentHolds = _context.Holds.Include(h => h.LibraryAsset) .Include(h => h.LibraryCard) .Where(h => h.LibraryAsset.Id == assetId); if (currentHolds.Any()) { var earliestHold = currentHolds.OrderBy(h => h.HoldPlaced).FirstOrDefault(); //Default is Ascending _context.Remove(earliestHold); _context.Update(earliestHold.LibraryAsset); earliestHold.LibraryAsset.Status = _context.Statuses.FirstOrDefault(s => s.Name == "Checked Out"); var newCheckout = new Checkout() { LibraryCard = earliestHold.LibraryCard, LibraryAsset = earliestHold.LibraryAsset, Since = earliestHold.HoldPlaced }; _context.Checkouts.Add(newCheckout); var newCheckoutHistrory = new CheckoutHistory() { LibraryAsset = earliestHold.LibraryAsset, LibraryCard = earliestHold.LibraryCard, CheckOut = now }; _context.CheckoutHistories.Add(newCheckoutHistrory); _context.SaveChanges(); return; } item.Status = _context.Statuses.FirstOrDefault(s => s.Name == "Available"); _context.SaveChanges(); }
public string GetCurrentCheckedOutPatronName(int checkId) { CheckoutHistory check = _context.CheckoutHistories .Include(co => co.LibraryAsset) .Include(co => co.LibraryCard) .FirstOrDefault(co => co.Id == checkId); var cardId = check?.LibraryCard.Id; return PatronName(cardId); }
private void CloseExistingCheckoutHistory(int assetId) { CheckoutHistory history = _context.CheckoutHistories.FirstOrDefault(coh => coh.LibraryAsset.Id == assetId && coh.CheckedIn == null); if (history != null) { _context.Update(history); history.CheckedIn = DateTime.Now; } }
private void CheckoutHistory(LibraryAsset item, LibraryCard libraryCard, DateTime now) { var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = libraryCard }; _context.Add(checkoutHistory); }
public ActionResult Edit([Bind(Include = "CheckoutHistoryId,AssetId,PatronId,CheckedOutDate,CheckedInDate,Notes,RowVersion")] CheckoutHistory checkoutHistory) { if (ModelState.IsValid) { db.Entry(checkoutHistory).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.AssetId = new SelectList(db.Assets, "AssetId", "Name", checkoutHistory.AssetId); ViewBag.PatronId = new SelectList(db.Patrons, "PatronId", "Forename", checkoutHistory.PatronId); return(View(checkoutHistory)); }
private void CloseExistingCheckoutHistory(int assetId, DateTime now) { //close any existing checkout history CheckoutHistory history = _context.CheckoutHistories .FirstOrDefault(h => h.LibraryAsset.Id == assetId && h.CheckedOut == null); if (history != null) { _context.Update(history); history.CheckedIn = now; } }
// GET: CheckoutHistories/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CheckoutHistory checkoutHistory = db.CheckoutHistories.Find(id); if (checkoutHistory == null) { return(HttpNotFound()); } return(View(checkoutHistory)); }
public void CheckoutItem(int assetId, int libraryCardId) { try { var ischeckedout = IsCheckedout(assetId); if (ischeckedout) //if the item is checked out i.e. if the assetId carries (or shows) checkedout { return; //add logic to handke feedback to the user } var item = _context.LibraryAssets .FirstOrDefault(asset => asset.Id == assetId); //get the item id UpdateAssetStatus(assetId, "Checked Out"); //update the item status to check out var libraryCard = _context.LibraryCards .Include(card => card.Checkouts) .FirstOrDefault(card => card.Id == libraryCardId); //check whose library card checked the item out and grab it var now = DateTime.Now; var checkout = new Checkout { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckoutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = libraryCard }; _context.Add(checkoutHistory); _context.SaveChanges(); } catch (Exception ex) { //throw; } }
public async Task <CheckoutHistoryResponse> SaveAsync(CheckoutHistory checkoutHistory) { try { await _checkoutHistoryRepository.AddAsync(checkoutHistory); await _unitOfWork.CompleteAsync(); return(new CheckoutHistoryResponse(checkoutHistory)); } catch (Exception ex) { return(new CheckoutHistoryResponse($"An error occurred when saving the checkoutHistory: {ex.Message}")); } }
// GET: CheckoutHistories/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CheckoutHistory checkoutHistory = db.CheckoutHistories.Find(id); if (checkoutHistory == null) { return(HttpNotFound()); } ViewBag.AssetId = new SelectList(db.Assets, "AssetId", "Name", checkoutHistory.AssetId); ViewBag.PatronId = new SelectList(db.Patrons, "PatronId", "Forename", checkoutHistory.PatronId); return(View(checkoutHistory)); }
public void CheckoutItem(int id, int libraryCardId) { if (IsCheckedOut(id)) { return; } var item = _context.LibraryAsset .Include(a => a.Status) .FirstOrDefault(a => a.Id == id); _context.Update(item); item.Status = _context.Status .FirstOrDefault(a => a.Name == "Checked Out"); var now = DateTime.Now; var libraryCard = _context.LibraryCards .Include(c => c.Checkouts) .FirstOrDefault(a => a.Id == libraryCardId); if (libraryCard == null) { return; } var checkout = new Checkouts { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckoutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = libraryCard }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public async Task <bool> CheckOutItem(Guid assetId, int libraryCardId) { var now = DateTime.UtcNow; var isAlreadyCheckedOut = await IsCheckedOut(assetId); if (isAlreadyCheckedOut) { // TODO } var libraryAsset = await _context.LibraryAssets .Include(a => a.AvailabilityStatus) .FirstAsync(a => a.Id == assetId); _context.Update(libraryAsset); // TODO libraryAsset.AvailabilityStatus = await _context.Statuses .FirstAsync(a => a.Name == "Checked Out"); var libraryCard = await _context.LibraryCards .Include(c => c.Checkouts) .FirstAsync(a => a.Id == libraryCardId); var checkout = new Data.Models.Checkout { Asset = libraryAsset, LibraryCard = libraryCard, CheckedOutSince = now, CheckedOutUntil = GetDefaultDateDue(now) }; await _context.AddAsync(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, Asset = libraryAsset, LibraryCard = libraryCard }; await _context.AddAsync(checkoutHistory); await _context.SaveChangesAsync(); return(true); }
public void CheckOutToFirstReserve(int assetId, int firstHoldLibraryCardId) { if (IsCheckedOut(assetId)) { return; // Add logic here to handle feedback to the user. } var item = _context.LibraryAssets .FirstOrDefault(a => a.Id == assetId); UpdateAssetStatus(assetId, "Checked Out"); var libraryCard = _context.LibraryCards .Include(card => card.Checkouts) .FirstOrDefault(card => card.Id == firstHoldLibraryCardId); var now = DateTime.Now; var checkout = new Checkout { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckoutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = libraryCard }; _context.Add(checkoutHistory); var earliestHold = _context.Holds .OrderBy(h => h.HoldPlaced) .FirstOrDefault(h => h.LibraryCard.Id == firstHoldLibraryCardId); _context.Remove(earliestHold); _context.SaveChanges(); }
// коли беруть книгу CheckoutItem - взята книга public void CheckOutItem(int assetId, int libraryCardId) { var now = DateTime.Now; // щоб було однакове для всього методу // перевіримо, чи книга вільна, щоб можна було її видати (на Checkout) if (IsCheckedOut(assetId)) { return; // add logic to handle feedback to the user } var item = _context.LibraryAssets .FirstOrDefault(i => i.Id == assetId); // нам потрібно оновити статус обєкта книги //_context.Update(item); // use our method: UpdateAssetStatus(assetId, "Checked Out"); // далі отримаємо картку члена клубу, з списком його Checkout'ів // щоб добавити саме йому новий Checkout var libraryCard = _context.LibraryCards .Include(card => card.Checkouts) .FirstOrDefault(card => card.Id == libraryCardId); var checkout = new Checkout { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckoutTime(now) // вказуємо до якого числа треба повернути книгу }; _context.Add(checkout); // Далі потрібно додати нову CheckoutHistory var checkoutHistory = new CheckoutHistory { ChekedOut = now, LibraryAsset = item, LibraryCard = libraryCard }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public void CheckoutItem(int assetId, int libraryCardId) { if (IsCheckedOut(assetId)) { return; // Add logic here to handle feedback to the user. } var item = _context.LibraryAssets .FirstOrDefault(a => a.Id == assetId); UpdateAssetStatus(assetId, "Checked Out"); var now = DateTime.Now; var libraryCard = _context.LibraryCard .Include(c => c.Checkouts) .FirstOrDefault(c => c.Id == libraryCardId); var patron = _context.Patrons .Include(p => p.LibraryCard) .FirstOrDefault(P => P.LibraryCard.Id == libraryCardId); var checkout = new Checkout { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckoutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = libraryCard, Patron = patron }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public void CheckOutItem(int assetId, int driverLicenseId, int numberOfRentalDays) { var currentTime = DateTime.Now; var driverLicense = _context.DriverLicenses .Include(asset => asset.Checkouts) .FirstOrDefault(asset => asset.Id == driverLicenseId); var item = _context.VehicleRentalAssets .Include(asset => asset.Status) .Include(asset => asset.Location) .FirstOrDefault(asset => asset.Id == assetId); var fullname = GetPatronFullName(driverLicenseId); // Check if Asset is Available and not Checked Out if (item.Status.Name == "Available") { // Update Asset Status as Checked Out UpdateAssetStatus(assetId, "Checked Out"); // Add New Checkout to the Table var checkout = new Checkout { VehicleRentalAsset = item, DriverLicense = driverLicense, StartTime = currentTime, EndTime = GetCheckoutDate(currentTime, numberOfRentalDays) }; _context.Add(checkout); // Add to CheckoutHistory Table var CheckoutHistory = new CheckoutHistory { VehicleRentalAsset = item, DriverLicense = driverLicense, CheckedOut = currentTime, FullName = fullname }; _context.Add(CheckoutHistory); _context.SaveChanges(); } }
public void checkOutItem(int assetId, int libraryCardId) { if (isCheckOut(assetId)) { //If item has been checkout //Here can do smtg to notify user return; } var item = _context.libraryAssets .FirstOrDefault(a => a.id == assetId); updateAsset(assetId, "Checked Out"); var libraryCard = _context.libraryCards .Include(c => c.checkOut) .FirstOrDefault(c => c.id == libraryCardId); var timeNow = DateTime.Now; var checkOut = new Checkouts { LibraryAsset = item, LibraryCard = libraryCard, since = timeNow, until = getDefaultCheckoutTime(timeNow), }; _context.Add(checkOut); var checkOutHis = new CheckoutHistory { libraryAsset = item, LibraryCard = libraryCard, checkOut = timeNow, //checkIn = //Check in would be null for this i supposed //since item just got checked out and //we dont know when user will return }; _context.Add(checkOutHis); _context.SaveChanges(); }
public void CheckoutItem(int assetId, int libraryCardId) { if (IsCheckedOut(assetId)) { return; // Add logic here to handle feedback to the user. } var item = _context.LibraryAssets .Include(a => a.Status) .FirstOrDefault(a => a.Id == assetId); _context.Update(item); item.Status = _context.Statuses .FirstOrDefault(a => a.Name == "Checked Out"); var now = DateTime.Now; var libraryCard = _context.LibraryCards .Include(c => c.Checkouts) .FirstOrDefault(a => a.Id == libraryCardId); var checkout = new Checkout { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckoutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = libraryCard }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public void CheckOutItem(int assetId, int libraryCardId) { var now = DateTime.Now; // Check whether or not the item is already checked out if (IsCheckedOut(assetId)) { return; // Add logic here to handle feedback to the user // Inform them that the item is altready checked out } var theAsset = _context.LibraryAssets .FirstOrDefault(a => a.Id == assetId); UpdateAssetStatus(assetId, "Checked Out"); // Get the library card you want to check this asset out to var card = _context.LibraryCards .Include(c => c.Checkouts) .FirstOrDefault(c => c.Id == libraryCardId); var checkout = new Checkout { LibraryAsset = theAsset, LibraryCard = card, Since = now, Until = GetDefaultCheckOutTime(now) }; _context.Add(checkout); var checkoutHistory = new CheckoutHistory { LibraryAsset = theAsset, LibraryCard = card, ChekedOut = now }; _context.Add(checkoutHistory); _context.SaveChanges(); }
public void CheckOutItem(int assetId, int libraryCardId) { if (IsCheckedOut(assetId)) { return; // Add logic here to handle feedback to the user; } var item = _ctx.LibraryAssets .FirstOrDefault(asset => asset.Id == assetId); _ctx.Update(item); UpdateAssetStatus(assetId, "Checked Out"); var libraryCard = _ctx.LibraryCards .Include(card => card.Checkouts) .FirstOrDefault(card => card.Id == libraryCardId); var now = DateTime.Now; var checkout = new Checkout { LibraryAsset = item, LibraryCard = libraryCard, Since = now, Until = GetDefaultCheckOutTime(now) }; _ctx.Add(checkout); var checkoutHistory = new CheckoutHistory { CheckedOut = now, LibraryAsset = item, LibraryCard = libraryCard }; _ctx.Add(checkoutHistory); _ctx.SaveChanges(); }