public async Task Create(PurchaseCreateDTO dto) { using var tx = TransactionScopeHelper.GetInstance(); var supplier = await _supplierRepo.GetById(dto.SupplierId).ConfigureAwait(false) ?? throw new Exception("Supplier not found!!!"); var purchase = new Purchase(supplier, dto.Discount); foreach (var data in dto.PurchaseDetails) { var item = await _itemRepo.GetById(data.ItemId).ConfigureAwait(false) ?? throw new Exception("Item not found!"); purchase.AddPurchaseDetails(item, data.Qty, data.Rate, data.SalesRate); item.AddQty(data.Qty); item.UpdateRate(data.SalesRate); await _itemRepo.UpdateAsync(item).ConfigureAwait(false); } await _purchaseRepo.InsertAsync(purchase).ConfigureAwait(false); tx.Complete(); }
public PurchaseServiceTest() { _purchase = new Purchase(_supplier, discount); _purchaseService = new PurchaseService(_purchaseRepo.Object, _supplierRepo.Object, _itemRepo.Object); _purchaseCreate = new PurchaseCreateDTO(); _purchaseDetailCreate = new PurchaseDetailCreateDTO(); _supplier = new Supplier(name, address, email, phone); }
public async Task <IActionResult> Create(PurchaseIndexViewModel allPurchases) { try { if (ModelState.IsValid) { var purchase = new PurchaseCreateDTO() { SupplierId = allPurchases.SupplierId, Total = allPurchases.Total, GrandTotal = allPurchases.GrandTotal, Discount = allPurchases.Discount, Remarks = allPurchases.Remarks }; var purchaseDetails = new List <PurchaseDetailCreateDTO>(); foreach (var data in allPurchases.PurchaseDetails) { var dto = new PurchaseDetailCreateDTO { ItemId = data.ItemId, Rate = data.Rate, Qty = data.Qty, Amount = data.Amount, SalesRate = data.SalesRate, }; purchaseDetails.Add(dto); } purchase.PurchaseDetails = purchaseDetails; await _purchaseService.Create(purchase).ConfigureAwait(true); return(Json(purchase)); } } catch (Exception ex) { _toastNotification.AddErrorToastMessage("Error in creating sale!"); } allPurchases.Suppliers = await _supplierInterface.GetAllAsync().ConfigureAwait(true); allPurchases.Items = (await _itemRepo.GetAllAsync().ConfigureAwait(true)).Where(a => a.IsActive()).ToList(); return(View(allPurchases)); }