public async Task <BannersGetByMenuIdResponse> BannerGetByMenuId(BannerGetByMenuIdRequest request)
        {
            BannersGetByMenuIdResponse response = new BannersGetByMenuIdResponse();

            try
            {
                var banners = await _bannerService.GetBannerByMenuId(request.MenuId);

                if (banners?.Length > 0)
                {
                    var bannerIds   = banners.Select(p => p.Id).Distinct().ToArray();
                    var bannerItems = (await _bannerService.GetBannerItemByBannerId(bannerIds)).GroupBy(p => p.BannerId).ToDictionary(p => p.Key, p => p.Select(q => q.ToModel()).ToArray());
                    response.Banners = banners.Select(p => p.ToModel()).ToArray();
                    foreach (var bannerViewModel in response.Banners)
                    {
                        bannerViewModel.BannerItems = bannerItems.ContainsKey(bannerViewModel.Id)
                            ? bannerItems[bannerViewModel.Id]
                            : new BannerItemViewModel[0];
                    }
                }
            }
            catch (Exception e)
            {
                response.SetFail(e);
                _logger.LogError(e, e.Message, request);
            }
            return(response);
        }
        public async Task <ICommandResult> Handle(MenuBannerMappingAddCommand message)
        {
            try
            {
                ICommandResult result;
                RMenu          rMenu = await _menuService.Get(message.MenuId);

                if (rMenu == null)
                {
                    result = new CommandResult()
                    {
                        Message      = "Menu not found",
                        ObjectId     = "",
                        Status       = CommandResult.StatusEnum.Fail,
                        ResourceName = ResourceKey.Template_NotFound
                    };
                    return(result);
                }
                RBanner[] rbanners = await _bannerService.GetBannerByMenuId(rMenu.Id);

                Menu    menu   = new Menu(rMenu, rbanners);
                RBanner banner = await _bannerService.GetBannerById(message.BannerId);

                var bannerAdd = menu.AddBanner(banner);
                await _menuService.AddMenuBannerMapping(menu.Id, bannerAdd.Id);

                result = new CommandResult()
                {
                    Message  = "",
                    ObjectId = menu.Id,
                    Status   = CommandResult.StatusEnum.Sucess
                };
                return(result);
            }
            catch (Exception e)
            {
                e.Data["Param"] = message;
                ICommandResult result = new CommandResult()
                {
                    Message = e.Message,
                    Status  = CommandResult.StatusEnum.Fail
                };
                return(result);
            }
        }