// Added By circus public ActionResult SubscribePackage(int packageid, int cartype = 0) { //Check the car type and Pakcage of user may be later UserPackageAddOnViewModel packageDetails = new UserPackageAddOnViewModel(); packageDetails.SubscriptionTypeId = 1; if (Session["SelectedCar"] != null) { var car = Session["SelectedCar"] as CarUser; packageDetails.SelectedCar = car.CarId.ToString(); ViewBag.SelectedCarName = car.DisplayName; } var userid = User.Identity.GetUserId(); var carUserList = db.CarUsers.Where(a => a.UserId == userid); var packageCarUserList = db.UserPackages.Where(a => a.UserId == userid && a.PaymentRecieved == true).Select(a => a.CarId).ToList(); var list = new List <CarUser>(); foreach (var carUser in carUserList) { if (!packageCarUserList.Contains(carUser.CarId)) { list.Add(carUser); } } packageDetails.UserCars = list; int latestCar = list.OrderByDescending(a => a.CarId).Select(a => a.CarId).FirstOrDefault(); ViewBag.LatestCar = latestCar; //Store packageid in view packageDetails.PackageID = packageid; if (packageid == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } else { var package = db.Packages.Where(a => a.PackageId == packageid).FirstOrDefault(); if (package == null) { return(HttpNotFound()); } packageDetails.Packages = package; packageDetails.Services = db.Services.Where(s => s.IsAddOn == true).ToList(); } if (Session["NewServiceGarageId"] != null) { int garageId = 0; int.TryParse(Convert.ToString(Session["NewServiceGarageId"]), out garageId); if (garageId > 0) { packageDetails.GarageId = garageId; var garage = db.Garages.Where(i => i.GarageId == garageId).SingleOrDefault(); if (garage != null) { var serviceDays = garage.ServiceDays.Split(','); packageDetails.ServiceDay = serviceDays[0]; foreach (var day in serviceDays) { packageDetails.AvailableServiceDays.Add(new SelectListItem() { Text = day, Value = day }); } } // prepare Time Slots List var defaultFirstDay = packageDetails.AvailableServiceDays.FirstOrDefault(); var userPackagesList = db.UserPackages.Where(a => a.UserId == userid && a.PaymentRecieved == true && a.IsActive == true).ToList(); if (defaultFirstDay != null) { var garageTimeSlotList = db.GargesTimeingSlots.Where(g => g.GarageId == garageId).ToList(); foreach (var timeSlot in garageTimeSlotList) { var userPackageByTimeSlot = userPackagesList.Where(u => u.GaragesTimeingSlotId == timeSlot.Id && u.ServiceDay == defaultFirstDay.Text).FirstOrDefault(); if (userPackageByTimeSlot != null) { continue; } packageDetails.AvailableGaragesTimeingSlots.Add(new SelectListItem() { Text = timeSlot.SlotTimeing, Value = timeSlot.Id.ToString() }); } } var package = db.Packages.Where(a => a.PackageId == packageid).FirstOrDefault(); if (package == null) { return(HttpNotFound()); } var SubscriptionTypeArray = package.SubscriptionTypes.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); var SubsscriptionInfoList = SubscriptionTypeInfo.GetSubscriptionTypeList(); foreach (var item in SubsscriptionInfoList) { if (SubscriptionTypeArray.Contains(item.Value)) { packageDetails.AvailableSubscriptionTypes.Add(item); } } //packageDetails.AvailableSubscriptionTypes.Add(new SelectListItem() //{ // Text = "Bi-Weekly", // Value = "2" //}); //packageDetails.AvailableSubscriptionTypes.Add(new SelectListItem() //{ // Text = "Monthly", // Value = "3" //}); } } return(View(packageDetails)); }
public ActionResult SubscribePackage(UserPackageAddOnViewModel model, string[] services) { var package = db.Packages.Where(a => a.PackageId == model.PackageID).FirstOrDefault(); if (package == null) { return(View()); } var userId = User.Identity.GetUserId(); //var carList = db.CarUsers.Where(a => a.UserId == userId).FirstOrDefault(); //if (carList == null) // return View(); int caridfromuserpage = Convert.ToInt32(model.SelectedCar); if (Session["SelectedCar"] != null) { var car = Session["SelectedCar"] as CarUser; caridfromuserpage = car.CarId; } //Save User Packges var savingEntity = new UserPackage { UserId = userId, PackageId = model.PackageID, CarId = caridfromuserpage, SubscribedDate = DateTime.Now, ActualPrice = package.Package_Price, TotalPrice = model.Packages.Package_Price, PriceWithAddOns = model.Packages.Package_Price - package.Package_Price, DiscountPrice = 0, CreatedDt = DateTime.Now, PaymentRecieved = false, ServiceDay = model.ServiceDay, SubscriptionTypeId = model.SubscriptionTypeId, GaragesTimeingSlotId = model.GaragesTimeingSlotId, }; db.UserPackages.Add(savingEntity); db.SaveChanges(); //Sve uer addson if (services != null) { //Save user addons UserPackagesAddon addon = null; foreach (var item in services) { int serviceId = 0; int.TryParse(item, out serviceId); if (serviceId > 0) { var serviceAddOns = db.Services.FirstOrDefault(s => s.ServiceID == serviceId); if (serviceAddOns != null) { addon = new UserPackagesAddon(); addon.ServiceID = Convert.ToInt32(item); addon.UserPackageID = savingEntity.Id; addon.ActualPrice = serviceAddOns.Service_Price; addon.DiscountPrice = 0; addon.CreatedDt = DateTime.Now; db.UserPackagesAddons.Add(addon); db.SaveChanges(); } } } } if (Session["NewServiceGarageId"] != null) { var car = db.CarUsers.Where(a => a.CarId == caridfromuserpage).FirstOrDefault(); car.GarageId = Convert.ToInt32(Session["NewServiceGarageId"]); db.SaveChanges(); } //save car auto renewal //If this is first car set Autorenewal to True model.AutoRenewalSubscription = true; if (model.AutoRenewalSubscription) { if (Session["SelectedCar"] != null) { var carTemp = Session["SelectedCar"] as CarUser; var car = db.CarUsers.Where(a => a.CarId == carTemp.CarId).FirstOrDefault(); car.AutoRenewal = model.AutoRenewalSubscription; db.SaveChanges(); } else { var carId = Convert.ToInt32(model.SelectedCar); var car = db.CarUsers.Where(a => a.CarId == carId).FirstOrDefault(); car.AutoRenewal = model.AutoRenewalSubscription; db.SaveChanges(); } } return(RedirectToAction("PrepaymentConfirmation", new { id = savingEntity.Id })); }