public GetFeedsFromVkProcess(IVkConnectionBuilder vkConnectionBuilder, IVkGroupRepository groupRepository, ILog log, IConfigurationProvider configProvider, IDateTimeHelper dateTimeHelper, IWebUtilities webUtilities)
        {
            this.log                 = log;
            this.configProvider      = configProvider;
            this.dateTimeHelper      = dateTimeHelper;
            this.webUtilities        = webUtilities;
            this.vkConnectionBuilder = vkConnectionBuilder;
            this.groupRepository     = groupRepository;
            IProcessingStrategy strategy = new ProcessingStrategy(configProvider, groupRepository, this.dateTimeHelper);

            this.feedProviders = new List <IFeedProvider>
            {
                new WallPostFeedProvider(this.log, this.dateTimeHelper, strategy),
                new WallPostCommentsFeedProvider(this.log, Factory.GetInstance <IPostRepository>(), this.dateTimeHelper, strategy),
                new PhotoFeedProvider(this.log, this.dateTimeHelper, strategy),
                new PhotoAlbumDetailsFeedProvider(Factory.GetInstance <IPhotoRepository>(), this.dateTimeHelper, this.log),
                new MembersFeedProvider(this.log, this.dateTimeHelper),
                new MembersCountFeedProvider(this.log, this.dateTimeHelper),
                new MemberLikesFeedProvider(this.log, this.dateTimeHelper, Factory.GetInstance <IListRepository>(), Factory.GetInstance <IVkResponseMapper>(), strategy),
                new MemberSharesFeedProvider(this.log, this.dateTimeHelper, Factory.GetInstance <IListRepository>(), Factory.GetInstance <IVkResponseMapper>(), strategy),
                new MemberSubscriptionFeedProvider(this.log, Factory.GetInstance <IListRepository>(), Factory.GetInstance <IVkResponseMapper>(), Factory.GetInstance <IVkDataLimits>(), this.dateTimeHelper),
                new VideoFeedProvider(this.log, this.dateTimeHelper, strategy),
                new VideoCommentFeedProvider(this.log, Factory.GetInstance <IVideoRepository>(), this.dateTimeHelper, strategy),
                new VideoLikesFeedProvider(this.log, Factory.GetInstance <IVideoRepository>(), Factory.GetInstance <IVkResponseMapper>(), this.dateTimeHelper, strategy),
                new AdminsFeedProvider(this.log, this.dateTimeHelper),
                new TopicFeedProvider(this.log, this.dateTimeHelper, strategy),
                new TopicCommentFeedProvider(this.log, Factory.GetInstance <ITopicRepository>(), this.dateTimeHelper, strategy)
            }.ToDictionary(x => x.SupportedFeedType);
        }
 public VkDataFeedsParserProcess(IVkGroupRepository groupRepository, IUnitOfWorkProvider transactionProvider, IProcessorFactory processorFactory, IConfigurationProvider configProvider, IDateTimeHelper dateTimeHelper, IWebUtilities webUtilities, ILog log)
 {
     this.log = log;
     this.processorFactory    = processorFactory;
     this.configProvider      = configProvider;
     this.dateTimeHelper      = dateTimeHelper;
     this.webUtilities        = webUtilities;
     this.groupRepository     = groupRepository;
     this.transactionProvider = transactionProvider;
 }