public FabricPackingIdCodeDto AutoCreatePacking(FabricPackingAutoCreateFormDto form)
        {
            var fabric = _dbContext.FabricProductSKUs.FirstOrDefault(entity => entity.Id == form.FabricSKUId);

            if (fabric != null)
            {
                var productSKU           = _dbContext.ProductSKUs.FirstOrDefault(entity => entity.Id == fabric.ProductSKUId);
                var latestProductPacking = _dbContext.ProductPackings.Where(entity => entity.Code.Contains(productSKU.Code)).OrderByDescending(entity => entity.Code).FirstOrDefault();

                var i = 1;
                if (latestProductPacking != null)
                {
                    var rollNumber = latestProductPacking.Code.Substring(latestProductPacking.Code.Count() - 4);
                    i = int.Parse(rollNumber) + 1;
                }

                var packingModel         = new ProductPackingModel();
                var fabricPackingProduct = new FabricProductPackingModel();
                var packingCodes         = new List <string>();
                var limit = (i - 1) + form.Quantity;
                for (; i <= limit; i++)
                {
                    var code = productSKU.Code + i.ToString().PadLeft(4, '0');
                    var uom  = _dbContext.IPUnitOfMeasurements.FirstOrDefault(entity => entity.Unit == form.PackingType);
                    packingModel = new ProductPackingModel(productSKU.Id, uom.Id, form.Length, code, code, "");
                    _unitOfWork.ProductPackings.Insert(packingModel);
                    _unitOfWork.Commit();
                    packingCodes.Add(code);

                    fabricPackingProduct = new FabricProductPackingModel(code, fabric.Id, productSKU.Id, packingModel.Id, uom.Id, form.Length, form.PackingType);
                    _dbContext.FabricProductPackings.Add(fabricPackingProduct);
                }

                _dbContext.SaveChanges();

                if (packingCodes.Count < 1)
                {
                    var errorResult = new List <ValidationResult>()
                    {
                        new ValidationResult("SKU belum ada", new List <string> {
                            "ProductSKU"
                        })
                    };
                    var validationContext = new ValidationContext(packingModel, _serviceProvider, null);
                    throw new ServiceValidationException(validationContext, errorResult);
                }

                return(new FabricPackingIdCodeDto()
                {
                    FabricPackingId = fabricPackingProduct.Id, ProductPackingCode = packingModel.Code, ProductPackingId = packingModel.Id, FabricSKUId = fabric.Id, ProductSKUCode = productSKU.Code, ProductSKUId = productSKU.Id, ProductPackingCodes = packingCodes
                });
            }
            else
            {
                return(new FabricPackingIdCodeDto());
            }
        }
Ejemplo n.º 2
0
 public ProductPackingDto(ProductPackingModel productPacking, ProductSKUModel product, UnitOfMeasurementModel uom, UnitOfMeasurementModel skuUOM, CategoryModel skuCategory)
 {
     Id             = productPacking.Id;
     Code           = productPacking.Code;
     Name           = productPacking.Name;
     LasModifiedUtc = productPacking.LastModifiedUtc;
     ProductSKU     = new ProductSKUDto(product, skuUOM, skuCategory);
     UOM            = new UnitOfMeasurementDto(uom);
     PackingSize    = productPacking.PackingSize;
 }
        public async Task Update_success()
        {
            var productPackingRepository    = new Mock <IRepository <ProductPackingModel> >();
            var productSKURepository        = new Mock <IRepository <ProductSKUModel> >();
            var categoryRepository          = new Mock <IRepository <CategoryModel> >();
            var unitOfMeasurementRepository = new Mock <IRepository <UnitOfMeasurementModel> >();

            var productPackingModel = new ProductPackingModel();

            productPackingModel.SetCode("code");
            productPackingModel.SetName("name");
            productPackingModel.SetDescription("description");
            productPackingModel.SetPackingSize(1);
            productPackingModel.SetProductSKU(1);
            productPackingModel.SetUOM(1);

            productPackingRepository.Setup(s => s.ReadByIdAsync(It.IsAny <int>()))
            .ReturnsAsync(productPackingModel);

            productPackingRepository.Setup(s => s.ReadAll())
            .Returns(new List <ProductPackingModel>()
            {
                productPackingModel
            }.AsQueryable());

            productPackingRepository
            .Setup(s => s.UpdateAsync(It.IsAny <int>(), It.IsAny <ProductPackingModel>()))
            .ReturnsAsync(1);

            var service = GetService(GetServiceProvider(
                                         productPackingRepository.Object,
                                         productSKURepository.Object,
                                         categoryRepository.Object,
                                         unitOfMeasurementRepository.Object
                                         ).Object);

            var newFormDto = new FormDto()
            {
                Name         = "newName",
                Code         = "newCode",
                ProductSKUId = 2,
                PackingSize  = 2,
                Description  = "new Description",
                UOMId        = 2
            };
            var result = await service.Update(1, newFormDto);

            Assert.True(0 < result);
        }
Ejemplo n.º 4
0
        public void shouldSuccessInstantiate()
        {
            ProductSKUModel product = new ProductSKUModel("Code", "Name", 1, 1, "Description")
            {
                Id = 1,
            };

            UnitOfMeasurementModel uom = new UnitOfMeasurementModel()
            {
                Id = 1
            };

            CategoryModel category = new CategoryModel("Name", "Code")
            {
            };

            ProductSKUDto productSKUDto = new ProductSKUDto(product, uom, category)
            {
                Category = new CategoryDto(new CategoryModel("Name", "Code"))
            };


            ProductPackingModel productPackingModel = new ProductPackingModel(1, 1, 1, "Code", "Name", "description")
            {
            };

            ProductSKUModel productSKUModel = new ProductSKUModel("Code", "Name", 1, 1, "Description")
            {
            };

            UnitOfMeasurementModel uomModel = new UnitOfMeasurementModel("Unit")
            {
            };
            UnitOfMeasurementModel skuUOM            = new UnitOfMeasurementModel();
            CategoryModel          skuCategory       = new CategoryModel();
            ProductPackingDto      productPackingDto = new ProductPackingDto(productPackingModel, productSKUModel, uomModel, skuUOM, skuCategory);


            BarcodeInfo barcode = new BarcodeInfo(productSKUDto, productPackingDto);

            Assert.NotNull(barcode);
            Assert.Equal("Code", barcode.SKUCode);
            Assert.Equal("Name", barcode.SKUName);
            Assert.Equal("Code", barcode.PackingCode);
            Assert.Equal(1, barcode.PackingSize);
            Assert.Equal("Unit", barcode.PackingType);
        }
Ejemplo n.º 5
0
        public async Task <int> Create(FormDto form)
        {
            if (_productPackingRepository.ReadAll().Any(entity => entity.Name == form.Name))
            {
                var errorResult = new List <ValidationResult>()
                {
                    new ValidationResult("Nama tidak boleh duplikat", new List <string> {
                        "Name"
                    })
                };
                var validationContext = new ValidationContext(form, _serviceProvider, null);
                throw new ServiceValidationException(validationContext, errorResult);
            }

            if (_productPackingRepository.ReadAll().Any(entity => entity.Code == form.Code))
            {
                var errorResult = new List <ValidationResult>()
                {
                    new ValidationResult("Kode tidak boleh duplikat", new List <string> {
                        "Code"
                    })
                };
                var validationContext = new ValidationContext(form, _serviceProvider, null);
                throw new ServiceValidationException(validationContext, errorResult);
            }

            if (_productPackingRepository.ReadAll().Any(entity => entity.ProductSKUId == form.ProductSKUId.GetValueOrDefault() && entity.PackingSize == form.PackingSize.GetValueOrDefault()))
            {
                var errorResult = new List <ValidationResult>()
                {
                    new ValidationResult("Sudah ada SKU dengan Kuantiti Per packing yang sama", new List <string> {
                        "ProductSKU"
                    })
                };
                var validationContext = new ValidationContext(form, _serviceProvider, null);
                throw new ServiceValidationException(validationContext, errorResult);
            }

            var model = new ProductPackingModel(form.ProductSKUId.GetValueOrDefault(), form.UOMId.GetValueOrDefault(), form.PackingSize.GetValueOrDefault(), form.Code, form.Name, form.Description);

            return(await _productPackingRepository.InsertAsync(model));
        }
        public async Task GetIndex_Return_success()
        {
            var productPackingRepository    = new Mock <IRepository <ProductPackingModel> >();
            var productSKURepository        = new Mock <IRepository <ProductSKUModel> >();
            var unitOfMeasurementRepository = new Mock <IRepository <UnitOfMeasurementModel> >();
            var categoryRepository          = new Mock <IRepository <CategoryModel> >();

            var productPackingModel = new ProductPackingModel(1, 1, 1, "Code", "Name", "description")
            {
                Id     = 1,
                Active = true,
            };

            productPackingRepository.Setup(s => s.ReadAll())
            .Returns(new List <ProductPackingModel>()
            {
                productPackingModel
            }.AsQueryable().BuildMock().Object);

            var productSKUModel = new ProductSKUModel("Code", "Name", 1, 1, "Description")
            {
                Id     = 1,
                Active = true,
            };

            productSKURepository.Setup(s => s.ReadAll())
            .Returns(new List <ProductSKUModel>()
            {
                productSKUModel
            }.AsQueryable().BuildMock().Object);;


            var unitOfMeasurementModel = new UnitOfMeasurementModel("Unit")
            {
                Id     = 1,
                Active = true
            };

            unitOfMeasurementRepository.Setup(s => s.ReadAll())
            .Returns(new List <UnitOfMeasurementModel>()
            {
                unitOfMeasurementModel
            }.AsQueryable().BuildMock().Object);


            var service = GetService(GetServiceProvider(
                                         productPackingRepository.Object,
                                         productSKURepository.Object,
                                         categoryRepository.Object,
                                         unitOfMeasurementRepository.Object
                                         ).Object);

            IndexQueryParam queryParam = new IndexQueryParam()
            {
                order   = "",
                page    = 1,
                size    = 1,
                keyword = "Name"
            };

            var result = await service.GetIndex(queryParam);

            Assert.NotNull(result);
        }