public async Task EditProductAsync(EditProductRequest request, CancellationToken ct)
        {
            request.Validate();

            if (request.Price == 0)
            {
                throw new Exception("O preço do produto não pode ser R$0,00");
            }

            var product = request.ConvertToEntity();
            var productregistred = await _productRepository.GetProductByIdAsync(product.ProductId, ct);

            if (productregistred == null || productregistred.ProductId == Guid.Empty)
            {
                throw new Exception("Produto não encotrado para o ID fornecido");
            }

            if (request.File != null)
            {
                var urlImage = await ManagerImage.SaveFileAsync(request.File);
                product.UrlImage = urlImage;
                ManagerImage.DeleteFile(productregistred.UrlImage);
            }
            else
            {
                product.UrlImage = productregistred.UrlImage;
            }

            await _productRepository.EditProductAsync(product, ct);
        }
Ejemplo n.º 2
0
        //[Authorize(Roles = "manager, publisher")]
        public async Task <ActionResult> EditGame(int productId, [FromBody] EditProductRequest request)
        {
            var gameModel = request.ToProductModel();

            await _productService.Edit(productId, gameModel);

            return(Ok());
        }
Ejemplo n.º 3
0
        private StringContent GetItemJson(string name)
        {
            var request = new EditProductRequest()
            {
                Name = name
            };
            var jsonContent = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json");

            return(jsonContent);
        }
Ejemplo n.º 4
0
 public static Product ToProductModel(this EditProductRequest request)
 {
     return(new Product
     {
         Description = request.Description,
         Name = request.Name,
         Availability = request.Availability,
         ManufacturerId = request.ManufacturerId,
         Price = request.Price,
         CategoryId = request.CategoryId,
     });
 }
Ejemplo n.º 5
0
        public string Edit(Product product)
        {
            string response = null;
            var    result   = new EditProductRequest(product).Execute(Api.Client);

            if (result.Status == 200)
            {
                response = result.Data;
                product.Clean();
            }
            return(response);
        }
        public async Task <IHttpActionResult> EditProduct(EditProductRequest request, CancellationToken cancellationToken)
        {
            try
            {
                var command  = mapper.Map <EditProductCommnand>(request);
                var response = await mediator.Send(command, cancellationToken);

                return(Ok(response));
            }
            catch (NullReferenceException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> Edit([FromRoute] int sku, [FromBody] EditProductRequest model)
        {
            if (ModelState.IsValid)
            {
                var command = _mapper.ConvertRequestToCommand <EditProductCommand>(model);
                command.Sku = sku;

                await _mediator.Send(command);

                return(NoContent());
            }

            return(BadRequest(ModelState.ToErrorResponse()));
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> EditProductAsync([FromForm] EditProductRequest request, CancellationToken ct)
        {
            try
            {
                ct.ThrowIfCancellationRequested();

                await _productService.EditProductAsync(request, ct);

                return(Ok(new RequestResponse {
                    Message = "Produto registrado com sucesso"
                }));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
Ejemplo n.º 9
0
        public async Task Products_Edit_ReturnsCreatedResponse()
        {
            var createModel = new CreateProductRequest
                              (
                sku: random.Next(10, 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")
            }
                )
                              );
            await _controller.Create(new ApiVersion(1, 0), createModel);

            var editModel = new EditProductRequest(
                name: "UPDATED",
                inventory: new EditProductInventoryRequest
                (
                    warehouses: new EditProductWarehouseRequest[]
            {
                new EditProductWarehouseRequest(quantity: 15, locality: "SP", type: "MAIN_STORAGE"),
                new EditProductWarehouseRequest(quantity: 3, locality: "RJ", type: "ECOMMERCE"),
                new EditProductWarehouseRequest(quantity: 2, locality: "MG", type: "CONTAINER")
            }
                )

                );

            var result = await _controller.Edit(sku : createModel.Sku, model : editModel);

            var actual = Assert.IsType <NoContentResult>(result);
            var expect = (int)HttpStatusCode.NoContent;

            Assert.Equal(expect, actual.StatusCode);
        }
Ejemplo n.º 10
0
        public async Task Products_Edit_NotFoundSku_ThrowsApiException()
        {
            var model = new EditProductRequest
                        (
                name: "TEST"
                , inventory: new EditProductInventoryRequest
                (
                    warehouses: new EditProductWarehouseRequest[]
            {
                new EditProductWarehouseRequest(quantity: 1, locality: "SP", type: "MAIN_STORAGE")
            }
                )
                        );
            var actual = await Assert.ThrowsAsync <ApiException>(() => _controller.Edit(sku: int.MaxValue, model));

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

            Assert.Equal(expectCode, actual.Code);
            Assert.Equal(expectName, actual.Name);
            Assert.Equal(expectMessage, actual.Message);
        }
Ejemplo n.º 11
0
        public async Task Products_Edit_DuplicatedWarehouses_ThrowsApiException()
        {
            var createModel = new CreateProductRequest
                              (
                sku: random.Next(3, 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")
            }
                )
                              );
            await _controller.Create(new ApiVersion(1, 0), createModel);

            var editModel = new EditProductRequest(
                name: "UPDATED",
                inventory: new EditProductInventoryRequest
                (
                    warehouses: new EditProductWarehouseRequest[]
            {
                new EditProductWarehouseRequest(quantity: 15, locality: "SP", type: "MAIN_STORAGE"),
                new EditProductWarehouseRequest(quantity: 3, locality: "RJ", type: "ECOMMERCE"),
                new EditProductWarehouseRequest(quantity: 2, locality: "RJ", type: "ECOMMERCE")
            }
                )

                );

            var actual = await Assert.ThrowsAsync <ValidationException>(() => _controller.Edit(sku: createModel.Sku, model: editModel));

            Assert.Contains(actual.Errors, x => x.ErrorMessage.Equals("The warehouse must be unique."));
            Assert.Contains(actual.Errors, x => x.PropertyName.Equals(nameof(CreateProductInventoryRequest.Warehouses)));
        }
Ejemplo n.º 12
0
 public async Task Products_Edit_InvalidBody_ThrowsApiException()
 {
     var model = new EditProductRequest(name: "TEST", inventory: null);
     await Assert.ThrowsAsync <ArgumentNullException>(() => _controller.Edit(sku: int.MaxValue, model));
 }
Ejemplo n.º 13
0
        public async Task <IActionResult> EditProduct([FromRoute(Name = "product_id")] Int32 productId, [FromBody] EditProductRequest request)
        {
            // validate input
            if (!ModelState.IsValid)
            {
                return(HttpResult.BadRequest(ModelState));
            }

            // locate product
            var foundProduct = await _bagsContext.Products
                               .WithUnsafeIncludes()
                               .Where(product => product.Id == productId)
                               .SingleOrDefaultAsync();

            if (foundProduct == null)
            {
                return(HttpResult.NotFound($"{productId}"));
            }

            // update the product
            foundProduct.Name = request.Name;
            if (request.Images != null)
            {
                foundProduct.ImagesJson = JsonConvert.SerializeObject(request.Images);
            }
            await _bagsContext.SaveChangesAsync();

            return(HttpResult.Ok(foundProduct.ToUnsafeExpandedWireFormat(_amazon)));
        }
Ejemplo n.º 14
0
 public async Task <ProductDto> EditProduct(int productId, [FromBody] EditProductRequest request, CancellationToken cancellationToken = default)
 {
     return(await _productService.EditProductAsync(productId, request.Name, cancellationToken));
 }