/// <summary>
        /// Switch
        /// </summary>
        /// <param name="alias"></param>
        /// <returns></returns>
        public static ResourceType Switch(ResourceAlias alias)
        {
            switch (alias)
            {
            case ResourceAlias.A: return(ResourceType.All);

            case ResourceAlias.D: return(ResourceType.Date);

            case ResourceAlias.N: return(ResourceType.Name);

            case ResourceAlias.C: return(ResourceType.Chinese);

            case ResourceAlias.E: return(ResourceType.Easter);

            case ResourceAlias.O: return(ResourceType.Orthodox);

            case ResourceAlias.J: return(ResourceType.Jewish);

            case ResourceAlias.M: return(ResourceType.Muslim);

            case ResourceAlias.U: return(ResourceType.User);

            case ResourceAlias.B: return(ResourceType.BuildInDefault);

            default: return(ResourceType.All);
            }
        }
        /// <summary>
        /// Deletes the corresponding procedural resource
        /// </summary>
        protected void Delete()
        {
            var procedural = ResourceProviderInternal.SelectProceduralResources()?.FirstOrDefault(item => item.Name == Name);

            if (procedural == null)
            {
                return;
            }
            var type = procedural.Type;

            Db.TransactAsync(() => ResourceAlias.GetByResource(procedural.Name)?.Delete());
            if (ResourceProviderInternal.DeleteProceduralResource(procedural))
            {
                ResourceProviderInternal.RemoveProceduralResource(type);
            }
        }