// GET: EditRecord
        public ActionResult Index()
        {
            SKUDetailViewModel data = new SKUDetailViewModel();

            if (RouteData.Values.ContainsKey("id"))
            {
                string skuId = RouteData.Values["id"].ToString();
                data               = InWebService.HttpRequest <SKUDetailViewModel>("Inventory/GetSkuInfo?skuId=" + skuId);
                data.Locations     = GetLocations();
                data.Departments   = GetDepartments(data.LocationId);
                data.Categories    = GetCategories(data.LocationId, data.DepartmentId);
                data.Subcategories = GetSubcategories(data.LocationId, data.DepartmentId, data.CategoryId);
            }
            return(View(data));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Product(int skuId)
        {
            var sku = await _context.SKUs
                      .Include(x => x.Option)
                      .Include(x => x.Product)
                      .Include(x => x.SKUOptions)
                      .ThenInclude(x => x.Size)
                      .Include(x => x.SKUPictures)
                      .SingleOrDefaultAsync(x => x.Id == skuId);

            if (sku == null)
            {
                return(RedirectToAction("Products"));
            }

            var relatedSKUs = await _context.SKUs
                              .Include(x => x.Option)
                              .Include(x => x.SKUPictures)
                              .Where(x => x.ProductId == sku.ProductId && x.Id != sku.Id)
                              .Select(x => new RelatedSKUsViewModel
            {
                SKUId      = x.Id,
                OptionName = x.Option.Name,
                ImageUrl   = x.SKUPictures.FirstOrDefault().ImageUrl
            })
                              .ToListAsync();

            var optionGroup = await _context.OptionGroups.SingleOrDefaultAsync(x => x.Id == sku.Option.OptionGroupId);


            //find first available skuOption index
            int firstAvailableSKUOptionIndex = -1;

            for (int i = 0; i < sku.SKUOptions.Count; i++)
            {
                if (sku.SKUOptions[i].IsAvailable && sku.SKUOptions[i].Stock > 0)
                {
                    firstAvailableSKUOptionIndex = i;
                    break;
                }
            }


            var skuDetailViewModel = new SKUDetailViewModel
            {
                Id              = sku.Id,
                Price           = sku.Price,
                IsDiscounted    = sku.IsDiscounted,
                DiscountedPrice = sku.DiscountedPrice,
                Name            = sku.Product.Name,
                Description     = sku.Product.Description,
                OptionName      = sku.Option.Name,
                SKUOptions      = sku.SKUOptions,
                FirstSKUPicture = sku.SKUPictures.FirstOrDefault(),
                SKUPictures     = sku.SKUPictures.Skip(1).ToList(),
                FirstAvailableSKUOptionIndex = firstAvailableSKUOptionIndex,
                RelatedSKUs = relatedSKUs,
                OptionGroup = optionGroup
            };



            return(View(skuDetailViewModel));
        }