public static CleaningResult Clean(this IScriptRepository repository, ITaskRepository taskRepository, IComputerRepository computerRepository, ListFilter filter = null, IRepositoryModelCache cache = null)
        {
            if (filter == null)
            {
                filter = new ListFilter
                {
                    SortDirection = SortDirection.Ascending
                };
            }

            var allScripts = repository.List(filter).Items;

            var unusedScripts = allScripts.Where(x =>
            {
                var getOwnersFunctions = new Func <Script, object[]>[]
                {
                    (id) => taskRepository.Get(id, cache),
                    (id) => computerRepository.Get(id, cache)
                };

                foreach (var getOwnersFunction in getOwnersFunctions)
                {
                    var owners = getOwnersFunction(x);

                    if (owners.Any())
                    {
                        return(false);
                    }
                }

                return(true);
            }).ToArray();


            foreach (var script in unusedScripts)
            {
                repository.Remove(script);
            }

            var result = new CleaningResult(filter, allScripts.Length, unusedScripts.Length);

            return(result);
        }
        public static CleaningResult Clean(this IScriptRepository repository, ITaskRepository taskRepository, IComputerRepository computerRepository, ListFilter filter = null)
        {
            if (filter == null)
            {
                filter = new ListFilter
                {
                    SortDirection = SortDirection.Ascending
                };
            }

            var allScripts = repository.List(filter).Items;

            var unusedScripts = allScripts.Where(x =>
                {
                    var getOwnersFunctions = new Func<Script, object[]>[]
                        {
                            taskRepository.Get,
                            computerRepository.Get
                        };

                    foreach (var getOwnersFunction in getOwnersFunctions)
                    {
                        var owners = getOwnersFunction(x);

                        if (owners.Any())
                        {
                            return false;
                        }
                    }

                    return true;
                }).ToArray();

            foreach (var script in unusedScripts)
            {
                repository.Remove(script);
            }

            var result = new CleaningResult(filter, allScripts.Length, unusedScripts.Length);

            return result;
        }
Esempio n. 3
0
        public static CleaningResult Clean(this ITaskRepository repository, User user, ListFilter filter = null)
        {
            if (filter == null)
            {
                filter = new ListFilter
                    {
                        SortDirection = SortDirection.Ascending
                    };
            }

            var allTasks = repository.List(user, filter).Items;

            var oldTasks = allTasks.Where(x => x.Received || x.Expired).ToArray();

            foreach (var task in allTasks)
            {
                repository.Remove(task);
            }

            var result = new CleaningResult(filter, allTasks.Length, oldTasks.Length);

            return result;
        }
Esempio n. 4
0
        public static CleaningResult Clean(this ITaskRepository repository, User user, ListFilter filter = null, IRepositoryModelCache cache = null)
        {
            if (filter == null)
            {
                filter = new ListFilter
                {
                    SortDirection = SortDirection.Ascending
                };
            }

            var allTasks = repository.List(user, filter, cache).Items;

            var oldTasks = allTasks.Where(x => x.Received || x.Expired).ToArray();

            foreach (var task in allTasks)
            {
                repository.Remove(task);
            }

            var result = new CleaningResult(filter, allTasks.Length, oldTasks.Length);

            return(result);
        }