﻿// MIT License. Copyright (c) 2016 Maxim Kuzmin. Contacts: https://github.com/maxim-kuzmin

// Author: Maxim Kuzmin

using Autofac;
using Autofac.Core;
using Makc2017.Core.App;
using System.Collections.Generic;
using System.Linq;

namespace Makc2017.Modules.Dummy.Caching
{
    /// <summary>
    /// Модули. Модуль "Dummy". Кэширование. Плагин.
    /// </summary>
    public class ModuleDummyCachingPlugin : ModuleDummyPlugin
    {
        #region Properties

        /// <summary>
        /// Конфигурация кэширования.
        /// </summary>
        private ModuleDummyCachingConfig CachingConfig { get; set; }

        #endregion Properties

        #region Public methods

        /// <summary>
        /// Инициализировать.
        /// </summary>
        /// <param name="pluginEnvironment">Окружение плагинов.</param>
        public sealed override void Init(CoreAppPluginEnvironment pluginEnvironment)
        {
            base.Init(pluginEnvironment);

            CachingConfig.Init(ConfigurationProvider);
        }

        /// <summary>
        /// Распознать зависимости.
        /// </summary>
        /// <param name="componentContext">Контекст компонентов.</param>
        public sealed override void Resolve(IComponentContext componentContext)
        {
            base.Resolve(componentContext);
            
            CachingConfig = componentContext.Resolve<ModuleDummyCachingConfig>();
        }

        #endregion Public methods

        #region Protected methods

        /// <summary>
        /// Создать распознаватель зависимостей.
        /// </summary>
        /// <returns>Распознаватель зависимостей.</returns>
        protected sealed override IModule CreateResolver()
        {
            return new ModuleDummyCachingResolver();
        }

        /// <summary>
        /// Создать пути к файлам конфигурации.
        /// </summary>
        /// <returns>Пути к файлам конфигурации.</returns>
        protected sealed override IEnumerable<string> CreateConfigFilePaths()
        {
            return base.CreateConfigFilePaths().Concat(new[] { @"Makc2017.Modules.Dummy.Caching\config.json" });
        }

        #endregion Protected methods
    }
}