예제 #1
0
        public static async Task AppendOrderInfo(this StringBuilder sb, CoffeeService coffee, List <Order> orders)
        {
            var pickedCount = orders.Count(o => o.IsPicked);

            if (pickedCount > 0)
            {
                sb.AppendLine($"총 {orders.Count}명 중 {pickedCount}명 당첨");
                var pickedOrders = orders
                                   .Where(o => o.IsPicked)
                                   .OrderBy(o => o.MenuId)
                                   .ToArray();

                await sb.AppendOrders(coffee, pickedOrders);

                var menus      = (await coffee.GetMenusAsync()).ToDictionary(m => m.Id);
                var menuCounts = pickedOrders.GroupBy(o => o.MenuId).Select(grouping => (grouping.Key, grouping.Count()));
                var steamCount = menuCounts.Select((info) => menus[info.Key].SteamMilkNeeded ? info.Item2 : 0).Sum();

                if (steamCount > 0)
                {
                    sb.AppendLine($"*스팀밀크* : {steamCount} 잔");
                }
            }
            else
            {
                sb.AppendLine($"총 {orders.Count}명");
                await sb.AppendOrders(coffee, orders.OrderBy(o => o.OrderedAt));
            }
        }
예제 #2
0
        public async Task GetMenu(CoffeeService coffee, User user, string text, SlackResponse response)
        {
            var menus = await coffee.GetMenusAsync();

            var enabledMenus  = menus.Where(m => m.Enabled);
            var disabledMenus = menus.Where(m => !m.Enabled).ToArray();

            var sb = new StringBuilder("*메뉴*").AppendLine();

            foreach (var m in enabledMenus)
            {
                sb.AppendLine($"*{m.Id}* - {m.Description}: {m.Price}원");
            }

            if (disabledMenus.Length > 0)
            {
                sb.AppendLine().AppendLine("*비활성화된 메뉴*");
                foreach (var m in disabledMenus)
                {
                    sb.AppendLine($"{m.Description}");
                }
            }

            response.Ephemeral(sb.ToString());
        }