Exemplo n.º 1
0
 public int GiveProduct(List <int> productAvailabilityIds, int teamId, int newProductId)
 {
     using (AppContext db = new AppContext())
     {
         foreach (int productAvailabilityId in productAvailabilityIds)
         {
             ProductAvailability productAvailability = db.ProductAvailabilities.Where(pa => pa.Id == productAvailabilityId).First();
             db.ProductAvailabilities.Remove(productAvailability);
             db.SaveChanges();
         }
         Product    product    = db.Products.Where(p => p.Id == newProductId).First();
         Department department = (from d in db.Departments
                                  join t in db.Teams on d.Id equals t.Department.Id
                                  where t.Id == teamId
                                  select d).First();
         db.ProductAvailabilities.Add(new ProductAvailability {
             Product = product, Department = department
         });
         db.SaveChanges();
         Department source       = department;
         Department destination  = department;
         DateTime   movementDate = DateTime.Now;
         Team       team         = db.Teams.Where(t => t.Id == teamId).First();
         Movement   movement     = new Movement {
             Product = product, Source = source, Destination = destination, MovementDate = movementDate, Team = team
         };
         db.Movements.Add(movement);
         db.SaveChanges();
     }
     return(1);
 }
Exemplo n.º 2
0
        /*Add New Product Detail*/
        public ServiceResponse SaveProduct(ProductModel productModel)
        {
            var product             = new Product();
            var productAccountPrice = new ProductAccountPrice();
            var productAvailability = new ProductAvailability();
            var productPricing      = new ProductPricing();

            Mapper.Map(productModel, product);
            Mapper.Map(productModel.ProductAccountPriceModel, product.ProductAccountPrice);
            Mapper.Map(productModel.ProductAvailabilityModel, product.ProductAvailability);
            Mapper.Map(productModel.ProductPricingModel, product.ProductPricing);
            Mapper.Map(productModel.ProductDivisionModel, product.ProductDivision);
            Mapper.Map(productModel.ProductCategoryModel, product.ProductCategory);
            Mapper.Map(productModel.ProductAttributeModel, product.ProductAttribute);

            product.CreatedBy = GetLoginUserId();
            product.ProductAccountPrice.ToList().ForEach(m => m.CreatedBy = GetLoginUserId());
            product.ProductPricing.ToList().ForEach(m => m.CreatedBy      = GetLoginUserId());

            _unitOfWork.productRespository.Insert(product);
            _unitOfWork.Save();
            Mapper.Map(product, productModel);
            Mapper.Map(product.ProductClass, productModel.ProductClassModel);
            Mapper.Map(product.ProductAccountPrice, productModel.ProductAccountPriceModel);
            Mapper.Map(product.ProductAvailability, productModel.ProductAvailabilityModel);
            Mapper.Map(product.ProductPricing, productModel.ProductPricingModel);
            Mapper.Map(product.ProductDivision, productModel.ProductDivisionModel);
            Mapper.Map(product.ProductCategory, productModel.ProductCategoryModel);
            Mapper.Map(product.ProductAttribute, productModel.ProductAttributeModel);

            return(new ServiceResponse {
                Success = true, Message = "Saved", Data = productModel
            });
        }
Exemplo n.º 3
0
        public Basket UpdateBasket(AddProductToBasketRequestModel basketItems, ProductAvailability productAvailability, Basket userBasket)
        {
            var addedBasketLine = userBasket.BasketLines.FirstOrDefault(x => x.ProductId == basketItems.ProductId);

            if (addedBasketLine != null)
            {
                var newQuantity = addedBasketLine.Quantity + basketItems.Quantity;

                var availableStockModelForNewQuantity = _stockService.HasAvailableStock(new StockRequestModel()
                {
                    ProductId = basketItems.ProductId, Quantity = newQuantity
                });

                if (availableStockModelForNewQuantity == null)
                {
                    _logger.LogError("Stock is not sufficient");
                    throw new ProductIsNotAvailableException("Stock is not sufficient");
                }

                addedBasketLine.Quantity = newQuantity;
                addedBasketLine.GiftNote = basketItems.GiftNote;
            }
            else
            {
                userBasket.BasketLines.Add(CreateNewBasketLine(basketItems, productAvailability));
            }

            return(userBasket);
        }
Exemplo n.º 4
0
 public int TakeProduct(int productAvailabilityId, int teamId)
 {
     using (AppContext db = new AppContext())
     {
         Department source = (from pa in db.ProductAvailabilities
                              join d in db.Departments on pa.Department.Id equals d.Id
                              where pa.Id == productAvailabilityId
                              select d).First();
         ProductAvailability productAvailability = db.ProductAvailabilities.Where(pa => pa.Id == productAvailabilityId).First();
         var department = (from d in db.Departments
                           join t in db.Teams on d.Id equals t.Department.Id
                           where t.Id == teamId
                           select d).First();
         productAvailability.Department = department;
         db.SaveChanges();
         Product product = (from pa in db.ProductAvailabilities
                            join p in db.Products on pa.Product.Id equals p.Id
                            where pa.Id == productAvailabilityId
                            select p).First();
         Department destination  = department;
         DateTime   movementDate = DateTime.Now;
         Team       team         = db.Teams.Where(t => t.Id == teamId).First();
         Movement   movement     = new Movement {
             Product = product, Source = source, Destination = destination, MovementDate = movementDate, Team = team
         };
         db.Movements.Add(movement);
         db.SaveChanges();
     }
     return(1);
 }
Exemplo n.º 5
0
 public int DeleteProduct(int productAvailabilityId)
 {
     using (AppContext db = new AppContext())
     {
         ProductAvailability productAvailability = db.ProductAvailabilities.Where(pa => pa.Id == productAvailabilityId).First();
         db.ProductAvailabilities.Remove(productAvailability);
         db.SaveChanges();
     }
     return(1);
 }
Exemplo n.º 6
0
        public ProductAvailabilityDto MapModelToDto(ProductAvailability model)
        {
            var config = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <ProductAvailability, ProductAvailabilityDto>();
            });
            var mapper = config.CreateMapper();

            return(mapper.Map <ProductAvailabilityDto>(model));
        }
Exemplo n.º 7
0
        public async Task AddAsync(ProductDetailsDTO product) // Dodaje nowy produkt
        {
            _logger.LogInformation(1, $"Tworze product o guid {product.Id}");

            //Sprawdzam czy ProductDefinition istnieje
            //Jak nie istnieje dodaje
            var productDefinition = await _productDefinitionRepository.CreateIfNullAsync(product.Name,
                                                                                         product.Description, product.Mark, product.Collection, product.IsAvaible);

            //Sprawdzam czy istnieje identyczny produkt
            //Jak tak podaj błąd
            var Product = await _productRepository.GetProductByDefinitionSizeAndColorAsync(productDefinition.Id,
                                                                                           product.SizeId, product.ColorId);

            if (Product != null)
            {
                _logger.LogError(1, $"Product named: '{product.Name}' and colorId : '{product.ColorId}' and sizeId : '{product.SizeId}' already exist");
                throw new Exception($"Product named: '{product.Name}' and colorId : '{product.ColorId}' and sizeId : '{product.SizeId}' already exist");
            }
            //Sprawdzam czy jest choć jedno zdjęcie
            if (product.ProductFotosDTO.Count == 0)
            {
                _logger.LogError(1, $"Product named: '{product.Name}' doesn't have any picture. Stop process of adding product.");
                throw new Exception($"Product named: '{product.Name}' doesn't have any picture");
            }
            //Dodaje product
            var ColorValue = await _colorRepository.GetByIdAsync(product.ColorId);

            var SizeValue = await _sizeRepository.GetByIdAsync(product.SizeId);

            Product = new Product(product.Id, product.IsAvaible, product.Discount, ColorValue.Name, SizeValue.Name, productDefinition.Id, product.SizeId, product.ColorId, product.CategoryId, product.Price);

            Task  AddProduct = _productRepository.AddAsync(Product);
            await AddProduct;

            //Dodaje dotepnosc produktu
            Task.WaitAll(AddProduct);
            var ProductAvailability = new ProductAvailability(Guid.NewGuid(), product.Quantity, product.Id);
            await _productAvailabilityRepository.AddAsync(ProductAvailability);

            //Dodaje zdjęcia
            int Index = 1;

            foreach (var productFoto in product.ProductFotosDTO)
            {
                var newFoto = new ProductFoto(Guid.NewGuid(), product.Id, productDefinition.Id, productFoto.FotoUrl, productFoto.Description, Index);
                Index++;
                await _productFotoRepository.AddAsync(newFoto);
            }
        }
Exemplo n.º 8
0
        public Basket CreateNewBasket(AddProductToBasketRequestModel basketItems, ProductAvailability productAvailability)
        {
            List <BasketLine> basketLines = new List <BasketLine>();

            basketLines.Add(CreateNewBasketLine(basketItems, productAvailability));

            var basket = new Basket()
            {
                UserId      = basketItems.UserId,
                CreatedDate = DateTime.UtcNow,
                BasketLines = basketLines,
                IsActive    = true,
                IsOrdered   = false,
                UpdateDate  = DateTimeProvider.Instance.GetUtcNow()
            };

            return(basket);
        }
Exemplo n.º 9
0
        public void Update(ProductAvailabilityDto item, bool save = true)
        {
            // Get existing object from database
            ProductAvailability oldItem = GetFromModel().FirstOrDefault(x => x.Id.Equals(item.Id));

            // Set the new values for the fetched object
            if (oldItem != null)
            {
                oldItem.IsAvailable = item.IsAvailable;
                oldItem.Date        = item.Date;
                oldItem.ProductId   = item.ProductId;
            }

            if (save)
            {
                Context.SaveChanges();
            }
        }
Exemplo n.º 10
0
        /*Add New Product Detail*/
        public ServiceResponse SaveProduct(ProductModel productModel)
        {
            var product = new Product();
            var productAccountPrice = new ProductAccountPrice();
            var productAvailability = new ProductAvailability();
            var productPricing = new ProductPricing();
            Mapper.Map(productModel, product);
            Mapper.Map(productModel.ProductAccountPriceModel, product.ProductAccountPrice);
            Mapper.Map(productModel.ProductAvailabilityModel, product.ProductAvailability);
            Mapper.Map(productModel.ProductPricingModel, product.ProductPricing);
            Mapper.Map(productModel.ProductDivisionModel, product.ProductDivision);
            Mapper.Map(productModel.ProductCategoryModel, product.ProductCategory);
            Mapper.Map(productModel.ProductAttributeModel, product.ProductAttribute);

            product.CreatedBy = GetLoginUserId();
            product.ProductAccountPrice.ToList().ForEach(m => m.CreatedBy = GetLoginUserId());
            product.ProductPricing.ToList().ForEach(m => m.CreatedBy = GetLoginUserId());

            _unitOfWork.productRespository.Insert(product);
            _unitOfWork.Save();
            Mapper.Map(product, productModel);
            Mapper.Map(product.ProductClass, productModel.ProductClassModel);
            Mapper.Map(product.ProductAccountPrice, productModel.ProductAccountPriceModel);
            Mapper.Map(product.ProductAvailability, productModel.ProductAvailabilityModel);
            Mapper.Map(product.ProductPricing, productModel.ProductPricingModel);
            Mapper.Map(product.ProductDivision, productModel.ProductDivisionModel);
            Mapper.Map(product.ProductCategory, productModel.ProductCategoryModel);
            Mapper.Map(product.ProductAttribute, productModel.ProductAttributeModel);

            return new ServiceResponse { Success = true, Message = "Saved", Data = productModel };
        }
Exemplo n.º 11
0
        public BasketLine CreateNewBasketLine(AddProductToBasketRequestModel basketItems, ProductAvailability productAvailability)
        {
            var basketLine = new BasketLine()
            {
                ProductId = basketItems.ProductId,
                Quantity  = basketItems.Quantity,
                StockId   = productAvailability.StockId,
                GiftNote  = basketItems.GiftNote
            };

            return(basketLine);
        }
Exemplo n.º 12
0
        public void When_Product_Is_Null_It_Should_Return_Product_Is_Not_Available(int productId, ProductAvailability expected)
        {
            //ProductResponseModel productResponseModel = null;
            //var productAvailability = CheckProductIsAvailable(addProductToBasketRequestModel);


            //var productRepositoryMock = new Mock<IProductService>();
            //productRepositoryMock.Setup(p => p.GetProduct(new Models.Product.ProductRequestModel() { ProductId = 1000})).Returns(productResponseModel);

            //var productResponse = _productService.GetProduct(new Models.Product.ProductRequestModel() { ProductId = 10 });
        }
Exemplo n.º 13
0
 public async Task WhenICallTheProductAvailabilityAPIForProductId(string productId)
 {
     productAvailability = await apiClient.ProductAPI.ListProductAvailabilityAsync(productId).ConfigureAwait(false);
 }