async void chimneyMpdServer_OnPlaylistAdd(object sender, ResponseEventArgs e)
{
bool suc = false;
string playlistName = string.Empty;
string uri = string.Empty;
bool addasuri = false;
if (e.arguments.Count > 1)
{
playlistName = e.arguments[0];
uri = e.arguments[1];
}
var playlistToAddTo = await Dbconnection.FindAsync<Playlist>(o => o.Name == playlistName);
if (playlistToAddTo == null)
{
Playlist newStoredPlaylist = new Playlist()
{
Name = playlistName,
LastModified = DateTime.Now.ToString("s")
};
await Dbconnection.InsertAsync(newStoredPlaylist);
playlistToAddTo = await Dbconnection.FindAsync<Playlist>(o => o.Name == playlistName);
}
var fileToAdd = await Dbconnection.FindAsync<File>(o => o.RelativePath == uri);
if (fileToAdd == null) addasuri = true;
if(playlistToAddTo != null)
{
PlaylistFile newPlaylistFile = new PlaylistFile() {
FileId = (addasuri) ? -1 : fileToAdd.FileId,
IsUri = addasuri,
Uri = (addasuri) ? uri : fileToAdd.FilePath,
Position = await Dbconnection.ExecuteScalarAsync<int>("SELECT COUNT(*) FROM PlaylistFiles WHERE PlaylistId = " + playlistToAddTo.PlaylistId),
PlaylistId = playlistToAddTo.PlaylistId
};
await Dbconnection.InsertAsync(newPlaylistFile);
playlistToAddTo.LastModified = DateTime.Now.ToString("s");
await Dbconnection.UpdateAsync(playlistToAddTo);
}
chimneyMpdServer.AppendResponse(string.Empty, e.id, e.position);
if (OnIdleEvent != null) OnIdleEvent(this, new IdleEventArgs("stored_playlist"));
}