private List <CustomerOrder> ParseOrders(string orderStr) { List <CustomerOrder> orderList = new List <CustomerOrder>(); var orderElements = orderStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);; foreach (string element in orderElements) { //(Fried sausage,cowgirl,1.0); if (element.Length > 0) { string sourceStr = element.Substring(1, element.Length - 2); string[] infos = sourceStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (infos.Length >= 3 && infos.Length <= 4) { var order = new CustomerOrder(); if (infos[0].Contains("&")) { int pos = infos[0].IndexOf('&'); order.foods.Add(infos[0].Substring(0, pos)); order.foods.Add(infos[0].Substring(pos + 1, infos[0].Length - pos - 1)); } else { order.foods.Add(infos[0]); } order.customer = infos[1]; //MyDebug.WriteLine(sourceStr + " ==== " + infos[2]); order.weight = infos[2].ToFloat(); if (infos.Length == 4) { order.latestFirstCome = infos[3].ToInt32(); } orderList.Add(order); MyDebug.Assert(CustomerDataManager.GetInstance().IsCustomerKey(order.customer), "Error customer key : " + order.customer + ", Order :" + element); m_customers.Add(order.customer); if (order.foods.Count == 1) { MyDebug.Assert(FoodDataManager.GetInstance().IsFoodKey(order.foods[0]), "Error food key : " + order.foods[0] + ", Order :" + element); m_foods.Add(order.foods[0]); } else { string combineFood = string.Format("{0}&{1}", order.foods[0], order.foods[1]); MyDebug.Assert(FoodDataManager.GetInstance().IsFoodKey(combineFood), "Error food key : " + combineFood + ", Order :" + element); m_foods.Add(combineFood); } } else { MyDebug.Assert(false, element); } } } return(orderList); }
private List <CustomerOrder> ParseSpecialOrders(string orderStr) { List <CustomerOrder> orderList = new List <CustomerOrder>(); var orderElements = orderStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);; foreach (string element in orderElements) { //([7,8],Fried bread,ents); if (element.Length > 0) { // 去掉括号 string sourceStr = element.Substring(2, element.Length - 3); var order = new CustomerOrder(); int index = sourceStr.IndexOf(']'); string intervalStr = sourceStr.Substring(0, index); string[] interval = intervalStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries); MyDebug.Assert(interval.Length == 2, ""); order.interval.min = interval[0].ToInt32(); order.interval.max = interval[1].ToInt32(); int lastIdx = sourceStr.LastIndexOf(','); string foodName = sourceStr.Substring(index + 2, lastIdx - index - 2); if (foodName.Contains("&")) { int pos = foodName.IndexOf('&'); order.foods.Add(foodName.Substring(0, pos)); order.foods.Add(foodName.Substring(pos + 1, foodName.Length - pos - 1)); } else { order.foods.Add(foodName); } string customerName = sourceStr.Substring(lastIdx + 1, sourceStr.Length - lastIdx - 1); order.customer = customerName; orderList.Add(order); MyDebug.Assert(CustomerDataManager.GetInstance().IsCustomerKey(order.customer), "Error customer key : " + order.customer + ", Order :" + element); m_customers.Add(order.customer); if (order.foods.Count == 1) { MyDebug.Assert(FoodDataManager.GetInstance().IsFoodKey(order.foods[0]), "Error food key : " + order.foods[0] + ", Order :" + element); m_foods.Add(order.foods[0]); } else { string combineFood = string.Format("{0}&{1}", order.foods[0], order.foods[1]); MyDebug.Assert(FoodDataManager.GetInstance().IsFoodKey(combineFood), "Error food key : " + combineFood + ", Order :" + element); m_foods.Add(combineFood); } } } return(orderList); }
static public FoodDataManager GetInstance() { if (_instance == null) { _instance = new FoodDataManager(); } return(_instance); }
public void parseRequirement(string requirementStr) { if (requirementStr.Length > 0) { var reqStrList = requirementStr.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);; foreach (string reqStr in reqStrList) { if (reqStr == "no_lost") { requirements.allowLostCustomer = false; } else if (reqStr == "no_burn") { requirements.allowBurn = false; } else { if (reqStr.Length > 0 && reqStr.Contains("*")) { int index = reqStr.IndexOf('*'); string key = reqStr.Substring(0, index); int num = reqStr.Substring(index + 1, reqStr.Length - index - 1).ToInt32(); if (CustomerDataManager.GetInstance().IsCustomerKey(key)) { requirements.requiredCustomers.Add(new Requirements.NameAndNumber(key, num)); } else if (FoodDataManager.GetInstance().IsFoodKey(key)) { requirements.requiredFoods.Add(new Requirements.NameAndNumber(key, num)); } } } } } }
public void AddOrders(List <OrderData> orders) { var cnn = new SQLiteConnection(m_connectString); if (cnn.State != System.Data.ConnectionState.Connecting) { cnn.Open(); var cmd = cnn.CreateCommand(); cmd.CommandText = "INSERT INTO orderfood(customer_id,customer_key,Name_CN,food_id,food_key,foodname_cn,wait_time,tips,consider_time) VALUES(@customer_id,@customer_key,@Name_CN,@food_id,@food_key,@foodname_cn,@wait_time,@tips,@consider_time)"; foreach (OrderData ord in orders) { var cusInfo = CustomerDataManager.GetInstance().GetCustomer(ord.customer); var foodInfo = FoodDataManager.GetInstance().GetFood(ord.food); cmd.Parameters.Add("customer_id", System.Data.DbType.Int32).Value = cusInfo.id; cmd.Parameters.Add("customer_key", System.Data.DbType.String).Value = cusInfo.key; cmd.Parameters.Add("Name_CN", System.Data.DbType.String).Value = cusInfo.display_name["cn"]; cmd.Parameters.Add("food_id", System.Data.DbType.Int32).Value = foodInfo.id; cmd.Parameters.Add("food_key", System.Data.DbType.String).Value = foodInfo.key; cmd.Parameters.Add("foodname_cn", System.Data.DbType.String).Value = foodInfo.display_name["cn"]; cmd.Parameters.Add("wait_time", System.Data.DbType.Double).Value = ord.wait_time; cmd.Parameters.Add("tips", System.Data.DbType.Int32).Value = ord.tip; cmd.Parameters.Add("consider_time", System.Data.DbType.Double).Value = ord.consider_time; int ret = cmd.ExecuteNonQuery(); MyDebug.WriteLine("Add Order result : " + ret); } cmd.Dispose(); } cnn.Close(); cnn.Dispose(); }
public void UpdateOrders(List <OrderData> orders) { var cnn = new SQLiteConnection(m_connectString); if (cnn.State != System.Data.ConnectionState.Connecting) { cnn.Open(); string addCmd = "INSERT INTO orderfood(customer_id,customer_key,Name_CN,food_id,food_key,foodname_cn,wait_time,tips,consider_time) VALUES(@customer_id,@customer_key,@Name_CN,@food_id,@food_key,@foodname_cn,@wait_time,@tips,@consider_time)"; foreach (OrderData ord in orders) { //cmd.CommandText = string.Format("SELECT * FROM orderfood WHERE customer_key={0},food_key={1}", ord.customer, ord.food); var findCmd = cnn.CreateCommand(); findCmd.CommandText = string.Format("SELECT food_key " + "FROM orderfood " + "WHERE customer_key='{0}' AND food_key='{1}'", ord.customer, ord.food); var reader = findCmd.ExecuteReader(); bool isExsit = reader.Read(); reader.Close(); findCmd.Dispose(); var updateOrAddCmd = cnn.CreateCommand(); if (isExsit) {// 找到了 updateOrAddCmd.CommandText = string.Format("UPDATE orderfood " + "SET customer_id=@customer_id,customer_key=@customer_key,Name_CN=@Name_CN,food_id=@food_id,food_key=@food_key,foodname_cn=@foodname_cn,wait_time=@wait_time,tips=@tips,consider_time=@consider_time " + "WHERE customer_key='{0}' AND food_key='{1}'", ord.customer, ord.food); MyDebug.WriteLine("Update Order"); } else {// 找不到 updateOrAddCmd.CommandText = addCmd; MyDebug.WriteLine("Create Order"); } var cusInfo = CustomerDataManager.GetInstance().GetCustomer(ord.customer); var foodInfo = FoodDataManager.GetInstance().GetFood(ord.food); updateOrAddCmd.Parameters.Add("customer_id", System.Data.DbType.Int32).Value = cusInfo.id; updateOrAddCmd.Parameters.Add("customer_key", System.Data.DbType.String).Value = cusInfo.key; updateOrAddCmd.Parameters.Add("Name_CN", System.Data.DbType.String).Value = cusInfo.display_name["cn"]; updateOrAddCmd.Parameters.Add("food_id", System.Data.DbType.Int32).Value = foodInfo.id; updateOrAddCmd.Parameters.Add("food_key", System.Data.DbType.String).Value = foodInfo.key; updateOrAddCmd.Parameters.Add("foodname_cn", System.Data.DbType.String).Value = foodInfo.display_name["cn"]; updateOrAddCmd.Parameters.Add("wait_time", System.Data.DbType.Double).Value = ord.wait_time; updateOrAddCmd.Parameters.Add("tips", System.Data.DbType.Int32).Value = ord.tip; updateOrAddCmd.Parameters.Add("consider_time", System.Data.DbType.Double).Value = ord.consider_time; try { int updateOrAddResult = updateOrAddCmd.ExecuteNonQuery(); MyDebug.WriteLine("Update Order result : " + updateOrAddResult); } catch (Exception e) { MyDebug.WriteLine(e); } updateOrAddCmd.Dispose(); } } cnn.Close(); }