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() => userRightType != UserRightType.AiModuleView2 && BeWoAppInfo.IsInAiMode && (BeWoApp.AppSettings?.ModuleAiEnabled ?? false) && BeWoApp.HasLoggedOnUserRight(userRightType) && (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; } } } }