async void chimneyMpdServer_OnLoad(object sender, ResponseEventArgs e)
{
string playlistName = string.Empty;
int start = 0;
int end = 0;
bool suc = false;
if (e.arguments.Count > 0)
{
playlistName = e.arguments[0];
if (e.arguments.Count > 1)
{
string[] par = e.arguments[1].Split(new char[] { ':' });
suc = int.TryParse(par[1], out start);
if (suc && par.Length > 1) suc = int.TryParse(par[2], out end);
else end = start;
}
}
var playlistToAddFrom = await Dbconnection.FindAsync<Playlist>(o => o.Name == playlistName);
if(!suc && playlistToAddFrom != null)
{
end = await Dbconnection.ExecuteScalarAsync<int>("SELECT COUNT(*) FROM PlaylistFiles WHERE PlaylistId = " + playlistToAddFrom.PlaylistId);
}
if(playlistToAddFrom != null)
{
var plFiles = await Dbconnection.QueryAsync<PlaylistFile>("SELECT * FROM PlaylistFiles WHERE PlaylistId = " + playlistToAddFrom.PlaylistId
+ " AND Postion >= " + start + " AND Position < " + end);
foreach(PlaylistFile plFile in plFiles)
{
CurrentPlaylist newCurrentPlaylistItem = new CurrentPlaylist()
{
FileId = (plFile.IsUri) ? -1 : plFile.FileId,
IsUri = plFile.IsUri,
Uri = plFile.Uri,
PositionId = await Dbconnection.ExecuteScalarAsync<int>("SELECT COUNT(*) FROM CurrentPlaylist")
};
await Dbconnection.InsertAsync(newCurrentPlaylistItem);
}
}
chimneyMpdServer.AppendResponse(string.Empty, e.id, e.position);
if (OnIdleEvent != null) OnIdleEvent(this, new IdleEventArgs("playlist"));
}