Esempio n. 1
0
        //输入产品名称和描述创建产品
        private static void TestCreateProduct()
        {
            IClientProfile clientProfile = DefaultProfile.GetProfile("<your-region-id>", "<your-access-key-id>", "<your-access-key-secret>");

            DefaultAcsClient client = new DefaultAcsClient(clientProfile);

            CreateProductRequest request = new CreateProductRequest();

            request.Name = "<productName>";
            request.Desc = "<product description>";

            try
            {
                CreateProductResponse response = client.GetAcsResponse(request);
                Console.WriteLine(response.Success);
                Console.WriteLine(response.ErrorMessage);
                CreateProductResponse.CreateProduct_ProductInfo ProductInfo = response.ProductInfo;
                Console.WriteLine("product name: " + ProductInfo.ProductName);
                Console.WriteLine("product key: " + ProductInfo.ProductKey);
                Console.WriteLine("product description: " + ProductInfo.ProductDesc);
            }
            catch (ServerException e)
            {
                Console.WriteLine(e.ErrorCode);
                Console.WriteLine(e.ErrorMessage);
            }
            catch (ClientException e)
            {
                Console.WriteLine(e.ErrorCode);
                Console.WriteLine(e.ErrorMessage);
            }
            Console.ReadKey();
        }
        public async Task <ValidationResultModel <ProductResponse> > Save(CreateProductRequest model)
        {
            var result = new ValidationResultModel <ProductResponse>();

            if (!result.Succeeded)
            {
                return(result);
            }

            Products product = null;

            if (!string.IsNullOrWhiteSpace(model.Id))
            {
                product = (await _productRepository.GetProducts(new GetProductRequest {
                    Id = model.Id
                })).Single();
            }

            var productDbModel = model.Map <CreateProductRequest, Products>(product);

            productDbModel = await _productRepository.Save(productDbModel);

            //Save Revision with RabbitMQ
            await _rabbitMqService.RabbitMqSender(product, RabbitMqConstants.ProductRevisionQueue);

            result.Model = productDbModel.Map <Products, ProductResponse>();

            return(result);
        }
Esempio n. 3
0
        public async Task CreateProduct_ValidRequest_ReturnsResponse()
        {
            var createRequest = new CreateProductRequest
            {
                Code        = "ABC",
                Description = "My desc",
                UnitPrice   = 123.56m,
            };

            var createResponse = await Fixture.Products.CreateProductAsync(createRequest);

            AssertUtilities.NotEmpty(createResponse.Id);
            Assert.Equal(createRequest.Code, createResponse.Code);
            Assert.Equal(createRequest.Description, createResponse.Description);
            Assert.Equal(createRequest.UnitPrice, createResponse.UnitPrice);
            Assert.True(createResponse.IsListed);

            var findRequest = new FindProductRequest {
                Id = createResponse.Id
            };

            var findResponse = await Fixture.Products.FindProductAsync(findRequest);

            Assert.Equal(findRequest.Id, findResponse.Id);
            Assert.Equal(createRequest.Code, findResponse.Code);
            Assert.Equal(createRequest.Description, findResponse.Description);
            Assert.Equal(createRequest.UnitPrice, findResponse.UnitPrice);
            Assert.True(findResponse.IsListed);
        }
        public async Task <MessageResponse> Create(CreateProductRequest request)
        {
            try
            {
                using (UnitOfWork uow = new UnitOfWork())
                {
                    var category = await uow.Categories.GetAsync(request.CategoryId);

                    var product = mapper.Map <CreateProductRequest, Product>(request);
                    product.Category    = category;
                    product.CreatedDate = DateTime.Today;
                    product.Status      = Data.Enums.ProductStatus.OutOfStock;
                    product.Image       = await fileService.UploadFileAsync(request.ThumbnailImage);

                    await uow.Products.AddAsync(product);

                    await uow.SaveAsync();

                    return(new MessageResponse("success", "Tạo mới thành công"));
                }
            }
            catch (Exception e)
            {
                return(new MessageResponse("error", "Tạo mới thất bại", $"Lỗi: {e.Message}"));
            }
        }
        public async Task <ProductResponce> CreateAsync(CreateProductRequest request)
        {
            if (!m_authService.IsAuthUser())
            {
                throw new AuthenticationException();
            }
            if (!m_authService.AuthUserInRole(Roles.AdminRoleName))
            {
                throw new UserNotAdminException();
            }

            var categoryDb = await m_db.LeafCategories.FirstOrDefaultAsync(x => x.Id == request.CategoryId);

            if (categoryDb is null)
            {
                throw new CategoryLeafNotFoundException();
            }

            var newProduct = m_mapper.Map <ProductDbModel>(request);

            categoryDb.Products.Add(newProduct);

            await m_db.SaveChangesAsync();

            return(m_mapper.Map <ProductResponce>(newProduct));
        }
        public async Task <IActionResult> CreateProduct([FromBody] CreateProductRequest request)
        {
            var command = new CreateProductRequestCommand(request.Name, request.Price, request.ExpirationDate);
            var result  = await _mediator.Send(command);

            return(CreatedAtAction("GetProduct", new { productId = result.Id, token = CancellationToken.None }, result));
        }
        public Product Create([FromBody] CreateProductRequest model)
        {
            _bus.Send <SubmitProduct>(new { ProductName = model.ProductName, SupplierId = model.SupplierId, Package = model.Package }).GetAwaiter().GetResult();
            var result = _productService.Create(model);

            return(result);
        }
        public async Task <int> Add(CreateProductRequest request)
        {
            Product product = _mapper.Map <CreateProductRequest, Product>(request);
            await _productRepository.Add(product);

            return(product.Id);
        }
        public async Task <BaseResponseDto <bool> > Handle(CreateProductRequest request, CancellationToken cancellationToken)
        {
            BaseResponseDto <bool> response = new BaseResponseDto <bool>();

            if (request.Price <= 0)
            {
                throw new ArgumentException($"{nameof(request.Price)} should greater than 0");
            }

            try
            {
                var product = new Product
                {
                    ProductCode = request.ProductCode,
                    Price       = request.Price,
                    Stock       = request.Stock
                };

                await _repository.CreateAsync(product);

                response.Data = true;

                await _mediator.Publish(new ProductCreatedEvent(productName : product.ProductCode));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                response.Errors.Add("An error occurred while creating the product.");
            }

            return(response);
        }
Esempio n. 10
0
        private CreateProductResponse Response(CreateProductRequest request)
        {
            var response = new CreateProductResponse(1, "basketball");

            Logger.LogInformation($"接收消息:{System.Text.Json.JsonSerializer.Serialize(request)} 时间:{DateTimeOffset.Now}{Environment.NewLine}响应消息:{System.Text.Json.JsonSerializer.Serialize(response)}");
            return(response);
        }
Esempio n. 11
0
        public IHttpActionResult Create(CreateProductRequest product)
        {
            if (product == null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var newProduct = new Product();

            if (_products.Any())
            {
                newProduct.Id = _products.Max(p => p.Id) + 1;
            }
            else
            {
                newProduct.Id = 1;
            }

            newProduct.ManufacturerId =
                product.ManufacturerId > 0 ? product.ManufacturerId : null;
            newProduct.Name     = product.Name.Trim(' ');
            newProduct.Quantity = product.Quantity;

            _products.Add(newProduct);

            return(Ok(newProduct));
        }
Esempio n. 12
0
        public Product Create(CreateProductRequest model)
        {
            var product = _mapper.Map <Product>(model);

            _productRepository.Create(product);
            return(product);
        }
        public void Should_Delete_Product()
        {
            string randomString = $"{DateTime.Now:yyyyMMddHHmmssfff}";
            CreateProductRequest createProductRequest = new CreateProductRequest
            {
                Description    = "product-description",
                Locale         = Locale.TR.ToString(),
                Name           = $"product-name-{randomString}",
                ConversationId = "123456789"
            };

            ProductResource productResource = Product.Create(createProductRequest, _options).Data;

            DeleteProductRequest updateProductRequest = new DeleteProductRequest
            {
                Locale               = Locale.TR.ToString(),
                ConversationId       = "123456789",
                ProductReferenceCode = productResource.ReferenceCode
            };

            IyzipayResourceV2 response = Product.Delete(updateProductRequest, _options);

            PrintResponse(response);

            Assert.AreEqual(response.Status, Status.SUCCESS.ToString());
            Assert.IsNotNull(response.SystemTime);
            Assert.Null(response.ErrorMessage);
        }
        public void Should_RetrieveAll_Product()
        {
            string randomString = $"{DateTime.Now:yyyyMMddHHmmssfff}";
            CreateProductRequest createProductRequest = new CreateProductRequest
            {
                Description    = "product-description",
                Locale         = Locale.TR.ToString(),
                Name           = $"product-name-{randomString}",
                ConversationId = "123456789"
            };

            Product.Create(createProductRequest, _options);
            PagingRequest pagingRequest = new PagingRequest
            {
                Locale         = Locale.TR.ToString(),
                ConversationId = "123456789",
                Page           = 1,
                Count          = 1
            };

            ResponsePagingData <ProductResource> response = Product.RetrieveAll(pagingRequest, _options);

            PrintResponse(response);

            Assert.AreEqual(response.Status, Status.SUCCESS.ToString());
            Assert.AreEqual(1, response.Data.Items.Count);
            Assert.AreEqual(1, response.Data.CurrentPage);
            Assert.IsNotNull(response.SystemTime);
            Assert.Null(response.ErrorMessage);
        }
Esempio n. 15
0
        public async Task Products_Create_ReturnsCreatedResponse()
        {
            var model = new CreateProductRequest
                        (
                sku: random.Next(1, int.MaxValue)
                , name: "TEST"
                , inventory: new CreateProductInventoryRequest
                (
                    warehouses: new CreateProductWarehouseRequest[]
            {
                new CreateProductWarehouseRequest(quantity: 10, locality: "SP", type: "MAIN_STORAGE"),
                new CreateProductWarehouseRequest(quantity: 2, locality: "RJ", type: "ECOMMERCE")
            }
                )
                        );

            var result = await _controller.Create(new ApiVersion(1, 0), model);

            var actual = Assert.IsType <CreatedAtActionResult>(result);
            var output = Assert.IsType <CreateProductResult>(actual.Value);

            var expectStatusCode        = (int)HttpStatusCode.Created;
            var expectSku               = model.Sku;
            var expectIsMarketable      = true;
            var expectInventoryQuantity = 12;
            var expectName              = "TEST";
            var expectWarehousesCount   = 2;

            Assert.Equal(expectStatusCode, actual.StatusCode);
            Assert.Equal(expectSku, output.Sku);
            Assert.Equal(expectName, output.Name);
            Assert.Equal(expectIsMarketable, output.Inventory.IsMarketable);
            Assert.Equal(expectInventoryQuantity, output.Inventory.Quantity);
            Assert.Equal(expectWarehousesCount, output.Inventory.Warehouses.Count());
        }
Esempio n. 16
0
        public async Task <CreateProductResponse> AddAsync(CreateProductRequest product)
        {
            try
            {
                var obj = new Product()
                {
                    Id          = Guid.NewGuid(),
                    Name        = product.Name,
                    Description = product.Description,
                    Price       = product.Price,
                    Quantity    = product.Quantity,
                    Image       = product.Image,
                    CreateDate  = DateTime.Now,
                    CategoryId  = product.CategoryId,
                    BrandId     = product.BrandId
                };

                await _productRepository.AddAsync(obj);

                var result = _mapper.Map <CreateProductResponse>(obj);

                return(result);
            }
            catch (ArgumentException ex)
            {
                throw new ArgumentNullException(ex.Message);
            }
        }
Esempio n. 17
0
        public async Task Products_Create_DuplicatedSku_ThrowsApiException()
        {
            var model = new CreateProductRequest
                        (
                sku: 43264
                , name: "TEST"
                , inventory: new CreateProductInventoryRequest
                (
                    warehouses: new CreateProductWarehouseRequest[]
            {
                new CreateProductWarehouseRequest(quantity: 1, locality: "SP", type: "MAIN_STORAGE")
            }
                )
                        );

            var actual = await Assert.ThrowsAsync <ApiException>(() => _controller.Create(apiVersion: new ApiVersion(1, 0), model));

            var expectCode    = ErrorConstants.ProductAlreadyExists.Code;
            var expectName    = ErrorConstants.ProductAlreadyExists.Name;
            var expectMessage = ErrorConstants.ProductAlreadyExists.Message;

            Assert.Equal(expectCode, actual.Code);
            Assert.Equal(expectName, actual.Name);
            Assert.Equal(expectMessage, actual.Message);
        }
        public async Task CreateProduct_Creates_Product_Successfully()
        {
            //Arrange
            Mock <IProductRepository>        mockProductRepository = new Mock <IProductRepository>();
            Mock <ILogger <ProductService> > mockLogger            = new Mock <ILogger <ProductService> >();

            mockProductRepository.Setup(m => m.CreateProduct(It.IsAny <Product>()))
            .ReturnsAsync(true)
            .Verifiable();

            CreateProductRequest createProductRequest = new CreateProductRequest
            {
                Name          = "Test product",
                Description   = "This is a desc",
                Price         = 100,
                DeliveryPrice = 10
            };

            ProductService productService = new ProductService(mockProductRepository.Object, mockLogger.Object);

            //Act
            var result = await productService.CreateProduct(createProductRequest);

            //Assert
            Assert.True(result.IsSuccessful);

            mockProductRepository.VerifyAll();
            mockLogger.VerifyAll();
        }
Esempio n. 19
0
        /// <inheritdoc />
        Task <ApiResponse <ProductResponse> > IStorageApi.CreateProductAsync(CreateProductRequest createProductRequest)
        {
            var arguments = new object[] { createProductRequest };
            var func      = requestBuilder.BuildRestResultFuncForMethod("CreateProductAsync", new Type[] { typeof(CreateProductRequest) });

            return((Task <ApiResponse <ProductResponse> >)func(Client, arguments));
        }
        public ActionResult Create(CreateProductRequest request)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }

            var product = new Product
            {
                CategoryId = request.CategoryId,
                Description = request.Description,
                MSRP = request.MSRP,
                Name = request.Name,
                Price = request.Price,
                SKU = request.SKU,
                Summary = request.Summary,
                LastUpdated = DateTime.UtcNow,
                LastUpdatedUserId = GetUserId(this),
            };

            _context.Products.Add(product);
            _context.SaveChanges();

            TempData.SuccessMessage($"Successfully created \"{product.Name}\"");

            return RedirectToAction(nameof(Index));
        }
        public void can_create_product()
        {
            //// ARRANGE
            var request = new CreateProductRequest("TestName", 12.5, 11);
            var handler = new CreateProductRequestHandler();

            var productRepository = MockRepository.GenerateStub <IGenericRepository <Product> >();

            productRepository
            .Expect(repo => repo.SaveAsync())
            .Return(Task.FromResult(
                        new Product
            {
                Id = 12
            }));

            handler.ProductRepository = productRepository;

            //// ACT
            var result = handler.ExecuteAsync(request).Result;

            //// ASSERT
            Assert.IsTrue(result.IsSuccessful);
            Assert.IsNull(result.ErrorMessage);
        }
        public void Create_Product()
        {
            CreateProductRequest request = new CreateProductRequest
            {
                Name                = "A new Product",
                Channel             = "API",
                Price               = 10,
                Currency            = Currency.TRY,
                EnabledInstallments = new HashSet <long> {
                    1, 2, 3, 6
                }
            };

            ProductResponse response = _craftgateClient.PayByLink().CreateProduct(request);

            Assert.AreEqual(response.Status, Status.ACTIVE);
            Assert.AreEqual(response.Name, request.Name);
            Assert.AreEqual(response.Price, request.Price);
            Assert.AreEqual(response.Channel, request.Channel);
            Assert.AreEqual(response.Currency, request.Currency);
            Assert.AreEqual(response.EnabledInstallments, request.EnabledInstallments);
            Assert.NotNull(response.Url);
            Assert.NotNull(response.Token);
            Assert.NotNull(response.QrCodeUrl);
        }
Esempio n. 23
0
        public async Task <IActionResult> Create([FromForm] CreateProductRequest model)
        {
            var createdProductUserId = int.Parse(HttpContext.GetUserIdFromRequest());
            var productEntity        = _mapper.Map <Product>(model);
            var productTierEntity    = _mapper.Map <ProductTier>(model);

            var result = await _productService.CreateAsync(
                productEntity,
                productTierEntity,
                createdProductUserId,
                model.Images,
                _appSettings.Value.ProductImageDir,
                _env.ContentRootPath);

            if (!result.IsSuccess)
            {
                return(BadRequest(new CreateProductFailedResponse
                {
                    Errors = result.Errors
                }));
            }

            var productResponse = _mapper.Map <ProductResponse>(productEntity);

            var locationUri = _uriService.GetByIdUri(
                ApiRoutes.Product.GetById.Replace("{productId}", productEntity.Id.ToString())
                );

            return(Created(locationUri,
                           new Response <ProductResponse>(productResponse)));
        }
Esempio n. 24
0
        public async Task <BaseResponse <bool> > Handle(CreateProductRequest request, CancellationToken cancellationToken)
        {
            BaseResponse <bool> response = new BaseResponse <bool>();

            try
            {
                var product = new Product
                {
                    CategoryId   = request.CategoryId,
                    CreatedDate  = DateTime.Now,
                    ModifiedDate = DateTime.Now,
                    Id           = Guid.NewGuid().ToString(),
                    Name         = request.Name,
                    Price        = request.Price
                };

                await _repository.CreateAsync(product);

                response.PayLoad = true;

                await _mediator.Publish(new NewProductCreatedEvent(productName : request.Name));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
                response.IsSuccessful  = false;
                response.ReturnMessage = "An error occurred while creating the product.";
            }

            return(response);
        }
        public Product AddProduct(CreateProductRequest createRequest)
        {
            createRequest.UnitPrice = System.Convert.ToDecimal(createRequest.UnitPrice);
            using (var db = new SqlConnection(ConnectionString))
            {
                var newProduct = db.QueryFirstOrDefault <Product>(@"
                    Insert into products (name, imageUrl, unitPrice, categoryId, description, isOnSale, isDeleted, partnerId)
                    Output inserted.*
                    Values(@name, @imageUrl, @unitPrice,@categoryId, @description,@isOnSale, @isDeleted, @partnerId)",
                                                                  new {
                    createRequest.Name,
                    createRequest.ImageUrl,
                    createRequest.UnitPrice,
                    createRequest.CategoryId,
                    createRequest.Description,
                    createRequest.IsOnSale,
                    createRequest.IsDeleted,
                    createRequest.PartnerId
                });

                if (newProduct != null)
                {
                    return(newProduct);
                }
            }

            throw new Exception("Sorry. No Parting Pets Product Was Created.");
        }
Esempio n. 26
0
        public Product Create([FromBody] CreateProductRequest model)
        {
            _bus.Send <SubmitProduct>(new { Id = Guid.Empty });
            var result = _productService.Create(model);

            return(result);
        }
Esempio n. 27
0
 public Either <Error, Product> Update(long id, CreateProductRequest req)
 => SetCategory(req)
 .Bind(SetWerehouse)
 .Bind(SetTax)
 .Map(FromRequestDto)
 .Bind(c => c.ToEither(() => Error.New("Fail mapping in from requestDto")))
 .Bind(c => base.Update(id, c));
Esempio n. 28
0
        public async Task <IActionResult> CreateProduct([FromBody] CreateProductRequest request)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    throw new Exception(string.Join("; ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage)));
                }

                if (request == null)
                {
                    throw new Exception("Product model is null");
                }

                if (request.Photo.Length > 1 * 1024 * 1024)
                {
                    return(BadRequest("Max file size exceeded. Only 1 MB allowed"));
                }

                if (_acceptedFileTypes.All(e => e != request.PhotoName.Split('.')[1].ToLower()))
                {
                    return(BadRequest("Invalid file type"));
                }

                var client = _bus.CreateRequestClient <ICreateProductCommand, IProductCreatedEvent>(_serviceAddress, TimeSpan.FromSeconds(20));
                var createProductCommand = new CreateProductCommand(request);
                var response             = await client.Request(createProductCommand);

                return(Ok(response));
            }
            catch (Exception e)
            {
                return(BadRequest($"Can't create the product: {e.Message}"));
            }
        }
        public async Task CreateProduct_Returns_BadResponse_If_Exception_Is_Thrown()
        {
            //Arrange
            Mock <ILogger <ProductsController> > mockLogger = new Mock <ILogger <ProductsController> >();
            Mock <IProductService> mockProductService       = new Mock <IProductService>();

            CreateProductRequest createProductRequest = new CreateProductRequest
            {
                Name          = "Test Product 1",
                Description   = "Description 1",
                Price         = 2000M,
                DeliveryPrice = 10M
            };

            mockProductService.Setup(m => m.CreateProduct(It.IsAny <CreateProductRequest>()))
            .ThrowsAsync(new Exception("Error occured!"))
            .Verifiable();

            ProductsController productsController = new ProductsController(mockLogger.Object, mockProductService.Object);

            //Act
            var response = await productsController.CreateProduct(createProductRequest) as BadRequestObjectResult;

            var responseObject = response.Value as ApiResult;

            //Assert
            Assert.Equal("An error has occured", responseObject.Error);

            mockLogger.VerifyAll();
            mockProductService.VerifyAll();
        }
        public async Task CreateProduct_Returns_OkResponse_Successfully()
        {
            //Arrange
            Mock <ILogger <ProductsController> > mockLogger = new Mock <ILogger <ProductsController> >();
            Mock <IProductService> mockProductService       = new Mock <IProductService>();

            CreateProductRequest createProductRequest = new CreateProductRequest
            {
                Name          = "Test Product 1",
                Description   = "Description 1",
                Price         = 2000M,
                DeliveryPrice = 10M
            };

            mockProductService.Setup(m => m.CreateProduct(It.IsAny <CreateProductRequest>()))
            .ReturnsAsync(new CreateProductResponse
            {
                IsSuccessful = true
            })
            .Verifiable();

            ProductsController productsController = new ProductsController(mockLogger.Object, mockProductService.Object);

            //Act
            var response = await productsController.CreateProduct(createProductRequest) as OkObjectResult;

            var responseObject = response.Value as CreateProductResponse;

            //Assert
            Assert.True(responseObject.IsSuccessful);

            mockLogger.VerifyAll();
            mockProductService.VerifyAll();
        }
Esempio n. 31
0
 public CreateProductModel Create(CreateProductRequest request)
 {
     return new CreateProductModel();
 }