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);
        }
示例#2
0
        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));
        }