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(); } } }
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; }
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 }); }
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(); } }