using BeWo.Data.Access;
using BeWo.Data.Entities;
using System.Linq;
using BS.Shared.DataContracts.Compact;

namespace BeWo.Service.DCEntityMapper
{
    public class CompactWohnheimDC_Wohnheim : AbstractIDCEntityMapper<Wohnheim, CompactWohnheimDC>
    {
        public override CompactWohnheimDC MergeWithDC(Wohnheim pEntity, CompactWohnheimDC pDataContract)
        {
            pDataContract.WohnheimOid = pEntity.Oid.Value;
            pDataContract.WohnheimName = pEntity.WohnheimName;
            pDataContract.Strasse = pEntity.Strasse;
            pDataContract.PLZ = pEntity.PLZ;
            pDataContract.Ort = pEntity.Ort;
            pDataContract.ActivationType = pEntity.IsActive;
            pDataContract.Bemerkung = pEntity.Bemerkung;
            pDataContract.CustomerOids = pEntity.Customer2WohnheimList.Select(c => c.CustomerOid.Value).ToList();
            pDataContract.EmployeeOids = pEntity.Employee2WohnheimList.Select(c => c.EmployeeOid.Value).ToList();

            return pDataContract;
        }

        // COMPACT Wohnheim ARE NOT EDITABLE
        public override Wohnheim MergeWithEntity(CompactWohnheimDC pDataContract, Wohnheim pEntity)
        {
            return DAOFactory.GenericDAO.LoadByID<Wohnheim>(pDataContract.WohnheimOid);
        }

        protected override bool AreDCAndEntityEqual(CompactWohnheimDC pDC, Wohnheim pEntity)
        {
            return pDC.WohnheimOid == pEntity.Oid;
        }
    }
}