async void chimneyMpdServer_OnPlaylistMove(object sender, ResponseEventArgs e)
{
bool suc = false;
string playlistName = string.Empty;
int fileId = 0;
int position = 0;
if (e.arguments.Count > 2)
{
playlistName = e.arguments[0];
suc = int.TryParse(e.arguments[1], out fileId);
suc = (suc) ? int.TryParse(e.arguments[2], out position) : false;
}
if (suc)
{
var playlistToMoveIn = await Dbconnection.FindAsync<Playlist>(o => o.Name == playlistName);
if (playlistToMoveIn != null)
{
int playlistid = playlistToMoveIn.PlaylistId;
var currentPlaylistFiles = await Dbconnection.QueryAsync<PlaylistFile>("SELECT * FROM PlaylistFiles WHERE PlaylistId = " + playlistid + " AND FileId = " + fileId + " AND IsUri = 0");
PlaylistFile playlistFile = (currentPlaylistFiles.Count > 0) ? currentPlaylistFiles[0] : null;
if (playlistFile != null)
{
if (position >= 0)
{
await Dbconnection.QueryAsync<CurrentPlaylist>("UPDATE PlaylistFiles SET Position=Position+1 WHERE PlaylistId " + playlistid + " Position >= " + position);
if (position > playlistFile.Position)
{
await Dbconnection.QueryAsync<CurrentPlaylist>("UPDATE PlaylistFiles SET Position=Position-1 WHERE PlaylistId " + playlistid + " Position > " + playlistFile.Position + " AND Position <= " + position);
}
playlistFile.Position = position;
await Dbconnection.UpdateAsync(playlistFile);
playlistToMoveIn.LastModified = DateTime.Now.ToString("s");
await Dbconnection.UpdateAsync(playlistToMoveIn);
}
else suc = false;
suc = true;
}
}
else suc = false;
}
chimneyMpdServer.AppendResponse(string.Empty, e.id, e.position);
if (OnIdleEvent != null) OnIdleEvent(this, new IdleEventArgs("stored_playlist"));
}