From 57b6cbed1a6f30a0a02af4f46a9af03e1482ef5d Mon Sep 17 00:00:00 2001 From: Jeremy Mill Date: Thu, 10 Dec 2015 16:52:21 -0500 Subject: [PATCH] invoice track data API --- .../Controllers/InvoiceTrackDataController.cs | 30 +++++++++ TeamDBAwesome/TeamDBAwesome/Models/Track.cs | 1 + .../TeamDBAwesome/SqlService/MySqlService.cs | 63 +++++++++++++++++++ .../TeamDBAwesome/TeamDBAwesome.csproj | 1 + 4 files changed, 95 insertions(+) create mode 100644 TeamDBAwesome/TeamDBAwesome/Controllers/InvoiceTrackDataController.cs diff --git a/TeamDBAwesome/TeamDBAwesome/Controllers/InvoiceTrackDataController.cs b/TeamDBAwesome/TeamDBAwesome/Controllers/InvoiceTrackDataController.cs new file mode 100644 index 0000000..5b0403d --- /dev/null +++ b/TeamDBAwesome/TeamDBAwesome/Controllers/InvoiceTrackDataController.cs @@ -0,0 +1,30 @@ +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 InvoiceTrackDataController : ApiController + { + public HttpResponseMessage Get(int invoiceId) + { + MySqlService dbService = new MySqlService(); + + List trackList = dbService.getInvoiceTracks(invoiceId); + + string serialzed = JsonConvert.SerializeObject(trackList); + + HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK); + message.Content = new StringContent(serialzed); + + return message; + + } + } +} diff --git a/TeamDBAwesome/TeamDBAwesome/Models/Track.cs b/TeamDBAwesome/TeamDBAwesome/Models/Track.cs index c0e7e13..763ea28 100644 --- a/TeamDBAwesome/TeamDBAwesome/Models/Track.cs +++ b/TeamDBAwesome/TeamDBAwesome/Models/Track.cs @@ -18,5 +18,6 @@ namespace TeamDBAwesome.Models public float UnitPrice { get; set; } public string artist { get; set; } public string url { get; set; } + public int qty { get; set; } } } \ No newline at end of file diff --git a/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs b/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs index 3ba7142..e0d9b56 100644 --- a/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs +++ b/TeamDBAwesome/TeamDBAwesome/SqlService/MySqlService.cs @@ -454,6 +454,41 @@ namespace TeamDBAwesome.SqlService cmd = new MySqlCommand(insert, SqlConn); cmd.ExecuteNonQuery(); + string nextInvoiceLineId = "select InvoiceLineId from invoiceline order by invoicelineid desc limit 1"; + cmd = new MySqlCommand(nextInvoiceLineId, SqlConn); + int nextLineId = int.Parse(cmd.ExecuteScalar() + "") + 1; + + string invoiceLineQuery = "select track.trackid,track.UnitPrice,count(*) as count from ordertracks left join orders on ordertracks.OrderId = orders.orderid " + + "left join track on ordertracks.trackid = track.trackid " + + "where ordertracks.orderid = " + orderId + " " + + "group by trackid"; + cmd = new MySqlCommand(invoiceLineQuery, SqlConn); + reader = cmd.ExecuteReader(); + while(reader.Read()) + { + int nextTrackId = int.Parse(GetDBString("trackid", reader)); + int nextQty = int.Parse(GetDBString("count", reader)); + float unitPrice = float.Parse(GetDBString("UnitPrice", reader)); + float lineTotal = nextQty * unitPrice; + string invLineIns = "insert into invoiceline (InvoiceLineId,InvoiceId,TrackId,UnitPrice,Quantity) VALUES (" + + nextLineId + "," + nextInvoice + "," + nextTrackId + "," + unitPrice + "," + nextQty + ")"; + + server = "localhost"; + database = "chinook"; + uid = "root"; + //changeme + password = ""; + string connectionString2 = "SERVER=" + server + ";" + "DATABASE=" + database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";"; + + MySqlConnection SqlConn2 = new MySqlConnection(connectionString2); + SqlConn2.Open(); + MySqlCommand cmd_ins = new MySqlCommand(invLineIns, SqlConn2); + cmd_ins.ExecuteNonQuery(); + SqlConn2.Close(); + nextLineId = nextLineId + 1; + } + reader.Close(); + //NEED TO DELETE THE ORDER, AND ORDER TRACKS string delete_ordertracks = "delete from ordertracks where orderid = " + orderId; cmd = new MySqlCommand(delete_ordertracks, SqlConn); @@ -470,6 +505,34 @@ namespace TeamDBAwesome.SqlService return 0; } } + + public List getInvoiceTracks(int invoiceId) + { + List trackList = new List(); + bool open = this.OpenConnection(); + if(open == true) + { + string query = "select track.name as name,track.UnitPrice as price, Quantity from invoiceline " + + "left join track on invoiceline.trackid = track.trackid " + + "left join album on track.albumid = album.albumid " + + "left join artist on album.artistid = artist.artistid " + + "where invoiceid = " + invoiceId; + + MySqlCommand cmd = new MySqlCommand(query, SqlConn); + MySqlDataReader reader = cmd.ExecuteReader(); + while(reader.Read()) + { + trackList.Add(new Track + { + TrackName = GetDBString("name", reader), + UnitPrice = float.Parse(GetDBString("price", reader)), + qty = int.Parse(GetDBString("quantity", reader)) + }); + } + reader.Close(); + } + return trackList; + } public List getInvoices(int custId) { diff --git a/TeamDBAwesome/TeamDBAwesome/TeamDBAwesome.csproj b/TeamDBAwesome/TeamDBAwesome/TeamDBAwesome.csproj index 386ee36..5e2c25b 100644 --- a/TeamDBAwesome/TeamDBAwesome/TeamDBAwesome.csproj +++ b/TeamDBAwesome/TeamDBAwesome/TeamDBAwesome.csproj @@ -193,6 +193,7 @@ +