public async Task <GarmentScrapTransaction> Handle(RemoveGarmentScrapTransactionCommand request, CancellationToken cancellationToken) { var scrapTransaction = _garmentScrapTransactionRepository.Query.Where(o => o.Identity == request.Identity).Select(o => new GarmentScrapTransaction(o)).FirstOrDefault(); _garmentScrapTransactionItemRepository.Find(o => o.ScrapTransactionId == scrapTransaction.Identity).ForEach(async item => { if (scrapTransaction.TransactionType == "IN") { var gStock = _garmentScrapStockRepository.Query.Where(s => s.ScrapDestinationId == scrapTransaction.ScrapDestinationId && s.ScrapClassificationId == item.ScrapClassificationId).Select(i => new GarmentScrapStock(i)).FirstOrDefault(); gStock.SetQuantity(gStock.Quantity - item.Quantity); gStock.Modify(); await _garmentScrapStockRepository.Update(gStock); } else { var gStock = _garmentScrapStockRepository.Query.Where(s => s.ScrapDestinationId == scrapTransaction.ScrapDestinationId && s.ScrapClassificationId == item.ScrapClassificationId).Select(i => new GarmentScrapStock(i)).FirstOrDefault(); gStock.SetQuantity(gStock.Quantity + item.Quantity); gStock.Modify(); await _garmentScrapStockRepository.Update(gStock); } item.Remove(); await _garmentScrapTransactionItemRepository.Update(item); }); scrapTransaction.Remove(); await _garmentScrapTransactionRepository.Update(scrapTransaction); _storage.Save(); return(scrapTransaction); }
public async Task <IActionResult> Get(string id) { Guid guid = Guid.Parse(id); VerifyUser(); GarmentScrapTransactionDto garmentScrapTransactionDto = _garmentScrapTransactionRepository.Find(o => o.Identity == guid).Select(ScrapTransaction => new GarmentScrapTransactionDto(ScrapTransaction) { Items = _garmentScrapTransactionItemRepository.Find(o => o.ScrapTransactionId == ScrapTransaction.Identity).OrderBy(i => i.ScrapClassificationName).Select(ScrapTransactionItem => new GarmentScrapTransactionItemDto(ScrapTransactionItem) ).ToList() } ).FirstOrDefault(); await Task.Yield(); return(Ok(garmentScrapTransactionDto)); }