Пример #1
0
 public async Task <MenuItemDto> GetAsync(int menuItemId)
 {
     using (UnitOfWorkProvider.Create())
     {
         return(await _menuItemService.GetAsync(menuItemId, false));
     }
 }
        public async Task <List <OrderWithFullDependencyDto> > GetAllOrdersWithDependencies(String employeeEmail)
        {
            List <OrderWithFullDependencyDto> result = new List <OrderWithFullDependencyDto>();
            List <OrderDto> orders = new List <OrderDto>();

            using (UnitOfWorkProvider.Create())
            {
                int companyId = (await _employeeService.GetEmployeeByEmail(employeeEmail)).CompanyId;
                orders = await _orderService.GetOrderOfCompany(companyId);
            }

            Dictionary <int, MenuItemDto> menuItems = new Dictionary <int, MenuItemDto>();

            foreach (var o in orders)
            {
                using (UnitOfWorkProvider.Create())
                {
                    OrderWithFullDependencyDto order = new OrderWithFullDependencyDto
                    {
                        Id             = o.Id,
                        OrderStartTime = o.OrderStartTime,
                        CompanyId      = o.CompanyId,
                        OrderTable     = o.OrderTable,
                        IsClosed       = o.IsClosed,
                        Items          = new List <OrderItemWithMenuItemDto>()
                    };
                    var items = await _orderItemService.GetWithMenuItemByOrderId(order.Id);

                    order.Items.AddRange(items);
                    result.Add(order);
                }
            }

            result.ForEach(o => o.Items.ForEach(i =>
            {
                if (!menuItems.ContainsKey(i.MenuItemId))
                {
                    menuItems.Add(i.MenuItemId, null);
                }
            }));

            foreach (var menuItemId in menuItems.Keys.ToList())
            {
                using (UnitOfWorkProvider.Create())
                {
                    menuItems[menuItemId] = await _menuItemService.GetAsync(menuItemId, false);
                }
            }

            result.ForEach(o => o.Items.ForEach(i => i.MenuItem = menuItems[i.MenuItemId]));

            return(result);
        }