//get one record from the db based on Id. Then join user ingo to the rental info. Select new details I want from user model. //any details where I need to retrieve from db needs to have db.modelname.FirstOrDefault(lambda stuff)\ //this converts a rental object into a rentalviewmodel object - go to details action method to consume that private RentalAndDetailsViewModel getVMFromRental(Rental rental) { Kit kitSelected = db.Kits.Where(b => b.KitId == rental.KitId).FirstOrDefault(); var userDetails = from u in db.Users where u.Id.Equals(rental.UserId) select new { u.Id, u.FirstName, u.LastName, u.BirthDate, u.Email }; RentalAndDetailsViewModel model = new RentalAndDetailsViewModel { RentalId = rental.Id, KitId = kitSelected.KitId, RentalPrice = rental.RentalPrice, Price = kitSelected.Price, Grade = kitSelected.Grade, LengthInMinutes = kitSelected.LengthInMinutes, FirstName = userDetails.ToList()[0].FirstName, LastName = userDetails.ToList()[0].LastName, BirthDate = userDetails.ToList()[0].BirthDate, EndDate = rental.EndDate, StartDate = rental.StartDate, DateAdded = kitSelected.DateAdded, Description = kitSelected.Description, Email = userDetails.ToList()[0].Email, BranchId = kitSelected.BranchId, Branch = db.Branches.FirstOrDefault(b => b.BranchId.Equals(kitSelected.BranchId)), ImageUrl = kitSelected.ImageUrl, PublicationDate = kitSelected.PublicationDate, //needs the rented kit object - need a string object in my RentalAndDetailsViewModel, not an Enum Status = rental.Status.ToString(), Title = kitSelected.Title, UserId = userDetails.ToList()[0].Id }; return(model); }
//Get Method public ActionResult Create(string title = null) { if (title != null) { RentalAndDetailsViewModel model = new RentalAndDetailsViewModel { Title = title, }; return(View(model)); } return(View(new RentalAndDetailsViewModel())); }
//[ValidateAntiForgeryToken] public ActionResult Create(RentalAndDetailsViewModel rental) { Console.WriteLine(rental); if (ModelState.IsValid) { var email = rental.Email; var userDetails = from u in db.Users where u.Email.Equals(email) select new { u.Id, u.FirstName, u.LastName, u.BirthDate }; var title = rental.Title; Kit kitSelected = db.Kits.Where(b => b.Title == title).FirstOrDefault(); var Duration = rental.Duration; var chargeRate = from u in db.Users join m in db.MembershipTypes on u.MembershipTypeId equals m.Id where u.Email.Equals(email) select new { m.MonthlyMembershipFee, m.SixMonthMemberShipFee }; var monthlyMemberPrice = Convert.ToDouble(kitSelected.Price) * Convert.ToDouble(chargeRate.ToList()[0].MonthlyMembershipFee) / 100; var sixMonthMemberPrice = Convert.ToDouble(kitSelected.Price) * Convert.ToDouble(chargeRate.ToList()[0].SixMonthMemberShipFee) / 100; double rentalPrice = 0; if (rental.Duration == StaticDetails.SixMonth) { rentalPrice = sixMonthMemberPrice; } else { rentalPrice = monthlyMemberPrice; } var registeredUser = db.Users.SingleOrDefault(u => u.Email == email); Rental modelToAddToDb = new Rental { KitId = kitSelected.KitId, RentalPrice = rentalPrice, EndDate = rental.EndDate, Duration = DateTime.Now.AddMonths(1), Status = Rental.StatusEnum.Rented, UserId = userDetails.ToList()[0].Id }; db.Rentals.Add(modelToAddToDb); db.SaveChanges(); return(RedirectToAction("Index")); } return(View()); }
// GET: BookDetail public ActionResult Index(int id) { var userid = User.Identity.GetUserId(); var user = db.Users.FirstOrDefault(u => u.Id == userid); //joins kits and branches automatically based on the primary key, then get all details from the kit model // need to manually type in using System.Data.Entity; to get the lamba expr to work var kitModel = db.Kits.Include(k => k.Branch).SingleOrDefault(k => k.KitId == id); var rentalPrice = 0.0; var oneMonthRental = 0.0; var sixMonthRental = 0.0; //var rentalCount = 0; //get user details and then calculate the rental price and also not an admin -- if they are not an admin and have logged in, they will see.... if (userid != null && !User.IsInRole(StaticDetails.AdminUserRole)) { var chargeRate = from u in db.Users join m in db.MembershipTypes on u.MembershipTypeId equals m.Id where u.Id.Equals(userid) select new { m.MonthlyMembershipFee, m.SixMonthMemberShipFee }; //get price of kit, multiply by discount percentage, 0 record is for one month (first entry), 1 record is for 6 month oneMonthRental = Convert.ToDouble(kitModel.Price) * Convert.ToDouble(chargeRate.ToList()[0].MonthlyMembershipFee) / 100; sixMonthRental = Convert.ToDouble(kitModel.Price) * Convert.ToDouble(chargeRate.ToList()[0].SixMonthMemberShipFee) / 100; //rentalCount = Convert.ToInt32(rate.ToList()[0].RentalCount); } RentalAndDetailsViewModel model = new RentalAndDetailsViewModel { KitId = kitModel.KitId, Title = kitModel.Title, DateAdded = kitModel.DateAdded, Description = kitModel.Description, Grade = kitModel.Grade, Branch = db.Branches.FirstOrDefault(g => g.BranchId.Equals(kitModel.BranchId)), BranchId = kitModel.BranchId, ImageUrl = kitModel.ImageUrl, Price = kitModel.Price, LengthInMinutes = kitModel.LengthInMinutes, UserId = userid, RentalPrice = rentalPrice, MonthlyMembershipFee = oneMonthRental, Stock = kitModel.Stock, SixMonthMemberShipFee = sixMonthRental, //RentalCount = rentalCount }; return(View(model)); }
public ActionResult Closed(RentalAndDetailsViewModel model) { if (model.RentalId == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (ModelState.IsValid) { Rental rental = db.Rentals.Find(model.RentalId); rental.Status = Rental.StatusEnum.Closed; db.SaveChanges(); } return(RedirectToAction("Index")); }
public ActionResult Return(RentalAndDetailsViewModel model) { if (model.KitId == 0) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (ModelState.IsValid) { Rental rental = db.Rentals.Find(model.RentalId); Kit kitInDb = db.Kits.Find(rental.KitId); var registeredUser = db.Users.Single(u => u.Id == rental.UserId); db.SaveChanges(); } return(RedirectToAction("Index")); }
public ActionResult Rent(RentalAndDetailsViewModel kit) { var userid = User.Identity.GetUserId(); Kit kitToRent = db.Kits.Find(kit.KitId); double rentalPrice = 0; if (userid != null) { var chargeRate = from u in db.Users join m in db.MembershipTypes on u.MembershipTypeId equals m.Id where u.Id.Equals(userid) select new { m.MonthlyMembershipFee, m.SixMonthMemberShipFee }; if (kit.Duration == StaticDetails.SixMonthCount) { rentalPrice = Convert.ToDouble(kitToRent.Price) * Convert.ToDouble(chargeRate.ToList()[0].SixMonthMemberShipFee) / 100; } else { rentalPrice = Convert.ToDouble(kitToRent.Price) * Convert.ToDouble(chargeRate.ToList()[0].MonthlyMembershipFee) / 100; } var userInDb = db.Users.SingleOrDefault(c => c.Id == userid); Rental rental = new Rental { KitId = kitToRent.KitId, UserId = userid, RentalPrice = rentalPrice, Status = Rental.StatusEnum.Rented, StartDate = DateTime.Now, Duration = DateTime.Now.AddMonths(1), }; db.Rentals.Add(rental); var kitInDb = db.Kits.SingleOrDefault(c => c.KitId == kit.KitId); db.SaveChanges(); return(RedirectToAction("Index", "Rent")); } return(View()); }