using BeWo.Data.Entities;

using BS.Shared.DataContracts;

namespace BeWo.Service.DCEntityMapper
{
	public class MedikamentenverordnungslisteDC_Medikamentenverordnungsliste : AbstractIDCEntityMapper<Medikamentenverordnungsliste, MedikamentenverordnungslisteDC>
	{
		public override MedikamentenverordnungslisteDC MergeWithDC(Medikamentenverordnungsliste pEntity, MedikamentenverordnungslisteDC pDataContract)
		{
			pDataContract.MedikamentenverordnungslistenOid = pEntity.Oid;
			pDataContract.MedikamentenverordnungslistenVersion = pEntity.Version;
			pDataContract.Gueltig = pEntity.Gueltig;
			pDataContract.Customer = MapperFactory.CompactCustomerDC_Customer.MapToNewDC(pEntity.Customer);
			pDataContract.Medikamentenverordnungen = MapperFactory.MedikamentenverordnungDC_Medikamentenverordnung.MapToNewDCs(pEntity.Medikamentenverordnungen);
			pDataContract.Notice = pEntity.Notice;
			pDataContract.Ersteller = pEntity.InsUser;
			if (pEntity.InsTs.HasValue)
				pDataContract.ErstellDatum = pEntity.InsTs.Value.ToShortDateString();

			pDataContract.MedListType = pEntity.MedListType;

			return pDataContract;
		}

		public override Medikamentenverordnungsliste MergeWithEntity(MedikamentenverordnungslisteDC pDataContract, Medikamentenverordnungsliste pEntity)
		{
			ConcurrencyCheck(pDataContract.MedikamentenverordnungslistenVersion, pEntity);

			pEntity.Oid = pDataContract.MedikamentenverordnungslistenOid;
			pEntity.Notice = pDataContract.Notice;
			pEntity.Gueltig = pDataContract.Gueltig;
			pEntity.Customer = MapperFactory.CompactCustomerDC_Customer.MergeWithEntity(pDataContract.Customer, pEntity.Customer);

			if (pDataContract.Medikamentenverordnungen != null)
				MapperFactory.MedikamentenverordnungDC_Medikamentenverordnung.MergeWithEntitys(pDataContract.Medikamentenverordnungen, pEntity.Medikamentenverordnungen);

			pEntity.MedListType = pDataContract.MedListType;

			return pEntity;
		}

		protected override bool AreDCAndEntityEqual(MedikamentenverordnungslisteDC pDC, Medikamentenverordnungsliste pEntity)
		{
			if (pDC.MedikamentenverordnungslistenOid == null)
				return false;

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