using System.Collections.Generic; using BeWo.Data.Access; using BeWo.Data.Entities; using BS.Shared; using BS.Shared.DataContracts; namespace BeWo.Service.DCEntityMapper { public class TeamDC_Team : AbstractIDCEntityMapper { public override TeamDC MergeWithDC(Team pEntity, TeamDC pDataContract) { pDataContract.IsOwnChatTeam = pEntity.IsOwnChatTeam; pDataContract.Name = pEntity.Name; pDataContract.TeamOid = pEntity.Oid; pDataContract.TeamVersion = pEntity.Version; pDataContract.Notice = pEntity.Notice; if (pEntity.Leader != null) { pDataContract.Leader = MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(pEntity.Leader); } pDataContract.Member = MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(pEntity.MemberList); pDataContract.OwnChatMember = MapperFactory.Person2TeamDC_Person2Team.MapToNewDCs(pEntity.OwnChatMember); IList defs = DAOFactory.SearchDAO.GetVarFieldDefs(TableID.Team); pDataContract.TeamVarFields = MapperFactory.VarFieldDC_VarField.VarFieldMapToDCs(defs, pEntity.VarFieldValueList); return pDataContract; } public override Team MergeWithEntity(TeamDC pDataContract, Team pEntity) { this.ConcurrencyCheck(pDataContract.TeamVersion, pEntity); pEntity.Oid = pDataContract.TeamOid; pEntity.IsOwnChatTeam = pDataContract.IsOwnChatTeam; pEntity.Notice = pDataContract.Notice; pEntity.Name = pDataContract.Name; if ((pEntity.Leader == null && pDataContract.Leader != null) || (pEntity.Leader?.Oid != pDataContract.Leader?.EmployeeOid)) { pEntity.Leader = DAOFactory.GenericDAO.LoadByID(pDataContract.Leader.EmployeeOid); } else if (pDataContract.Leader == null) { pEntity.Leader = null; } MapperFactory.CompactEmployeeDC_Employee.MergeWithEntitys(pDataContract.Member, pEntity.MemberList); MapperFactory.Person2TeamDC_Person2Team.MergeWithEntitys(pDataContract.OwnChatMember, pEntity.OwnChatMember); pEntity.VarFieldValueList = MapperFactory.VarFieldDC_VarField.VarFieldMergeToEntity(pEntity.VarFieldValueList, pDataContract.TeamVarFields, pEntity); return pEntity; } protected override bool AreDCAndEntityEqual(TeamDC pDC, Team pEntity) { if (pDC.TeamOid == null) { return false; } return pDC.TeamOid == pEntity.Oid; } } }