Chimney.Shared.UserControls.ChimneyServerUserControl.UpdateDatabase C# (CSharp) Method

UpdateDatabase() public method

public UpdateDatabase ( ) : System.Threading.Tasks.Task
return System.Threading.Tasks.Task
        public async Task UpdateDatabase()
        {
            is_db_updating = true;

            if (OnIdleEvent != null) OnIdleEvent(this, new IdleEventArgs("update"));

            //StorageFolder externalDevices = Windows.Storage.KnownFolders.RemovableDevices;

            List<StorageFolder> storageFolders = new List<StorageFolder>() { Windows.Storage.KnownFolders.MusicLibrary, Windows.Storage.KnownFolders.RemovableDevices };

            //
            // Check if empty start Directory exist
            //
            Directory startDirectory = await GetDirectory(string.Empty, 0);

            if (startDirectory != null)
            {
                //
                // Get a filelist for all matching files on filesystem in selected StorageFolders and add them to the Files table
                //
                foreach (StorageFolder sf in storageFolders)
                {
                    List<File> filelist =
                        await UpdateDb(
                            sf,
                            await GetDirectory(startDirectory.Name, 0),
                            new List<string>() { startDirectory.Name }
                        );

                    await Dbconnection.InsertAllAsync(filelist);
                }
            }

            bool fileremoved = false;

            try
            {
                var updateposCurrentPlaylist = await Dbconnection.QueryAsync<CurrentPlaylist>("SELECT * FROM CurrentPlaylist ORDER BY PositionId");

                if (updateposCurrentPlaylist != null)
                {
                    int pos = 0;

                    foreach (CurrentPlaylist c in updateposCurrentPlaylist)
                    {
                        if (!c.IsUri)
                        {
                            var file = await Dbconnection.FindAsync<File>(o => o.FileId == c.FileId);
                            if (file == null)
                            {
                                await Dbconnection.DeleteAsync(c);
                                fileremoved = true;
                            }
                            else
                            {
                                c.PositionId = pos;
                                await Dbconnection.UpdateAsync(c);
                                pos++;
                            }
                        }
                        else
                        {
                            c.PositionId = pos;
                            await Dbconnection.UpdateAsync(c);
                            pos++;
                        }
                    }
                }
            }
            catch { }

            db_last_update = DateTime.Now;
            is_db_updating = false;

            List<string> eventlist = new List<string>() { "update", "database" };
            if (fileremoved) eventlist.Add( "playlist");

            if (OnIdleEvent != null) OnIdleEvent(this, new IdleEventArgs(eventlist));
        }
ChimneyServerUserControl