//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()));
 }
Пример #3
0
        //[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());
        }
Пример #4
0
        // 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());
        }