Exemplo n.º 1
0
        private void AddToWishList(ModelDetailsViewModel viewModel)
        {
            var wishlistID = 0;

            using (var context = new TTTEntities())
            {
                using (var trans = new TransactionScope())
                {
                    var customerEmail = Util.SessionAccess.Email;
                    var wishlist = context.trnwishlists.Where(a => a.Email == customerEmail).SingleOrDefault();
                    if (wishlist == null)
                    {
                        wishlistID = context.trnwishlists.Add(new trnwishlist()
                        {
                            Active = true,
                            CreateDT = DateTime.Now,
                            Email = customerEmail
                        }).ID;

                        AddWishlistItem(wishlistID, viewModel.ModelSizeID, viewModel.ColourDescID, viewModel.SKU, context);
                    }
                    else
                    {
                        wishlistID = wishlist.ID;

                        var wishlistItem = context.lnkwishlists.Where(a => a.ColourDescID == viewModel.ColourDescID &&
                                                        a.ModelSizeID == viewModel.ModelSizeID &&
                                                        a.WishlistID == wishlistID).SingleOrDefault();

                        if (wishlistItem == null)
                            AddWishlistItem(wishlistID, viewModel.ModelSizeID, viewModel.ColourDescID, viewModel.SKU, context);
                        else
                        {
                            wishlistItem.Active = true;
                            wishlistItem.UpdateDT = DateTime.Now;
                        }
                    }

                    context.SaveChanges();
                    trans.Complete();
                }
            }
        }
Exemplo n.º 2
0
        private ModelDetailsViewModel ConstructModelDetailsViewModel(int modelID, int colourDescID, int modelSizeID = 0)
        {
            var viewModel = new ModelDetailsViewModel();

            using (var context = new TTTEntities())
            {
                var query = from model in context.refmodels
                            join brand in context.refbrands on model.BrandID equals brand.ID
                            join category in context.refcategories on brand.CategoryID equals category.ID
                            join modelColourDesc in context.lnkmodelcolourdescs on model.ID equals modelColourDesc.ModelID
                            join modelImages in context.lnkmodelimages on modelColourDesc.ID equals modelImages.ModelColourDescID
                            select new
                            {
                                model,
                                brand,
                                category,
                                modelImages,
                                modelColourDesc
                            };

                var results = query.Where(a => a.modelColourDesc.ModelID == modelID && a.modelColourDesc.ColourDescID == colourDescID).Distinct().ToList();

                if (results.Count > 0)
                {
                    viewModel = new ModelDetailsViewModel()
                    {
                        //ModelID = results.Select(a => a.model.ID).First(),
                        ModelID = modelID,
                        ModelName = results.Select(a => a.model.Name).First(),
                        BrandName = results.Select(a => a.brand.Name).First(),
                        CategoryName = results.Select(a => a.category.Name).First(),
                        Price = results.Select(a => a.model.Price).First(),
                        DiscountPrice = results.Select(a => a.model.DiscountPrice).FirstOrDefault(),
                        Description = results.Select(a => a.modelColourDesc.Description).First(),
                        ModelImages = results.Select(a => a.modelImages).ToList(),
                        HeelHeight = results.Select(a => a.modelColourDesc.HeelHeight).First(),
                        //ModelColourDescID = results.Select(a => a.modelColourDesc.ColourDescID).First()
                        ColourDescID = colourDescID,
                        SKU = results.Select(a => a.modelColourDesc.SKU).First(),
                        ModelSizeID = modelSizeID,
                        ModelMainImage = results.Select(a => a.modelImages.Thumbnail).First(),
                        ShareUrl = string.Format("http://www.tote-to-toe.com/Shoes/Details?modelID={0}&colourDescID={1}", modelID, colourDescID),
                        Sole = results.Select(a=>a.modelColourDesc.Sole).First(),
                        Make = results.Select(a => a.modelColourDesc.Make).First(),
                        UpperMaterial = results.Select(a => a.modelColourDesc.UpperMaterial).First(),
                        LiningSock = results.Select(a => a.modelColourDesc.LiningSock).First(),
                        Style = results.Select(a => a.modelColourDesc.Style).First(),
                        HeelDesc = results.Select(a => a.modelColourDesc.HeelDesc).First()
                    };
                }

                ConstructRecentViewCookie(string.Format("{0}/{1}", viewModel.CategoryName, viewModel.ModelMainImage),
                                        string.Format("/Shoes/Details?modelID={0}&colourDescID={1}", modelID, colourDescID));

            }

            return viewModel;
        }
Exemplo n.º 3
0
        public virtual ActionResult Details(ModelDetailsViewModel viewModel, FormCollection collection)
        {
            try
            {
                if (collection["submit"].ToString() == "+ ADD TO BAG")
                {
                    ConstructShoppingBagCookie();

                    #region Add to Cart

                    var salesOrder = new trnsalesorder();

                    using (var context = new TTTEntities())
                    {
                        var query = from modelSize in context.lnkmodelsizes
                                    join model in context.refmodels on modelSize.ModelID equals model.ID
                                    select new { ModelSizeID = modelSize.ID, Model = model };

                        var modelDetails = query.Where(a => a.ModelSizeID == viewModel.ModelSizeID).Single();

                        var discountPrice = modelDetails.Model.DiscountPrice.HasValue ? modelDetails.Model.DiscountPrice.Value : 0;

                        var modelPrice = discountPrice != 0 ? modelDetails.Model.DiscountPrice.Value : modelDetails.Model.Price;

                        var customerEmail = Util.SessionAccess == null ? "" : Util.SessionAccess.Email; ;

                        if (!string.IsNullOrEmpty(customerEmail)) // login customer
                        {
                            var openStatusID = Util.GetStatusID(Status.Open.ToString());

                            salesOrder = context.trnsalesorders.Where(a => a.Email == customerEmail && a.StatusID == openStatusID).SingleOrDefault();

                            using (var trans = new TransactionScope())
                            {
                                if (salesOrder == null)
                                {
                                    salesOrder = context.trnsalesorders.Add(new trnsalesorder()
                                    {
                                        StatusID = openStatusID,
                                        Email = customerEmail,
                                        SubTotal = 0,
                                        GrandTotal = modelPrice,
                                        CreateDT = DateTime.Now
                                    });
                                    context.SaveChanges();

                                    AddSalesOrderItem(salesOrder.ID, viewModel.ModelSizeID, viewModel.SKU, modelPrice, context);
                                }
                                else
                                {
                                    // update sales order grand total
                                    salesOrder.GrandTotal += modelPrice;

                                    var soItem = context.lnksalesorders.Where(a => a.SalesOrderID == salesOrder.ID &&
                                                                                    a.ModelSizeID == viewModel.ModelSizeID).SingleOrDefault();
                                    if (soItem == null)
                                    {
                                        salesOrder.UpdateDT = DateTime.Now;

                                        AddSalesOrderItem(salesOrder.ID, viewModel.ModelSizeID, viewModel.SKU, modelPrice, context);
                                    }
                                    else
                                    {
                                        soItem.Active = true;
                                        soItem.UpdateDT = DateTime.Now;
                                    }
                                }

                                context.SaveChanges();
                                trans.Complete();
                            }
                        }
                        else
                        {
                            ConstructShoppingBagCookie();

                            var soItem = context.lnksalesorders.Where(a => a.SalesOrderID == null &&
                                                                            a.ModelSizeID == viewModel.ModelSizeID &&
                                                                            a.CookieID == cookieID).SingleOrDefault();
                            if (soItem == null)
                            {
                                AddSalesOrderItem(null, viewModel.ModelSizeID, viewModel.SKU, modelPrice, context);
                            }
                            else
                            {
                                soItem.Active = true;
                                soItem.UpdateDT = DateTime.Now;
                            }

                            context.SaveChanges();
                        }
                    }

                    #endregion
                }
                else if (collection["submit"].ToString() == "+ ADD TO WISH LIST")
                {
                    #region Add to Wishlist

                    if (!Request.IsAuthenticated)
                    {
                        return RedirectToAction(MVC.SignIn.Index(Url.Action("Details", new { modelID = viewModel.ModelID, colourDescID = viewModel.ColourDescID })));
                    }

                    AddToWishList(viewModel);

                    #endregion
                }
            }
            catch (Exception ex)
            {
                throw;
            }

            return RedirectToAction("Details", new { modelID = viewModel.ModelID, colourDescID = viewModel.ColourDescID });
        }
Exemplo n.º 4
0
        private void ConstructRecommendedShoes(ModelDetailsViewModel viewModel)
        {
            var modelColourDescIDs = new List<int>();

            if (viewModel.CategoryName.ToLower().Replace(" ","").Contains("peeptoes"))
            {
                modelColourDescIDs = GetPeepToeRandom(viewModel.HeelHeight, viewModel.ModelID, viewModel.ColourDescID);
            }
            else if (viewModel.CategoryName.ToLower().Replace(" ", "").Contains("pump"))
            {
                modelColourDescIDs = GetPumpRandom(viewModel.HeelHeight, viewModel.ModelID, viewModel.ColourDescID);
            }
            else if (viewModel.CategoryName.ToLower().Replace(" ", "").Contains("sandal"))
            {
                modelColourDescIDs = GetSandalRandom(viewModel.HeelHeight, viewModel.ModelID, viewModel.ColourDescID);
            }
            else if (viewModel.CategoryName.ToLower().Replace(" ", "").Contains("wedge"))
            {
                modelColourDescIDs = GetWedgeRandom(viewModel.HeelHeight, viewModel.ModelID, viewModel.ColourDescID);
            }
            else if (viewModel.CategoryName.ToLower().Replace(" ", "").Contains("platform"))
            {
                modelColourDescIDs = GetPlatformRandom(viewModel.HeelHeight, viewModel.ModelID, viewModel.ColourDescID);
            }
            else if (viewModel.CategoryName.ToLower().Replace(" ", "").Contains("ballerina"))
            {
                modelColourDescIDs = GetBallerinaRandom(viewModel.ModelID, viewModel.ColourDescID);
            }
            else if (viewModel.CategoryName.ToLower().Replace(" ", "").Contains("flat"))
            {
                modelColourDescIDs = GetFlatRandom(viewModel.ModelID, viewModel.ColourDescID);
            }

            if (modelColourDescIDs.Count > 0)
            {
                using (var context = new TTTEntities())
                {
                    var query = from model in context.refmodels
                                join brand in context.refbrands on model.BrandID equals brand.ID
                                join category in context.refcategories on brand.CategoryID equals category.ID
                                join modelColourDesc in context.lnkmodelcolourdescs on model.ID equals modelColourDesc.ModelID
                                join modelImage in context.lnkmodelimages on modelColourDesc.ID equals modelImage.ModelColourDescID
                                join colourDesc in context.refcolourdescs on modelColourDesc.ColourDescID equals colourDesc.ID into cDesc
                                from colourDesc in cDesc.DefaultIfEmpty()
                                join colour in context.refcolours on colourDesc.ColourID equals colour.ID
                                join colourPriority in context.lnkcolourpriorities on colour.ID equals colourPriority.ColourID into cp
                                from actColourPriority in cp.DefaultIfEmpty()
                                join modelSize in context.lnkmodelsizes on new { modelID = model.ID, colourDescID = colourDesc.ID }
                                    equals new { modelID = modelSize.ModelID, colourDescID = modelSize.ColourDescID } into ms
                                from actModelSize in ms.DefaultIfEmpty()
                                select new
                                {
                                    ModelColourDescID = modelColourDesc.ID,
                                    ModelID = model.ID,
                                    ModelName = model.Name,
                                    ColourDescID = colourDesc.ID,
                                    ColourDescName = colourDesc.Name,
                                    BrandName = brand.Name,
                                    CategoryName = category.Name,
                                    Price = model.Price,
                                    DiscountPrice = model.DiscountPrice,
                                    MainImage = modelImage.Image
                                };

                    var results = query.Where(a => modelColourDescIDs.Contains(a.ModelColourDescID)).ToList();
                    var uniqueModelColourDescID = results.Select(a => a.ModelColourDescID).Distinct().ToList();

                    foreach (var id in uniqueModelColourDescID)
                    {
                        var result = results.Where(a => a.ModelColourDescID == id).First();

                        viewModel.ReommendedModels.Add(new ReommendedModel()
                        {
                            BrandName = result.BrandName,
                            CategoryName = result.CategoryName,
                            ColourDescID = result.ColourDescID,
                            ColourDescName = result.ColourDescName,
                            DiscountPrice = result.DiscountPrice.HasValue ? result.DiscountPrice.Value : 0,
                            ModelID = result.ModelID,
                            ModelName = result.ModelName,
                            Price = result.Price,
                            MainImage = result.MainImage
                        });
                    }

                    //foreach (var result in results)
                    //{
                    //    viewModel.ReommendedModels.Add(new ReommendedModel()
                    //    {
                    //        BrandName = result.BrandName,
                    //        CategoryName = result.CategoryName,
                    //        ColourDescID = result.ColourDescID,
                    //        ColourDescName = result.ColourDescName,
                    //        DiscountPrice = result.DiscountPrice.HasValue ? result.DiscountPrice.Value : 0,
                    //        ModelID = result.ModelID,
                    //        ModelName = result.ModelName,
                    //        Price = result.Price,
                    //        MainImage  =result.MainImage
                    //    });
                    //}
                }

                viewModel.ReommendedModels = viewModel.ReommendedModels.GroupBy(x => new
                {
                    x.BrandName,
                    x.CategoryName,
                    x.ColourDescID,
                    x.ColourDescName,
                    x.ModelID,
                    x.ModelName,
                    x.MainImage,
                    x.Price,
                    x.DiscountPrice
                }).Select(grp => grp.First()).ToList();
            }
        }