public async Task <IReadOnlyCollection <IPostingService> > GetServices(Publication publication)
    {
        var categoryId = publication.CategoryId;

        var telegramChannels = await _socialRepository.GetTelegramChannels(categoryId);

        var facebookPages = await _socialRepository.GetFacebookPages(categoryId);

        var twitterAccounts = await _socialRepository.GetTwitterAccounts();

        var slackApplications = await _socialRepository.GetSlackApplications();

        var services = new List <IPostingService>();

        foreach (var telegramChannel in telegramChannels)
        {
            services.Add(_factory.CreateTelegramService(
                             telegramChannel.Token,
                             telegramChannel.Name));
        }

        foreach (var facebookPage in facebookPages)
        {
            services.Add(_factory.CreateFacebookService(
                             facebookPage.Token,
                             facebookPage.Name));
        }

        foreach (var twitterAccount in twitterAccounts)
        {
            services.Add(_factory.CreateTwitterService(
                             twitterAccount.ConsumerKey,
                             twitterAccount.ConsumerSecret,
                             twitterAccount.AccessToken,
                             twitterAccount.AccessTokenSecret,
                             twitterAccount.Name,
                             await _publicationService.GetCategoryTags(categoryId)));
        }

        foreach (var slack in slackApplications)
        {
            services.Add(_factory.CreateSlackService(slack.WebHookUrl));
        }

        return(services.ToImmutableList());
    }