public void ExecuteWithoutAuditTrail(Func <object, object> action) { try { IsTemporarilyDisabled = true; #if NETFRAMEWORK MiniSessionManager.ExecuteInUoW(manager => { var result = action?.Invoke(this); }, MiniSessionManager.InstanceSafe); #else MiniSessionManager.ExecuteInUoW(manager => { var result = action?.Invoke(this); }); #endif IsTemporarilyDisabled = false; } catch (Exception) { IsTemporarilyDisabled = false; throw; } }
public IWorkflowExecutionResult ExecuteSchedule(WorkflowSchedule schedule) { _log.Debug("------------------------------------------------------"); _log.DebugFormat("Executing Scheduled Activity: {0} - {1}", schedule.Workflow, schedule.Workflow); IWorkflowExecutionResult result = null; try { MiniSessionManager .ExecuteInUoW(manager => { result = WorkflowManager.Current.ExecuteWorkflow(schedule.Workflow); }); schedule.IsLastExecutionSuccess = true; schedule.LastExecutionMessage = "Executed Successfully"; } catch (Exception ex) { _log.Error($"Error executing Scheduled Activity: {schedule.Workflow}", ex); schedule.IsLastExecutionSuccess = false; schedule.LastExecutionMessage = $"{ex.Message} - {ex.StackTrace}"; result = new WorkflowExecutionResult { Status = WorkflowStatus.Failed }; } schedule.LastExecution = DateTime.UtcNow; MiniSessionManager.ExecuteInUoW(manager => { Builder.CreateCreateRepository(manager).Save(schedule); }); _log.DebugFormat("Finished Executing Scheduled Activity: {0} - {1}", schedule.Workflow, schedule.Workflow); _log.Debug("------------------------------------------------------"); return(result); }
public HealthCheckResult Check() { // TODO - do additional checks here, besides checking the db return(MiniSessionManager.ExecuteInUoW(manager => new HealthCheckResult { status = "ok" })); }
private List <WorkflowContextBase> GetExpiredAndDelayedPendingJobs() { return(MiniSessionManager.ExecuteInUoW(manager => { var expiredAndDelayedPendingJobs = Builder.CreateRetrieveRepository(manager).GetAsQueryable <WorkflowContextBase>() .Where(p => p.Expires && p.ExpirationDateTime <= DateTime.UtcNow) .ToList(); return expiredAndDelayedPendingJobs; })); }
public void ExecuteInUoWTest() { var manager = new MiniSessionManager(); MiniSessionManager.ExecuteInUoW((mgr) => { }); Assert.ThrowsException <Exception>(() => { MiniSessionManager.ExecuteInUoW((mgr) => { throw new Exception(); }); }); }
public void DeleteSchedules() { MiniSessionManager .ExecuteInUoW(manager => { var allSchedules = Builder.CreateRetrieveRepository(manager).GetAll <WorkflowSchedule>().ToList(); foreach (var schedule in allSchedules) { Builder.CreateDeleteRepository(manager).Delete(schedule); } }); }
internal List <WorkflowSchedule> GetSchedules(bool onlyactive = true) { return(MiniSessionManager .ExecuteInUoW(manager => { var data = Builder.CreateRetrieveRepository(manager).GetAsQueryable <WorkflowSchedule>(); if (onlyactive) { data = data.Where(s => s.Active); } return data.ToList(); })); }
public void SetSchedules(List <WorkflowSchedule> schedules) { MiniSessionManager .ExecuteInUoW(manager => { var allScheduleNames = Builder.CreateRetrieveRepository(manager).GetAll <WorkflowSchedule>().Select(s => s.Workflow).ToList(); //add new foreach (var newSchedule in schedules.Where(s => !allScheduleNames.Contains(s.Workflow))) { newSchedule.Active = true; Builder.CreateCreateRepository(manager).Save(newSchedule); } }); }
private static void ProcessListeners(IEnumerable <Action> listeners, bool parallel, bool throwErrors = false) { if (parallel) { Parallel.ForEach(listeners, listener => { try { MiniSessionManager.ExecuteInUoW(manager => { listener(); }); } catch (Exception x) { LogManager.GetLogger(typeof(EventsHub)).Warn("Error in Listener", x); if (throwErrors) { throw; } } }); } else { foreach (var listener in listeners) { try { listener(); } catch (Exception x) { // continue to the next listener on error LogManager.GetLogger(typeof(EventsHub)).Warn("Error in Listener", x); if (throwErrors) { throw; } } } } }
private ApplicationUser PersistApplicationUser(ApplicationUser user) { if (MiniSessionManager.TryGetInstance() == null) { MiniSessionManager.ExecuteInUoW(manager => { _repositoryBuilder .CreateCreateRepository() .Save(user); }, _sessionManager); } else { _repositoryBuilder .CreateCreateRepository(_sessionManager) .Save(user); } return(user); }
private void ProcessAutoStartSchedules() { var schedules = GetSchedules(); _log.DebugFormat("Found {0} Active Schedules.", schedules.Count); foreach (var schedule in schedules.Where(a => a.Active)) { try { var expireDateTime = schedule.ExpireOn.HasValue ? schedule.ExpireOn.Value : DateTime.MaxValue; if (expireDateTime <= DateTime.UtcNow) { // Schedule has Expired but it is still active // Mark as Inactive and update the database schedule.Active = false; MiniSessionManager .ExecuteInUoW(manager => { Builder.CreateCreateRepository(manager).Save(schedule); }); continue; } // Should be evaluated? var nextExecTime = GetNextExecutionTime(schedule); if (nextExecTime != DateTime.MinValue && nextExecTime <= DateTime.UtcNow) { // Execute ExecuteSchedule(schedule); } else { _log.DebugFormat("Scheduled Activity: {0} - {1} will be executed on: {2}", schedule.Workflow, schedule.Workflow, nextExecTime); } } catch (Exception ex) { _log.Error($"Error processing Scheduled Activity: {schedule.Workflow} - {schedule.Workflow}", ex); } } }
public void ClearAuditTrailCache() { MiniSessionManager.ExecuteInUoW(manager => { var repo = ServiceLocator.Current.GetInstance <IRepositoryBuilder>().CreateCreateRepository(manager); _auditableEntities = new Dictionary <string, AuditableEntity>(); repo.GetAll <AuditEntityConfiguration>() .ForEach(entity => { var auditableEntity = new AuditableEntity { Name = entity.FullName }; entity.Properties .Where(property => property.IsAuditable) .ToList() .ForEach(property => auditableEntity.Properties.Add(property.Name, new AuditableProperty { Name = property.Name, Datatype = property.DataType, IsComplex = property.IsComplex, IsCollection = property.IsCollection })); if (!auditableEntity.Properties.Any()) { return; } _log.Debug($@"Monitoring object: [{entity.ShortName}]. Monitored Properties: * {string.Join("\r\n* ", auditableEntity.Properties.Keys)}"); _auditableEntities.Add(entity.FullName, auditableEntity); }); _auditLogEntryTypes = new Dictionary <string, AuditLogEntryType>(); repo.GetAll <AuditLogEntryType>() .ForEach(type => _auditLogEntryTypes.Add(type.Code, type)); _auditLogPropertyActionTypes = new Dictionary <string, AuditLogPropertyActionType>(); repo.GetAll <AuditLogPropertyActionType>() .ForEach(type => _auditLogPropertyActionTypes.Add(type.Code, type)); }); }
public static void ForEach <T>(IEnumerable <T> items, Action <T, long> iterationFunction) { var exceptions = new ConcurrentQueue <Exception>(); var logger = LogManager.GetLogger(typeof(ParallelTask)); var taskid = Guid.NewGuid(); var outerWatch = new Stopwatch(); outerWatch.Start(); Parallel.ForEach(items, (item, state, idx) => { var innerWatch = new Stopwatch(); innerWatch.Start(); MiniSessionManager.ExecuteInUoW(manager => { try { iterationFunction(item, idx); } catch (Exception e) { exceptions.Enqueue(e); } }); innerWatch.Stop(); logger.Debug($"Parallel task item {idx}, took: {innerWatch.Elapsed}. ({taskid})"); }); outerWatch.Stop(); logger.Debug($"OVERALL: Parallel ForEach Task took: {outerWatch.Elapsed}."); // Throw the exceptions here after the loop completes. if (exceptions.Count > 0) { throw new AggregateException(exceptions); } }
public void UpdateAuthorizationTables() { var confValue = System.Configuration.ConfigurationManager.AppSettings["SeedSecurityTables"]; bool seedSecurityTables = true; bool bSeedSecurityTables; if (bool.TryParse(confValue, out bSeedSecurityTables)) { seedSecurityTables = bSeedSecurityTables; } if (!seedSecurityTables) { return; } var watch = new System.Diagnostics.Stopwatch(); watch.Start(); MiniSessionManager.ExecuteInUoW(manager => { var repo = new Repository(manager); var allRoles = new List <ApplicationRole>(); #region Permissions var manageUsersPermission = CreateOrUpdatePermission("ManageUsers", "Can Manage Users", false, repo); var manageRolesPermission = CreateOrUpdatePermission("ManageRoles", "Can Manage Roles", false, repo); var managePermissionsPermission = CreateOrUpdatePermission("ManagePermissions", "Can Manage Permissions", false, repo); var manageOperationsPermission = CreateOrUpdatePermission("ManageOperations", "Can Manage Operations", false, repo); var manageSettingsPermission = CreateOrUpdatePermission("ManageSettings", "Can Manage Settings", false, repo); var manageApplicationDataPermission = CreateOrUpdatePermission("ManageApplicationData", "Can Manage Application Data", false, repo); var customerSelectionAndAdminAddPermission = CreateOrUpdatePermission("CustomerSelectionAndAdmin_Add", "CustomerSelectionAndAdmin_Add", false, repo); #endregion #region Operations CreateOrUpdateOperation("GeneralOperation", "ErrorPage", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "ErrorPage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("SendErrorToAdministrator", "ErrorPage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "FirstAdminSetup", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("Render", "FirstAdminSetup", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("Save", "FirstAdminSetup", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "HomePage", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "HomePage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "NotFoundPage", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "NotFoundPage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "SignInPage", ClaimTypes.GenericAction, false, true, null, repo); CreateOrUpdateOperation("Load", "SignInPage", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("SignIn", "SignInPage", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "SignOutPage", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("SignOut", "SignOutPage", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("Render", "SignOutPage", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "Unauthorized", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "Unauthorized", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "UserPreferences", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("Render", "UserPreferences", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("Save", "UserPreferences", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("LanguageBoxDataSet", "UserPreferences", ClaimTypes.Dataset, true, false, null, repo); CreateOrUpdateOperation("LocaleBoxDataSet", "UserPreferences", ClaimTypes.Dataset, true, false, null, repo); CreateOrUpdateOperation("ApplicationThemeDataSet", "UserPreferences", ClaimTypes.Dataset, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "MasterPage", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "MasterPage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("SignOut", "MasterPage", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "MasterPageForSlide", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "MasterPageForSlide", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "ApplicationSettingForm", ClaimTypes.GenericAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("AddApplicationSetting", "ApplicationSettingForm", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("EditApplicationSetting", "ApplicationSettingForm", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("SaveApplicationSetting", "ApplicationSettingForm", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("DeleteApplicationSetting", "ApplicationSettingForm", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ApplicationSettingsList", ClaimTypes.GenericAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("Refresh", "ApplicationSettingsList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "ApplicationSettingsList", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("List1DataSet", "ApplicationSettingsList", ClaimTypes.Dataset, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ChangePassword", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("Render", "ChangePassword", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("ChangePassword", "ChangePassword", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "ForgotPassword", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "ForgotPassword", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("ResetPasswordRequest", "ForgotPassword", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("ResetPassword", "ForgotPassword", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "ManageOperation", ClaimTypes.GenericAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("EditOperation", "ManageOperation", ClaimTypes.ControllerAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("SaveOperation", "ManageOperation", ClaimTypes.ControllerAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("Button2DataSet", "ManageOperation", ClaimTypes.Dataset, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ManagePermission", ClaimTypes.GenericAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("NewPermission", "ManagePermission", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("EditPermission", "ManagePermission", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("SavePermission", "ManagePermission", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("DeletePermission", "ManagePermission", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("Button4DataSet", "ManagePermission", ClaimTypes.Dataset, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("Button41DataSet", "ManagePermission", ClaimTypes.Dataset, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("Button5DataSet", "ManagePermission", ClaimTypes.Dataset, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ManageRole", ClaimTypes.GenericAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("NewRole", "ManageRole", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("EditRole", "ManageRole", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("SaveRole", "ManageRole", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("DeleteRole", "ManageRole", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("AddPermissionDataSet", "ManageRole", ClaimTypes.Dataset, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ManageUser", ClaimTypes.GenericAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("NewUser", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("SetPassword", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("EditUser", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("SaveUser", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("DeleteUser", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Button1DataSet", "ManageUser", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Button2DataSet", "ManageUser", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "OperationsList", ClaimTypes.GenericAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("Refresh", "OperationsList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "OperationsList", ClaimTypes.ControllerAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("List1DataSet", "OperationsList", ClaimTypes.Dataset, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "PermissionsList", ClaimTypes.GenericAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("Refresh", "PermissionsList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "PermissionsList", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("List1DataSet", "PermissionsList", ClaimTypes.Dataset, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "RolesList", ClaimTypes.GenericAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("Refresh", "RolesList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "RolesList", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("List1DataSet", "RolesList", ClaimTypes.Dataset, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "UsersList", ClaimTypes.GenericAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "UsersList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Refresh", "UsersList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("List1DataSet", "UsersList", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "MasterPageSignIn", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("Render", "MasterPageSignIn", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "CreateAdmin", ClaimTypes.GenericAction, false, true, null, repo); CreateOrUpdateOperation("Index", "CreateAdmin", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("Create", "CreateAdmin", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("AuthorizeAccess", "CreateAdmin", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "DashboardStatistics", ClaimTypes.GenericAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Render", "DashboardStatistics", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("CloseModal", "DashboardStatistics", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("SupplierStatisticDataSet", "DashboardStatistics", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("SupplierStatisticDataSetOnTime", "DashboardStatistics", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("SupplierTurnoverDataSet", "DashboardStatistics", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("OnTimeDataSet", "DashboardStatistics", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); #endregion #region Roles allRoles = new List <ApplicationRole> { CreateOrUpdateRole("Administrator", "Administrator", new [] { manageUsersPermission, manageRolesPermission, managePermissionsPermission, manageOperationsPermission, manageSettingsPermission, manageApplicationDataPermission }, repo), }; #endregion }); watch.Stop(); log4net.LogManager.GetLogger(typeof(DatabaseSeeder)).Info($"Startup.Database finished in {watch.ElapsedMilliseconds}ms"); }
public void UpdateAuthorizationTables() { var confValue = System.Configuration.ConfigurationManager.AppSettings["SeedSecurityTables"]; bool seedSecurityTables = true; bool bSeedSecurityTables; if (bool.TryParse(confValue, out bSeedSecurityTables)) { seedSecurityTables = bSeedSecurityTables; } if (!seedSecurityTables) { return; } var watch = new System.Diagnostics.Stopwatch(); watch.Start(); MiniSessionManager.ExecuteInUoW(manager => { var repo = new Repository(manager); var allRoles = new List <ApplicationRole>(); #region Permissions var manageUsersPermission = CreateOrUpdatePermission("ManageUsers", "Can Manage Users", false, repo); var manageRolesPermission = CreateOrUpdatePermission("ManageRoles", "Can Manage Roles", false, repo); var managePermissionsPermission = CreateOrUpdatePermission("ManagePermissions", "Can Manage Permissions", false, repo); var manageOperationsPermission = CreateOrUpdatePermission("ManageOperations", "Can Manage Operations", false, repo); var manageSettingsPermission = CreateOrUpdatePermission("ManageSettings", "Can Manage Settings", false, repo); var manageApplicationDataPermission = CreateOrUpdatePermission("ManageApplicationData", "Can Manage Application Data", false, repo); var customerSelectionAndAdminAddPermission = CreateOrUpdatePermission("CustomerSelectionAndAdmin_Add", "CustomerSelectionAndAdmin_Add", false, repo); #endregion #region Operations CreateOrUpdateOperation("GeneralOperation", "ErrorPage", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "ErrorPage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("SendErrorToAdministrator", "ErrorPage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "FirstAdminSetup", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("Render", "FirstAdminSetup", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("Save", "FirstAdminSetup", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "HomePage", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "HomePage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "NotFoundPage", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "NotFoundPage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "SignInPage", ClaimTypes.GenericAction, false, true, null, repo); CreateOrUpdateOperation("Load", "SignInPage", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("SignIn", "SignInPage", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "SignOutPage", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("SignOut", "SignOutPage", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("Render", "SignOutPage", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "Unauthorized", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "Unauthorized", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "UserPreferences", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("Render", "UserPreferences", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("Save", "UserPreferences", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("LanguageBoxDataSet", "UserPreferences", ClaimTypes.Dataset, true, false, null, repo); CreateOrUpdateOperation("LocaleBoxDataSet", "UserPreferences", ClaimTypes.Dataset, true, false, null, repo); CreateOrUpdateOperation("ApplicationThemeDataSet", "UserPreferences", ClaimTypes.Dataset, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "MasterPage", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "MasterPage", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("SignOut", "MasterPage", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "MasterPageForSlide", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "MasterPageForSlide", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "ApplicationSettingForm", ClaimTypes.GenericAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("AddApplicationSetting", "ApplicationSettingForm", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("EditApplicationSetting", "ApplicationSettingForm", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("SaveApplicationSetting", "ApplicationSettingForm", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("DeleteApplicationSetting", "ApplicationSettingForm", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ApplicationSettingsList", ClaimTypes.GenericAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("Refresh", "ApplicationSettingsList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "ApplicationSettingsList", ClaimTypes.ControllerAction, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("List1DataSet", "ApplicationSettingsList", ClaimTypes.Dataset, false, false, new [] { manageSettingsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ChangePassword", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("Render", "ChangePassword", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("ChangePassword", "ChangePassword", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "ForgotPassword", ClaimTypes.GenericAction, true, true, null, repo); CreateOrUpdateOperation("Render", "ForgotPassword", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("ResetPasswordRequest", "ForgotPassword", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("ResetPassword", "ForgotPassword", ClaimTypes.ControllerAction, true, true, null, repo); CreateOrUpdateOperation("GeneralOperation", "ManageOperation", ClaimTypes.GenericAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("EditOperation", "ManageOperation", ClaimTypes.ControllerAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("SaveOperation", "ManageOperation", ClaimTypes.ControllerAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("Button2DataSet", "ManageOperation", ClaimTypes.Dataset, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ManagePermission", ClaimTypes.GenericAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("NewPermission", "ManagePermission", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("EditPermission", "ManagePermission", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("SavePermission", "ManagePermission", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("DeletePermission", "ManagePermission", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("Button4DataSet", "ManagePermission", ClaimTypes.Dataset, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("Button41DataSet", "ManagePermission", ClaimTypes.Dataset, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("Button5DataSet", "ManagePermission", ClaimTypes.Dataset, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ManageRole", ClaimTypes.GenericAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("NewRole", "ManageRole", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("EditRole", "ManageRole", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("SaveRole", "ManageRole", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("DeleteRole", "ManageRole", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("AddPermissionDataSet", "ManageRole", ClaimTypes.Dataset, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "ManageUser", ClaimTypes.GenericAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("NewUser", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("EditUser", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("SaveUser", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("DeleteUser", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("SetPassword", "ManageUser", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Button1DataSet", "ManageUser", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Button2DataSet", "ManageUser", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "OperationsList", ClaimTypes.GenericAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("Refresh", "OperationsList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "OperationsList", ClaimTypes.ControllerAction, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("List1DataSet", "OperationsList", ClaimTypes.Dataset, false, false, new [] { manageOperationsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "PermissionsList", ClaimTypes.GenericAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("Refresh", "PermissionsList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "PermissionsList", ClaimTypes.ControllerAction, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("List1DataSet", "PermissionsList", ClaimTypes.Dataset, false, false, new [] { managePermissionsPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "RolesList", ClaimTypes.GenericAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("Refresh", "RolesList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "RolesList", ClaimTypes.ControllerAction, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("List1DataSet", "RolesList", ClaimTypes.Dataset, false, false, new [] { manageRolesPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "UsersList", ClaimTypes.GenericAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Retrieve", "UsersList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("Refresh", "UsersList", ClaimTypes.ControllerAction, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("List1DataSet", "UsersList", ClaimTypes.Dataset, false, false, new [] { manageUsersPermission }, repo); CreateOrUpdateOperation("GeneralOperation", "MasterPageSignIn", ClaimTypes.GenericAction, true, false, null, repo); CreateOrUpdateOperation("Render", "MasterPageSignIn", ClaimTypes.ControllerAction, true, false, null, repo); CreateOrUpdateOperation("GeneralOperation", "CreateAdmin", ClaimTypes.GenericAction, false, true, null, repo); CreateOrUpdateOperation("Index", "CreateAdmin", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("Create", "CreateAdmin", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("AuthorizeAccess", "CreateAdmin", ClaimTypes.ControllerAction, false, true, null, repo); CreateOrUpdateOperation("ReconnectSockets", "WorkflowSock", ClaimTypes.IDEF0Activity, true, true, null, repo); CreateOrUpdateOperation("CalculateCost", "CostModel", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("GetVolumePerLSP", "KPIService", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("GetVolumePerUnit", "KPIService", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("CO2PerCarrier", "KPIService", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("Orders", "DataSeed", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("InitRegionalAgents", "DataSeed", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("Change", "DataSeed", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("TestGoogleAPI", "DataSeed", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("initWarehouse", "DataSeed", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("testOrderGenerator", "DataSeed", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("testReflection", "DataSeed", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("TruckPosistions", "DataSeed", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("InitKPIs", "KPIInit", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("GetRA", "RA", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("GetOrderWMS", "RA", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("SaveOrder", "RA", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("GetTruckDriver", "RA", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("GetAllOrderWMS", "RA", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("GetOrderByTruck", "RA", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("GetOrderByAgency", "RA", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("Publish", "capacities", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Import", "deliveryDays", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Export", "exportInventoryItems", ClaimTypes.ExposedService, true, true, null, repo); CreateOrUpdateOperation("Export", "exportItems", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("ExportOFDetails", "exportOFDetails", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("ExportSalesForecastDetails", "exportSalesForecastDetails", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Import", "inventoryItems", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Import", "items", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Import", "minimumQuantities", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("CalculateForSKU", "OrderForecastService", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Import", "pastOrders", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Import", "pastSales", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Import", "salesForecasts", ClaimTypes.ExposedService, true, false, null, repo); CreateOrUpdateOperation("Import", "stocksOnHand", ClaimTypes.ExposedService, true, false, null, repo); #endregion #region Roles allRoles = new List <ApplicationRole> { CreateOrUpdateRole("Administrator", "Administrator", new [] { manageUsersPermission, manageRolesPermission, managePermissionsPermission, manageOperationsPermission, manageSettingsPermission, manageApplicationDataPermission }, repo), }; #endregion }); watch.Stop(); log4net.LogManager.GetLogger(typeof(DatabaseSeeder)).Info($"Startup.Database finished in {watch.ElapsedMilliseconds}ms"); }
private void InitializeConfiguration() { MiniSessionManager.ExecuteInUoW(manager => { var repo = ServiceLocator.Current.GetInstance <IRepositoryBuilder>().CreateAuditingRepository(manager); var oldEntityConfigurations = repo.GetAll <AuditEntityConfiguration>(); List <AuditEntityConfiguration> newEntityConfigurations = AuditEntityConfiguration.GetAllEntityConfigurations(); newEntityConfigurations.ForEach(newEntityConfiguration => { var item = oldEntityConfigurations.FirstOrDefault(c => c.FullName == newEntityConfiguration.FullName); if (item == null) { repo.Save(newEntityConfiguration); } else { item.UpdateAuditEntityConfiguration(newEntityConfiguration, repo); } }); oldEntityConfigurations.ForEach(oldEntityConfiguration => { var item = newEntityConfigurations.FirstOrDefault(c => c.FullName == oldEntityConfiguration.FullName); if (item == null) { repo.DeleteAuditEntityConfiguration(oldEntityConfiguration); } }); var auditLogEntryTypes = repo.GetAll <AuditLogEntryType>(); if (!auditLogEntryTypes.Any()) { repo.Save(new AuditLogEntryType { Code = "CREATE", Name = "Create" }); repo.Save(new AuditLogEntryType { Code = "UPDATE", Name = "Update" }); repo.Save(new AuditLogEntryType { Code = "DELETE", Name = "Delete" }); auditLogEntryTypes = repo.GetAll <AuditLogEntryType>(); } var auditLogPropertyActionTypes = repo.GetAll <AuditLogPropertyActionType>(); var addAction = auditLogPropertyActionTypes.FirstOrDefault(a => a.Code == "ADD"); if (addAction == null) { repo.Save(new AuditLogPropertyActionType { Code = "ADD", Name = "Added Element To Collection" }); } var removeAction = auditLogPropertyActionTypes.FirstOrDefault(a => a.Code == "REMOVE"); if (removeAction == null) { repo.Save(new AuditLogPropertyActionType { Code = "REMOVE", Name = "Removed Element From Collection" }); } var assignAction = auditLogPropertyActionTypes.FirstOrDefault(a => a.Code == "ASSIGN"); if (assignAction == null) { repo.Save(new AuditLogPropertyActionType { Code = "ASSIGN", Name = "Assign Entity" }); } }); ClearAuditTrailCache(); }