258 lines
11 KiB
C#
258 lines
11 KiB
C#
|
|
using BeWo.Data.Access;
|
|
|
|
using BeWo.Data.Entities;
|
|
using BS.Shared;
|
|
|
|
using BS.Shared.DataContracts;
|
|
using System.Linq;
|
|
|
|
namespace BeWo.Service.DCEntityMapper
|
|
{
|
|
public class OrganisationDC_Organisation : AbstractIDCEntityMapper<Organisation, OrganisationDC>
|
|
{
|
|
public override OrganisationDC MergeWithDC(Organisation pEntity, OrganisationDC pDataContract)
|
|
{
|
|
//pDataContract.RelatedPersons =
|
|
// MapperFactory.PersonOrganisationRelDC_Person2OrganisationMapper.MapToNewDCs(
|
|
// pEntity.Person2OrganisationList);
|
|
|
|
pDataContract.OrganisationOid = pEntity.Oid;
|
|
pDataContract.Name = pEntity.Name;
|
|
pDataContract.Name2 = pEntity.Name2;
|
|
pDataContract.OrganisationVersion = pEntity.Version;
|
|
pDataContract.OrganisationNotice = pEntity.Notice;
|
|
pDataContract.DebitorNumber = pEntity.DebitorNumber;
|
|
pDataContract.ActivationType = pEntity.IsActive;
|
|
|
|
pDataContract.Arbeitszeiten = MapperFactory.ArbeitszeitDC_Arbeitszeit.MapToNewDCs(pEntity.Arbeitszeiten);
|
|
pDataContract.Feiertage = MapperFactory.FeiertagDC_Feiertag.MapToNewDCs(pEntity.Feiertage);
|
|
pDataContract.RelatedPersons = MapperFactory.OrganisationPersonRelDC_Organisation2PersonMapper
|
|
.MapToNewDCs(pEntity.Organisation2PersonList.Where(o2P => o2P.Person.IsActive != ActivationTypeId.Deleted));
|
|
|
|
pDataContract.IKKrankenkasse = pEntity.IKKrankenkasse;
|
|
pDataContract.IKKostentrager = pEntity.IKKostentrager;
|
|
pDataContract.IKDatenannahmestelle = pEntity.IKDatenannahmestelle;
|
|
pDataContract.BezDatenannahmestelle = pEntity.BezDatenannahmestelle;
|
|
pDataContract.Leistungserbringergruppe = pEntity.Leistungserbringergruppe;
|
|
pDataContract.Verfahrensstufe = pEntity.Verfahrensstufe;
|
|
pDataContract.GkvAusblenden = pEntity.GkvAusblenden;
|
|
|
|
pDataContract.BusinessPartnerId = pEntity.BusinessPartnerId;
|
|
|
|
if(pEntity.Function != null)
|
|
{
|
|
pDataContract.Function = MapperFactory.ValueListEntryDC_ValueListEntry.MapToNewDC(pEntity.Function);
|
|
}
|
|
|
|
if(pEntity.Address != null)
|
|
{
|
|
pDataContract.AddressOid = pEntity.Address.Oid;
|
|
pDataContract.Street = pEntity.Address.Street;
|
|
pDataContract.Town = pEntity.Address.Town;
|
|
pDataContract.PostalCode = pEntity.Address.PostalCode;
|
|
pDataContract.AddressLine1 = pEntity.Address.AddressLine1;
|
|
pDataContract.AddressVersion = pEntity.Address.Version;
|
|
}
|
|
|
|
if(pEntity.InvoiceAddress != null)
|
|
{
|
|
pDataContract.InvoiceAddressOid = pEntity.InvoiceAddress.Oid;
|
|
pDataContract.InvoiceAddressStreet = pEntity.InvoiceAddress.Street;
|
|
pDataContract.InvoiceAddressTown = pEntity.InvoiceAddress.Town;
|
|
pDataContract.InvoiceAddressPostalCode = pEntity.InvoiceAddress.PostalCode;
|
|
pDataContract.InvoiceAddressLine1 = pEntity.InvoiceAddress.AddressLine1;
|
|
pDataContract.InvoiceAddressVersion = pEntity.InvoiceAddress.Version;
|
|
}
|
|
|
|
if(pEntity.CostBearer != null)
|
|
{
|
|
pDataContract.CostBearerOid = pEntity.CostBearer.Oid;
|
|
pDataContract.CostBearerVersion = pEntity.CostBearer.Version;
|
|
|
|
pDataContract.IsSingleInvoicePerCustomer = pEntity.CostBearer.IsSingleInvoicePerCustomer;
|
|
|
|
// pDataContract.HourlyRate = pEntity.CostBearer.HourlyRate;
|
|
// pDataContract.RateFactor = pEntity.CostBearer.RateFactor;
|
|
// pDataContract.MinuteIntervall = pEntity.CostBearer.MinutesIntervall;
|
|
pDataContract.CostRatePeriods = MapperFactory.CostRatePeriodDC_CostRatePeriod.MapToNewDCs(pEntity.CostBearer.CostRatePeriods);
|
|
pDataContract.IsCalculatingWithFactor = pEntity.CostBearer.IsCalculatingWithFactor;
|
|
}
|
|
|
|
if(pEntity.BankAccount != null)
|
|
{
|
|
pDataContract.BankAccountOid = pEntity.BankAccount.Oid;
|
|
pDataContract.BankAccountVersion = pEntity.BankAccount.Version;
|
|
pDataContract.AccountNumber = pEntity.BankAccount.AccountNumber;
|
|
pDataContract.BankName = pEntity.BankAccount.BankName;
|
|
pDataContract.BankCode = pEntity.BankAccount.BankCode;
|
|
pDataContract.IBAN = pEntity.BankAccount.IBAN;
|
|
pDataContract.Bic = pEntity.BankAccount.Bic;
|
|
}
|
|
|
|
pDataContract.HausanschriftDatenannahmestelle = MapperFactory.Address.CreateOrMapToNewDC(pEntity.HausanschriftDatenannahmestelle);
|
|
pDataContract.PostfachGKanschriftDatenannahmestelle = MapperFactory.Address.CreateOrMapToNewDC(pEntity.PostfachanschriftDatenannahmestelle);
|
|
pDataContract.PapierannahmeanschriftDatenannahmestelle = MapperFactory.Address.CreateOrMapToNewDC(pEntity.GrosskundenanschriftDatenannahmestelle);
|
|
|
|
pDataContract.ContactInformations = MapperFactory.ContactDC_Contact.MapToNewDCs(pEntity.Contacts);
|
|
|
|
var defs = DAOFactory.SearchDAO.GetVarFieldDefs(TableID.Organisation);
|
|
pDataContract.VarFields = MapperFactory.VarFieldDC_VarField.VarFieldMapToDCs(defs, pEntity.VarFieldValueList);
|
|
|
|
return pDataContract;
|
|
}
|
|
|
|
public override Organisation MergeWithEntity(OrganisationDC pDataContract, Organisation pEntity)
|
|
{
|
|
this.ConcurrencyCheck(pDataContract.OrganisationVersion, pEntity);
|
|
|
|
pEntity.Oid = pDataContract.OrganisationOid;
|
|
pEntity.Name = pDataContract.Name;
|
|
pEntity.Name2 = pDataContract.Name2;
|
|
pEntity.Notice = pDataContract.OrganisationNotice;
|
|
pEntity.DebitorNumber = pDataContract.DebitorNumber;
|
|
pEntity.IsActive = pDataContract.ActivationType;
|
|
//MapperFactory.OrganisationPersonRelDC_Organisation2PersonMapper.MergeWithEntitys(pDataContract.RelatedPersons, pEntity.Organisation2PersonList);
|
|
|
|
pEntity.IKKrankenkasse = pDataContract.IKKrankenkasse;
|
|
pEntity.IKKostentrager = pDataContract.IKKostentrager;
|
|
pEntity.IKDatenannahmestelle = pDataContract.IKDatenannahmestelle;
|
|
pEntity.BezDatenannahmestelle = pDataContract.BezDatenannahmestelle;
|
|
pEntity.Leistungserbringergruppe = pDataContract.Leistungserbringergruppe;
|
|
pEntity.Verfahrensstufe = pDataContract.Verfahrensstufe;
|
|
pEntity.GkvAusblenden = pDataContract.GkvAusblenden;
|
|
|
|
pEntity.BusinessPartnerId = pDataContract.BusinessPartnerId;
|
|
|
|
if(pDataContract.Function == null)
|
|
{
|
|
pEntity.Function = null;
|
|
}
|
|
else if(pEntity.Function == null || pEntity.Function.Oid != pDataContract.Function.ValueListEntryOid)
|
|
{
|
|
pEntity.Function = DAOFactory.GenericDAO.LoadByID<ValueListEntry>(pDataContract.Function.ValueListEntryOid.Value);
|
|
}
|
|
|
|
if(pDataContract.ContainsAddressData())
|
|
{
|
|
if(pEntity.Address == null)
|
|
{
|
|
pEntity.Address = new Address();
|
|
}
|
|
|
|
this.ConcurrencyCheck(pDataContract.AddressVersion, pEntity.Address);
|
|
|
|
pEntity.Address.Oid = pDataContract.AddressOid;
|
|
pEntity.Address.AddressLine1 = pDataContract.AddressLine1;
|
|
pEntity.Address.Street = pDataContract.Street;
|
|
pEntity.Address.Town = pDataContract.Town;
|
|
pEntity.Address.PostalCode = pDataContract.PostalCode;
|
|
}
|
|
else if(pEntity.Address != null)
|
|
{
|
|
// all-delete-orphan wird von NHibernate (noch) nicht unterstützt für many-to-one
|
|
Address lAdress = pEntity.Address;
|
|
pEntity.Address = null;
|
|
DAOFactory.GenericDAO.Delete(lAdress);
|
|
}
|
|
|
|
if(pDataContract.ContainsInvoiceAddressData())
|
|
{
|
|
if(pEntity.InvoiceAddress == null)
|
|
{
|
|
pEntity.InvoiceAddress = new Address();
|
|
}
|
|
|
|
this.ConcurrencyCheck(pDataContract.InvoiceAddressVersion, pEntity.InvoiceAddress);
|
|
|
|
pEntity.InvoiceAddress.Oid = pDataContract.InvoiceAddressOid;
|
|
pEntity.InvoiceAddress.AddressLine1 = pDataContract.InvoiceAddressLine1;
|
|
pEntity.InvoiceAddress.Street = pDataContract.InvoiceAddressStreet;
|
|
pEntity.InvoiceAddress.Town = pDataContract.InvoiceAddressTown;
|
|
pEntity.InvoiceAddress.PostalCode = pDataContract.InvoiceAddressPostalCode;
|
|
}
|
|
else if(pEntity.InvoiceAddress != null)
|
|
{
|
|
// all-delete-orphan wird von NHibernate (noch) nicht unterstützt für many-to-one
|
|
Address lInvoiceAddress = pEntity.InvoiceAddress;
|
|
pEntity.InvoiceAddress = null;
|
|
DAOFactory.GenericDAO.Delete(lInvoiceAddress);
|
|
}
|
|
|
|
if(pDataContract.ContainsBankAccountData())
|
|
{
|
|
if(pEntity.BankAccount == null)
|
|
{
|
|
pEntity.BankAccount = new BankAccount();
|
|
}
|
|
|
|
this.ConcurrencyCheck(pDataContract.BankAccountVersion, pEntity.BankAccount);
|
|
|
|
pEntity.BankAccount.Oid = pDataContract.BankAccountOid;
|
|
pEntity.BankAccount.Version = pDataContract.BankAccountVersion;
|
|
pEntity.BankAccount.IBAN = pDataContract.IBAN;
|
|
pEntity.BankAccount.Bic = pDataContract.Bic;
|
|
pEntity.BankAccount.BankCode = pDataContract.BankCode;
|
|
pEntity.BankAccount.BankName = pDataContract.BankName;
|
|
pEntity.BankAccount.AccountNumber = pDataContract.AccountNumber;
|
|
}
|
|
else if(pEntity.BankAccount != null)
|
|
{
|
|
// all-delete-orphan wird von NHibernate (noch) nicht unterstützt für many-to-one)
|
|
BankAccount lBankAccount = pEntity.BankAccount;
|
|
pEntity.BankAccount = null;
|
|
DAOFactory.GenericDAO.Delete(lBankAccount);
|
|
}
|
|
|
|
if(pDataContract.ContainsCostBearerData())
|
|
{
|
|
if(pEntity.CostBearer == null)
|
|
{
|
|
pEntity.CostBearer = new CostBearer();
|
|
}
|
|
|
|
this.ConcurrencyCheck(pDataContract.CostBearerVersion, pEntity.CostBearer);
|
|
|
|
pEntity.CostBearer.IsSingleInvoicePerCustomer = pDataContract.IsSingleInvoicePerCustomer;
|
|
pEntity.CostBearer.Oid = pDataContract.CostBearerOid;
|
|
pEntity.CostBearer.IsCalculatingWithFactor = pDataContract.IsCalculatingWithFactor;
|
|
|
|
MapperFactory.CostRatePeriodDC_CostRatePeriod
|
|
.MergeWithEntitys(pDataContract.CostRatePeriods.Where(c => c.CostRateValue.HasValue).ToList(), pEntity.CostBearer.CostRatePeriods);
|
|
foreach(var costRatePeriod in pEntity.CostBearer.CostRatePeriods)
|
|
{
|
|
costRatePeriod.ObjectTid = TableID.CostBearer;
|
|
}
|
|
}
|
|
else if(pEntity.CostBearer != null)
|
|
{
|
|
// all-delete-orphan wird von NHibernate (noch) nicht unterstützt für many-to-one)
|
|
CostBearer lCostBearer = pEntity.CostBearer;
|
|
pEntity.CostBearer = null;
|
|
DAOFactory.GenericDAO.Delete(lCostBearer);
|
|
}
|
|
|
|
MapperFactory.ContactDC_Contact.MergeWithEntitys(pDataContract.ContactInformations, pEntity.Contacts);
|
|
|
|
pEntity.VarFieldValueList = MapperFactory.VarFieldDC_VarField.VarFieldMergeToEntity(pEntity.VarFieldValueList, pDataContract.VarFields, pEntity);
|
|
MapperFactory.ArbeitszeitDC_Arbeitszeit.MergeWithEntitys(pDataContract.Arbeitszeiten, pEntity.Arbeitszeiten);
|
|
MapperFactory.FeiertagDC_Feiertag.MergeWithEntitys(pDataContract.Feiertage, pEntity.Feiertage);
|
|
|
|
pEntity.HausanschriftDatenannahmestelle = MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.HausanschriftDatenannahmestelle, pEntity.HausanschriftDatenannahmestelle);
|
|
pEntity.PostfachanschriftDatenannahmestelle = MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.PostfachGKanschriftDatenannahmestelle, pEntity.PostfachanschriftDatenannahmestelle);
|
|
pEntity.GrosskundenanschriftDatenannahmestelle = MapperFactory.Address.MergeOrCreateWithEntity(pDataContract.PapierannahmeanschriftDatenannahmestelle, pEntity.GrosskundenanschriftDatenannahmestelle);
|
|
|
|
return pEntity;
|
|
}
|
|
|
|
protected override bool AreDCAndEntityEqual(OrganisationDC pDC, Organisation pEntity)
|
|
{
|
|
if(pDC.OrganisationOid == null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return pDC.OrganisationOid == pEntity.Oid;
|
|
}
|
|
}
|
|
} |