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)); } }
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()); }