/// <summary>
        /// Recupera as permissões baseada do objeto recebido
        /// </summary>
        /// <param name="tablePermissions">Lista de permissões</param>
        /// <returns></returns>
        private static Permission GetPermissions(ITablePermission tablePermissions)
        {
            // Separa as permissões separadas por ; no config
            var permissions = SplitPermissionsValue(tablePermissions);

            // Default valor
            var result = Permission.Undefined;

            if (HasAllPermissions(permissions))
            {
                result = Permission.DELETE | Permission.SELECT | Permission.UPDATE | Permission.INSERT;
                return(result);
            }

            foreach (var permission in permissions)
            {
                var permissionParsed = Permission.Undefined;

                var canParse = Enum.TryParse(permission.ToUpper(), out permissionParsed);
                if (!canParse)
                {
                    throw new ApplicationException("There is a permissions config that was not correctly setted: " +
                                                   $"Table: {tablePermissions.Name}; Permission:{permission}");
                }
                result |= permissionParsed;
            }
            return(result);
        }
        /// <summary>
        /// Sepera as informações recebidas
        /// </summary>
        /// <param name="tablePermissions"></param>
        /// <returns></returns>
        private static string[] SplitPermissionsValue(ITablePermission tablePermissions)
        {
            var permissionsString = tablePermissions.Permissions;
            var permissions       = permissionsString.Split(';');

            return(permissions);
        }