diff --git a/TeamDBAwesome/TeamDBAwesome/Controllers/AddTrackOrderController.cs b/TeamDBAwesome/TeamDBAwesome/Controllers/AddTrackOrderController.cs new file mode 100644 index 0000000..32cd6bb --- /dev/null +++ b/TeamDBAwesome/TeamDBAwesome/Controllers/AddTrackOrderController.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web.Http; +using TeamDBAwesome.SqlService; + +namespace TeamDBAwesome.Controllers +{ + public class AddTrackOrderController : ApiController + { + public HttpResponseMessage Get(int trackId, int orderId) + { + MySqlService dbService = new MySqlService(); + + int result = dbService.AddTrackOrer(orderId, trackId); + + HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); + response.Content = new StringContent(result.ToString()); + return response; + + } + } +} diff --git a/TeamDBAwesome/TeamDBAwesome/Controllers/GenerateInvoiceController.cs b/TeamDBAwesome/TeamDBAwesome/Controllers/GenerateInvoiceController.cs new file mode 100644 index 0000000..1d886b4 --- /dev/null +++ b/TeamDBAwesome/TeamDBAwesome/Controllers/GenerateInvoiceController.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web.Http; +using TeamDBAwesome.Models; +using TeamDBAwesome.SqlService; + +namespace TeamDBAwesome.Controllers +{ + public class GenerateInvoiceController : ApiController + { + public HttpResponseMessage Get(int custId, int payId, int orderId) + { + HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK); + + MySqlService sql = new MySqlService(); + + int nextInvoice = sql.createInvoice(custId, payId, orderId); + + message.Content = new StringContent(nextInvoice.ToString()); + + return message; + } + } +} diff --git a/TeamDBAwesome/TeamDBAwesome/Controllers/GetCustomerOrdersController.cs b/TeamDBAwesome/TeamDBAwesome/Controllers/GetCustomerOrdersController.cs new file mode 100644 index 0000000..35c45bf --- /dev/null +++ b/TeamDBAwesome/TeamDBAwesome/Controllers/GetCustomerOrdersController.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web.Http; +using TeamDBAwesome.Models; +using TeamDBAwesome.SqlService; +using Newtonsoft.Json; + +namespace TeamDBAwesome.Controllers +{ + public class GetCustomerOrdersController : ApiController + { + public HttpResponseMessage Get(int customerId) + { + MySqlService dbService = new MySqlService(); + + List orderList = dbService.customerOrders(customerId); + string serialzed = JsonConvert.SerializeObject(orderList); + + HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK); + message.Content = new StringContent(serialzed); + + return message; + + } + } +} diff --git a/TeamDBAwesome/TeamDBAwesome/Controllers/GetOrderTracksController.cs b/TeamDBAwesome/TeamDBAwesome/Controllers/GetOrderTracksController.cs new file mode 100644 index 0000000..553c843 --- /dev/null +++ b/TeamDBAwesome/TeamDBAwesome/Controllers/GetOrderTracksController.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Web.Http; +using TeamDBAwesome.SqlService; +using TeamDBAwesome.Models; +using Newtonsoft.Json; + +namespace TeamDBAwesome.Controllers +{ + public class GetOrderTracksController : ApiController + { + public HttpResponseMessage Get(int orderId) + { + MySqlService dbService = new MySqlService(); + + List trackList = dbService.getOrderTracks(orderId); + string serialzed = JsonConvert.SerializeObject(trackList); + + HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK); + message.Content = new StringContent(serialzed); + + return message; + + } + } +} diff --git a/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs b/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs index a7f63ae..956ecf6 100644 --- a/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs +++ b/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs @@ -232,6 +232,70 @@ namespace TeamDBAwesome.SqlService } } + public int createInvoice(int custId, int payId, int orderId) + { + bool open = this.OpenConnection(); + if(open == true) + { + //first get all of the customer info + string personQuery = "select person.Address as billAdr, " + + "person.City as billCity, " + + "person.State as billState, " + + "person.Country as billCountry, " + + "person.PostalCode as billPost " + + "from person " + + "left join customer on customer.PersonID = person.PersonId " + + "where customer.CustomerId = " + custId; + + MySqlCommand cmd = new MySqlCommand(personQuery, SqlConn); + + MySqlDataReader reader = cmd.ExecuteReader(); + + string Address = "", City = "", State="", Country="", PostalCode = ""; + + while (reader.Read()) + { + Address = GetDBString("billAdr", reader); + City = GetDBString("billCity", reader); + State = GetDBString("billState", reader); + Country = GetDBString("billCountry", reader); + PostalCode = GetDBString("billPost", reader); + } + reader.Close(); + //get the order total + float total = 0; + string costQuery = "Select UnitPrice from track left join ordertracks on track.trackid = ordertracks.trackid where orderId = " + orderId; + cmd = new MySqlCommand(costQuery, SqlConn); + reader = cmd.ExecuteReader(); + while(reader.Read()) + { + total = total + float.Parse(GetDBString("UnitPrice", reader)); + } + reader.Close(); + //get the next number for invoiceId + string nextInvoiceQuery = "Select invoiceid from invoice order by invoiceid desc limit 1"; + cmd = new MySqlCommand(nextInvoiceQuery, SqlConn); + int nextInvoice = int.Parse(cmd.ExecuteScalar() + "") + 1; + + //get current date time + DateTime dateValue = DateTime.Now; + string NowTime = dateValue.ToString("yyyy-MM-dd HH:mm:ss"); + + //now do the insert + string insert = "Insert into invoice (invoiceid, customerid, invoicedate, billingaddress, billingcity, billingstate, billingcountry, billingpostalcode, total, payid) " + + "VALUES " + + "(" + nextInvoice + "," + custId + "," + NowTime + "," + Address + "," + City + "," + State + "," + Country + "," + PostalCode + "," + total + "," + payId + ")"; + cmd = new MySqlCommand(insert, SqlConn); + cmd.ExecuteNonQuery(); + + return nextInvoice; + } + else + { + return 0; + } + } + /// /// adds a payment type to the database /// @@ -282,6 +346,86 @@ namespace TeamDBAwesome.SqlService return 0; } + public int AddTrackOrer(int OrderId, int TrackId) + { + bool open = this.OpenConnection(); + if (open == true) + { + string insert = "INSERT INTO ordertracks (OrderId,TrackId) VALUES (" + OrderId + "," + TrackId + ")"; + MySqlCommand command = new MySqlCommand(insert, SqlConn); + command.ExecuteNonQuery(); + return 0; + } + else + { + return 1; + } + } + + public List getOrderTracks(int orderId) + { + List trackList = new List(); + bool open = this.OpenConnection(); + if(open == true) + { + string query = "select track.TrackId as TrackID, track.Name as trackname,track.Composer as trackcomposer, " + + "track.Milliseconds,track.Bytes, track.UnitPrice, Album.Title as albumtitle,MediaType.Name as mediatype, artist.name as artist, " + + "Genre.Name as genre " + + "from track " + + "left join ordertracks on track.TrackId = ordertracks.trackid " + + "left join Album on track.AlbumId = Album.AlbumId " + + "left join mediatype on track.MediaTypeId=mediatype.MediaTypeId " + + "left join genre on track.GenreId = genre.GenreId " + + "left join artist on album.artistid = artist.artistid " + + "where ordertracks.orderid = " + orderId; + + MySqlCommand cmd = new MySqlCommand(query, SqlConn); + + MySqlDataReader reader = cmd.ExecuteReader(); + + Track track; + + while (reader.Read()) + { + track = new Track(); + + track.TrackId = int.Parse(GetDBString("TrackId", reader)); + track.TrackName = GetDBString("trackname", reader); + track.Composer = GetDBString("trackcomposer", reader); + track.Milliseconds = int.Parse(GetDBString("Milliseconds", reader)); + track.Bytes = int.Parse(GetDBString("Bytes", reader)); + track.UnitPrice = float.Parse(GetDBString("UnitPrice", reader)); + track.AlbumTitle = GetDBString("albumtitle", reader); + track.MediaType = GetDBString("mediatype", reader); + track.Genre = GetDBString("genre", reader); + track.artist = GetDBString("artist", reader); + + trackList.Add(track); + } + } + + return trackList; + } + + public List customerOrders(int custId) + { + List id_list = new List(); + bool open = this.OpenConnection(); + if(open == true) + { + string query = "SELECT OrderId from orders where CustomerId = " + custId; + MySqlCommand cmd = new MySqlCommand(query, SqlConn); + + MySqlDataReader reader = cmd.ExecuteReader(); + while(reader.Read()) + { + id_list.Add(int.Parse(GetDBString("OrderId", reader))); + } + } + CloseConnection(); + return id_list; + } + /// /// Update a Customer Object /// diff --git a/TeamDBAwesome/TeamDBAwesome/TeamDBAwesome.csproj b/TeamDBAwesome/TeamDBAwesome/TeamDBAwesome.csproj index 44eccf4..19286e3 100644 --- a/TeamDBAwesome/TeamDBAwesome/TeamDBAwesome.csproj +++ b/TeamDBAwesome/TeamDBAwesome/TeamDBAwesome.csproj @@ -167,13 +167,17 @@ + + + +