/*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a <see cref="PageLevelNavigationViewComponentBase{T}"/> with necessary dependencies.
 /// </summary>
 protected PageLevelNavigationViewComponentBase(
   ITopicRepository topicRepository,
   IHierarchicalTopicMappingService<T> hierarchicalTopicMappingService
 ) : base(
   topicRepository,
   hierarchicalTopicMappingService
 ) {}
 /*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a <see cref="MenuViewComponentBase{T}"/> with necessary dependencies.
 /// </summary>
 /// <returns>A topic controller for loading OnTopic views.</returns>
 public PageLevelNavigationViewComponent(
   ITopicRepository topicRepository,
   IHierarchicalTopicMappingService<NavigationTopicViewModel> hierarchicalTopicMappingService
 ) : base(
   topicRepository,
   hierarchicalTopicMappingService
 ) {}
    /*==========================================================================================================================
    | CONSTRUCTOR
    \-------------------------------------------------------------------------------------------------------------------------*/
    /// <summary>
    ///   Establishes a new instance of the <see cref="SampleControllerFactory"/>, including any shared dependencies to be used
    ///   across instances of controllers.
    /// </summary>
    /// <remarks>
    ///   The constructor is responsible for establishing dependencies with the singleton lifestyle so that they are available
    ///   to all requests.
    /// </remarks>
    public SampleActivator(string connectionString) {

      /*------------------------------------------------------------------------------------------------------------------------
      | Initialize Topic Repository
      \-----------------------------------------------------------------------------------------------------------------------*/
      var                       sqlTopicRepository              = new SqlTopicRepository(connectionString);
      var                       cachedTopicRepository           = new CachedTopicRepository(sqlTopicRepository);
      _                                                         = new PageTopicViewModel();

      /*------------------------------------------------------------------------------------------------------------------------
      | Preload repository
      \-----------------------------------------------------------------------------------------------------------------------*/
      _topicRepository                                          = cachedTopicRepository;
      _typeLookupService                                        = new DynamicTopicViewModelLookupService();
      _topicMappingService                                      = new TopicMappingService(_topicRepository, _typeLookupService);
      _                                                         = _topicRepository.Load();

      /*------------------------------------------------------------------------------------------------------------------------
      | Establish hierarchical topic mapping service
      \-----------------------------------------------------------------------------------------------------------------------*/
      _hierarchicalMappingService = new CachedHierarchicalTopicMappingService<NavigationTopicViewModel>(
        new HierarchicalTopicMappingService<NavigationTopicViewModel>(
          _topicRepository,
          _topicMappingService
        )
      );

    }
Пример #4
0
 /*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a <see cref="CourseListViewComponent"/> with necessary dependencies.
 /// </summary>
 public CourseListViewComponent(
   ITopicRepository topicRepository,
   IHierarchicalTopicMappingService<TrackedNavigationTopicViewModel> hierarchicalTopicMappingService
 ) : base(
   topicRepository,
   hierarchicalTopicMappingService
 ) { }
 /*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a Topic Controller with necessary dependencies.
 /// </summary>
 /// <returns>A topic controller for loading OnTopic views.</returns>
 protected LayoutControllerBase(
   ITopicRoutingService topicRoutingService,
   IHierarchicalTopicMappingService<T> hierarchicalTopicMappingService
 ) : base() {
   _topicRoutingService = topicRoutingService;
   HierarchicalTopicMappingService = hierarchicalTopicMappingService;
 }
 /*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a <see cref="NavigationTopicViewComponentBase{T}"/> with necessary dependencies.
 /// </summary>
 /// <returns>A topic <see cref="NavigationTopicViewComponentBase{T}"/>.</returns>
 protected NavigationTopicViewComponentBase(
   ITopicRepository topicRepository,
   IHierarchicalTopicMappingService<T> hierarchicalTopicMappingService
 ) {
   TopicRepository = topicRepository;
   HierarchicalTopicMappingService = hierarchicalTopicMappingService;
 }
Пример #7
0
        /*==========================================================================================================================
        | CONSTRUCTOR
        \-------------------------------------------------------------------------------------------------------------------------*/
        /// <summary>
        ///   Establishes a new instance of the <see cref="GoldSimActivator"/>, including any shared dependencies to be used
        ///   across instances of controllers.
        /// </summary>
        /// <remarks>
        ///   The constructor is responsible for establishing dependencies with the singleton lifestyle so that they are available
        ///   to all requests.
        /// </remarks>
        public GoldSimActivator(IConfiguration configuration, IWebHostEnvironment webHostEnvironment)
        {
            /*------------------------------------------------------------------------------------------------------------------------
              | Verify dependencies
              \-----------------------------------------------------------------------------------------------------------------------*/
              Contract.Requires(configuration, nameof(configuration));
              Contract.Requires(webHostEnvironment, nameof(webHostEnvironment));

              /*------------------------------------------------------------------------------------------------------------------------
              | SAVE STANDARD DEPENDENCIES
              \-----------------------------------------------------------------------------------------------------------------------*/
              _configuration        = configuration;
              _webHostEnvironment   = webHostEnvironment;
              var connectionString      = configuration.GetConnectionString("OnTopic");
              var sqlTopicRepository    = new SqlTopicRepository(connectionString);
              var cachedTopicRepository = new CachedTopicRepository(sqlTopicRepository);

              /*------------------------------------------------------------------------------------------------------------------------
              | PRELOAD REPOSITORY
              \-----------------------------------------------------------------------------------------------------------------------*/
              _topicRepository          = cachedTopicRepository;
              _typeLookupService        = new CompositeTypeLookupService(
                                    new GoldSimTopicViewModelLookupService(),
                                    new TopicViewModelLookupService(),
                                    new EditorViewModelLookupService()
                                  );
              _topicMappingService      = new TopicMappingService(_topicRepository, _typeLookupService);

              _topicRepository.Load();

              /*------------------------------------------------------------------------------------------------------------------------
              | INITIALIZE EDITOR COMPOSER
              \-----------------------------------------------------------------------------------------------------------------------*/
              _standardEditorComposer   = new(_topicRepository, _webHostEnvironment);

              /*------------------------------------------------------------------------------------------------------------------------
              | CONSTRUCT SMTP CLIENT
              \-----------------------------------------------------------------------------------------------------------------------*/
              var postmarkApiKey        = _configuration.GetValue<string>("Postmark:ApiKey");
              var postmarkClient        = new PostmarkClient(postmarkApiKey);

              _smtpService              = new PostmarkSmtpService(postmarkClient);

              /*------------------------------------------------------------------------------------------------------------------------
              | CONSTRUCT HIERARCHICAL TOPIC MAPPING SERVICES
              \-----------------------------------------------------------------------------------------------------------------------*/
              _hierarchicalTopicMappingService = new CachedHierarchicalTopicMappingService<Models.NavigationTopicViewModel>(
            new HierarchicalTopicMappingService<Models.NavigationTopicViewModel>(
              _topicRepository,
              _topicMappingService
            )
              );

              _coursewareTopicMappingService = new CachedHierarchicalTopicMappingService<TrackedNavigationTopicViewModel>(
            new HierarchicalTopicMappingService<TrackedNavigationTopicViewModel>(
              _topicRepository,
              _topicMappingService
            )
              );
        }
        /*==========================================================================================================================
        | CONSTRUCTOR
        \-------------------------------------------------------------------------------------------------------------------------*/
        /// <summary>
        ///   Establishes a new instance of the <see cref="SampleControllerFactory"/>, including any shared dependencies to be used
        ///   across instances of controllers.
        /// </summary>
        public SampleControllerFactory() : base()
        {
            /*------------------------------------------------------------------------------------------------------------------------
            | ESTABLISH DATABASE CONNECTION
            \-----------------------------------------------------------------------------------------------------------------------*/
            var connectionString   = ConfigurationManager.ConnectionStrings["OnTopic"].ConnectionString;
            var sqlTopicRepository = new SqlTopicRepository(connectionString);

            /*------------------------------------------------------------------------------------------------------------------------
            | SAVE STANDARD DEPENDENCIES
            \-----------------------------------------------------------------------------------------------------------------------*/
            _topicRepository     = new CachedTopicRepository(sqlTopicRepository);
            _typeLookupService   = new TopicViewModelLookupService();
            _topicMappingService = new TopicMappingService(_topicRepository, _typeLookupService);
            _rootTopic           = _topicRepository.Load();

            /*------------------------------------------------------------------------------------------------------------------------
            | CONSTRUCT HIERARCHICAL TOPIC MAPPING SERVICE
            \-----------------------------------------------------------------------------------------------------------------------*/
            var service = new HierarchicalTopicMappingService <NavigationTopicViewModel>(
                _topicRepository,
                _topicMappingService
                );

            _hierarchicalTopicMappingService = new CachedHierarchicalTopicMappingService <NavigationTopicViewModel>(
                service
                );
        }
 /*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a <see cref="MenuViewComponentBase{T}"/> with necessary dependencies.
 /// </summary>
 /// <returns>A topic controller for loading OnTopic views.</returns>
 public MenuViewComponent(
   ITopicRoutingService topicRoutingService,
   IHierarchicalTopicMappingService<NavigationTopicViewModel> hierarchicalTopicMappingService
 ) : base(
   topicRoutingService,
   hierarchicalTopicMappingService
 ) {}
Пример #10
0
 /*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a Topic Controller with necessary dependencies.
 /// </summary>
 /// <returns>A topic controller for loading OnTopic views.</returns>
 public LayoutController(
   ITopicRoutingService topicRoutingService,
   IHierarchicalTopicMappingService<NavigationTopicViewModel> navigationMappingService
 ) : base(
   topicRoutingService,
   navigationMappingService
 ) { }
Пример #11
0
 /*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a <see cref="MenuViewComponentBase{T}"/> with necessary dependencies.
 /// </summary>
 protected MenuViewComponentBase(
   ITopicRepository topicRepository,
   IHierarchicalTopicMappingService<T> hierarchicalTopicMappingService
 ) : base(
   topicRepository,
   hierarchicalTopicMappingService
 ) {
 }
Пример #12
0
 /*==========================================================================================================================
 | CONSTRUCTOR
 \-------------------------------------------------------------------------------------------------------------------------*/
 /// <summary>
 ///   Initializes a new instance of a Topic Controller with necessary dependencies.
 /// </summary>
 /// <returns>A topic controller for loading OnTopic views.</returns>
 public LayoutController(
   ITopicRoutingService topicRoutingService,
   IHierarchicalTopicMappingService<NavigationTopicViewModel> hierarchicalTopicMappingService,
   ITopicRepository topicRepository
 ) : base(
   topicRoutingService,
   hierarchicalTopicMappingService
 ) {
   _topicRepository = topicRepository;
 }
Пример #13
0
    /*==========================================================================================================================
    | CONSTRUCTOR
    \-------------------------------------------------------------------------------------------------------------------------*/
    /// <summary>
    ///   Initializes a new instance of the <see cref="TopicControllerTest"/> with shared resources.
    /// </summary>
    /// <remarks>
    ///   This uses the <see cref="StubTopicRepository"/> to provide data, and then <see cref="CachedTopicRepository"/> to
    ///   manage the in-memory representation of the data. While this introduces some overhead to the tests, the latter is a
    ///   relatively lightweight façade to any <see cref="ITopicRepository"/>, and prevents the need to duplicate logic for
    ///   crawling the object graph. In addition, it initializes a shared <see cref="Topic"/> reference to use for the various
    ///   tests.
    /// </remarks>
    public TopicViewComponentTest() {

      /*------------------------------------------------------------------------------------------------------------------------
      | Establish dependencies
      \-----------------------------------------------------------------------------------------------------------------------*/
      _topicRepository          = new CachedTopicRepository(new StubTopicRepository());
      _topic                    = _topicRepository.Load("Root:Web:Web_3:Web_3_0")!;
      _topicMappingService      = new TopicMappingService(_topicRepository, new TopicViewModelLookupService());

      /*------------------------------------------------------------------------------------------------------------------------
      | Establish hierarchical topic mapping service
      \-----------------------------------------------------------------------------------------------------------------------*/
      _hierarchicalMappingService = new CachedHierarchicalTopicMappingService<NavigationTopicViewModel>(
        new HierarchicalTopicMappingService<NavigationTopicViewModel>(
          _topicRepository,
          _topicMappingService
        )
      );

      /*------------------------------------------------------------------------------------------------------------------------
      | Establish view model context
      \-----------------------------------------------------------------------------------------------------------------------*/
      var routes                = new RouteData();

      routes.Values.Add("rootTopic", "Web");
      routes.Values.Add("path", "Web_3/Web_3_0");

      var viewContext           = new ViewContext() {
        HttpContext             = new DefaultHttpContext(),
        RouteData               = routes
      };
      var viewComponentContext  = new ViewComponentContext() {
        ViewContext             = viewContext
      };

      _context                  = viewComponentContext;

    }