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()); } }
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); }
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); }
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); }