/// <summary>
 /// Initializes a new instance of the <see cref="BeyovaPortalController" /> class.
 /// </summary>
 /// <param name="moduleName">Name of the module.</param>
 /// <param name="apiTracking">The API tracking.</param>
 /// <param name="returnExceptionAsFriendly">if set to <c>true</c> [return exception as friendly].</param>
 protected BeyovaPortalController(string moduleName, IApiTracking apiTracking = null, bool returnExceptionAsFriendly = false)
     : base(apiTracking, returnExceptionAsFriendly)
 {
     this.ModuleName = moduleName.SafeToString(this.GetDefaultModuleName());
 }
Beispiel #2
0
        /// <summary>
        /// Initializes the by custom assembly attributes.
        /// </summary>
        private static void InitializeByCustomAssemblyAttributes()
        {
            string currentAssemblyName = null;

            //Api track type need to stay on top and out of this. It is set in loop and be used after loop, to ensure required parameter from configuration is initialized.
            List <Type> apiTrackTypes = new List <Type>();

            try
            {
                foreach (var assembly in EnvironmentCore.DescendingAssemblyDependencyChain)
                {
                    BeyovaComponentInfo componentInfo = null;
                    var assemblyName = assembly.GetName();
                    currentAssemblyName = assemblyName.Name;

                    if (!assemblyName.IsSystemAssembly())
                    {
                        #region BeyovaComponentAttribute

                        var componentAttribute = assembly.GetCustomAttribute <BeyovaComponentAttribute>();
                        if (componentAttribute != null)
                        {
                            componentInfo = componentAttribute.UnderlyingObject;

                            // APITRACKING
                            if (ApiTracking == null)
                            {
                                apiTrackTypes.Add(componentInfo?.ApiTrackingType);
                            }
                        }

                        #endregion BeyovaComponentAttribute

                        #region DataSecurityAttribute

                        var dataSecurty = assembly.GetCustomAttribute <DataSecurityAttribute>();
                        if (dataSecurty != null)
                        {
                            if (DataSecurityProvider == null)
                            {
                                DataSecurityProvider = dataSecurty.DataSecurityProvider;
                            }
                        }

                        #endregion DataSecurityAttribute

                        #region BeyovaConfigurationLoaderAttribute

                        var configurationLoaders = assembly.GetCustomAttributes <BeyovaConfigurationLoaderAttribute>();
                        if (configurationLoaders.HasItem())
                        {
                            foreach (var one in configurationLoaders)
                            {
                                ConfigurationHub.RegisterConfigurationReader(one?.Loader?.GetReader(currentAssemblyName, componentInfo?.Version));
                            }
                        }
                        else
                        {
                            // To be obsoleted
                            //var configurationAttribute = assembly.GetCustomAttribute<BeyovaConfigurationAttribute>();
                            //if (configurationAttribute != null)
                            //{
                            //    ConfigurationHub.RegisterConfigurationReader(new JsonConfigurationReader(currentAssemblyName, componentInfo?.Version, nameof(JsonConfigurationReader), configurationAttribute.Options));
                            //}
                        }

                        #endregion BeyovaConfigurationLoaderAttribute

                        #region BeyovaCultureResourceAttribute

                        var cultureResourceAttribute = assembly.GetCustomAttribute <BeyovaCultureResourceAttribute>();
                        if (cultureResourceAttribute != null)
                        {
                            if (!string.IsNullOrWhiteSpace(cultureResourceAttribute.UnderlyingObject.DefaultCultureCode))
                            {
                                _resourceHub.DefaultCultureInfo = cultureResourceAttribute.UnderlyingObject.DefaultCultureCode.AsCultureInfo();
                            }

                            cultureResourceAttribute?.UnderlyingObject.FillResources(_resourceHub._cultureBasedResources);
                        }

                        #endregion BeyovaCultureResourceAttribute
                    }
                }

                if (ApiTracking == null && apiTrackTypes.HasItem())
                {
                    foreach (var one in apiTrackTypes)
                    {
                        var instance = one.CreateInstance() as IApiTracking;
                        if (instance != null)
                        {
                            ApiTracking = instance;
                            break;
                        }
                    }
                }

                // To check and ensure
                if (DataSecurityProvider == null)
                {
                    DataSecurityProvider = DefaultDataSecurityProvider.Instance;
                }
            }
            catch (Exception ex)
            {
                throw ex.Handle(new
                {
                    currentAssemblyName
                });
            }
        }
Beispiel #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="BeyovaBaseController" /> class.
 /// </summary>
 /// <param name="apiTracking">The API tracking.</param>
 /// <param name="returnExceptionAsFriendly">if set to <c>true</c> [return exception as friendly].</param>
 protected BeyovaBaseController(IApiTracking apiTracking = null, bool returnExceptionAsFriendly = false)
 {
     this.apiTracking = apiTracking ?? Framework.ApiTracking;
     this.returnExceptionAsFriendly = returnExceptionAsFriendly;
 }
Beispiel #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="T:Beyova.Web.BeyovaBaseController" /> class.
 /// </summary>
 /// <param name="apiTracking">The API tracking.</param>
 /// <param name="returnExceptionAsFriendly">if set to <c>true</c> [return exception as friendly].</param>
 public ErrorController(IApiTracking apiTracking, bool returnExceptionAsFriendly = false)
     : base("Error", apiTracking, returnExceptionAsFriendly)
 {
 }