public async Task <ServiceResponse <GetProductDto> > AddProduct(AddProductDto newProduct)
        {
            var products = await _dbContext.Products.FirstOrDefaultAsync(x => x.Name == newProduct.Name);

            if (products != null)
            {
                return(ResponseResult.Failure <GetProductDto>("product duplicate."));
            }

            var product = new Product
            {
                Name           = newProduct.Name,
                Price          = newProduct.Price,
                StockCount     = newProduct.StockCount,
                ProductGroupId = newProduct.ProductGroupId
            };

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

            var productToReturn = await _dbContext.Products
                                  .Include(x => x.ProductGroup)
                                  .Where(x => x.Id == product.Id)
                                  .FirstOrDefaultAsync();

            var dto = _mapper.Map <GetProductDto>(productToReturn);

            return(ResponseResult.Success(dto));
        }
        public async Task <int> Add(AddProductDto addProductDto)
        {
            await ThrowExceptionIfProductCodeIsAlreadyExists(addProductDto.ProductCode);
            await ThrowExceptionIfProductTitleIsAlreadyExistsInProductCategory(addProductDto.Title);
            await ThrowExceptionIfProductCategoryNotExists(addProductDto.ProductCategoryId);

            var product = new Product
            {
                Title             = addProductDto.Title,
                MinimumStock      = addProductDto.MinimumStock,
                ProductCode       = addProductDto.ProductCode,
                ProductCategoryId = addProductDto.ProductCategoryId
            };

            var warehouseItems = new HashSet <WarehouseItem>
            {
                new WarehouseItem
                {
                    ProductId = product.Id
                }
            };

            product.WarehouseItems = warehouseItems;

            _repository.Add(product);
            await _unitOfWork.CompleteAsync();

            return(product.Id);
        }
        public async Task <Guid> AddProductAsync(AddProductDto productDtos)
        {
            //Automapper
            var product = ProductConverter.Convert(productDtos);

            return(await _productRepository.AddProductAsync(product));
        }
Esempio n. 4
0
        public async Task When_Adding_Product_Then_Adds_Product_To_Category(AddProductDto dto, string imagesPath)
        {
            // Arrange
            var category = CreateProductCategory(false);

            productCategoryRepositoryMock.Setup(x => x.GetAndEnsureExistAsync(It.IsAny <Guid>()))
            .ReturnsAsync(category);
            pathManagerMock.Setup(x => x.GetProductPath(It.IsAny <string>(), It.IsAny <string>()))
            .Returns(imagesPath);

            // Act
            await sut.AddAsync(dto);

            // Assert
            category.Products.Should().HaveCount(1);
            var product = category.Products.First();

            product.Name.Should().Be(dto.Name);
            product.NameEng.Should().Be(dto.NameEng);
            product.Price.Should().Be(dto.Price);
            product.Description.Should().Be(dto.Description);
            product.DescriptionEng.Should().Be(dto.DescriptionEng);
            product.AcceptCharms.Should().Be(dto.AcceptCharms);
            product.Sizes.Should().Be(dto.Sizes);
            product.ImagesPath.Should().Be(imagesPath);
        }
        public async Task <IActionResult> AddProductAsync([FromBody] AddProductDto request)
        {
            try
            {
                var addProductCommand = new AddProductCommand(request.ProductName, request.ProductDisplayName, request.PublisherId, request.PrintIssn,
                                                              request.OnlineIssn, request.ProductTypeCode, request.ProductStatusCode, request.PublisherProductCode, request.LegacyIdSpid);

                await _mediator.Send(addProductCommand);

                return(Ok());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Something went wrong in AddProductAsync");

                var errorResponse = new ProblemDetails()
                {
                    Title  = "An unexpected error occurred. Please try again later.",
                    Status = StatusCodes.Status500InternalServerError,
                    Detail = ex.Message
                };

                return(StatusCode(StatusCodes.Status500InternalServerError, errorResponse));
            }
        }
        public async Task <ProductEntity> AddProduct(AddProductDto productDto)
        {
            if (await Db.ProductEntities.AnyAsync(x => x.VendorCode == productDto.VendorCode))
            {
                return(null);
            }

            var country = await GetOrCreateCountryAsync(productDto.Country);

            var brand = await GetOrCreateBrandAsync(productDto.BrandName);

            var category = await GetOrCreateCategoryAsync(productDto.CategoryTypeId);

            var color1Id = productDto.ColorIds.GetValueOrDefault(0, -1);
            var color2Id = productDto.ColorIds.GetValueOrDefault(1, -1);
            var color3Id = productDto.ColorIds.GetValueOrDefault(2, -1);
            var color4Id = productDto.ColorIds.GetValueOrDefault(3, -1);
            var color5Id = productDto.ColorIds.GetValueOrDefault(4, -1);
            var color6Id = productDto.ColorIds.GetValueOrDefault(5, -1);
            var color7Id = productDto.ColorIds.GetValueOrDefault(6, -1);

            var product = new ProductEntity
            {
                BrandId          = brand.BrandId,
                PrintTypeId      = productDto.PrintTypeId,
                ExtraPrintTypeId = productDto.ExtraPrintTypeId,
                CategoryId       = category.CategoryId,
                ClicksCount      = 0,
                ShopColorId      = productDto.ShopColorId,
                ShopTypeId       = productDto.ShopTypeId,
                Color1Id         = color1Id,
                Color2Id         = color2Id,
                Color3Id         = color3Id,
                Color4Id         = color4Id,
                Color5Id         = color5Id,
                Color6Id         = color6Id,
                Color7Id         = color7Id,
                CreatedDate      = DateTime.UtcNow,
                Description      = "",
                IsAvailable      = true,
                IsDeleted        = false,
                Link             = productDto.Link,
                MadeInCountryId  = country.CountryId,
                PreviewPhotoId   = 0,
                Price            = productDto.Price,
                VendorCode       = productDto.VendorCode
            };

            Db.ProductEntities.Add(product);
            await Db.SaveChangesAsync();

            var photos = await AddProductPhotos(product.ProductId, productDto.Photos);

            product.PreviewPhotoId = photos.FirstOrDefault()?.ProductPhotoId ?? 0;
            await Db.SaveChangesAsync();

            await AddProductSizes(product.ProductId, productDto.Sizes);

            return(product);
        }
Esempio n. 7
0
        public async Task <bool> Add(AddProductDto product)
        {
            try
            {
                var entity = await _uow.Product.Get(p => p.Code == product.Code);

                if (entity != null)
                {
                    return(false);
                }

                await _uow.Product.Add(new Data.Models.Product
                {
                    Code      = product.Code,
                    Name      = product.Name,
                    Picture   = product.Picture,
                    Price     = product.Price,
                    UpdatedAt = product.UpdatedAt
                });

                return(await _uow.CompleteAsync());
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
        public bool AddNewProduct(AddProductDto newProduct)
        {
            using (var db = new SqlConnection(_connectionString))
            {
                var sql = @"
                            INSERT INTO [Product]
                            ([Title]
                            ,[SellerId]
                            ,[ImgUrl]
                            ,[TypeId]
                            ,[Description]
                            ,[CategoryId]
                            ,[Price]
                            ,[QuantityInStock])
                           VALUES
                            (@title,
                             @sellerId,
                             @imgUrl,
                             @typeId,
                             @description,
                             @categoryId,
                             @price,
                             @quantityInStock
                                        )";

                return(db.Execute(sql, newProduct) == 1);
            }
        }
Esempio n. 9
0
        public void AddProduct(AddProductDto addProduct)
        {
            if (addProduct.CategoryIds == null || !addProduct.CategoryIds.Any())
            {
                throw new BusinessException("Lütfen önce kategori seçiniz.");
            }

            var product = new Product
            {
                Name         = addProduct.Name,
                Description  = addProduct.Description,
                Image        = addProduct.MainPhoto,
                ProductImage = addProduct.Photos,
                IsActive     = addProduct.IsActive,
                Price        = addProduct.Price
            };

            _uow.Product.Insert(product);

            var productCategories = _uow.Category.Table
                                    .Where(c => addProduct.CategoryIds.Contains(c.Id))
                                    .Select(e => new ProductToCategory
            {
                CategoryId = e.Id,
                Product    = product
            }).ToList();

            _uow.ProductToCategory.Insert(productCategories);

            _uow.SaveChanges();
        }
Esempio n. 10
0
        public async Task <bool> AddProduct(AddProductDto productdto)
        {
            Product adedproduct = productdto.Adapt <Product>();
            await _context.Products.AddAsync(adedproduct);

            await _context.SaveChangesAsync();

            if (!await _categoryManager.AddProductCategoryRelation(productdto.CategoryId, adedproduct.ProductId))
            {
                throw new Exception("Product And Category Relation Requried");
            }

            if (!await _stockManager.SetStockPropertyCombination(productdto.CategoryId, adedproduct.ProductId))
            {
                throw new Exception("Product Variation Requried");
            }

            if (!await AddProductImages(productdto.Images, adedproduct.ProductId))
            {
                throw new Exception("Product Images Requried");
            }

            //ProductElasticIndexDto productElasticIndexDto = new ProductElasticIndexDto();
            //productElasticIndexDto.Adapt(adedproduct);
            //await CreateIndexes(productElasticIndexDto);
            return(await Task.FromResult <bool>(true));
        }
Esempio n. 11
0
        public IResult Confirm(AddProductDto addProductDto)
        {
            var result = _addProductDal.Get(a => a.Id == addProductDto.AddProductId); //id üzerinden veritabanından çekiliyor

            if (result.Status)                                                        //zaten onaylı ise hata döndürüyor
            {
                return(new ErrorResult());
            }
            result.Status = true;                                         //onaylandı olarak işaretleniyor
            var product = _productService.IsThereAnyProduct(result).Data; //üründen var mı kontrolü

            if (product != null)                                          //varsa
            {
                product.Quantity += result.Quantity;                      //miktarı ekleniyor
                _productService.Update(product);                          //ürün güncelleniyor
            }
            else
            {
                product = new Product //yoksa yeni ürün ekleniyor
                {
                    Quantity   = result.Quantity,
                    UnitPrice  = addProductDto.UnitsInPrice,
                    SupplierId = result.SupplierId,
                    CategoryId = result.CategoryId
                };
                _productService.Add(product);
            }
            _addProductDal.Update(result);
            _wantService.Want(product);//yeni ürün eklendiği için want servise gönderiliyor
            return(new SuccessResult("onaylandı"));
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            var name          = this.tbName.Text;
            var discountinued = this.chbDiscountinued.Checked;
            var categoryId    = this.cbCategory.SelectedValue;
            var supplierId    = this.cbSupplier.SelectedValue;

            //var name = this.tbName.Text;
            //var discountinued = this.tbDiscountinued.Text;
            //var categoryId = this.cbCategory.SelectedValue;
            //var supplierId = this.cbSupplier.SelectedValue;

            var addProductDto = new AddProductDto
            {
                Name          = name,
                Discountinued = discountinued,
                CategoryId    = (int)categoryId,
                SupplierId    = (int)supplierId
            };

            var op     = new insertProductOperation(addProductDto);
            var result = OperationManager.Instance.ExecuteOperation(op);

            if (!result.Errors.Any())
            {
                MessageBox.Show("Successfuly added!");
                RefreshGrid();
            }
            else
            {
                MessageBox.Show(result.Errors.First());
            }
        }
Esempio n. 13
0
        private void btnSubmit_Click(object sender, EventArgs e)
        {
            var productZaUpdate = new AddProductDto
            {
                Id         = dto.Id,
                Name       = name.Text,
                SupplierId = (ddlSupplier.SelectedItem as SupplierDto).Id,
                CategoryId = (ddlCategory.SelectedItem as CategoryDto).Id,
                Price      = price.Value,
                Quantity   = (int)quantity.Value
            };

            var updateOp = new OpProductUpdate(productZaUpdate);

            var rezOp = OperationManager.Instance.ExecuteOp(updateOp);

            if (rezOp.Success)
            {
                MessageBox.Show("Uspesno izmenjeno");

                this.Dispose();
            }
            else
            {
                MessageBox.Show(rezOp.Errors.FirstOrDefault().ToString());
            }
        }
Esempio n. 14
0
        public async Task <ServiceResponse <GetProductDto> > AddProduct(AddProductDto newProduct)
        {
            try
            {
                var product = await _dbContext.Products.Include(x => x.ProductGroup).FirstOrDefaultAsync(x => x.Name == newProduct.Name);

                if (!(product is null))
                {
                    return(ResponseResult.Failure <GetProductDto>($"Product Name = {newProduct.Name} already exists."));
                }

                var productGroup = await _dbContext.ProductGroups.FirstOrDefaultAsync(x => x.Id == newProduct.ProductGroupId);

                if (productGroup is null)
                {
                    return(ResponseResult.Failure <GetProductDto>($"ProductGroup Id = {newProduct.ProductGroupId} not found."));
                }

                product              = _mapper.Map <Product>(newProduct);
                product.CreatedById  = Guid.Parse(GetUserId());
                product.ProductGroup = productGroup;

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

                var dto = _mapper.Map <GetProductDto>(product);
                return(ResponseResult.Success(dto));
            }
            catch (Exception ex)
            {
                return(ResponseResult.Failure <GetProductDto>(ex.Message));
            }
        }
Esempio n. 15
0
        public async Task <ServiceResponse <GetProductDto> > AddProduct(AddProductDto newProduct)
        {
            var productGroup = await _dbContext.ProductGroups.FirstOrDefaultAsync(x => x.Id == newProduct.ProductGroupId);

            if (productGroup == null)
            {
                return(ResponseResult.Failure <GetProductDto>("Product Group Not Found."));
            }

            var _product = new mProduct
            {
                Name           = newProduct.Name,
                Price          = newProduct.Price,
                StockCount     = newProduct.StockCount,
                CreateBy       = GetUsername(),
                CreateDate     = Now(),
                Status         = true,
                ProductGroupId = newProduct.ProductGroupId,
                ProductGroup   = productGroup
            };

            _dbContext.Products.Add(_product);
            await _dbContext.SaveChangesAsync();

            var dto = _mapper.Map <GetProductDto>(_product);

            return(ResponseResult.Success(dto));
        }
Esempio n. 16
0
        public async Task <bool> Update(AddProductDto product)
        {
            try
            {
                var entity = await _uow.Product.Get(p => p.Code == product.Code);

                if (entity == null)
                {
                    return(false);
                }

                entity.Name      = product.Name;
                entity.Picture   = product.Picture;
                entity.Price     = product.Price;
                entity.UpdatedAt = DateTime.Now;

                await _uow.Product.Update(entity);

                return(await _uow.CompleteAsync());
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Esempio n. 17
0
        public void Add(AddProductDto dto)
        {
            var product = _mapper.Map <Product>(dto);

            ValidateProduct(product);

            productMongoRepository.Add(product);
        }
Esempio n. 18
0
 public Task <ApiResponse <string> > AddProduct([FromBody] AddProductDto productDto)
 {
     return(Catch(async() =>
     {
         var command = new AddProductCommand(productDto);
         var result = await MessageBus.DispatchCommand(command);
         return result.Payload;
     }));
 }
Esempio n. 19
0
        public IActionResult ConfirmAaddProduct(AddProductDto addProductDto)
        {
            var result = _addProductService.Confirm(addProductDto);

            if (result.Success)
            {
                return(Ok(result));
            }
            return(BadRequest(result));
        }
Esempio n. 20
0
        public IActionResult RejectAaddProduct(AddProductDto addProductDto)
        {
            var result = _addProductService.Reject(addProductDto.AddProductId);

            if (result.Success)
            {
                return(Ok(result));
            }
            return(BadRequest(result));
        }
Esempio n. 21
0
        public async Task <IActionResult> EditProduct(int productId, AddProductDto addProductDto)
        {
            var product = _productsContext.Products
                          .Include(x => x.Attributes)
                          .FirstOrDefault(x => x.Id == productId);

            // todo validation
            if (product == null)
            {
                return(NotFound());
            }

            var category = _productsContext.Categories.FirstOrDefault(x => x.Id == addProductDto.CategoryId);

            if (category == null)
            {
                return(BadRequest("Category not found"));
            }

            var attributeIds = addProductDto.Attributes.Select(y => y.AttributeId).ToList();
            var attributes   = _productsContext.Attributes
                               .Where(x => attributeIds.Contains(x.Id)).ToList();
            var notFoundAttributes = addProductDto.Attributes.Where(x => attributes.All(y => y.Id != x.AttributeId));

            if (notFoundAttributes.Any())
            {
                return(BadRequest("Attributes not found"));
            }

            product.Name        = addProductDto.Name;
            product.Description = addProductDto.Description;
            product.Price       = addProductDto.Price;
            product.CategoryId  = addProductDto.CategoryId;
            product.Category    = category;
            product.IsActive    = addProductDto.IsActive;

            product.Attributes = addProductDto.Attributes.Select(x => new AttributeValue()
            {
                AttributeId = x.AttributeId,
                Value       = x.AttributeValue,
                Attribute   = attributes.First(y => y.Id == x.AttributeId)
            }).ToList();

            await _productsContext.SaveChangesAsync();

            var productDto = ToProductDto(product);

            await _bus.Publish(new ProductUpdatedEvent()
            {
                ProductDetails = productDto,
                UpdateDateUtc  = DateTime.UtcNow
            });

            return(Created($"api/products/{product.Id}", productDto)); // todo references not initialized
        }
Esempio n. 22
0
        public async Task <ServiceResponse <List <GetProductDto> > > AddProduct(AddProductDto newProduct)
        {
            try
            {
                _log.LogInformation("Start  process.");
                var product = await _dBContext.Products
                              .Include(x => x.ProductGroup)
                              .FirstOrDefaultAsync(x => x.Name == newProduct.Name);

                if (!(product is null))
                {
                    var msg = $"Duplicate name exists.";
                    _log.LogError(msg);
                    return(ResponseResult.Failure <List <GetProductDto> >(msg));
                }

                _log.LogInformation("Check ProductGroup.");
                var productGroup = await _dBContext.ProductGroups.FirstOrDefaultAsync(x => x.Id == newProduct.ProductGroupId);

                if (productGroup is null)
                {
                    var msg = $"Product Group not exists.";
                    _log.LogError(msg);
                    return(ResponseResult.Failure <List <GetProductDto> >(msg));
                }

                _log.LogInformation("Add New Product.");
                var addProduct = new Models.Product
                {
                    Name           = newProduct.Name,
                    Price          = newProduct.Price,
                    StockCount     = newProduct.StockCount,
                    ProductGroupId = newProduct.ProductGroupId
                };

                _dBContext.Products.Add(addProduct);
                await _dBContext.SaveChangesAsync();

                _log.LogInformation("Success.");

                var productAll = await _dBContext.Products
                                 .Include(x => x.ProductGroup)
                                 .ToListAsync();

                var dto = _mapper.Map <List <GetProductDto> >(productAll);
                _log.LogInformation("End  process.");
                return(ResponseResult.Success(dto));
            }
            catch (System.Exception ex)
            {
                _log.LogError(ex.Message);
                return(ResponseResult.Failure <List <GetProductDto> >(ex.Message));
            }
        }
Esempio n. 23
0
 public IActionResult AddProduct(AddProductDto newProduct)
 {
     if (_repo.AddNewProduct(newProduct))
     {
         return(Created($"ProductId/{newProduct.Title}", newProduct));
     }
     else
     {
         return(BadRequest());
     }
 }
Esempio n. 24
0
        public async Task <ServiceResponse <List <GetProductDto> > > AddProduct(AddProductDto newProduct)
        {
            ServiceResponse <List <GetProductDto> > serviceResponse = new ServiceResponse <List <GetProductDto> >();
            Product product = _mapper.Map <Product>(newProduct);
            await _context.Products.AddAsync(product);

            await _context.SaveChangesAsync();

            serviceResponse.Data = (_context.Products.Select(p => _mapper.Map <GetProductDto>(p))).ToList();
            return(serviceResponse);
        }
Esempio n. 25
0
        public async Task <IActionResult> Post([FromBody] AddProductDto model)
        {
            if (model == null)
            {
                return(BadRequest("Product is missing"));
            }

            var product = await _productService.AddProductAsync(model);

            return(Ok(product));
        }
Esempio n. 26
0
        public async Task AddAsync(AddProductDto product)
        {
            var category = await categoryRepository.FindASync(product.CategoryId);

            if (category == null)
            {
                throw new CategoryNotFoundException("Category not found");
            }

            var p = new Product(product.Name, product.Description, product.Price, category);
            await productsRepository.AddAsync(p);
        }
 public async Task <IActionResult> AddProduct(AddProductDto newproduct)
 {
     try
     {
         return(Ok(await _productService.AddProduct(newproduct)));
     }
     catch (Exception)
     {
         _logger.LogError("Failed to execute POST");
         return(BadRequest());
     }
 }
Esempio n. 28
0
        public async Task When_Adding_Product_Then_Gets_Category_From_Repository(AddProductDto dto)
        {
            // Arrange
            productCategoryRepositoryMock.Setup(x => x.GetAndEnsureExistAsync(It.IsAny <Guid>()))
            .ReturnsAsync(CreateProductCategory(false));

            // Act
            await sut.AddAsync(dto);

            // Assert
            productCategoryRepositoryMock.Verify(x => x.GetAndEnsureExistAsync(dto.ProductCategoryId), Times.Once);
        }
        public static Product Convert(AddProductDto addProductDto)
        {
            var product = new Product
            {
                ProductName = new MultilingualString()
            };

            foreach (var productDto in addProductDto.Data)
            {
                product.ProductName.SetTranslation(productDto.CultuleName, productDto.Value.Name);
            }
            return(product);
        }
Esempio n. 30
0
        public UpdateProductForm(AddProductDto dto)
        {
            InitializeComponent();

            if (dto == null)
            {
                throw new ArgumentException("Morate izabrati proizvod za update");
            }

            this.dto = dto;

            InitializeFormItems();
        }