Files
bnhtrade/src/bnhtrade.Core/Logic/Account/InvoiceLineItemService.cs

57 lines
2.0 KiB
C#

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)
{
}
/// <summary>
/// Creates new 'default' item code entry. The item code and title are set, will require updating by user before use.
/// </summary>
/// <param name="itemCode">Item code string</param>
/// <returns></returns>
public Model.Account.InvoiceLineItem CreateNew(string itemCode)
{
return WithUnitOfWork(uow =>
{
uow.InvoiceRepository.CreateDefaultInvoiceLineItem(itemCode);
var item = uow.InvoiceRepository.GetInvoiceLineItem(null, new List<string> { 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<string, Model.Account.InvoiceLineItem> GetLineItems(List<string> itemCodes)
{
return WithUnitOfWork(uow =>
{
var dbResult = uow.InvoiceRepository.GetInvoiceLineItem(null, itemCodes);
var returnDict = new Dictionary<string, Model.Account.InvoiceLineItem>();
foreach (var item in dbResult)
{
returnDict.Add(item.Value.ItemCode, item.Value);
}
return returnDict;
});
}
}
}