Exemplo n.º 1
0
        private SongPlayInstance ParseSongPlayInstance(SQLiteDataReader reader)
        {
            SongPlayInstance toReturn = null;

            var songDetails = new SongDetails
            {
                songID       = ReadField <string>(reader, "songid"),
                songName     = ReadField <string>(reader, "songname"),
                artistName   = ReadField <string>(reader, "artistname"),
                albumName    = ReadField <string>(reader, "albumname"),
                songLength   = (float)ReadField <double>(reader, "songLength"),
                albumYear    = (int)ReadField <long>(reader, "albumYear"),
                arrangements = JsonConvert.DeserializeObject <List <ArrangementDetails> >(ReadField <string>(reader, "arrangements")),
                albumArt     = null
            };

            //try
            //{
            //    byte[] blob = ReadField<byte[]>(reader, "album_art");
            //    songDetails.albumArt = this.DeserializeImage(blob);
            //}
            //catch
            //{

            //}

            var noteDetails = new LearnASongNoteData();

            DateTime startTime = ReadField <DateTime>(reader, "start_time");
            DateTime endTime   = ReadField <DateTime>(reader, "end_time");

            toReturn = new SongPlayInstance(songDetails, noteDetails, startTime, endTime);

            toReturn.NotesHit         = (int)ReadField <long>(reader, "notes_hit");
            toReturn.NotesMissed      = (int)ReadField <long>(reader, "notes_missed");
            toReturn.TotalNotes       = (int)ReadField <long>(reader, "total_notes");
            toReturn.HighestHitStreak = (int)ReadField <long>(reader, "max_streak");
            return(toReturn);
        }
Exemplo n.º 2
0
        public long Add(SongPlayInstance songPlayInstance)
        {
            try
            {
                long toReturn = 0;

                SQLiteTransaction transaction = this.Connection.BeginTransaction();

                using (var cmd = this.Connection.CreateCommand())
                {
                    cmd.CommandText = SQLiteSchemaStrings.PlayHistoryInsert;

                    #region add parameter objects
                    cmd.Parameters.Add("@songid", DbType.String);
                    cmd.Parameters.Add("@songname", DbType.String);
                    cmd.Parameters.Add("@artistname", DbType.String);
                    cmd.Parameters.Add("@albumname", DbType.String);
                    cmd.Parameters.Add("@songLength", DbType.Single);
                    cmd.Parameters.Add("@albumYear", DbType.Int32);
                    cmd.Parameters.Add("@arrangements", DbType.String);
                    cmd.Parameters.Add("@album_art", DbType.Binary);
                    cmd.Parameters.Add("@notes_hit", DbType.Int32);
                    cmd.Parameters.Add("@notes_missed", DbType.Int32);
                    cmd.Parameters.Add("@total_notes", DbType.Int32);
                    cmd.Parameters.Add("@max_streak", DbType.Int32);
                    cmd.Parameters.Add("@start_time", DbType.DateTime);
                    cmd.Parameters.Add("@end_time", DbType.DateTime);
                    #endregion

                    #region populate parameter values
                    cmd.Parameters["@songid"].Value       = songPlayInstance.SongDetails.songID;
                    cmd.Parameters["@songname"].Value     = songPlayInstance.SongDetails.songName;
                    cmd.Parameters["@artistname"].Value   = songPlayInstance.SongDetails.artistName;
                    cmd.Parameters["@albumname"].Value    = songPlayInstance.SongDetails.albumName;
                    cmd.Parameters["@songLength"].Value   = songPlayInstance.SongDetails.songLength;
                    cmd.Parameters["@albumYear"].Value    = songPlayInstance.SongDetails.albumYear;
                    cmd.Parameters["@arrangements"].Value = JsonConvert.SerializeObject(songPlayInstance.SongDetails.arrangements);
                    // album art handled below
                    cmd.Parameters["@notes_hit"].Value    = songPlayInstance.NoteData.TotalNotesHit;
                    cmd.Parameters["@notes_missed"].Value = songPlayInstance.NoteData.TotalNotesMissed;
                    cmd.Parameters["@total_notes"].Value  = songPlayInstance.NoteData.TotalNotes;
                    cmd.Parameters["@max_streak"].Value   = songPlayInstance.NoteData.HighestHitStreak;
                    cmd.Parameters["@start_time"].Value   = songPlayInstance.EndTime;
                    cmd.Parameters["@end_time"].Value     = songPlayInstance.StartTime;

                    #region handle album art
                    //cmd.Parameters["@album_art"].Value = SerializeImage(songPlayInstance.SongDetails.albumArt, songPlayInstance.imageLock);
                    #endregion

                    #endregion

                    cmd.ExecuteNonQuery();
                    toReturn = this.Connection.LastInsertRowId;

                    transaction.Commit();

                    if (Logger.logCache)
                    {
                        Logger.Log($"Song played {songPlayInstance.SongDetails.songName}/{songPlayInstance.SongDetails.songID}");
                    }

                    return(toReturn);
                }
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
                Utilities.ShowExceptionMessageBox(ex);

                throw ex;
            }
        }