Ejemplo n.º 1
0
        public async Task <bool> CreateProduct(ProductCreateRequest request)
        {
            var sessions = _httpContextAccessor
                           .HttpContext
                           .Session
                           .GetString(SystemConstants.AppSettings.Token);

            var client = _httpClientFactory.CreateClient();

            client.BaseAddress = new Uri(_configuration[SystemConstants.AppSettings.BaseAddress]);
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sessions);

            var requestContent = new MultipartFormDataContent();

            if (request.ThumbnailImage != null)
            {
                byte[] data;
                using (var br = new BinaryReader(request.ThumbnailImage.OpenReadStream()))
                {
                    data = br.ReadBytes((int)request.ThumbnailImage.OpenReadStream().Length);
                }
                ByteArrayContent bytes = new ByteArrayContent(data);
                requestContent.Add(bytes, "ThumbnailImage", request.ThumbnailImage.FileName);
            }
            requestContent.Add(new StringContent(string.IsNullOrEmpty(request.Name) ? "" : request.Name.ToString()), "name");
            requestContent.Add(new StringContent(string.IsNullOrEmpty(request.Description) ? "" : request.Description.ToString()), "description");
            requestContent.Add(new StringContent(string.IsNullOrEmpty(request.Details) ? "" : request.Details.ToString()), "details");
            requestContent.Add(new StringContent(request.Price.ToString()), "price");
            requestContent.Add(new StringContent(request.OriginalPrice.ToString()), "originalPrice");
            requestContent.Add(new StringContent(request.Stock.ToString()), "stock");

            var response = await client.PostAsync($"/api/products/", requestContent);

            return(response.IsSuccessStatusCode);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Create(ProductCreateRequest request, string keyword, int pageIndex = 1, int pageSize = 10)
        {
            string uniqueFileName = null;
            var    uploadFolder   = Path.Combine(_hostingEnvironment.WebRootPath, "img");

            if (request.Image.FileName == null)
            {
                return(BadRequest("Vui lòng chọn hình ảnh "));
            }
            uniqueFileName = Guid.NewGuid().ToString() + "_" + request.Image.FileName;
            var filePath = Path.Combine(uploadFolder, uniqueFileName);

            request.Image.CopyTo(new FileStream(filePath, FileMode.Create));
            var fileName    = uniqueFileName;
            var requestView = new GetProductPagingRequest()
            {
                Keyword   = keyword,
                pageIndex = pageIndex,
                pageSize  = pageSize
            };
            var result = await _productService.CreateProduct(request, fileName);

            var model = await _productService.GetAllPaging(requestView);

            if (result.IsSucceed)
            {
                TempData["result"] = "Thêm mới thành công";
                //return RedirectToAction("Index");
                var ajax = new { isValid = true, html = JsonHelper.RenderRazorViewToString(this, "_ViewAll", model.ResultObject) };
                return(Json(ajax));
            }

            ModelState.AddModelError("", result.Message);
            return(Json(new { isValid = true, html = JsonHelper.RenderRazorViewToString(this, "_ViewAll", result.ResultObject) }));
        }
Ejemplo n.º 3
0
        public async Task <ActionResult <ProductVm> > PostProduct([FromForm] ProductCreateRequest productCreateRequest)
        {
            var product = new Product
            {
                Name        = productCreateRequest.Name,
                Price       = productCreateRequest.Price,
                Description = productCreateRequest.Description,
                BrandId     = productCreateRequest.BrandId,
                CreateDate  = DateTime.Now,
            };

            if (productCreateRequest.ThumbnailImageUrl != null)
            {
                product.ImageFileName = await SaveFile(productCreateRequest.ThumbnailImageUrl);
            }

            _context.Products.Add(product);
            await _context.SaveChangesAsync();

            foreach (var Id in productCreateRequest.CategoryId)
            {
                _context.ProductCategory.Add(
                    new ProductCategory
                {
                    ProductId  = product.Id,
                    CategoryId = Id
                }
                    );
            }
            await _context.SaveChangesAsync();

            return(Ok());
        }
Ejemplo n.º 4
0
        public async Task PutBrandBy_Fail_IdNotFound()
        {
            var dbContext = _fixture.Context;

            dbContext.Brands.Add(new Brand {
                Id = 1, Name = "Test brand"
            });
            dbContext.Categories.Add(new Category {
                Id = 1, Name = "Test category"
            });
            dbContext.Products.Add(new Product {
                Id = 1, Name = "Test product 1", BrandId = 1
            });
            await dbContext.SaveChangesAsync();

            var ListId = new List <int>();

            ListId.Add(1);
            var product = new ProductCreateRequest {
                Name = "Test put product", BrandId = 1, CategoryId = ListId
            };
            var result = await controller.PutProduct(1999, product);

            Assert.IsType <NotFoundResult>(result);
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> AddHandle([FromForm] ProductCreateRequest request, List <IFormFile> files)
        {
            if (files == null || files.Count == 0)
            {
                TempData["message"] = "Ảnh chưa được chọn";
                return(View("Add"));
            }
            if (!ModelState.IsValid)
            {
                TempData["message"] = "Thêm sản phẩm thất bại";
                return(View("Add", request));
            }

            try
            {
                request.ThumbnailImage = files;
                var result = await _productApiClient.Add(request);

                if (result)
                {
                    TempData["message"] = "Thêm sản phẩm thành công";
                    return(RedirectToAction("List"));
                }
                TempData["message"] = "Thêm sản phẩm thất bại";
                return(RedirectToAction("List"));
            }
            catch (Exception)
            {
                TempData["message"] = "Thêm sản phẩm thất bại";
                return(View("Add", request));
            }
        }
Ejemplo n.º 6
0
        //Thêm sản phẩm mới
        public async Task <int> Create(ProductCreateRequest request)
        {
            var product = new Product()
            {
                Name_Phone      = request.Name_Phone,
                Description     = request.Description,
                Details         = request.Details,
                Price           = request.Price,
                Promotion_Price = request.Promotion_Price,
                DateCreated     = DateTime.Now,
            };

            //Luu anh
            if (request.Image != null)
            {
                product.ProductImages = new List <ProductImage>()
                {
                    new ProductImage()
                    {
                        DateCreated = DateTime.Now,
                        FileSize    = request.Image.Length,
                        ImagePath   = await this.SaveFile(request.Image),
                        IsDefault   = true,
                    }
                };
            }

            _context.Products.Add(product);
            await _context.SaveChangesAsync();

            return(product.Id);
        }
        public void ShouldReturnErrorCodes(string name, long category_id, decimal price, decimal discount, string description, long file_id, ProductValidationErrors expectedError)
        {
            CreateRequestValidation createRequestValidation = new CreateRequestValidation();
            FindRequestValidation   findRequestValidation   = new FindRequestValidation();
            UpdateRequestValidation updateRequestValidation = new UpdateRequestValidation();
            DeleteRequestValidation deleteRequestValidation = new DeleteRequestValidation();

            ProductValidation validation = new ProductValidation(createRequestValidation, findRequestValidation,
                                                                 updateRequestValidation, deleteRequestValidation);

            ProductCreateRequest request = new ProductCreateRequest
            {
                Name        = name,
                Category_Id = category_id,
                Price       = price,
                Discount    = discount,
                Description = description,
                File_Id     = file_id
            };

            var listErrors = validation.CreateRequestValidation.Validate(request);

            foreach (var error in listErrors)
            {
                Assert.Equal(expectedError, error);
            }
        }
Ejemplo n.º 8
0
        public async Task ProductsController_Get_Success()
        {
            var product = new ProductCreateRequest
            {
                Name        = "Test product3",
                BrandId     = _fixture.Brands[0].Id,
                Price       = 123,
                ImageUrl    = "http://image",
                Description = "description",
                CategoryIds = new List <int> {
                    _fixture.Categories[0].Id
                }
            };

            var controller  = new ProductsController(_fixture.ProductService);
            var creatResult = await controller.Post(product);

            var createResponse = GetResponse <ProductCreateResponse>(creatResult);

            Assert.Equal("Test product3", createResponse.Name);

            var getResult = await controller.Get(createResponse.Id);

            var getResponse = GetResponse <ProductVm>(getResult);

            Assert.Equal(getResponse.BrandId, product.BrandId);
            Assert.Equal(getResponse.Price, product.Price);
            Assert.Equal(getResponse.ImageUrl, product.ImageUrl);
            Assert.Equal(getResponse.Description, product.Description);
            Assert.Equal(getResponse.Categories.Select(x => x.Id), product.CategoryIds);
        }
Ejemplo n.º 9
0
        public async Task <int> Create(ProductCreateRequest request)
        {
            var product = new Product()
            {
                Price               = request.Price,
                OriginalPrice       = request.OriginalPrice,
                Stock               = request.Stock,
                ViewCount           = 0,
                DateCreated         = DateTime.Now,
                ProductTranslations = new List <ProductTranslation>()
                {
                    new ProductTranslation()
                    {
                        Name           = request.Name,
                        Description    = request.Description,
                        Details        = request.Details,
                        SeoDescription = request.SeoDescription,
                        SeoAlias       = request.SeoAlias,
                        SeoTitle       = request.SeoTitle,
                        LanguageId     = request.LanguageId
                    }
                }
            };

            _context.Products.Add(product);

            return(await _context.SaveChangesAsync());
        }
Ejemplo n.º 10
0
        public ProductCreateResponse CreateProduct(ProductCreateRequest request)
        {
            var response         = new ProductCreateResponse();
            var validationErrors = _validation.CreateRequestValidation.Validate(request);
            var dbErrors         = new List <DatabaseErrors>();

            if (validationErrors.Count != 0)
            {
                response.ValidationErrors = validationErrors;
            }
            else
            {
                try
                {
                    var product = AddProductToDB(request);

                    if (product == null)
                    {
                        throw new NullReferenceException("Product not found");
                    }

                    response.Product = product;
                }
                catch (NullReferenceException)
                {
                    dbErrors.Add(DatabaseErrors.DB_CONNECTION_FAILED);
                }
                response.DBErrors = dbErrors;
            }

            return(response);
        }
Ejemplo n.º 11
0
    public async Task <ActionResult <ProductsResponse> > PostProduct(ProductCreateRequest request)
    {
        //TODO comprobar que el producto el id de store es el del token
        var product = ProductMapper.Parse(request);

        _context.Product.Add(product);

        try
        {
            await _context.SaveChangesAsync();
        }
        catch (DbUpdateException)
        {
            if (ProductExists(request.Id))
            {
                return(Conflict());
            }
            else
            {
                throw;
            }
        }

        return(CreatedAtAction("GetProduct", new { id = product.Id }, ProductMapper.Parse(product)));
    }
        public async Task <ApiResult <string> > Create(ProductCreateRequest request)
        {
            var sections = _httpContextAccessor.HttpContext.Session.GetString("Token");

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sections);
            MultipartFormDataContent form = new MultipartFormDataContent();

            form.Add(new StringContent(request.LanguageId), "languageId");
            form.Add(new StringContent(request.Name), "Name");
            form.Add(new StringContent(request.Description != null?request.Description:null), "Description");
            form.Add(new StringContent(request.CategoryId.ToString()), "CategoryId");
            form.Add(new StringContent(request.Stock.ToString()), "Stock");
            form.Add(new StringContent(request.Price.ToString()), "Price");
            form.Add(new StringContent(request.OriginalPrice.ToString()), "OriginalPrice");
            if (request.ThumbnailImage != null)
            {
                byte[] data;
                using (var br = new BinaryReader(request.ThumbnailImage.OpenReadStream()))
                    data = br.ReadBytes((int)request.ThumbnailImage.OpenReadStream().Length);
                ByteArrayContent bytes = new ByteArrayContent(data);
                form.Add(bytes, "ThumbnailImage", request.ThumbnailImage.FileName);
            }

            var response = await _client.PostAsync($"/api/products", form);

            var result = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <ApiResultSuccess <string> >(result));
            }
            return(JsonConvert.DeserializeObject <ApiResultErrors <string> >(result));
        }
Ejemplo n.º 13
0
        public async Task <bool> Add(ProductCreateRequest request)
        {
            _client.BaseAddress = new Uri(_config[Constants.AppSettings.BaseAddress]);
            var requestContent = new MultipartFormDataContent();

            if (request.ThumbnailImage != null)
            {
                byte[] data;
                foreach (var item in request.ThumbnailImage)
                {
                    using (var br = new BinaryReader(item.OpenReadStream()))
                    {
                        data = br.ReadBytes((int)item.OpenReadStream().Length);
                    }
                    ByteArrayContent bytes = new ByteArrayContent(data);
                    requestContent.Add(bytes, "thumbnailImage", item.FileName);
                }
            }

            requestContent.Add(new StringContent(request.Price.ToString()), "price");
            requestContent.Add(new StringContent(request.OriginalPrice.ToString()), "originalPrice");
            requestContent.Add(new StringContent(request.Name.ToString()), "name");
            requestContent.Add(new StringContent(request.Description.ToString()), "description");
            requestContent.Add(new StringContent(request.BrandId.ToString()), "brandId");
            requestContent.Add(new StringContent(request.CategoryIds.First().ToString()), "categoryIds");

            var response = await _client.PostAsync("/api/products/", requestContent);

            return(response.IsSuccessStatusCode);
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> PostFunction([FromForm] ProductCreateRequest request)
        {
            _logger.LogInformation(_localizer["BeginProduct"]);

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

            if (string.IsNullOrEmpty(request.SeoAliasVn))
            {
                product.SeoAliasVn = TextHelper.ToUnsignString(product.NameVn);
            }
            product.Id = await _sequenceService.GetProductNewId();

            //Process attachment
            if (request.Attachments != null && request.Attachments.Count > 0)
            {
                foreach (var attachment in request.Attachments)
                {
                    var attachmentEntity = await SaveFile(product.Id, attachment);

                    _context.Attachments.Add(attachmentEntity);
                }
            }
            _context.Products.Add(product);
            var result = await _context.SaveChangesAsync();

            if (result > 0)
            {
                _logger.LogInformation(_localizer["EndPostProductSuccess"]);

                return(CreatedAtAction(nameof(GetById), new { id = product.Id }, request));
            }
            _logger.LogInformation(_localizer["EndPostProductFail"]);

            return(BadRequest(new ApiBadRequestResponse(_localizer["CreateProductFail"])));
        }
Ejemplo n.º 15
0
        public async Task <int> Create(ProductCreateRequest request)
        {
            var status  = 0;
            var product = new Product {
                Name           = request.Name,
                Price          = request.Price,
                PromotionPrice = request.PromotionPrice,
                Description    = request.Description,
                Detail         = request.Detail
            };

            if (request.ThumbnailImage != null)
            {
                product.ProductImages = new List <ProductImage>()
                {
                    new ProductImage
                    {
                        Caption   = "thumbnail image",
                        FileSize  = request.ThumbnailImage.Length,
                        ImagePath = await this.SaveFile(request.ThumbnailImage)
                    }
                };
            }
            var res = _context.Products.Add(product);

            if (res != null)
            {
                status = await _context.SaveChangesAsync();
            }
            return(product.ID);
        }
Ejemplo n.º 16
0
        public async Task <int> Create(ProductCreateRequest request)
        {
            var product = new Entites.Product()
            {
                Name        = request.Name,
                Price       = request.Price,
                Description = request.Description,
                AppUser     = request.User,
            };

            if (request.ThumbnailImage != null)
            {
                product.ProductImages = new List <Entites.ProductImage>()
                {
                    new Entites.ProductImage()
                    {
                        DateCreated = DateTime.Now,
                        ImagePath   = await this.SaveFile(request.ThumbnailImage),
                        IsDefault   = true,
                    }
                };
            }

            context.Add(product);
            return(await context.SaveChangesAsync());
        }
        public async Task Add(ProductCreateRequest request)
        {
            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/product/create");
            var content        = JsonConvert.SerializeObject(requestMessage);

            requestMessage.Content = new StringContent(content, Encoding.UTF8, "application/json");
        }
        public async Task <IActionResult> Create([FromForm] ProductCreateRequest request)
        {
            if (ModelState.IsValid)
            {
                var result = await _productServive.Create(request);

                if (result.IsSuccessed == true)
                {
                    TempData["result"]    = "Create Success";
                    TempData["IsSuccess"] = true;
                }
                else
                {
                    TempData["result"]    = result.Message;
                    TempData["IsSuccess"] = false;
                }
                var category = await _categoryService.GetById(request.CategoryId, "vn");

                return(Redirect($"/product/{category.ResultObject.CategoryUrl}"));
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
Ejemplo n.º 19
0
        public async Task <IActionResult> PostProduct([FromForm] ProductCreateRequest productCreateRequest)
        {
            var postProduct = new Product
            {
                ProductName = productCreateRequest.Name,
                Description = productCreateRequest.Description,
                Price       = productCreateRequest.Price,
                InStock     = productCreateRequest.Instock,
                CategoryId  = productCreateRequest.CategoryId
            };

            foreach (var el in productCreateRequest.Images)
            {
                postProduct.ProductImages.Add(new ProductImage
                {
                    ImageLink = el,
                    Product   = postProduct
                });
            }
            var isPostSuccessProduct = await _productService.CreateProduct(postProduct);


            if (isPostSuccessProduct)
            {
                return(NoContent());
            }
            else
            {
                return(NotFound());
            }
        }
Ejemplo n.º 20
0
        public async Task <int> Create(ProductCreateRequest request)
        {
            var product = new Product()
            {
                Prod_Name   = request.Prod_Name,
                Price       = request.Price,
                Quantity    = request.Quantity,
                DateCreate  = DateTime.Now,
                Description = request.Description,
                ImagePath   = request.ImagePath,
                Supplier_ID = request.Supplier_ID
            };

            //Save image
            //if (request.ThumbnailImage != null)
            //{
            //    product.ProductImages = new List<ProductImage>()
            //    {
            //        new ProductImage()
            //        {
            //            Caption = "Thumbnail image",
            //            DateCreated = DateTime.Now,
            //            FileSize = request.ThumbnailImage.Length,
            //            ImagePath = await this.SaveFile(request.ThumbnailImage),
            //            IsDefault = true,
            //            SortOrder = 1
            //        }
            //    };
            //}
            _context.ProductImage.Add(product);

            await _context.SaveChangesAsync();

            return(product.Prod_ID);
        }
Ejemplo n.º 21
0
        public ProductCreateResponse Create(ProductCreateRequest request)
        {
            var response = new ProductCreateResponse();

            _facade.Create(request.Product);
            return(response);
        }
Ejemplo n.º 22
0
        public async Task ProductsController_Post_Success()
        {
            var product = new ProductCreateRequest
            {
                Name        = "Test product4",
                Price       = 123,
                ImageUrl    = "http://image",
                Description = "description",
                BrandId     = _fixture.Brands[0].Id,
                CategoryIds = new List <int> {
                    _fixture.Categories[0].Id
                }
            };

            var controller = new ProductsController(_fixture.ProductService);
            var result     = await controller.Post(product);

            var response = GetResponse <ProductCreateResponse>(result);

            Assert.Equal(product.Name, response.Name);
            Assert.Equal(product.Price, response.Price);
            Assert.Equal(product.ImageUrl, response.ImageUrl);
            Assert.Equal(product.Description, response.Description);
            Assert.Equal(product.BrandId, response.BrandId);
            Assert.Equal(product.CategoryIds, response.CategoryIds);
        }
Ejemplo n.º 23
0
        public override Task <ProductGetResponse> Create(ProductCreateRequest request, ServerCallContext context)
        {
            if (store.ContainsKey(request.ProductId))
            {
                return(Task.FromResult(default(ProductGetResponse)));
            }

            Channel           channel     = new Channel("127.0.0.1:50051", ChannelCredentials.Insecure);
            ClientCallInvoker callInvoker = new ClientCallInvoker(channel);
            var userClient = new UserService.UserServiceClient(callInvoker);

            var product = store[request.UserId];

            product.ProductId   = request.ProductId;
            product.ProductName = request.ProductName;
            product.User        = userClient.Get(new UserGetRequest
            {
                UserId = request.UserId
            });
            userClient.Update(new UserGetResponse
            {
                UserId       = product.User.UserId,
                UserName     = product.User.UserName,
                ProductCount = product.User.ProductCount + 1
            });
            //关闭
            channel.ShutdownAsync().Wait();
            return(Task.FromResult(product));
        }
Ejemplo n.º 24
0
        public ProductCreateResponse Create(ProductCreateRequest request)
        {
            var factory = new ExternalCommandFactory();
            var command = factory.Create <ProductCreateCommand>();

            return(command.Execute(request));
        }
Ejemplo n.º 25
0
        public async Task <IActionResult> PutProduct(int id, ProductCreateRequest productCreateRequest)
        {
            var putProduct = new Product
            {
                ProductName = productCreateRequest.Name,
                Description = productCreateRequest.Description,
                Price       = productCreateRequest.Price,
                InStock     = productCreateRequest.Instock,
                CategoryId  = productCreateRequest.CategoryId
            };

            foreach (var el in productCreateRequest.Images)
            {
                putProduct.ProductImages.Add(new ProductImage
                {
                    ImageLink = el,
                    ProductId = id
                });
            }
            var isPutSuccessCategory = await _productService.UpdateProduct(id, putProduct);

            if (isPutSuccessCategory)
            {
                return(NoContent());
            }
            else
            {
                return(NotFound());
            }
        }
Ejemplo n.º 26
0
 public async Task<IActionResult> CreateAsync()
 {
     ViewBag.Languages = (await _languageApiClient.GetAll()).ResultObj;
     var productCreateRequest = new ProductCreateRequest()
     {
         LanguageId = GetLanguageId()
     };
     return View(productCreateRequest);
 }
Ejemplo n.º 27
0
        public void Validate_When_has_nested_object_errors_Then_those_errors_are_not_returned()
        {
            var validator = new ProductCreateRequestValidator();
            var request   = new ProductCreateRequest {
                Product = new  ProductCreateDto()
            };
            var validatorResult = validator.Validate(request);

            Assert.IsTrue(validatorResult.IsValid);
        }
        public async Task <int> Create(ProductCreateRequest request)
        {
            var product = new Product()
            {
                Price = request.Price,
            };

            _context.Products.Add(product);
            return(await _context.SaveChangesAsync());
        }
Ejemplo n.º 29
0
 public static Product MapFromRequest(ProductCreateRequest request)
 {
     return(new Product
     {
         Code = request.Code,
         Name = request.Name,
         Description = request.Description,
         Price = request.Price,
     });
 }
Ejemplo n.º 30
0
        public async Task <IActionResult> AddProduct([FromForm] ProductCreateRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            await _productService.Add(request);

            return(Ok());
        }