using bnhtrade.Core.Data.Database.UnitOfWork; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace bnhtrade.Core.Logic.Account { public class InvoiceLineItemService : UnitOfWorkBase { private Logic.Log.LogEvent _log = new Logic.Log.LogEvent(); public InvoiceLineItemService() { } internal InvoiceLineItemService(IUnitOfWork unitOfWork) : base(unitOfWork) { } /// /// Creates new 'default' item code entry. The item code and title are set, will require updating by user before use. /// /// Item code string /// public Model.Account.InvoiceLineItem CreateNew(string itemCode) { return WithUnitOfWork(uow => { uow.InvoiceRepository.CreateDefaultInvoiceLineItem(itemCode); var item = uow.InvoiceRepository.GetInvoiceLineItem(null, new List { itemCode }); if (item == null || item.Count == 0) { _log.LogError("InvoiceLineItemService.CreateNew", "Error creating new invoice line item in database for item code: " + itemCode); throw new Exception("Error creating new invoice line item in database"); } CommitIfOwned(uow); return item[0]; }); } public Dictionary GetLineItems(List itemCodes) { return WithUnitOfWork(uow => { var dbResult = uow.InvoiceRepository.GetInvoiceLineItem(null, itemCodes); var returnDict = new Dictionary(); foreach (var item in dbResult) { returnDict.Add(item.Value.ItemCode, item.Value); } return returnDict; }); } } }