diff --git a/TeamDBAwesome/TeamDBAwesome/Controllers/SearchController.cs b/TeamDBAwesome/TeamDBAwesome/Controllers/SearchController.cs index 4f3eb97..6f7285a 100644 --- a/TeamDBAwesome/TeamDBAwesome/Controllers/SearchController.cs +++ b/TeamDBAwesome/TeamDBAwesome/Controllers/SearchController.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -7,6 +8,7 @@ using System.Text.RegularExpressions; using System.Web.Http; using TeamDBAwesome.Models; +using TeamDBAwesome.SqlService; namespace TeamDBAwesome.Controllers { @@ -54,6 +56,13 @@ public HttpResponseMessage Get(string search="") dbsearch.Composer = search; dbsearch.Genre = search; } + + MySqlService service = new MySqlService(); + SearchResult result = service.Search(dbsearch); + + string serialized = JsonConvert.SerializeObject(result); + message.Content = new StringContent(serialized); + //return it return message; } diff --git a/TeamDBAwesome/TeamDBAwesome/Controllers/TestController.cs b/TeamDBAwesome/TeamDBAwesome/Controllers/TestController.cs index d26d556..02ab332 100644 --- a/TeamDBAwesome/TeamDBAwesome/Controllers/TestController.cs +++ b/TeamDBAwesome/TeamDBAwesome/Controllers/TestController.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.Linq; using System.Net; @@ -51,11 +52,13 @@ public HttpResponseMessage Get() MySqlService service = new MySqlService(); - service.Search(search); + SearchResult result = service.Search(search); + string serialized = JsonConvert.SerializeObject(result); //return an OK with the int of the new user HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); + response.Content = new StringContent(serialized); return response; diff --git a/TeamDBAwesome/TeamDBAwesome/Models/SearchResult.cs b/TeamDBAwesome/TeamDBAwesome/Models/SearchResult.cs index 7d91cd0..c2f77c7 100644 --- a/TeamDBAwesome/TeamDBAwesome/Models/SearchResult.cs +++ b/TeamDBAwesome/TeamDBAwesome/Models/SearchResult.cs @@ -12,7 +12,18 @@ public class SearchResult public List Artist { get; set; } public List Track { get; set; } //pretty sure I don't need this - //public List Composer { get; set; } - public List Genre { get; set; } + public List Composer { get; set; } + public List Genre { get; set; } + + public SearchResult() + { + Media = new List(); + Album = new List(); + Artist = new List(); + Track = new List(); + Composer = new List(); + Genre = new List(); + } + } } \ No newline at end of file diff --git a/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs b/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs index cecf093..a032b10 100644 --- a/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs +++ b/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs @@ -4,6 +4,7 @@ using System.Web; using MySql.Data.MySqlClient; using TeamDBAwesome.Models; +using System.Diagnostics; namespace TeamDBAwesome.SqlService { @@ -185,46 +186,109 @@ public SearchResult Search(Search search) //do the search //need to write some logic to see any of the fields are blank, otherwise do each search, and add them to the lists in result - string mediaQuery = "select * from chinook.mediatype where name like \'%" + search.Media + "%\' "; - string albumQuery = "select * from chinook.album where name like \'%" + search.Album + "%\' "; - string artistQuery = "select * from chinook.artist where name like \'%" + search.Artist + "%\' "; - string trackQuery = "select * from chinook.track where name like \'%" + search.Track + "%\' "; - string composerQuery = "select * from chinook.track where composer like \'%" + search.Composer + "%\' "; - string genreQuery = "select * from chinook.genre where name like \'%" + search.Genre + "%\' "; - - MySqlCommand cmd = new MySqlCommand(trackQuery, SqlConn); - MySqlDataReader reader = cmd.ExecuteReader(); + Dictionary queries = new Dictionary(); + + queries.Add("Media", "select * from chinook.mediatype where name like \'%" + search.Media + "%\' "); + queries.Add("Album", "select * from chinook.album where Title like \'%" + search.Album + "%\' "); + queries.Add("Artist", "select * from chinook.artist where name like \'%" + search.Artist + "%\' "); + queries.Add("Track", "select * from chinook.track where name like \'%" + search.Track + "%\' "); + queries.Add("Composer", "select * from chinook.track where composer like \'%" + search.Composer + "%\' "); + queries.Add("Genre", "select * from chinook.genre where name like \'%" + search.Genre + "%\' "); + //declare theresult and init it SearchResult searchresult = new SearchResult(); - while(reader.Read()) + //declare the cmd and the reader + //MySqlCommand cmd; + + + foreach (var key in queries) { - if(search.Track != "") - { - searchresult.Track.Add(new Track + MySqlCommand cmd = new MySqlCommand(key.Value, SqlConn); + MySqlDataReader reader; + reader = cmd.ExecuteReader(); + + while(reader.Read()) + { + if(search.GetType().GetProperty(key.Key).GetValue(search).ToString() != "") + { + if(key.Key == "Media") + { + searchresult.Media.Add(new Media + { + MediaTypeId = int.Parse(GetDBString("MediaTypeId", reader)), + Name = GetDBString("Name", reader) + }); + } + else if (key.Key == "Album") + { + searchresult.Album.Add(new Album + { + AlbumId = int.Parse(GetDBString("AlbumId", reader)), + ArtistId = int.Parse(GetDBString("ArtistId", reader)), + Title = GetDBString("Title", reader) + }); + } + else if( key.Key == "Artist") { - AlbumId = int.Parse(GetDBString("AlbumID", reader)), - TrackId = int.Parse(GetDBString("TrackId", reader)), - Name = GetDBString("Name", reader), - MediaTypeId = int.Parse(GetDBString("MediaTypeId", reader)), - GenreId = int.Parse(GetDBString("GenreId", reader)), - Composer = GetDBString("Composer", reader), - Milliseconds = int.Parse(GetDBString("Milliseconds", reader)), - Bytes = int.Parse(GetDBString("Bytes", reader)), - UnitPrice = float.Parse(GetDBString("UnitPrice", reader)) - }); + searchresult.Artist.Add(new Artist + { + ArtistId = int.Parse(GetDBString("ArtistId", reader)), + Name = GetDBString("Name", reader) + }); + } + else if (key.Key == "Track") + { + searchresult.Track.Add(new Track + { + AlbumId = int.Parse(GetDBString("AlbumID", reader)), + TrackId = int.Parse(GetDBString("TrackId", reader)), + Name = GetDBString("Name", reader), + MediaTypeId = int.Parse(GetDBString("MediaTypeId", reader)), + GenreId = int.Parse(GetDBString("GenreId", reader)), + Composer = GetDBString("Composer", reader), + Milliseconds = int.Parse(GetDBString("Milliseconds", reader)), + Bytes = int.Parse(GetDBString("Bytes", reader)), + UnitPrice = float.Parse(GetDBString("UnitPrice", reader)) + }); + } + else if (key.Key == "Composer") + { + searchresult.Composer.Add(new Track + { + AlbumId = int.Parse(GetDBString("AlbumID", reader)), + TrackId = int.Parse(GetDBString("TrackId", reader)), + Name = GetDBString("Name", reader), + MediaTypeId = int.Parse(GetDBString("MediaTypeId", reader)), + GenreId = int.Parse(GetDBString("GenreId", reader)), + Composer = GetDBString("Composer", reader), + Milliseconds = int.Parse(GetDBString("Milliseconds", reader)), + Bytes = int.Parse(GetDBString("Bytes", reader)), + UnitPrice = float.Parse(GetDBString("UnitPrice", reader)) + }); + } + else if(key.Key == "Genre") + { + searchresult.Genre.Add(new Genre + { + GenreId = int.Parse(GetDBString("GenreId", reader)), + Name = GetDBString("Name", reader) + }); + } + } } + reader.Close(); } + result = searchresult; + return result; + } else { return result; } - - - return result; } } } \ No newline at end of file