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); } } }