Example #1
0
        // 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));
        }
Example #2
0
        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 }));
        }