public static void AddToMsmq() { //teste var test = new List<Track> { new Track { ArtisName = "Myley Cyrus", TrackName = "Recking Ball", }, new Track { ArtisName = "Eminem", TrackName = "Berzerk", } //new Track //{ // ArtisName = "Tretas", // TrackName = "Recking Ball", //}, //new Track //{ // ArtisName = "Super Tretas", // TrackName = "Recking Ball", //} }; var songsByorder = new SongsByOrder { OrderId = "1", TrackList = test }; MessageQueueHelper.SendMessage(InboxQueuePath, songsByorder, "Test Message"); }
public OrderStatus RequestOrder(OrderInfo order) { var thread = new Thread(() => { BackOfficeCallBackService.orderList.Add(order); //add to cdfactory var inboxMessage = new CDFactory.SongsByOrder { OrderId = BackOfficeCallBackService.orderList.IndexOf(order).ToString(), TrackList = new List<CDFactory.Track>() }; foreach (var track in order.orderedTracks) { var newTrack = new CDFactory.Track { ArtisName = track.ArtisName, Price = track.Price, PriceFormatted = track.PriceFormatted, TrackName = track.TrackName }; inboxMessage.TrackList.Add(newTrack); } MessageQueueHelper.SendMessage(InboxQueuePath, inboxMessage, "Order to Process"); //get quotes from fabricantes IAdapterFabricantes adapterA = new AdapterFabricanteA(new FabricanteAServiceClient()); adapterA.getPrice(order); IAdapterFabricantes adapterB = new AdapterFabricanteB(new FabricanteBServiceClient()); adapterB.getPrice(order); IAdapterFabricantes adapterC = new AdapterFabricanteC(new FabricanteCServiceClient()); adapterC.getPrice(order); //get quotes from transportadora TransportadoraServiceClient transp = new TransportadoraServiceClient(); TransportJobPriceRequest requestA =new TransportJobPriceRequest(); requestA.DeliveryAdress = order.morada; requestA.Distance = GeocodingHelper.GetDistanceBetweenPlaces(order.morada, fabricaA); requestA.fabrica = "fabrica a"; requestA.userID = order.userID; transp.TransportJobPrice(requestA); TransportJobPriceRequest requestB = new TransportJobPriceRequest(); requestB.DeliveryAdress = order.morada; requestB.Distance = GeocodingHelper.GetDistanceBetweenPlaces(order.morada, fabricaB); requestB.fabrica = "fabrica b"; requestB.userID = order.userID; transp.TransportJobPrice(requestB); TransportJobPriceRequest requestC = new TransportJobPriceRequest(); requestC.DeliveryAdress = order.morada; requestC.Distance = GeocodingHelper.GetDistanceBetweenPlaces(order.morada, fabricaC); requestC.fabrica = "fabrica c"; requestC.userID = order.userID; transp.TransportJobPrice(requestC); //select fabricante and tell transportadora qhere to get cd and where to deliver while (order.all3Received()==false) { System.Console.WriteLine("Waiting for CallBacks to Select the best Manufacturer"); Thread.Sleep(1000); } //TransportJobRequest request = new TransportJobRequest(); switch (order.getbestdeal()) { case("fabrica a"): order.distance = GeocodingHelper.GetDistanceBetweenPlaces(order.morada, fabricaA); order.userID = UserDB.GetLoggedInUsers().First().UserId; // "1"; adapterA.setOrder(order); //request.DeliveryAdress = order.morada; //request.Distance= requestA.Distance; //request.encomendaID = order.encomendaid; //request.fabrica="fabrica a"; //request.userID = order.userID; //transp.TransportJob(request); break; case ("fabrica b"): order.distance = GeocodingHelper.GetDistanceBetweenPlaces(order.morada, fabricaC); order.userID = UserDB.GetLoggedInUsers().First().UserId; adapterB.setOrder(order); //request.DeliveryAdress = order.morada; //request.Distance= requestA.Distance; //request.encomendaID = order.encomendaid; //request.fabrica="fabrica b"; //request.userID = order.userID; //transp.TransportJob(request); break; case ("fabrica c"): order.distance = GeocodingHelper.GetDistanceBetweenPlaces(order.morada, fabricaB); order.userID = UserDB.GetLoggedInUsers().First().UserId; adapterC.setOrder(order); //request.DeliveryAdress = order.morada; //request.Distance= requestA.Distance; //request.encomendaID = order.encomendaid; //request.fabrica="fabrica c"; //request.userID = order.userID; //transp.TransportJob(request); break; default: break; } }); thread.Start(); return new OrderStatus { status = "Encomenda Recebida" }; }