Beispiel #1
0
        GetTaskList(Predicate <Task> predicate, bool isGarbage, ObservableCollection <Tag> tagList)
        {
            ObservableCollection <Task> tasks = new ObservableCollection <Task>();
            await _sQLite.OpenAsync();

            SQLiteCommand sQLiteCommand = _sQLite.CreateCommand();

            if (isGarbage)
            {
                sQLiteCommand.CommandText = "SELECT * FROM TasksGarbage;";
            }
            else
            {
                sQLiteCommand.CommandText = "SELECT * FROM Tasks;";
            }
            DbDataReader reader = await sQLiteCommand.ExecuteReaderAsync();

            if (predicate == null)
            {
                predicate = AlwaysTrue;
            }
            while (await reader.ReadAsync())
            {
                string   title         = reader[0].ToString();
                string   ID            = reader[1].ToString();
                Repeater repeater      = RepeaterStorageConverter.Parse(reader[2].ToString());
                DateTime activatedTime = reader.GetDateTime(3);
                DateTime expiryTime    = reader.GetDateTime(4);
                ObservableCollection <TimeInfo> time = TimeInfosStorageConverter.Parse(reader[5].ToString());
                Tag[]  tags       = Array.ConvertAll <string, Tag>(reader[6].ToString().Split(','), x => tagList.First(y => y.ID == x));
                string webAddress = reader[7].ToString();
                Task   task       = new Task(title, ID, repeater, activatedTime, expiryTime, time, new ObservableCollection <Tag>(tags), webAddress);
                if (predicate(task))
                {
                    tasks.Add(task);
                }
            }
            _sQLite.Close();
            return(tasks);
        }