using BeWo.Data.Entities;
using BS.Shared.DataContracts;

namespace BeWo.Service.DCEntityMapper
{
	public class BargeldtransaktionDC_Bargeldtransaktion : AbstractIDCEntityMapper<Bargeldtransaktion, BargeldtransaktionDC>
	{
		public override BargeldtransaktionDC MergeWithDC(Bargeldtransaktion pEntity, BargeldtransaktionDC pDataContract)
		{
			pDataContract.BargeldtransaktionOid     = pEntity.Oid;
			pDataContract.BargeldtransaktionVersion = pEntity.Version;
            //pDataContract.Customer                  = MapperFactory.CompactCustomerDC_Customer.MapToNewDC(pEntity.Customer);
			pDataContract.Betrag                    = pEntity.Betrag;
			pDataContract.Zahlungstyp               = pEntity.Zahlungstyp;
			pDataContract.Zahlungsdatum             = pEntity.Zahlungsdatum;
			pDataContract.Transaktionskassenbestand = pEntity.Transaktionskassenbestand;
		    pDataContract.Notice                    = pEntity.Notice;

			return pDataContract;
		}

		public override Bargeldtransaktion MergeWithEntity(BargeldtransaktionDC pDataContract, Bargeldtransaktion pEntity)
		{
			ConcurrencyCheck(pDataContract.BargeldtransaktionVersion, pEntity);

			pEntity.Oid                       = pDataContract.BargeldtransaktionOid;
            //pEntity.Customer                  = MapperFactory.CompactCustomerDC_Customer.MergeWithEntity(pDataContract.Customer, pEntity.Customer);
			pEntity.Betrag                    = pDataContract.Betrag;
			pEntity.Zahlungstyp               = pDataContract.Zahlungstyp;
			pEntity.Zahlungsdatum             = pDataContract.Zahlungsdatum;
			pEntity.Transaktionskassenbestand = pDataContract.Transaktionskassenbestand;
		    pEntity.Notice                    = pDataContract.Notice;

			return pEntity;
		}

		protected override bool AreDCAndEntityEqual(BargeldtransaktionDC pDC, Bargeldtransaktion pEntity)
		{
			if (pDC.BargeldtransaktionOid == null)
			{
				return false;
			}

			return pDC.BargeldtransaktionOid == pEntity.Oid;
		}
	}
}