public void DateLessOrEqualThanLastData_NotEmpty() { var stockOpname = new GarmentStockOpname { Date = new DateTimeOffset(new DateTime(2020, 11, 22)) }; var facadeMock = new Mock <IGarmentStockOpnameFacade>(); facadeMock.Setup(s => s.GetLastDataByUnitStorage(It.IsAny <string>(), It.IsAny <string>())) .Returns(stockOpname); var serviceProviderMock = new Mock <IServiceProvider>(); serviceProviderMock .Setup(x => x.GetService(typeof(IGarmentStockOpnameFacade))) .Returns(facadeMock.Object); serviceProviderMock .Setup(x => x.GetService(typeof(IdentityService))) .Returns(new IdentityService() { Token = "Token", Username = "******" }); GarmentStockOpnameDownload downloadFile = new GarmentStockOpnameDownload(stockOpname.Date, "not null", "not null", "not null"); var validationContext = new ValidationContext(downloadFile, serviceProviderMock.Object, null); var validationResults = downloadFile.Validate(validationContext); Assert.NotEmpty(validationResults.ToList()); }
void ValidateUpload(GarmentStockOpname data) { List <ValidationResult> validationResults = new List <ValidationResult>(); if (data.Date == DateTimeOffset.MinValue) { validationResults.Add(new ValidationResult("Tanggal harus diisi", new List <string> { "date" })); } //else if (!string.IsNullOrWhiteSpace(data.UnitCode) && !string.IsNullOrWhiteSpace(data.StorageCode)) //{ // var lastData = GetLastDataByUnitStorage(data.UnitCode, data.StorageCode); // if (lastData != null) // { // if (data.Date <= lastData.Date) // { // validationResults.Add(new ValidationResult("Tanggal harus lebih dari " + lastData.Date.ToOffset(new TimeSpan(identityService.TimezoneOffset, 0, 0)).ToString("dd MMMM yyyy", CultureInfo.CreateSpecificCulture("id-ID")), new List<string> { "date" })); // } // } //} if (string.IsNullOrWhiteSpace(data.UnitCode)) { validationResults.Add(new ValidationResult("Unit harus diisi", new List <string> { "unit" })); } if (string.IsNullOrWhiteSpace(data.StorageCode)) { validationResults.Add(new ValidationResult("Storage harus diisi", new List <string> { "storage" })); } if (data.Items.Count < 1) { validationResults.Add(new ValidationResult("Items harus diisi", new List <string> { "itemsCount" })); } else { foreach (var item in data.Items) { if (item.Quantity < 0) { validationResults.Add(new ValidationResult("Quantity tidak boleh kurang dari 0", new List <string> { "item" })); } } } if (validationResults.Count > 0) { throw new ServiceValidationExeption(null, validationResults); } }
public async Task <GarmentStockOpname> Upload(Stream stream) { ExcelPackage excelPackage = new ExcelPackage(); excelPackage.Load(stream); var ws = excelPackage.Workbook.Worksheets[0]; var storage = ((string)ws.Cells["B3"].Value).Split("-"); var data = new GarmentStockOpname { Date = DateTimeOffset.Parse((string)ws.Cells["B1"].Value), UnitCode = (string)ws.Cells["B2"].Value, StorageCode = storage[0].Trim(), StorageName = storage[1].Trim(), Items = new List <GarmentStockOpnameItem>() }; EntityExtension.FlagForCreate(data, identityService.Username, USER_AGENT); for (int row = 6; row <= ws.Dimension.End.Row; row++) { if (!string.IsNullOrWhiteSpace(ws.Cells[row, 1].Text)) { GarmentStockOpnameItem item = new GarmentStockOpnameItem { DOItemId = (int)(double)ws.Cells[row, 1].Value, BeforeQuantity = (decimal)(double)ws.Cells[row, 7].Value, Quantity = (decimal)(double)ws.Cells[row, 8].Value }; EntityExtension.FlagForCreate(item, identityService.Username, USER_AGENT); data.Items.Add(item); if (item.BeforeQuantity != item.Quantity) { item.DOItem = dbSetDOItem.Where(doi => doi.Id == item.DOItemId).Single(); item.DOItem.RemainingQuantity = item.Quantity; EntityExtension.FlagForUpdate(item.DOItem, identityService.Username, USER_AGENT); } } } dbSet.Add(data); await dbContext.SaveChangesAsync(); return(data); }
public async Task <GarmentStockOpname> Upload(Stream stream) { ExcelPackage excelPackage = new ExcelPackage(); excelPackage.Load(stream); var ws = excelPackage.Workbook.Worksheets[0]; var storage = new string[2] { "", "" }; if (!string.IsNullOrWhiteSpace((string)ws.Cells["B3"].Value)) { storage = ((string)ws.Cells["B3"].Value).Split("-"); } var data = new GarmentStockOpname { Date = DateTimeOffset.Parse((string)ws.Cells["B1"].Value), UnitCode = (string)ws.Cells["B2"].Value, StorageCode = storage[0].Trim(), StorageName = storage[1].Trim(), Items = new List <GarmentStockOpnameItem>() }; EntityExtension.FlagForCreate(data, identityService.Username, USER_AGENT); var doItem = dbSetDOItem.Where(i => i.UnitCode == data.UnitCode && i.StorageCode == data.StorageCode) .Select(i => new { i.UnitId, i.UnitName, i.StorageId }) .FirstOrDefault(); if (doItem != null) { data.UnitId = (int)doItem.UnitId; data.UnitName = doItem.UnitName; data.StorageId = (int)doItem.StorageId; } for (int row = 6; row <= ws.Dimension.End.Row; row++) { if (!string.IsNullOrWhiteSpace(ws.Cells[row, 1].Text)) { GarmentStockOpnameItem item = new GarmentStockOpnameItem { DOItemId = (int)(double)ws.Cells[row, 1].Value, BeforeQuantity = (decimal)(double)ws.Cells[row, 7].Value, Quantity = (decimal)(double)ws.Cells[row, 8].Value }; EntityExtension.FlagForCreate(item, identityService.Username, USER_AGENT); data.Items.Add(item); } } ValidateUpload(data); foreach (var item in data.Items) { var DOItem = dbSetDOItem.Where(doi => doi.Id == item.DOItemId).FirstOrDefault(); if (DOItem != null) { item.DOItemNo = DOItem.DOItemNo; item.UId = DOItem.UId; item.UnitId = DOItem.UnitId; item.UnitCode = DOItem.UnitCode; item.UnitName = DOItem.UnitName; item.StorageId = DOItem.StorageId; item.StorageCode = DOItem.StorageCode; item.StorageName = DOItem.StorageName; item.POId = DOItem.POId; item.POItemId = DOItem.POItemId; item.PRItemId = DOItem.PRItemId; item.EPOItemId = DOItem.EPOItemId; item.POSerialNumber = DOItem.POSerialNumber; item.ProductId = DOItem.ProductId; item.ProductCode = DOItem.ProductCode; item.ProductName = DOItem.ProductName; item.DesignColor = DOItem.DesignColor; item.SmallQuantity = DOItem.SmallQuantity; item.SmallUomId = DOItem.SmallUomId; item.SmallUomUnit = DOItem.SmallUomUnit; item.DOCurrencyRate = DOItem.DOCurrencyRate; item.DetailReferenceId = DOItem.DetailReferenceId; item.URNItemId = DOItem.URNItemId; item.RO = DOItem.RO; DOItem.RemainingQuantity = item.Quantity; EntityExtension.FlagForUpdate(DOItem, identityService.Username, USER_AGENT); //if (item.BeforeQuantity != item.Quantity) //{ // DOItem.RemainingQuantity = item.Quantity; // EntityExtension.FlagForUpdate(DOItem, identityService.Username, USER_AGENT); //} } var urnItem = dbSetUnitReceiptNoteItems.FirstOrDefault(urni => urni.Id == item.URNItemId); if (urnItem != null) { item.Price = item.Quantity * (decimal)item.DOCurrencyRate * (decimal)urnItem.PricePerDealUnit; } } dbSet.Add(data); await dbContext.SaveChangesAsync(); return(data); }