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;
});
}
}
}