/// <summary> /// Adds the dishes to selected order. /// </summary> /// <param name="order">Order.</param> private void AddDishesTo(BusinessLogic.Order order) { Console.WriteLine("Меню: "); DisplayPredefinedDishes(); Console.WriteLine("Виберіть страви (перелічуйте через один пустий символ) або створіть нову (+): "); do { CommandPromtWithColor(ConsoleColor.Cyan); try { var dishesToAdd = Console.ReadLine().Split(' '); IEnumerable <int> parsedDishesToAdd; if (dishesToAdd [0].Equals("+")) { order.AddDish(CreateDish()); } else { parsedDishesToAdd = dishesToAdd.Select(x => int.Parse(x) - 1); foreach (var i in parsedDishesToAdd) { order.AddDish(predefinedDishes [i]); } } } catch (Exception) { Console.WriteLine("Помилка при доданні страви до замовлення. Спробуйте ще раз!"); continue; } break; } while(true); }
/// <summary> /// Initializes a new instance of the <see cref="Restaurant.Controller"/> class. /// </summary> public Controller() { orderList = new List <BusinessLogic.Order> (); predefinedDishes = new List <BusinessLogic.Dish> (); predefinedIngredients = new List <BusinessLogic.Ingredient> (); CurrentOrder = null; // Reading configuration file values try { // Data files ordersFile = ConfigurationManager.AppSettings ["orders"]; predefinedDishesFile = ConfigurationManager.AppSettings ["predefinedDishes"]; predefinedIngredientsFile = ConfigurationManager.AppSettings ["predefinedIngredients"]; minimalCookTime = Convert.ToDouble(ConfigurationManager.AppSettings ["minimalCookTime"]); dishMargin = Convert.ToDouble(ConfigurationManager.AppSettings ["dishMargin"]); maximumTableNumber = Convert.ToInt32(ConfigurationManager.AppSettings ["maximumTableNumber"]); // Runtime store collections predefinedDishes = FileManager.DeserializeCollectionFromFile <BusinessLogic.Dish> (predefinedDishesFile); predefinedIngredients = FileManager.DeserializeCollectionFromFile <BusinessLogic.Ingredient> (predefinedIngredientsFile); orderList = FileManager.DeserializeCollectionFromFile <Order> (ordersFile); } catch (FormatException) { Console.WriteLine("Помилка при читанні конфігураційного файла."); } catch (Exception) { Console.WriteLine("Конфігураційні файли створені."); //Console.WriteLine ("{0} -> {1}", e.Message, e.InnerException.Message); } }
public int InsertUserOrder(Order objRequest) { int objResponse = 0; try { SqlParameter[] sqlParams = new SqlParameter[3]; sqlParams[0] = new SqlParameter("@USERID", SqlDbType.UniqueIdentifier); sqlParams[0].Value = objRequest.USERID; sqlParams[1] = new SqlParameter("@ORDERID", SqlDbType.VarChar); sqlParams[1].Value = objRequest.ORDERID; sqlParams[2] = new SqlParameter("@TRANSACTIONTYPE", SqlDbType.Int); sqlParams[2].Value = objRequest.TRANSACTIONTYPE; int result = Convert.ToInt32(CExecuteScalar("USP_INSERTUSERORDER", sqlParams)); if (result > 0) { objResponse = result; } } catch (Exception ex) { InsertWebsiteLog(Common.TOKEN, "Transaction.cs", "InsertUserOrder", JsonConvert.SerializeObject(objRequest), ex.ToString()); } return objResponse; }
/// <summary> /// Creates the order. /// </summary> /// <returns>Order.</returns> private BusinessLogic.Order CreateOrder() { Console.WriteLine("Створення замовлення..."); var order = new BusinessLogic.Order(); AddDishesTo(order); return(order); }
/// <summary> /// Shows the main menu. /// </summary> /// <returns>Status.</returns> private int ShowMainMenu() { // Store order number int parsedInput = 0; if (orderList.Count == 0) { Console.WriteLine("Немає замовлень. Створюємо..."); CurrentOrder = CreateOrder(); } else { Console.WriteLine("Існуючі замовлення:"); DisplayOrders(); Console.WriteLine($"Виберіть номер замовлення або створіть нове (1-{orderList.Count}/+), подвійний Enter для виходу: "); CommandPromtWithColor(ConsoleColor.Cyan); var input = Console.ReadLine(); try { bool isNumber = int.TryParse(input.ToString(), out parsedInput); if (isNumber) { CurrentOrder = orderList.ElementAt(parsedInput - 1); orderList.RemoveAt(parsedInput - 1); } else { if (input.ToString().Equals("+")) { CurrentOrder = CreateOrder(); // Incrementing number of all orders to get new order index. parsedInput = orderList.Count + 1; } else if (input.ToString().Equals("")) { // First Enter pressed Console.WriteLine("Натисніть ще раз для виходу"); CurrentOrder = null; if (Console.ReadLine().Equals("")) { // Second Enter pressed return(0); } else { return(1); } } else { throw new FormatException(); } } } catch (ArgumentOutOfRangeException) { Console.WriteLine("Такого замовлення не існує."); return(1); } catch (FormatException) { Console.WriteLine("Неправильні вхідні дані. Спробуйте ще раз!"); return(1); } catch (Exception e) { Console.WriteLine($"Виникла помилка: {e.Message}"); return(1); } } return(OrderMenu(CurrentOrder, parsedInput)); }
/// <summary> /// Shows the specific dish menu in order. /// </summary> /// <param name="currentOrder">Order.</param> private void EditSpecificDishMenuIn(ref BusinessLogic.Order currentOrder) { bool done = false; Console.Write("Виберіть номер страви для редагування: "); try { var userOption = int.Parse(Console.ReadLine()) - 1; while (!done) { if (userOption >= 0 && userOption < currentOrder.Dishes.Count) { Console.WriteLine(currentOrder.Dishes.ElementAt(userOption)); Console.WriteLine("1. Додати інгрідієнтів"); Console.WriteLine("2. Видалити інгрідієнти"); Console.WriteLine("3. Змінити інгредієнт"); Console.WriteLine("4. Змінити назву страви"); Console.WriteLine("5. Змінити ціну на страву"); Console.WriteLine("6. Змінити час приготування страви"); Console.WriteLine("7. Повернутися"); CommandPromtWithColor(ConsoleColor.Cyan); switch (int.Parse(Console.ReadLine())) { case 1: Console.WriteLine("Існуючі інгредієнти: "); DisplayPredefinedIngredients(); do { Console.Write("Виберіть інгредінти для додавання (розділяйте через один пустий символ) або створіть свій (+): "); var ingredientsInput = Console.ReadLine().Split(' '); try { IEnumerable <int> parsedIngedientsInput; if (ingredientsInput [0].Equals("+")) { currentOrder.Dishes.ElementAt(userOption).AddIngredient(CreateIngredientUsing(predefinedIngredients)); } else { parsedIngedientsInput = ingredientsInput.Select(x => int.Parse(x) - 1); foreach (var i in parsedIngedientsInput) { currentOrder.Dishes.ElementAt(userOption).AddIngredient(predefinedIngredients.ElementAt(i)); } } } catch (Exception) { Console.WriteLine("Помилка при додаванні інгредієнтів."); continue; } break; } while(true); break; case 2: do { Console.Write("Виберіть номера інгредієнтів для видалення (розділяйте через один пустий символ): "); var ingredientsToRemove = Console.ReadLine().Split(' '); try { IEnumerable <int> parsedIngredientsToRemove = ingredientsToRemove.Select(x => int.Parse(x) - 1); foreach (var i in parsedIngredientsToRemove) { currentOrder.Dishes.ElementAt(userOption).RemoveIngredientById(i); } } catch (Exception) { Console.WriteLine("Помилка при введенні номерів інгредієнтів для видалення."); continue; } Console.WriteLine("Видалення успішне."); break; } while (true); break; case 3: Console.WriteLine(currentOrder.Dishes.ElementAt(userOption).PrintIngredients()); Console.Write("Номер інгредієнта для зміни: "); try { var ingredientToChange = currentOrder.Dishes.ElementAt(userOption).Ingredients.ElementAt(int.Parse(Console.ReadLine()) - 1); predefinedIngredients.Remove(ingredientToChange); currentOrder.Dishes.ElementAt(userOption).RemoveIngredient(ingredientToChange); Console.Write("Нове ім'я: "); var newIngredientName = Console.ReadLine(); Console.Write("Нова ціна: "); var newIngredientPrice = double.Parse(Console.ReadLine()); var newIngredient = new BusinessLogic.Ingredient(newIngredientName, newIngredientPrice); predefinedIngredients.Add(newIngredient); currentOrder.Dishes.ElementAt(userOption).AddIngredient(newIngredient); Console.WriteLine("Інгредієнт успішно змінено!"); } catch (FormatException) { Console.WriteLine("Невірний номер інгредієнта. Спробуйте ще раз!"); } catch (Exception) { Console.WriteLine("Помилка при зміні інгрідієнта."); continue; } break; case 4: Console.Write("Бажане ім'я для страви: "); currentOrder.SetDishName(currentOrder.Dishes.ElementAt(userOption), Console.ReadLine()); break; case 5: do { Console.Write("Ціна на страву: "); try { var dishPrice = double.Parse(Console.ReadLine()); currentOrder.SetDishPrice(currentOrder.Dishes.ElementAt(userOption), dishPrice); } catch (Exception) { continue; } break; } while(true); break; case 6: Console.Write("Час приготування: "); var dishTime = double.Parse(Console.ReadLine()); currentOrder.SetDishCookTime(currentOrder.Dishes.ElementAt(userOption), dishTime); Console.WriteLine("Успішне змінений час приготування!\n"); break; case 7: done = true; break; default: throw new ArgumentOutOfRangeException("Немає такої опції."); } currentOrder.UpdateTotalCost(); } else { throw new ArgumentOutOfRangeException("Немає такої опції."); } } } catch (FormatException) { Console.WriteLine("На вході отримано не число."); } catch (ArgumentOutOfRangeException) { Console.WriteLine("Вихід за межі діапазону."); } catch (ArgumentNullException) { Console.WriteLine("Отримано пустий параметр."); } }
/// <summary> /// Shows the edit dishes menu with selected order. /// </summary> /// <param name="order">Order.</param> private void EditOrderDishesMenu(BusinessLogic.Order order) { bool done = false; while (!done) { Console.WriteLine("Страви в замовленні:\n"); Console.WriteLine(order.PrintDishes()); Console.WriteLine("1. Додати страву"); Console.WriteLine("2. Редагувати страву"); Console.WriteLine("3. Видалити страву"); Console.WriteLine("4. Повернутися"); CommandPromtWithColor(ConsoleColor.Cyan); try { var userOption = int.Parse(Console.ReadLine()); switch (userOption) { case 1: AddDishesTo(order); break; case 2: EditSpecificDishMenuIn(ref order); break; case 3: do { Console.Write("Виберіть страви (розділяйте одним пустим символом): "); try { var dishesToRemove = Console.ReadLine().Split(' '); IEnumerable <int> parsedDishesToRemove = dishesToRemove.Select(x => int.Parse(x) - 1); foreach (var i in parsedDishesToRemove) { order.RemoveDishById(i); } Console.WriteLine("Видалення успішне."); } catch (Exception) { Console.WriteLine("Проблема при видаленні страв(и)"); continue; } break; } while(true); break; case 4: done = true; break; default: throw new ArgumentOutOfRangeException("Немає такої опції."); } } catch (FormatException) { Console.WriteLine("На вході отримано не число."); } catch (ArgumentOutOfRangeException e) { Console.WriteLine(e.ParamName); } } }
/// <summary> /// Shows order menu with selected orderNumber. /// </summary> /// <returns>Status</returns> /// <param name="order">Order.</param> /// <param name="orderNumber">Order number.</param> private int OrderMenu(BusinessLogic.Order order, int orderNumber) { int userOption = 0; bool finished = false; while (!finished) { Console.WriteLine($"Працюємо із замовленням №{orderNumber}"); Console.WriteLine(CurrentOrder.ToString()); Console.WriteLine("Виберіть опцію:"); Console.WriteLine("1. Видалити замовлення"); Console.WriteLine("2. Редагувати замовлення"); Console.WriteLine("3. Задати кінцеву ціну (???)"); Console.WriteLine("4. Задати номер столика"); Console.WriteLine("5. Оформити замовлення"); CommandPromtWithColor(ConsoleColor.Cyan); try { userOption = int.Parse(Console.ReadLine()); } catch (FormatException) { Console.WriteLine("На вході отримано не число."); } try { switch (userOption) { case 1: orderList.Remove(order); Console.WriteLine("Поточне замовлення видалене. Повертаємось в головне меню"); finished = true; break; case 2: EditOrderDishesMenu(order); break; case 3: Console.Write("Введіть прийнятне число (в регіональній валюті): "); var newOrderTotalCost = float.Parse(Console.ReadLine()); if (newOrderTotalCost > 0) { order.TotalCost = newOrderTotalCost; } else { throw new ArgumentException("Сума не може бути від'ємною."); } break; case 4: Console.Write($"Виберіть номер столика (1-{maximumTableNumber}): "); var tableNumber = int.Parse(Console.ReadLine()); if (tableNumber > 0 && tableNumber <= maximumTableNumber) { order.TableNumber = tableNumber; } else { throw new ArgumentOutOfRangeException($"Немає столика №{tableNumber}."); } break; case 5: orderList.Add(order); finished = true; break; default: throw new ArgumentOutOfRangeException("Немає такої опції."); } } catch (FormatException) { Console.WriteLine("В числове поле не можна записати таке значення."); } catch (ArgumentOutOfRangeException e) { Console.WriteLine(e.ParamName); } catch (Exception e) { Console.WriteLine(e.Message); } } return(1); }
public void BeforeRun() { order = new BusinessLogic.Order (); }
public void BeforeRun() { order = new BusinessLogic.Order(); }
private int InsertOrder() { int _result = 0; try { Order objOrder = new Order(); objOrder.ORDERID = "O" + Convert.ToString(DateTime.Now.ToString("yyyyMMddHHmmss")); objOrder.USERID = new Guid(Common.TOKEN); objOrder.TRANSACTIONTYPE = 1; objTransaction = new Transaction(); int result = objTransaction.InsertUserOrder(objOrder); if (result > 0) { _result = result; } } catch (Exception ex) { objUser.InsertWebsiteLog(Common.TOKEN, "ucUserCart.ascx.cs", "InsertOrder", "", ex.ToString()); } return _result; }
/// <summary> /// Shows the main menu. /// </summary> /// <returns>Status.</returns> private int ShowMainMenu() { // Store order number int parsedInput = 0; if (orderList.Count == 0) { Console.WriteLine ("Немає замовлень. Створюємо..."); CurrentOrder = CreateOrder (); } else { Console.WriteLine ("Існуючі замовлення:"); DisplayOrders (); Console.WriteLine ($"Виберіть номер замовлення або створіть нове (1-{orderList.Count}/+), подвійний Enter для виходу: "); CommandPromtWithColor (ConsoleColor.Cyan); var input = Console.ReadLine (); try { bool isNumber = int.TryParse (input.ToString (), out parsedInput); if (isNumber) { CurrentOrder = orderList.ElementAt (parsedInput - 1); orderList.RemoveAt (parsedInput - 1); } else { if (input.ToString ().Equals ("+")) { CurrentOrder = CreateOrder (); // Incrementing number of all orders to get new order index. parsedInput = orderList.Count + 1; } else if (input.ToString ().Equals ("")) { // First Enter pressed Console.WriteLine ("Натисніть ще раз для виходу"); CurrentOrder = null; if (Console.ReadLine ().Equals ("")) // Second Enter pressed return 0; else return 1; } else { throw new FormatException (); } } } catch (ArgumentOutOfRangeException) { Console.WriteLine ("Такого замовлення не існує."); return 1; } catch (FormatException) { Console.WriteLine ("Неправильні вхідні дані. Спробуйте ще раз!"); return 1; } catch (Exception e) { Console.WriteLine ($"Виникла помилка: {e.Message}"); return 1; } } return OrderMenu (CurrentOrder, parsedInput); }
/// <summary> /// Creates the order. /// </summary> /// <returns>Order.</returns> private BusinessLogic.Order CreateOrder() { Console.WriteLine ("Створення замовлення..."); var order = new BusinessLogic.Order (); AddDishesTo (order); return order; }