/// <summary> /// This method retrieves a order. /// </summary> /// <param name="id">Unique ID of order to retrieve</param> /// <returns>order object</returns> public Order getOrder(Int32 id) { dLog.Info("Entering method getOrder | ID: " + id); Order o = new Order(); try { MongoServer server = MongoServer.Create(); MongoDatabase db = server.GetDatabase("neatoBurrito"); //MongoCredentials credentials = new MongoCredentials("username", "password"); //MongoDatabase salaries = server.GetDatabase("salaries", credentials); using (server.RequestStart(db)) { MongoCollection <BsonDocument> coll = db.GetCollection("order"); var query = new QueryDocument("id", id); BsonDocument myDoc = coll.FindOne(query); //ensure we were passed a valid object before attempting to read if (myDoc != null) { dLog.Debug("myDoc: " + myDoc.ToString()); #region Read Order Fields o.id = id; o.isComplete = myDoc["isComplete"].AsBoolean; o.isSubmitted = myDoc["isSubmitted"].AsBoolean; o.orderDate = myDoc["orderDate"].AsDateTime; o.totalCost = Decimal.Parse(myDoc["totalCost"].AsString); #endregion //get burritos dLog.Debug("Getting burritos"); coll = db.GetCollection("burrito"); query.Clear(); query.Add("orderID", id); MongoCursor cur = coll.Find(query); o.burritos = new List <Burrito>(); foreach (var doc in cur) { myDoc = (BsonDocument)doc; Burrito b = new Burrito(); //cleaner but too many extra queries this way //o.burritos.Add(burritoSvc.getBurrito(myDoc["id"].AsInt32)); #region Read burrito Fields b.id = id; b.Beef = myDoc["beef"].AsBoolean; b.BlackBeans = myDoc["blackBeans"].AsBoolean; b.BrownRice = myDoc["brownRice"].AsBoolean; b.Chicken = myDoc["chicken"].AsBoolean; b.ChiliTortilla = myDoc["chiliTortilla"].AsBoolean; b.Cucumber = myDoc["cucumber"].AsBoolean; b.FlourTortilla = myDoc["flourTortilla"].AsBoolean; b.Guacamole = myDoc["guacamole"].AsBoolean; b.HerbGarlicTortilla = myDoc["herbGarlicTortilla"].AsBoolean; b.Hummus = myDoc["hummus"].AsBoolean; b.JalapenoCheddarTortilla = myDoc["jalapenoCheddarTortilla"].AsBoolean; b.Jalapenos = myDoc["jalapenos"].AsBoolean; b.Lettuce = myDoc["lettuce"].AsBoolean; b.Onion = myDoc["onion"].AsBoolean; b.orderID = myDoc["orderID"].AsInt32; b.PintoBeans = myDoc["pintoBeans"].AsBoolean; b.Price = Decimal.Parse(myDoc["price"].AsString); b.SalsaPico = myDoc["salsaPico"].AsBoolean; b.SalsaSpecial = myDoc["salsaSpecial"].AsBoolean; b.SalsaVerde = myDoc["salsaVerde"].AsBoolean; b.TomatoBasilTortilla = myDoc["tomatoBasilTortilla"].AsBoolean; b.Tomatoes = myDoc["tomatoes"].AsBoolean; b.WheatTortilla = myDoc["wheatTortilla"].AsBoolean; b.WhiteRice = myDoc["whiteRice"].AsBoolean; #endregion o.burritos.Add(b); } } dLog.Debug("Finishing setting order"); } } catch (Exception e2) { dLog.Error("Exception in getOrder: " + e2.Message + "\n" + e2.StackTrace); o = new Order(); } finally { //using statement above already calls RequestDone() } return(o); }