public async Task <IActionResult> UpdateProduct(ProductResource productResource, int productId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }
            var product  = _mapper.Map <ProductResource, Product>(productResource);
            var response = await _productService.UpdateProduct(product, productId);

            if (response.Success)
            {
                return(Ok(response.Product));
            }
            return(BadRequest(response.Message));
        }
コード例 #2
0
        public void ShowTemperatureData(ProductResource productResource)
        {
            try
            {
                TemperatureSensor[] sensors = productResource.QueryTemperatureSensors(SensorInfo.Reading);

                Temperature = string.Join(", ", sensors
                                          .Select(s => s.Reading.ToString("0.00")));
            }
            catch (SystemConfigurationException ex) // If device does not have internal temperature sensor(s), display temperature as "N/A".
            {
                Temperature = NotAvailable;
                Error       = ex.ErrorCode.ToString();
            }
        }
コード例 #3
0
        public async Task <ActionResult> Update(int id, ProductResource productResource)
        {
            if (id != productResource.Id)
            {
                return(BadRequest());
            }
            var product = mapper.Map <ProductResource, Product>(productResource);
            await service.Update(product);

            if (product == null)
            {
                return(NotFound());
            }
            return(NoContent());
        }
コード例 #4
0
        public void formatter_withNullStringProperty_propertyIsOmitted()
        {
            // arrange
            var resource = new ProductResource
            {
                Make = "Ford"
            };

            // act
            var result = TestHelpers.Format.FormatObject(resource, _formatter);

            // assert
            result.Should().NotContain("model");
            result.Should().NotContain("serialNumber");
        }
コード例 #5
0
        public IActionResult Insert([FromBody] ProductResource productResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = _mapper.Map <ProductResource, Product>(productResource);

            product.CreateTimeStamp = DateTime.UtcNow;
            _unitOfWork.Products.Add(product);
            _unitOfWork.Complete();

            return(Created(new Uri(Request.GetDisplayUrl() + "/" + product.Id), Mapper.Map <Product, ProductResource>(product)));
        }
コード例 #6
0
        protected async Task ExportProductAsync(IApiContext apiContext, Event eventPayLoad)
        {
            var productHandler = new ProductExportHandler(_appSetting);
            var product        = await productHandler.GetProduct(apiContext, eventPayLoad.EntityId);



            var productStoreResource = new ProductResource(apiContext);
            var sfProd = await productStoreResource.GetProductAsync(product.ProductCode, responseFields : "Content(ProductImages)");

            if (sfProd != null)
            {
                //Get images form storefront product
                var images        = sfProd.Content.ProductImages;
                var productImages = new List <ProductLocalizedImage>();
                if (images != null)
                {
                    var documentResource = new DocumentResource(apiContext);
                    foreach (var image in images)
                    {
                        var imageUrl = image.ImageUrl ??
                                       String.Format("//cdn-sb.mozu.com/{0}-m1/cms/files/{1}", apiContext.TenantId,
                                                     image.CmsId);

                        var document = await documentResource.GetDocumentAsync("files@mozu", image.CmsId);

                        productImages.Add(new ProductLocalizedImage
                        {
                            CmsId      = image.CmsId,
                            ImageLabel = document.Name,
                            //ImageUrl = image.ImageUrl.Replace(image.CmsId, document.Name)
                            ImageUrl = imageUrl.Replace(image.CmsId, document.Name)
                        });
                    }
                    product.Content.ProductImages = productImages;
                }

                await productHandler.ExportFileuploadAsync(productImages);
            }

            //Get Locations for Product
            var locations = await GetProductLocations(apiContext, product.ProductCode);


            await productHandler.ExportInventoryAsync(apiContext, product, locations);

            await productHandler.ExportProductAsync(apiContext, product);
        }
コード例 #7
0
        public async Task ProductSavedWhenModelStateValid()
        {
            var productFromMapper = new Product
            {
                Name           = "Name",
                QuantityPerBox = 10
            };

            _mockMapper.Setup(x => x.Map <Product>(It.IsAny <ProductAddResource>())).Returns(productFromMapper);

            var productResourceFromMapper = new ProductResource
            {
                Id             = 5,
                Name           = "Name",
                QuantityPerBox = 10
            };

            _mockMapper.Setup(x => x.Map <ProductResource>(productFromMapper)).Returns(productResourceFromMapper);

            Product productModelAfterSaved = null;

            _mockUnitOfWork.Setup(x => x.SaveAsync()).ReturnsAsync(true)
            .Callback(() => productModelAfterSaved = new Product
            {
                Id             = 5,
                Name           = productFromMapper.Name,
                QuantityPerBox = productFromMapper.QuantityPerBox
            });

            var productAddResource = new ProductAddResource();
            var result             = await _sut.CreateProduct(productAddResource);

            var createdAtRouteResult = result as CreatedAtRouteResult;

            _mockProductRepository.Verify(x => x.AddProduct(It.IsAny <Product>()), Times.Once);
            _mockUnitOfWork.Verify(x => x.SaveAsync(), Times.Once);

            Assert.IsType <CreatedAtRouteResult>(result);
            Assert.NotNull(createdAtRouteResult);
            Assert.IsAssignableFrom <IDictionary <string, object> >(createdAtRouteResult.Value);

            var dict = createdAtRouteResult.Value as IDictionary <string, object>;

            Assert.NotNull(dict);
            Assert.Equal(productModelAfterSaved.Id, (int)createdAtRouteResult.RouteValues["id"]);
            Assert.Equal(productModelAfterSaved.Name, (string)dict[nameof(productResourceFromMapper.Name)]);
            Assert.Equal(productModelAfterSaved.QuantityPerBox, (int)dict[nameof(productResourceFromMapper.QuantityPerBox)]);
        }
コード例 #8
0
        public async Task <IActionResult> CreateProduct([FromBody] ProductResource productResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = _mapper.Map <ProductResource, Product>(productResource);

            _productRepo.AddProduct(product);
            await _unitOfWork.CompleteAsync();

            var result = _mapper.Map <Product, ProductResource>(product);

            return(Ok(result));
        }
コード例 #9
0
        public async Task <IActionResult> Create([FromBody] ProductResource data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var domain = mapper.Map <ProductResource, Product>(data);

            _productRepository.Add(domain);
            await unitOfWork.CompleteAsync();

            var productResource = mapper.Map <Product, ProductResource>(domain);

            return(Ok(productResource));
        }
コード例 #10
0
        public IActionResult UpdateProduct(int id, [FromBody] ProductResource productResource)
        {
            ValidateProductInput(productResource);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = productRepository.Get(id);

            mapper.Map(productResource, product);
            unitOfWork.Complete();
            var result = mapper.Map <Product, ProductResource>(product);

            return(Ok(result));
        }
コード例 #11
0
        public async Task <IActionResult> Update([FromRoute] Guid id, [FromBody] ProductResource productResource)
        {
            if (productResource == null)
            {
                productResource = new ProductResource();
            }

            var product = _mapper.Map <ProductResource, Product>(productResource);
            var result  = await _productService.UpdateAsync(id, product);

            if (!result.Success)
            {
                return(BadRequest(result));
            }

            return(Ok(result));
        }
コード例 #12
0
        public async Task <IActionResult> AddProduct(ProductResource pr)
        {
            var ProductToAdd = new Product
            {
                Name        = pr.Name,
                Quantity    = pr.Quantity,
                Unit        = pr.Unit,
                BuyingPrice = pr.Buyingprice,
                ShopId      = pr.shopid
            };

            await productRepository.AddProducts(ProductToAdd);

            await unitOfWork.CompleteAsync();

            return(Ok());
        }
コード例 #13
0
        /**
         * This function will add a new Custom Property to a Magento product and store a catalog item id
         * This will serve to tie the two products together
         *
         * @param   magentoProduct  Magento product
         * @param   catalogItemId   Identifier for a Catalog Item
         *
         */
        public void CreateMappingForProduct(ProductResource magentoProduct, string catalogItemId)
        {
            //Check for a mapping
            var mappingAttrValue = GetAttributeByCode(magentoProduct.custom_attributes, ConfigReader.MappingCode);

            //mapping already exists? nothing to do!
            if (mappingAttrValue != null)
            {
                return;
            }

            //Get categories, required for updating product
            var magentoCategoryList = (JArray)GetAttributeByCode(magentoProduct.custom_attributes, ConfigReader.MagentoCategoryCode);
            var categoryIds         = magentoCategoryList.Select(category => int.Parse(category.ToString())).ToList();

            _magentoProductController.AddCustomAttributeToProduct(magentoProduct, categoryIds, ConfigReader.MappingCode, catalogItemId);
        }
コード例 #14
0
        public async Task <IActionResult> AddProduct(ProductResource productResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }
            Product product = this._mapper.Map <ProductResource, Product>(productResource);

            var productResponse = await this._productService.AddProduct(product);

            if (productResponse.Success)
            {
                return(Ok(productResponse.Extra));
            }

            return(BadRequest(productResponse.Message));
        }
コード例 #15
0
        /**
         * This function creates a FieldResource given a magento product and an attribute code for a TEXT field
         * That means a field where you can only enter text
         *
         * @param   magentoProduct  Magento product to parse
         * @param   attributeCode   Attribute code, hard coded value in Magento
         *
         * @return  FieldResource   Resource to add to EA product
         */
        private static FieldResource CreateFieldFromText(ProductResource magentoProduct, string attrCode)
        {
            var           value = GetAttributeByCode(magentoProduct.custom_attributes, attrCode);
            FieldResource field = null;

            if (value != null)
            {
                var fieldId = ConfigReader.GetValueForField(attrCode);

                if (fieldId != -1)
                {
                    field = CreateField(ConfigReader.GetValueForField(attrCode), value.ToString());
                }
            }

            return(field);
        }
コード例 #16
0
        /**
         * This function creates a FieldResource given a magento product and an attribute code for a SINGLE SELECT field
         * That is a field where you can pick a SINGLE item from a drop down list
         *
         * @param   magentoProduct  Magento product to parse
         * @param   attributeCode   Attribute code, hard coded value in Magento
         *
         * @return  FieldResource   Resource to add to EA product
         */
        private FieldResource CreateFieldFromSingleSelect(ProductResource magentoProduct, string attrCode)
        {
            var           optionId  = GetAttributeByCode(magentoProduct.custom_attributes, attrCode);
            FieldResource resource  = null;
            var           eaFieldId = ConfigReader.GetValueForField(attrCode);

            if (optionId != null && eaFieldId != -1)
            {
                var attribute = _magentoCustomAttributesController.GetCustomAttributeIfExists(attrCode);
                var value     = GetLabelFromAttributeValue(attribute.options, optionId.ToString()).ToString();

                resource = new FieldResource {
                    FieldDefinitionId = eaFieldId, LanguageInvariantValue = value
                };
            }

            return(resource);
        }
コード例 #17
0
        public async Task <IActionResult> AddProduct(ProductResource model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            var productResponse = await productService.AddEntityAsync(mapper.Map <Product>(model));

            if (productResponse.Success)
            {
                return(Ok(productResponse.Result));
            }
            else
            {
                return(BadRequest(productResponse.Message));
            }
        }
コード例 #18
0
        public async Task <IActionResult> CreateProduct([FromBody] ProductResource productResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var item = mapper.Map <ProductResource, Product>(productResource);

            repository.Add(item);
            await unitOfWork.CompleteAsync();

            item = await repository.GetProductById(item.ID);

            var result = mapper.Map <Product, ProductResource>(item);

            return(Ok(result));
        }
コード例 #19
0
 public IActionResult AddProduct(string name, decimal price, string description)
 {
     try
     {
         _productService.AddNewProduct(name, price, description);
         _productService.SaveChanges();
         ProductResource newProduct = new ProductResource
         {
             Description = description,
             Name        = name,
             Price       = price,
         };
         return(CreatedAtAction("addProduct", newProduct));
     }
     catch (Exception)
     {
         return(BadRequest());
     }
 }
コード例 #20
0
        public async Task <IActionResult> PutLikeAsync(int id, [FromBody] ProductResource productUpdate)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = _mapper.Map <ProductResource, Product>(productUpdate);
            var result  = await _productService.LikeAsync(id, product);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            var productResource = _mapper.Map <Product, ProductResource>(result.Product);

            return(Ok(productResource));
        }
コード例 #21
0
        public async Task <ActionResult> Update(int id, [FromBody] ProductResource productResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = await _unitOfWork.Products.GetAsync(id);

            if (product == null)
            {
                return(NotFound());
            }

            _mapper.Map(productResource, product);
            await _unitOfWork.CompleteAsync();

            return(Ok(_mapper.Map <Product, ProductResource>(product)));
        }
コード例 #22
0
        public async Task <IActionResult> CreateProductAsync([FromBody] ProductResource productInfo)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = _mapper.Map <ProductResource, Product>(productInfo);

            var response = await _productService.CreateProductAsync(product);

            if (!response.Success)
            {
                return(BadRequest(response.Message));
            }

            var productResource = _mapper.Map <Product, ProductResource>(response.Product);

            return(Ok(productResource));
        }
コード例 #23
0
        public async Task <string> UploadFile([FromForm(Name = "productImage")] IFormFile productImage)
        {
            var productResource = new ProductResource();

            if (productImage != null)
            {
                string folder = "products/images/";
                folder += Guid.NewGuid().ToString() + "_" + productImage.FileName;

                productResource.ImagePath = folder;

                string serverFolder = Path.Combine(webHostEnvironment.WebRootPath, folder);

                await productResource.ProductImage.CopyToAsync(new FileStream(serverFolder, FileMode.Create));

                return(serverFolder);
            }

            return(null);
        }
コード例 #24
0
        public async Task <IEnumerable <ProductResource> > ListAsync()
        {
            var products = await _productService.ListAsync();

            var resources = products.Select(product =>
            {
                var productResource = new ProductResource();
                productResource.UnitOfMeasurement = product.UnitOfMeasurement.ToDescriptionString();
                productResource.Name = product.Name;
                productResource.Id   = product.Id;
                productResource.QuantityInPackage = product.QuantityInPackage;

                var categoryResource     = new CategoryResource(product.Category.Id, product.Category.Name);
                productResource.Category = categoryResource;

                return(productResource);
            });

            return(resources);
        }
コード例 #25
0
        public async Task <IActionResult> CreateProduct([FromBody] ProductResource p)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Products product = new Products();

            product.Name       = p.Name;
            product.Photo      = p.Photo;
            product.Price      = p.Price;
            product.LastUpdate = DateTime.Now;

            repository.AddProduct(product);

            await unitofwork.Complete();

            return(Ok(product));
        }
コード例 #26
0
        public async Task <IActionResult> PostAsync([FromBody] SaveProductResource resource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }

            var product = _mapper.Map <Product>(resource);

            var result = await _productService.SaveAsync(product);

            if (!result.Success)
            {
                return(BadRequest(result.Message));
            }

            ProductResource productResource = _mapper.Map <ProductResource>(result.product);

            return(Ok(productResource));
        }
コード例 #27
0
        public IActionResult Update(int id, [FromBody] ProductResource productResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = _unitOfWork.Products.Get(id);

            if (product == null)
            {
                return(NotFound());
            }

            _mapper.Map <ProductResource, Product>(productResource, product);
            product.UpdateTimeStamp = DateTime.UtcNow;
            _unitOfWork.Complete();

            return(Ok(Mapper.Map <Product, ProductResource>(product)));
        }
コード例 #28
0
ファイル: App.cs プロジェクト: Valentynaa/SampleApplications
        /// <summary>
        /// This function provides an example of how to create a product in EA given a Magento SKU
        /// This function specifically creates a Master Product from a *SIMPLE* Magento Product
        ///
        /// NOTE:
        ///		This function requires you prepare the product by ensuring it has:
        ///		- The first category must also be one defined in EA
        ///     - If manufacturer exists, it will be mapped to a manufacturer in EA
        ///		- If there are multiple Categories or Manufacturers, the first one will be used
        ///		- When the product is sucessfully created, an attribute (MappingCode) will be added to each Magento product
        ///		- If MULTIPLE images are provided, the BASE Magento image will be used as the hero shot
        /// </summary>
        /// <param name="magentoProduct">Magento product object</param>
        /// <returns>ProductDocumentId Identifier of created Product Document</returns>
        private static int UpsertSimpleMagentoProductToEa(ProductResource magentoProduct)
        {
            //Get fields and assets
            var fields = _fieldMapper.ParseFieldsFromProduct(magentoProduct);
            var assets = _assetMapper.ParseAssetsFromProduct(magentoProduct, ConfigReader.MagentoStorageConfiguration);

            var eaCategoryId     = _fieldMapper.GetMatchingCategory(magentoProduct.custom_attributes);
            var eaManufacturerId = _fieldMapper.GetMatchingManufacturer(magentoProduct.custom_attributes);

            var productMapping = _fieldMapper.GetProductMapping(magentoProduct);

            //Upsert product
            var productDocumentId = _productMapper.UpsertMasterProduct(productMapping, eaCategoryId, ConfigReader.EaClassificationTreeId,
                                                                       eaManufacturerId, fields, assets);

            var slug = _productMapper.CalculateSlug(productDocumentId, null);

            if (productMapping == null)
            {
                //Add to your library
                productMapping = _productMapper.AddProductToEndlessAisle(slug);

                //Set the mapping on the product so we know it is mapped
                _fieldMapper.CreateMappingForProduct(magentoProduct, productMapping);
            }

            _pricingMapper.UpsertPricingForCatalogItem(productMapping, magentoProduct.price);

            //Create availability for product at company level
            _availabilityMapper.UpsertAvailabilityForCatalogItem(productMapping, _productMapper.GetQuantityBySku(magentoProduct.sku));

            //If we have colors defined, add it as a color definition (if its not already added)
            var colorId = _colorMapper.GetMagentoColorAttribute(magentoProduct);

            if (colorId != null)
            {
                _colorMapper.UpsertColorDefinitions(productDocumentId, int.Parse(colorId));
            }

            return(productDocumentId);
        }
コード例 #29
0
        public async Task <IActionResult> AddProducts(ProductResource productResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetErrorMessages()));
            }
            else
            {
                Product product  = _mapper.Map <ProductResource, Product>(productResource);
                var     response = await _service.AddProduct(product);

                if (response.Success)
                {
                    return(Ok(response.Product));
                }
                else
                {
                    return(BadRequest(response.Message));
                }
            }
        }
コード例 #30
0
        public async Task <IActionResult> Update(int id, [FromBody] ProductResource data)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var product = await _productRepository.GetById(id);

            if (product == null)
            {
                return(NotFound());
            }

            mapper.Map <ProductResource, Product>(data, product);
            await unitOfWork.CompleteAsync();

            var productResource = mapper.Map <Product, ProductResource>(product);

            return(Ok(productResource));
        }