private static bool HasCompareTypes(this ProjectCompareTypes item, params ProjectCompareTypes[] values) { if (values.IsEmpty()) { return(false); } return(values.Any(o => item.HasFlag(o))); }
public static bool IsEqualTo(this Project source, Project other, ProjectCompareTypes comparison) { var expressions = GetExpressions(comparison).ToList(); if (expressions.IsEmpty()) { return(false); } var expression = expressions.First(); foreach (var item in expressions.Skip(1)) { expression = expression.AndAlso(item); } var lambda = expression.Compile(); return(lambda(source, other)); }
private static IEnumerable <Expression <Func <Project, Project, bool> > > GetExpressions(ProjectCompareTypes comparison) { if (comparison.HasCompareTypes(ProjectCompareTypes.Basic)) { yield return(GetProjectComparer()); yield return(GetMembersComparer()); yield return(GetSocioEconomicResearchListComparer()); yield return(GetFieldOfResearchListComparer()); } else { if (comparison.HasCompareTypes(ProjectCompareTypes.Project)) { yield return(GetProjectComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataManagementPlan)) { yield return(GetDataManagementPlanComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.Members, ProjectCompareTypes.Project)) { yield return(GetMembersComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.SocioEconomicResearch, ProjectCompareTypes.Project)) { yield return(GetSocioEconomicResearchListComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.FieldOfResearch, ProjectCompareTypes.Project)) { yield return(GetFieldOfResearchListComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataStorage)) { yield return(GetDataStorageComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.BackupPolicy)) { yield return(GetBackupPolicyComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataDocumentation)) { yield return(GetDataDocumentationComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataRetention)) { yield return(GetDataRetentionComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataSharing)) { yield return(GetDataSharingComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.ExistingDataDetail)) { yield return(GetExistingDataDetailComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.IntellectualProperty)) { yield return(GetIntellectualPropertyComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.NewDataDetail)) { yield return(GetNewDataDetailComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.Ethic)) { yield return(GetEthicComparer()); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataRelationshipDetail)) { yield return(GetDataRelationshipDetailComparer()); } } }
private static IEnumerable<Expression<Func<Project, Project, bool>>> GetExpressions(ProjectCompareTypes comparison) { if (comparison.HasCompareTypes(ProjectCompareTypes.Basic)) { yield return GetProjectComparer(); yield return GetMembersComparer(); yield return GetSocioEconomicResearchListComparer(); yield return GetFieldOfResearchListComparer(); } else { if (comparison.HasCompareTypes(ProjectCompareTypes.Project)) { yield return GetProjectComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataManagementPlan)) { yield return GetDataManagementPlanComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.Members,ProjectCompareTypes.Project)) { yield return GetMembersComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.SocioEconomicResearch, ProjectCompareTypes.Project)) { yield return GetSocioEconomicResearchListComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.FieldOfResearch, ProjectCompareTypes.Project)) { yield return GetFieldOfResearchListComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataStorage)) { yield return GetDataStorageComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.BackupPolicy)) { yield return GetBackupPolicyComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataDocumentation)) { yield return GetDataDocumentationComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataRetention)) { yield return GetDataRetentionComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataSharing)) { yield return GetDataSharingComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.ExistingDataDetail)) { yield return GetExistingDataDetailComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.IntellectualProperty)) { yield return GetIntellectualPropertyComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.NewDataDetail)) { yield return GetNewDataDetailComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.Ethic)) { yield return GetEthicComparer(); } if (comparison.HasCompareTypes(ProjectCompareTypes.DataRelationshipDetail)) { yield return GetDataRelationshipDetailComparer(); } } }
public static bool IsEqualTo(this Project source, Project other, ProjectCompareTypes comparison) { var expressions = GetExpressions(comparison).ToList(); if (expressions.IsEmpty()) { return false; } var expression = expressions.First(); foreach (var item in expressions.Skip(1)) { expression = expression.AndAlso(item); } var lambda = expression.Compile(); return lambda(source, other); }