public async Task <string> Add(string rawOrder) { if (string.IsNullOrEmpty(rawOrder)) { return(null); } string dayTime = GetDayTime(rawOrder); if (string.IsNullOrEmpty(dayTime)) { return(null); } rawOrder = GetCleanOrder(rawOrder); if (string.IsNullOrEmpty(rawOrder)) { return(null); } List <int> orderList = rawOrder.Split().Select(Int32.Parse).ToList(); orderList.Sort(); Order order = new Order { DayTime = dayTime }; await _orderRepository.Add(order); int lastDishType = 0; foreach (int dishType in orderList) { bool haveError = false; Dish dish = await _dishRepository.GetByDishType(dayTime, dishType); if (dish == null) { dish = await _dishRepository.GetByDishType(dayTime, 99); haveError = true; } else if ((lastDishType == dishType) && !dish.OrderMany) { dish = await _dishRepository.GetByDishType(dayTime, 99); haveError = true; } lastDishType = dishType; OrderDish orderDish = new OrderDish(); orderDish.order = order; orderDish.dish = dish; await _orderDishRepository.Add(orderDish); if (haveError) { break; } ; } return(await GetRawOrderLine(order)); }