Chimney.Shared.UserControls.ChimneyServerUserControl.chimneyMpdServer_OnPlaylistMove C# (CSharp) 메소드

chimneyMpdServer_OnPlaylistMove() 개인적인 메소드

private chimneyMpdServer_OnPlaylistMove ( object sender, ResponseEventArgs e ) : void
sender object
e Chimney.MPD.ResponseEventArgs
리턴 void
        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"));
        }
ChimneyServerUserControl