bool AreEquals(object obj1, object obj2) { // If both are NULL, return TRUE if (Equals(obj1, null) && Equals(obj2, null)) { return(true); } // If some of them is null, return FALSE if (Equals(obj1, null) || Equals(obj2, null)) { return(false); } // If any of them are of other type, return FALSE if (!(obj1 is IPermission) || !(obj2 is IPermission)) { return(false); } var per1 = (IPermission)obj1; var per2 = (IPermission)obj2; // Use 'Equals' to compare the ids return(funCom.Equals(per1.Function, per2.Function) && per1.Scopes.All(s => per2.Scopes.Any(s2 => scoCom.Equals(s, s2))) && per2.Scopes.All(s => per1.Scopes.Any(s2 => scoCom.Equals(s, s2))) && per1.Value == per2.Value); }
internal static bool MatchByFunction(this IPermission me, IFunction function) { return(Printer.Indent($"{nameof(PermissionExtensions)}.{nameof(MatchByFunction)}:", () => { Printer.Indent("Input parameters", () => { Printer.WriteLine($"Permission:"); new[] { me }.Print(PrintMode.Table); Printer.WriteLine($"Function: {function.Name}"); }); Printer.WriteLine($"Inclusiones: {me.Function.GetAllInclusions().Aggregate("", (a, s) => a + " - " + s.Id, a => a.Trim(' ','-'))}"); Printer.WriteLine($"Exclusiones: {me.Function.GetAllExclusions().Aggregate("", (a, s) => a + " - " + s.Id, a => a.Trim(' ', '-'))}"); var comparer = new FunctionEqualityComparer(); if (comparer.Equals(me.Function, function)) { Printer.WriteLine("Match with same function"); return true; } if (me.Value && me.Function.GetAllInclusions().Contains(function, comparer)) { Printer.WriteLine("Match by included function"); return true; } if (!me.Value && me.Function.GetAllExclusions().Contains(function, comparer)) { Printer.WriteLine("Match by excluded function"); return true; } return false; })); }
internal static bool MatchByFunction(this IPermission me, IFunction function) { using (var res = Printer.CallResult <bool>()) { using (Printer.Indent2("Input parameters")) { Printer.WriteLine($"Permission:"); new[] { me }.Print(PrintMode.Table); Printer.WriteLine($"Function: {function.Name}"); } Printer.WriteLine($"Inclusiones: {me.Function.GetAllInclusions().Aggregate("", (a, s) => a + " - " + s.Id, a => a.Trim(' ', '-'))}"); Printer.WriteLine($"Exclusiones: {me.Function.GetAllExclusions().Aggregate("", (a, s) => a + " - " + s.Id, a => a.Trim(' ', '-'))}"); var comparer = new FunctionEqualityComparer(); if (comparer.Equals(me.Function, function)) { Printer.WriteLine("Match with same function"); return(res.Value = true); } else if (me.Value && me.Function.GetAllInclusions().Contains(function, comparer)) { Printer.WriteLine("Match by included function"); return(res.Value = true); } else if (!me.Value && me.Function.GetAllExclusions().Contains(function, comparer)) { Printer.WriteLine("Match by excluded function"); return(res.Value = true); } else { return(res.Value = false); } } }