Esempio n. 1
0
 private static bool HasCompareTypes(this ProjectCompareTypes item, params ProjectCompareTypes[] values)
 {
     if (values.IsEmpty())
     {
         return(false);
     }
     return(values.Any(o => item.HasFlag(o)));
 }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        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);

        }