public bool ReturnDisk(int diskID, int cusID, decimal lateCharge, DateTime returnDate) { using (ApplicationDBContext db = new ApplicationDBContext()) { Disk d = db.Disks.SingleOrDefault(x => x.DiskID == diskID); Rentail_Detail rd = db.Rentail_Detail.SingleOrDefault(x => x.DiskID == diskID && x.ReturnDate == null); Rental r = db.Rentals.SingleOrDefault(x => x.RentalID == rd.RentalID && x.Status == (int)RentalInformation.RentalStatus.RENTED); if (d != null && r != null && rd != null) { d.ChkOutStatus = (short)Checkout.DiskStatus.SHELF; rd.ReturnDate = returnDate; AddLateCharge(diskID, r.RentalID, lateCharge); db.SaveChanges(); using (ApplicationDBContext db2 = new ApplicationDBContext()) { List <Rentail_Detail> lst = db2.Rentail_Detail.Where(x => x.RentalID == r.RentalID && x.ReturnDate == null).ToList(); List <Rentail_Detail> lstAll = db2.Rentail_Detail.Where(x => x.RentalID == r.RentalID).ToList(); decimal c = (decimal)lstAll.Sum(x => x.OwnedMoney); if (lstAll.Sum(x => x.OwnedMoney) > 0 && lst.Count == 0) { r.Status = (int)RentalInformation.RentalStatus.RESERVATION; } else if (lst.Count == 0) { r.Status = (int)RentalInformation.RentalStatus.COMPLETE; } db.SaveChanges(); PlaceOnHold(diskID); return(true); } } return(false); } }
public DetailReturnDisk Search(int diskID) { DetailReturnDisk detail; using (ApplicationDBContext db = new ApplicationDBContext()) { CustomerBS c = new CustomerBS(); Disk d = db.Disks.SingleOrDefault(x => x.DiskID == diskID && x.ChkOutStatus == (short)Checkout.DiskStatus.RENTED); if (d != null) { var query = from rd1 in db.Rentail_Detail join r1 in db.Rentals on rd1.RentalID equals r1.RentalID where rd1.DiskID == diskID && r1.Status == (int)RentalInformation.RentalStatus.RENTED select new { rd1, r1 }; if (query.FirstOrDefault() != null) { Rentail_Detail rd = (Rentail_Detail)query.FirstOrDefault().rd1; Rental r = (Rental)query.FirstOrDefault().r1; Title title = db.Titles.Single(x => x.TitleID == d.TitleID); Models.Type t = db.Types.Single(x => x.TypeID == title.TypeID); detail = new DetailReturnDisk(r.CusID, d.TitleID, d.DiskID, r.StartRentDate, (DateTime)rd.DueDate, DateTime.Now, c.getName(r.CusID), getTitleName(d.TitleID), t.RentCharge); return(detail); } } return(null); } }
private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { if (discIDs.Count == 0) { return; } DateTime dateTime = DateTime.Now; Rental rental = new Rental() { CusID = cusID, Deleted = false, StartRentDate = dateTime, Status = (short)RentalInformation.RentalStatus.RENTED }; int rentalID = -1; using (var db = new ApplicationDBContext()) { db.Rentals.Add(rental); db.SaveChanges(); rentalID = (db.Rentals.ToList().Count > 0) ? db.Rentals.Last().RentalID : 1; if (rentalID != -1) { foreach (var id in discIDs) { var title = db.Disks.SingleOrDefault(p => p.DiskID == id).TitleID; var typeID = db.Titles.SingleOrDefault(p => p.TitleID == title).TypeID; var rentPeriod = db.Types.SingleOrDefault(p => p.TypeID == typeID).RentPeriod; Rentail_Detail rentail_Detail = new Rentail_Detail() { RentalID = rentalID, DiskID = id, DueDate = dateTime.AddDays(rentPeriod) }; db.Rentail_Detail.Add(rentail_Detail); db.Disks.Single(p => p.DiskID == id).ChkOutStatus = (short)Checkout.CheckoutStatus.RENTED; var reservation = db.Reservations.FirstOrDefault(p => p.TitleID == title && p.Status == (short)Checkout.ReservationStatus.HOLDING); if (reservation != null) { reservation.Status = (short)Checkout.ReservationStatus.COMPLETE; } } db.SaveChanges(); } } }
public void AddLateCharge(int diskID, int rentalID, decimal lateCharge) { using (ApplicationDBContext db = new ApplicationDBContext()) { Rentail_Detail rd = db.Rentail_Detail.SingleOrDefault(x => x.DiskID == diskID && x.RentalID == rentalID); if (rd != null) { if (lateCharge == 0) { rd.Paid = true; } else { rd.Paid = false; } rd.OwnedMoney = lateCharge; } db.SaveChanges(); } }