/** * Get all shopping lists by user id * */ public static List <ShoppingList> GetAll(int userid) { List <ShoppingList> sl = new List <ShoppingList>(); //form query String query = @"SELECT * FROM shoppinglist WHERE user_id = '" + userid + "'"; DBConnector.initAsync(); MySqlCommand cmd = new MySqlCommand(query, DBConnector.conn); MySqlDataReader reader = cmd.ExecuteReader(); //sl.Add(new ShoppingList(((int)reader["idshoppinglist"]))) //add shopping lists to collection while (reader.Read()) { //assign shopping list id and recipes id int sId = (int)reader["idshoppinglist"]; int rId = (int)reader["recipe_id"]; int amount = (int)reader["amount"]; bool addRecipe = true; bool addShoppingList = true; for (int i = 0; i < sl.Count; i++) { if (sl[i].id == sId) { addShoppingList = false; for (int j = 0; j < sl[i].recipes.Count; j++) { if (sl[i].recipes[j].id == rId) { addRecipe = false; } } if (addRecipe) { foreach (Recipe r in RecipeManager.instance.GetCurrentUser().recipes) { if (r.id == rId) { for (int k = 0; k < amount; k++) { sl[sl.Count - 1].AddRecipe(r); } } } } } } if (addShoppingList) { sl.Add(new ShoppingList((sId))); foreach (Recipe r in RecipeManager.instance.GetCurrentUser().recipes) { if (r.id == rId) { for (int k = 0; k < amount; k++) { sl[sl.Count - 1].AddRecipe(r); } sl[sl.Count - 1].date = DateTime.Now; //TODO: NEEDS TO BE THE DB DATE! } } } } DBConnector.conn.Close(); //get last shopping list index and assign it String queryMax = @"SELECT MAX(idshoppinglist) AS SINDEX FROM shoppinglist"; DBConnector.initAsync(); MySqlCommand cmdMax = new MySqlCommand(queryMax, DBConnector.conn); MySqlDataReader readerMax = cmdMax.ExecuteReader(); while (readerMax.Read()) { RecipeManager.instance.lastShoppingID = (int)readerMax["SINDEX"] + 1; } DBConnector.conn.Close(); return(sl); }
/** * Add shopping list to given user id * */ public static int AddShoppinglistAsync(ShoppingList sl, int id = -1) { int usedId = 0; bool added = false; Dictionary <int, int> recipeList = new Dictionary <int, int>(); //get last shopping id int useIndex = RecipeManager.instance.lastShoppingID; if (id > -1) { useIndex = id; } for (int i = 0; i < sl.recipes.Count; i++) { int amountOne = 0; for (int y = 0; y < sl.recipes.Count; y++) { if (sl.recipes[i].id == sl.recipes[y].id) { amountOne++; } } if (!recipeList.ContainsKey(sl.recipes[i].id)) { recipeList.Add(sl.recipes[i].id, amountOne); } } foreach (KeyValuePair <int, int> item in recipeList) { if (item.Value > 0) { //form query string query = @"INSERT INTO shoppinglist VALUES (" + useIndex + ", 'NOW()', " + item.Key + ", " + RecipeManager.instance.GetCurrentUser().id + ", " + item.Value + ")"; DBConnector.initAsync(); MySqlCommand cmd = new MySqlCommand(query, DBConnector.conn); cmd.ExecuteNonQuery(); added = true; DBConnector.conn.Close(); } } if (added) { usedId = RecipeManager.instance.lastShoppingID; RecipeManager.instance.lastShoppingID++; return(usedId); } else { return(-1); } /* * String query = @"INSERT INTO shoppinglist VALUES ('NULL', 'NOW()', ''"; * DBConnector.initAsync(); * MySqlCommand cmd = new MySqlCommand(query, DBConnector.conn); * cmd.ExecuteNonQuery(); * * * foreach(Recipe r in sl.recipes) * { * IngredientDAO.AddIngredient((int)cmd.LastInsertedId, r); * } */ }