public JsonResult GetProductsByCategory([DataSourceRequest] DataSourceRequest req, int categoryId) { try { // Create the category query var categoryQuery = new CategoryQuery() { CategoryIds = new List <int> { categoryId }, Envelope = "full" }; var category = metadataServiceClient.GetCategories(categoryQuery).Result.FirstOrDefault(); // Get all root categories var rootcategories = GetRootCategoriesFromCategories(category, new List <Category>()); // Get the categoy ids var categoryids = rootcategories.Select(s => s.CategoryId).ToList(); // Add selected category id to list categoryids.Add(categoryId); if (categoryids.Count != 0) { // Create the product query var productQuery = new ProductQuery() { CategoryIds = categoryids }; // Get the products var result = metadataServiceClient.GetProducts(productQuery); // Set the data to model var response = result.Result.Select(r => new ProductViewModel { ProductId = r.ProductId, Name = r.Name, ShortDescription = r.ShortDescription }).ToList().OrderByDescending(i => i.ProductId).ToDataSourceResult(req); return(Json(response, JsonRequestBehavior.AllowGet)); } else { return(Json(new ProductViewModel(), JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { return(Json(ex)); } }
public JsonResult GetProducts([DataSourceRequest] DataSourceRequest req) { try { // Get the products var products = metaDataServiceClient.GetProducts(new Headstone.MetaData.API.Models.Queries.Live.ProductQuery() { Envelope = "full" }).Result.ToList(); #region [ Modifications ] // products.ForEach(p => { p.CategoryProducts.ForEach(a => a.Category.Products = null); p.CategoryProducts.ForEach(b => b.Product = null); p.TrademarkProducts.ForEach(t => t.Trademark.Products = null); p.TrademarkProducts.ForEach(t => t.Product = null); p.TrademarkProducts.ForEach(t => t.Trademark.Children = null); p.Pictures.ForEach(s => s.Product = null); }); #endregion // Get product categories var result = products.Select(p => new ProductViewModel() { ProductId = p.ProductId, Created = p.Created, Name = p.Name, Status = (Headstone.Framework.Models.EntityStatus)p.Status, //CategoryList = String.Join(",",p.CategoryProducts.Select(a=>a.Category.Name)), Pictures = p.Pictures, TrademarkName = p.TrademarkProducts?.FirstOrDefault().Trademark.Name, }).ToList().OrderByDescending(p => p.ProductId); var model = JsonConvert.SerializeObject(result, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, }); return(Json(model.ToDataSourceResult(req), JsonRequestBehavior.AllowGet)); } catch (Exception e) { return(Json(e)); } }
public ActionResult List(int catId) { #region [ Breadcrumb ] // Create the breadcrumb var breadcrumb = new List <BreadcrumbItemViewModel>(); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Ürün Listesi" // degisecek }); ViewBag.Breadcrumb = breadcrumb; #endregion var productList = metadataServiceClient.GetProducts(new MetaData.API.Models.Queries.Live.ProductQuery() { CategoryIds = new List <int> { catId }, Envelope = "full" }).Result; var categoryList = metadataServiceClient.GetCategories(new MetaData.API.Models.Queries.Live.CategoryQuery() { ProductIds = productList.Select(p => p.ProductId).ToList() }).Result; var model = new ProductListViewModel(); model.Products = productList.Select(p => new ProductViewModel().From(p)).ToList(); model.Categories = categoryList.Select(c => new CategoryViewModel().From(c)).ToList(); return(View(model)); }
public ActionResult OrderInfo() { var model = new OrderPageViewModel(); #region [ Breadcrumb ] // Create the breadcrumb var breadcrumb = new List <BreadcrumbItemViewModel>(); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Siparişlerim" }); ViewBag.Breadcrumb = breadcrumb; #endregion var orders = orderService.GetOrders(new Headstone.Models.Requests.OrderRequest() { UserIds = new List <int> { CurrentUser.Id } }).Result; var products = metaDataServiceClient.GetProducts(new MetaData.API.Models.Queries.Live.ProductQuery() { ProductIds = orders.SelectMany(l => l.OrderLines.Select(p => p.ProductID)).ToList() }).Result; foreach (var order in orders) { model.ItemsOrder.Add(new OrderViewModel() { OrderID = order.OrderID, TotalPrice = order.TotalPrice, Lines = order.OrderLines, }); } foreach (var product in products) { model.ItemsProducts.Add(new ProductViewModel() { Name = product.Name, ShortDescription = product.ShortDescription, }); } return(View(model)); }
public ActionResult Details() { #region [ Breadcrumb ] // Create the breadcrumb var breadcrumb = new List <BreadcrumbItemViewModel>(); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Sepet" }); ViewBag.Breadcrumb = breadcrumb; #endregion var model = new BasketViewModel(); var basket = basketService.GetBaskets(new Headstone.Models.Requests.BasketRequest() { UserIds = new List <int> { CurrentUser.Id } }).Result.FirstOrDefault(); var product = metaDataServiceClient.GetProducts(new MetaData.API.Models.Queries.Live.ProductQuery() { ProductIds = basket.BasketItems.Select(p => p.ProductID).ToList(), Envelope = "full" }).Result; if (basket != null && product.Any()) { if (!basket.BasketItems.Any()) { return(RedirectToAction("Index", "Home")); } model = new BasketViewModel().From(basket); //get campaigns if any var userCampaign = campaignService.GetCampaigns(new Headstone.Models.Requests.CampaignRequest() { RelatedDataEntityTypes = new List <string> { "User" }, RelatedDataEntityIds = new List <int> { CurrentUser.Id } }).Result.FirstOrDefault(); var productCampaign = campaignService.GetCampaigns(new Headstone.Models.Requests.CampaignRequest() { RelatedDataEntityTypes = new List <string> { "Product" }, RelatedDataEntityIds = product.Select(c => c.ProductId).ToList() }).Result.FirstOrDefault(); var categoryCampaign = campaignService.GetCampaigns(new Headstone.Models.Requests.CampaignRequest() { RelatedDataEntityTypes = new List <string> { "Category" }, RelatedDataEntityIds = product.SelectMany(c => c.CategoryProducts.Select(k => k.CategoryId)).ToList() }).Result.FirstOrDefault(); #region [ Process Discounts ] decimal discountAmount = 0; decimal discountPercentage = 1; bool isDiscountPercentage = false; //if usercampaign has product if (userCampaign != null) { if (userCampaign.CampaignProperties.Any()) { var userspecificcampaignproductid = userCampaign.CampaignProperties.FirstOrDefault(k => k.Key == "ProductId")?.Value; var userspecificcampaigncategoryid = userCampaign.CampaignProperties.FirstOrDefault(k => k.Key == "CategoryId")?.Value; if (product.Select(p => p.ProductId.ToString()).Contains(userspecificcampaignproductid)) { if (userCampaign.DiscountType == Common.DiscountType.Percentage) { isDiscountPercentage = true; discountPercentage = discountPercentage * userCampaign.DiscountAmount / 100; } else { isDiscountPercentage = false; discountAmount += userCampaign.DiscountAmount; } } else if (product.Select(p => p.CategoryProducts.FirstOrDefault().CategoryId.ToString()).Contains(userspecificcampaigncategoryid)) { if (userCampaign.DiscountType == Common.DiscountType.Percentage) { isDiscountPercentage = true; discountPercentage = discountPercentage * userCampaign.DiscountAmount / 100; } else { isDiscountPercentage = false; discountAmount += userCampaign.DiscountAmount; } } } } if (productCampaign != null) { if (productCampaign.DiscountType == Common.DiscountType.Percentage) { isDiscountPercentage = true; discountPercentage = discountPercentage + discountPercentage * userCampaign.DiscountAmount / 100; discountPercentage = discountPercentage > 1 ? discountPercentage - 1 : discountPercentage; } else { isDiscountPercentage = false; discountAmount += userCampaign.DiscountAmount; } } if (categoryCampaign != null) { if (categoryCampaign.DiscountType == Common.DiscountType.Percentage) { isDiscountPercentage = true; discountPercentage = discountPercentage + discountPercentage * userCampaign.DiscountAmount / 100; discountPercentage = discountPercentage > 1 ? discountPercentage - 1 : discountPercentage; } else { isDiscountPercentage = false; discountAmount += userCampaign.DiscountAmount; } } #endregion var productPrice = Convert.ToDecimal(product.FirstOrDefault(p => p.ProductId == model.BasketItems.FirstOrDefault(b => b.ProductID == p.ProductId).ProductID).Properties.FirstOrDefault(k => k.Key == "ListPrice").Value); //apply discounts on basket if (userCampaign != null || productCampaign != null || categoryCampaign != null) { if (discountAmount != 0) { productPrice = productPrice - discountAmount; } if (discountPercentage != 1) { productPrice = productPrice * discountPercentage; } } model.BasketItems.Where(b => b.ProductID == product.FirstOrDefault(p => p.ProductId == b.ProductID).ProductId).FirstOrDefault().ProductName = product.FirstOrDefault(p => p.ProductId == model.BasketItems.FirstOrDefault(b => b.ProductID == p.ProductId).ProductID).Name; model.BasketItems.Where(b => b.ProductID == product.FirstOrDefault(p => p.ProductId == b.ProductID).ProductId).FirstOrDefault().ProductDescription = product.FirstOrDefault(p => p.ProductId == model.BasketItems.FirstOrDefault(b => b.ProductID == p.ProductId).ProductID).ShortDescription; model.BasketItems.Where(b => b.ProductID == product.FirstOrDefault(p => p.ProductId == b.ProductID).ProductId).FirstOrDefault().OldPrice = product.FirstOrDefault(p => p.ProductId == model.BasketItems.FirstOrDefault(b => b.ProductID == p.ProductId).ProductID).Properties.FirstOrDefault(k => k.Key == "ListPrice").Value; model.BasketItems.Where(b => b.ProductID == product.FirstOrDefault(p => p.ProductId == b.ProductID).ProductId).FirstOrDefault().ListPrice = productPrice.ToString(); model.BasketItems.Where(b => b.ProductID == product.FirstOrDefault(p => p.ProductId == b.ProductID).ProductId).FirstOrDefault().Price = product.FirstOrDefault(p => p.ProductId == model.BasketItems.FirstOrDefault(b => b.ProductID == p.ProductId).ProductID).Properties.FirstOrDefault(k => k.Key == "Price").Value; } return(View(model)); }
public ActionResult CustomerReviewDetails(int id) { // Create the model var model = new CustomerReviewDetailsViewModel(); try { // Create the comment query var request = new CommentRequest() { CommentIds = new List <int> { id } }; // Get the comment var response = _commentService.GetComments(request).Result.FirstOrDefault(); // Set the comment data model.CustomerReview = new CustomerReviewViewModel { Body = response.Body, CommentId = response.CommentId, Created = response.Created.ToString("dd-MM-yyyy HH:mm"), Status = response.Status, ParentId = response.ParentId, Rating = response.Rating, RelatedDataEntityId = response.RelatedDataEntityId, RelatedDataEntityType = response.RelatedDataEntityType, Type = response.Type, Updated = response.Updated, UserId = response.UserId }; #region [ User ] // Create the user query var userQuery = new UserQuery() { RelatedUserIds = new List <int> { response.UserId } }; // Get the user var userResponse = _identityService.GetUsers(userQuery).Result.FirstOrDefault(); // Set the source username model.SourceUserName = userResponse.Firstname + " " + userResponse.Lastname; #endregion #region [ Related Entity ] switch (response.RelatedDataEntityType) { case "Product": // Create the product query var productQuery = new ProductQuery() { ProductIds = new List <int> { response.RelatedDataEntityId }, Envelope = "full" }; // Get the product var product = _metadataServiceClient.GetProducts(productQuery).Result.FirstOrDefault(); // Set the related data model.Description = product.ShortDescription; model.SourceId = product.ProductId; model.SourceTitle = product.Name; model.Created = product.Created.ToString("yyyy-MM-dd HH:mm"); model.Images = product.Pictures.Select(p => p.ImageUrl).ToList(); break; case "Trademark": // Create the trademark query var trademarkQuery = new TrademarkQuery() { TrademarkIds = new List <int> { response.RelatedDataEntityId }, Envelope = "full" }; // Get the trademark var trademark = _metadataServiceClient.GetTrademarks(trademarkQuery).Result.FirstOrDefault(); // Set the related data model.Description = trademark.ShortDescription; model.SourceId = trademark.TrademarkId; model.SourceTitle = trademark.Name; model.Created = trademark.Created.ToString("yyyy-MM-dd HH:mm"); model.Images = trademark.Pictures.Select(p => p.ImageUrl).ToList(); break; case "Category": // Create the category query var categoryQuery = new CategoryQuery() { CategoryIds = new List <int> { response.RelatedDataEntityId }, Envelope = "full" }; // Get the category var category = _metadataServiceClient.GetCategories(categoryQuery).Result.FirstOrDefault(); // Set the related data model.Description = category.ShortDescription; model.SourceId = category.CategoryId; model.SourceTitle = category.Name; model.Created = category.Created.ToString("yyyy-MM-dd HH:mm"); break; } #endregion #region [ Breadcrumb ] // Create the breadcrumb var breadcrumb = new List <BreadcrumbItemViewModel>(); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Yorumlar Ve Puanlar", Link = "/contents/customerreviews" }); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = response.CommentId.ToString() }); ViewBag.Breadcrumb = breadcrumb; #endregion } catch (Exception ex) { Log(LogMode.Error, $"There is an error while getting the customer review details! CustomerReviewId:{id}", ex); } return(View(model)); }
public ActionResult Index() { var model = new HomeViewModel() { CurrentUser = CurrentUser, RecommendedProducts = new ProductListViewModel() }; if (CurrentUser != null) { //get user based discounts var userCampaign = campaignService.GetCampaigns(new Headstone.Models.Requests.CampaignRequest() { RelatedDataEntityTypes = new List <string> { "User" }, RelatedDataEntityIds = new List <int> { CurrentUser.Id } }).Result.FirstOrDefault(); if (userCampaign != null) { var campaignProductId = userCampaign.CampaignProperties.FirstOrDefault(k => k.Key == "ProductId").Value; var campaignDiscounttype = userCampaign.DiscountType; var discountAmout = userCampaign.DiscountAmount; var product = metaDataServiceClient.GetProducts(new MetaData.API.Models.Queries.Live.ProductQuery() { ProductIds = new List <int> { Convert.ToInt32(campaignProductId) }, Envelope = "full" }).Result.FirstOrDefault(); model.Campaign = new CampaignViewModel() { DiscountAmount = (int)discountAmout, DiscountType = campaignDiscounttype, Product = new ProductViewModel().From(product) }; } //get user var user = identityServiceClient.GetUsers(new Lidia.Identity.API.Models.Queries.UserQuery() { RelatedUserIds = new List <int> { CurrentUser.Id }, Envelope = "full" }).Result.FirstOrDefault(); //get recommended productIds var recommendedProductIds = user.Properties.Where(k => k.Key == "RecommendedProduct").ToList().Select(v => Convert.ToInt32(v.Value)).ToList(); if (recommendedProductIds.Any()) { //get recommended products var recommendedProducts = metaDataServiceClient.GetProducts(new MetaData.API.Models.Queries.Live.ProductQuery() { ProductIds = recommendedProductIds, Envelope = "full" }).Result; if (recommendedProducts.Any()) { model.RecommendedProducts.Products = recommendedProducts.Select(p => new ProductViewModel().From(p)).ToList(); } } } return(View(model)); }
public JsonResult AddToBasket(int productId, int quantity) { //check if user has existing basket var basket = basketService.GetBaskets(new Headstone.Models.Requests.BasketRequest() { UserIds = new List <int> { CurrentUser.Id } }).Result.FirstOrDefault(); var product = metaDataServiceClient.GetProducts(new MetaData.API.Models.Queries.Live.ProductQuery() { ProductIds = new List <int> { productId }, Envelope = "full" }).Result.FirstOrDefault(); if (basket != null) { if (basket.BasketItems.Select(p => p.ProductID).Contains(productId)) { //if product is already in the basket //first remove the basketitem var basketItemDeleted = new BasketItemDeleted() { BasketItemID = basket.BasketItems.Where(p => p.ProductID == productId).FirstOrDefault().BasketItemID }; var deletebasketitem = basketService.DeleteBasketItem(basketItemDeleted); //then recreate the basketitem with updated quantity var basketItemCreated = new BasketItemCreated() { BasketID = basket.BasketID, ProductID = productId, Quantity = quantity + basket.BasketItems.Where(p => p.ProductID == productId).FirstOrDefault().Quantity, }; var basketItemresponse = basketService.CreateBasketItem(basketItemCreated); } else { var basketItemCommand = new BasketItemCreated() { BasketID = basket.BasketID, ProductID = productId, Quantity = quantity, }; var bresponse = basketService.CreateBasketItem(basketItemCommand); } } else { //create basket if it does not exist var command = new BasketCreated() { UserID = CurrentUser.Id, BasketItems = new List <BasketItemCreated>() { new BasketItemCreated() { ProductID = productId, Quantity = quantity, Created = DateTime.Now } } }; var response = basketService.CreateBasket(command); } var model = new BasketViewModel().From(basket); model.BasketItems.Where(b => b.ProductID == productId).FirstOrDefault().ProductName = product.Name; // TODO: BURASI HATA VERIYOR!! model.BasketItems.Where(b => b.ProductID == productId).FirstOrDefault().ListPrice = product.Properties.FirstOrDefault(k => k.Key == "ListPrice").Value; model.BasketItems.Where(b => b.ProductID == productId).FirstOrDefault().Price = product.Properties.FirstOrDefault(k => k.Key == "Price").Value; var html = ViewToString("Basket", "~/Views/Basket/Minicart.cshtml", model); var controllerResponse = new HeadstoneControllerResponse() { Html = html }; return(Json(controllerResponse, JsonRequestBehavior.AllowGet)); }
public ActionResult Details(int id) { var model = new TrademarkDetailsViewModel(); try { // Create the query var query = new TrademarkQuery { TrademarkIds = new List <int> { id }, Envelope = "full" }; // Get the category var result = _metadataServiceClient.GetTrademarks(query).Result.FirstOrDefault(); model.Trademark = new TrademarkViewModel { TrademarkId = result.TrademarkId, Name = result.Name, Parent = _metadataServiceClient.GetTrademarks(new TrademarkQuery { TrademarkIds = new List <int> { result.ParentId }, Envelope = "full" }).Result.FirstOrDefault(), Children = result.Children, LongDescription = result.LongDescription, ShortDescription = result.ShortDescription, Code = result.Code, ERPCode = result.ERPCode, Products = result.Products, Properties = result.Properties, Status = result.Status, Tags = result.Tags, Pictures = result.Pictures }; model.Trademark = this.CreateSelectLists(model.Trademark); // Get the products var productIds = new List <int>(); // Create the product query var productQuery = new ProductQuery() { TrademarkIds = new List <int> { id } }; // Get the products model.Products = _metadataServiceClient.GetProducts(productQuery).Result; #region [ Breadcrumb ] // Create the breadcrumb var breadcrumb = new List <BreadcrumbItemViewModel>(); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Markalar", Link = "/trademarks" }); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = result.Name }); ViewBag.Breadcrumb = breadcrumb; #endregion return(View(model)); } catch (Exception ex) { Log(LogMode.Error, $"There is an error while getting the trademark details! TrademarkId:{id}", ex); return(View()); } }
public ActionResult Edit(int id) { // Create the model var model = new CreateProductViewModel() { CurrentUser = CurrentUser, TempPictureKey = CreateThreadId(5), IsEdit = true }; try { // Load the exist product var product = metadataServiceClient.GetProducts(new ProductQuery() { Envelope = "full", ProductIds = new List <int> { id } }).Result.FirstOrDefault(); model.Name = product.Name; model.Pictures = product.Pictures; model.SelectedTrademarkId = product.TrademarkProducts.FirstOrDefault().Trademark.TrademarkId; model.EANCode = product.Properties.Where(x => x.Key == "EANCode").FirstOrDefault()?.Value; model.Code = product.Code; model.ProductId = id; // Get the produc categories var productcategories = product.CategoryProducts.Select(c => c.CategoryId).ToList(); model.SelectedCategoryIds = productcategories; // Get the categories var categoryResponse = metadataServiceClient.GetCategories(new CategoryQuery() { Envelope = "full" }); if (CurrentUser.Status == Lidia.Identity.Common.Models.EntityStatus.Draft) { model.Errors.Add("Üyeliğiniz henüz onaylanmamıştır. Üyeliğiniz onaylandığında size bilgi verilecektir."); return(View(model)); } // Get the trademarks var trademarks = metadataServiceClient.GetTrademarks(new TrademarkQuery()); // Get the listing categories var categories = categoryResponse.Result.ToList(); var parentList = new List <CategoryViewModel>(); // Get parent list foreach (var category in categories) { // Get the path var idPath = GetIDPath(category); var namePath = GetNamePath(category); parentList.Add(new CategoryViewModel() { CategoryId = category.CategoryId, ParentId = category.ParentId, Parent = category.Parent, IdPath = idPath, NamePath = namePath, Name = category.Name, IsLeaf = category.Children.Count == 0 }); } // Set data to model model.Categories = parentList; model.Trademarks = trademarks.Result.ToList(); #region [ Breadcrumb ] // Create the breadcrumb var breadcrumb = new List <BreadcrumbItemViewModel>(); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Ürünler", Link = "/urunler" }); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = model.Name, Link = "/urun/" + model.ProductId }); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Düzenle" }); ViewBag.Breadcrumb = breadcrumb; #endregion } catch (Exception ex) { Log(Headstone.Framework.Models.LogMode.Error, "There is an error while creating the product", ex); } return(View("New", model)); }