using BS.Shared; using DevExpress.Mvvm; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using static DevExpress.Mvvm.Native.Either; namespace BeWo.Core.Commands { public static class CommandFactory { public static DelegateCommand GetAiViewCommand(Action openView, UserRightType? userRightType, Func additionalCheckup = null, bool? useCommandManager = null) { bool canExecute() => (BeWoApp.AppSettings?.ShowAI ?? false) && (userRightType is null || BeWoApp.HasLoggedOnUserRight(userRightType.Value)) && (additionalCheckup is null || additionalCheckup()); return new DelegateCommand(openView, () => CheckupSafe(canExecute), useCommandManager); } private static bool CheckupSafe(Func predicate) { try { return predicate(); } catch (Exception ex) { return false; } } } }