private static void configureCleanUpTransitions( ITransitionConfigurator transitions, ITimeService timeService, ITogglDataSource dataSource, IAnalyticsService analyticsService, StateResult entryPoint) { var deleteOlderEntries = new DeleteOldTimeEntriesState(timeService, dataSource.TimeEntries); var deleteUnsnecessaryProjectPlaceholders = new DeleteUnnecessaryProjectPlaceholdersState(dataSource.Projects, dataSource.TimeEntries); var checkForInaccessibleWorkspaces = new CheckForInaccessibleWorkspacesState(dataSource); var deleteInaccessibleTimeEntries = new DeleteInaccessibleTimeEntriesState(dataSource.TimeEntries); var deleteInaccessibleTags = new DeleteNonReferencedInaccessibleTagsState(dataSource.Tags, dataSource.TimeEntries); var deleteInaccessibleTasks = new DeleteNonReferencedInaccessibleTasksState(dataSource.Tasks, dataSource.TimeEntries); var deleteInaccessibleProjects = new DeleteNonReferencedInaccessibleProjectsState(dataSource.Projects, dataSource.Tasks, dataSource.TimeEntries); var deleteInaccessibleClients = new DeleteNonReferencedInaccessibleClientsState(dataSource.Clients, dataSource.Projects); var deleteInaccessibleWorkspaces = new DeleteNonReferencedInaccessibleWorkspacesState( dataSource.Workspaces, dataSource.TimeEntries, dataSource.Projects, dataSource.Tasks, dataSource.Clients, dataSource.Tags); var trackInaccesssibleDataAfterCleanUp = new TrackInaccessibleDataAfterCleanUpState(dataSource, analyticsService); var trackInaccesssibleWorkspacesAfterCleanUp = new TrackInaccessibleWorkspacesAfterCleanUpState(dataSource, analyticsService); transitions.ConfigureTransition(entryPoint, deleteOlderEntries); transitions.ConfigureTransition(deleteOlderEntries.Done, deleteUnsnecessaryProjectPlaceholders); transitions.ConfigureTransition(deleteUnsnecessaryProjectPlaceholders.Done, checkForInaccessibleWorkspaces); transitions.ConfigureTransition(checkForInaccessibleWorkspaces.NoInaccessibleWorkspaceFound, new DeadEndState()); transitions.ConfigureTransition(checkForInaccessibleWorkspaces.FoundInaccessibleWorkspaces, deleteInaccessibleTimeEntries); transitions.ConfigureTransition(deleteInaccessibleTimeEntries.Done, deleteInaccessibleTags); transitions.ConfigureTransition(deleteInaccessibleTags.Done, deleteInaccessibleTasks); transitions.ConfigureTransition(deleteInaccessibleTasks.Done, deleteInaccessibleProjects); transitions.ConfigureTransition(deleteInaccessibleProjects.Done, deleteInaccessibleClients); transitions.ConfigureTransition(deleteInaccessibleClients.Done, trackInaccesssibleDataAfterCleanUp); transitions.ConfigureTransition(trackInaccesssibleDataAfterCleanUp.Done, deleteInaccessibleWorkspaces); transitions.ConfigureTransition(deleteInaccessibleWorkspaces.Done, trackInaccesssibleWorkspacesAfterCleanUp); transitions.ConfigureTransition(trackInaccesssibleWorkspacesAfterCleanUp.Done, new DeadEndState()); }
public DeleteUnsnecessaryProjectPlaceholdersStateTests() { state = new DeleteUnnecessaryProjectPlaceholdersState(projectsDataSource, timeEntriesDataSource); }