Files
BeWoPlaner/Service/DCEntityMapper/ServiceInvoicePeriodDC_ServiceInvoicePeriod.cs
2021-05-05 10:58:36 +02:00

91 lines
4.3 KiB
C#

using System;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared.DataContracts;
namespace BeWo.Service.DCEntityMapper
{
public class ServiceInvoicePeriodDC_ServiceInvoicePeriod : AbstractIDCEntityMapper<ServiceInvoicePeriod, ServiceInvoicePeriodDC>
{
public override ServiceInvoicePeriodDC MergeWithDC(ServiceInvoicePeriod pEntity, ServiceInvoicePeriodDC pDataContract)
{
pDataContract.ApprovedFixedAmount = pEntity.ApprovedFixedAmount;
pDataContract.ApprovedHours = pEntity.ApprovedHours;
pDataContract.End = pEntity.End;
pDataContract.InvoiceItems = MapperFactory.InvoiceItemDC_InvoiceItem.MapToNewDCs(pEntity.InvoiceItemList);
pDataContract.InvoiceItems.Sort((x, y) => x.ItemPeriodStart.Value.CompareTo(y.ItemPeriodStart.Value));
pDataContract.ServiceInvoicePeriodOid = pEntity.Oid;
pDataContract.ServiceInvoicePeriodVersion = pEntity.Version;
pDataContract.Start = pEntity.Start;
pDataContract.ServiceUnitName = pEntity.ServiceUnitName;
pDataContract.ApprovedBE = pEntity.ApprovedBE;
pDataContract.Claim = pEntity.Claim;
pDataContract.ApprovedAmountDefaultHourlyRate = pEntity.ApprovedAmountDefaultHourlyRate;
pDataContract.HoursNotBillableAbsence = pEntity.HoursNotBillableAbsence;
pDataContract.HoursNotBillableNotApproved = pEntity.HoursNotBillableNotApproved;
pDataContract.AccountingInterval = pEntity.AccountingInterval;
pDataContract.Notice = pEntity.Notice;
if (pEntity.Customer != null)
pDataContract.Customer = MapperFactory.CompactCustomerDC_CustomerCompact.MapToNewDC(pEntity.Customer);
if (pEntity.SupportConceptApprovalPeriod != null)
{
try
{
pDataContract.SupportConceptApprovalPeriod =
MapperFactory.SupportConceptApprovalPeriodDC_SupportConceptApprovalPeriod.MapToNewDC(
pEntity.SupportConceptApprovalPeriod);
}
catch (Exception)
{
//ignore
}
}
return pDataContract;
}
public override ServiceInvoicePeriod MergeWithEntity(ServiceInvoicePeriodDC pDataContract, ServiceInvoicePeriod pEntity)
{
this.ConcurrencyCheck(pDataContract.ServiceInvoicePeriodVersion, pEntity);
pEntity.ApprovedFixedAmount = pDataContract.ApprovedFixedAmount;
pEntity.ApprovedHours = pDataContract.ApprovedHours;
pEntity.End = pDataContract.End;
pEntity.Start = pDataContract.Start;
pEntity.ServiceUnitName = pDataContract.ServiceUnitName;
pEntity.ApprovedBE = pDataContract.ApprovedBE;
pEntity.Claim = pDataContract.Claim;
pEntity.ApprovedAmountDefaultHourlyRate = pDataContract.ApprovedAmountDefaultHourlyRate;
pEntity.HoursNotBillableAbsence = pDataContract.HoursNotBillableAbsence;
pEntity.HoursNotBillableNotApproved = pDataContract.HoursNotBillableNotApproved;
pEntity.AccountingInterval = pDataContract.AccountingInterval;
pEntity.Notice = pDataContract.Notice;
if (pDataContract.Customer != null)
pEntity.Customer = DAOFactory.GenericDAO.LoadByID<Customer>(pDataContract.Customer.CustomerOid);
else
pEntity.Customer = null;
if (pDataContract.SupportConceptApprovalPeriod != null)
pEntity.SupportConceptApprovalPeriod = DAOFactory.GenericDAO.LoadByID<SupportConceptApprovalPeriod>(pDataContract.SupportConceptApprovalPeriod.SupportConceptApprovalPeriodOid.Value);
else
pEntity.SupportConceptApprovalPeriod = null;
MapperFactory.InvoiceItemDC_InvoiceItem.MergeWithEntitys(pDataContract.InvoiceItems, pEntity.InvoiceItemList);
return pEntity;
}
protected override bool AreDCAndEntityEqual(ServiceInvoicePeriodDC pDC, ServiceInvoicePeriod pEntity)
{
if (pDC.ServiceInvoicePeriodOid == null)
{
return false;
}
return pDC.ServiceInvoicePeriodOid.Equals(pEntity.Oid);
}
}
}