private async Task <int> CreateStockOpname(StockOpnameWarehouseViewModel viewModel) { int result = 0; var model = _stockOpnameRepository.GetDbSet().AsNoTracking().FirstOrDefault(s => s.Area == DyeingPrintingArea.GUDANGJADI && s.Date.Date == viewModel.Date.Date && s.Type == DyeingPrintingArea.STOCK_OPNAME); //viewModel.WarehousesProductionOrders = viewModel.WarehousesProductionOrders.Where(s => s.IsSave).ToList(); viewModel.WarehousesProductionOrders = viewModel.WarehousesProductionOrders.ToList(); if (model == null) { int totalCurrentYearData = _stockOpnameRepository.ReadAllIgnoreQueryFilter() .Count(s => s.Area == DyeingPrintingArea.GUDANGJADI && s.CreatedUtc.Year == viewModel.Date.Year && s.Type == DyeingPrintingArea.STOCK_OPNAME); string bonNo = GenerateBonNo(totalCurrentYearData + 1, viewModel.Date, viewModel.Area); model = new DyeingPrintingStockOpnameModel(viewModel.Area, bonNo, viewModel.Date, viewModel.Type, viewModel.WarehousesProductionOrders.Select(s => new DyeingPrintingStockOpnameProductionOrderModel( s.Balance, s.BuyerId, s.Buyer, s.Color, s.Construction, s.DocumentNo, s.Grade, s.MaterialConstruction.Id, s.MaterialConstruction.Name, s.Material.Id, s.Material.Name, s.MaterialWidth, s.Motif, s.PackingInstruction, s.PackagingQty, s.Quantity, s.PackagingType, s.PackagingUnit, s.ProductionOrder.Id, s.ProductionOrder.No, s.ProductionOrder.Type, s.ProductionOrder.OrderQuantity, s.ProcessType.Id, s.ProcessType.Name, s.YarnMaterial.Id, s.YarnMaterial.Name, s.Remark, s.Status, s.Unit, s.UomUnit )).ToList()); result = await _stockOpnameRepository.InsertAsync(model); //viewModel.WarehousesProductionOrders = viewModel.WarehousesProductionOrders } else { foreach (var item in viewModel.WarehousesProductionOrders) { var modelItem = new DyeingPrintingStockOpnameProductionOrderModel( item.Balance, item.BuyerId, item.Buyer, item.Color, item.Construction, item.DocumentNo, item.Grade, item.MaterialConstruction.Id, item.MaterialConstruction.Name, item.Material.Id, item.Material.Name, item.MaterialWidth, item.Motif, item.PackingInstruction, item.PackagingQty, item.Quantity, item.PackagingType, item.PackagingUnit, item.ProductionOrder.Id, item.ProductionOrder.No, item.ProductionOrder.Type, item.ProductionOrder.OrderQuantity, item.ProcessType.Id, item.ProcessType.Name, item.YarnMaterial.Id, item.YarnMaterial.Name, item.Remark, item.Status, item.Unit, item.UomUnit ); modelItem.DyeingPrintingStockOpnameId = model.Id; result += await _stockOpnameProductionOrderRepository.InsertAsync(modelItem); } } return(result); }