コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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));
        }
コード例 #9
0
        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());
            }
        }
コード例 #10
0
        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));
        }