using DocumentFormat.OpenXml.Presentation;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CloudBuilder.Core.DependencyInjection.Request
{
    public interface IContext
    {
        string DefaultVersion { get; set; }
        string Requestor { get; set; }
        string UserType { get; set; }
        DateTime LoginDate { get; set; }
        string DefaultCopyright { get; set; }
        string DefaultTitle { get; set; }
        void SetPermissionInfo(dynamic permissionInfo);
        dynamic GetPermissionInfo();
        void SetToken(string token);
        string GetToken();
        string GetCulture();
        void SetCulture(string culture);
        bool Assert(Func<string, bool> action, string permissionName);
        bool Assert(Func<string, string, bool> action, string permissionName, string operate);
        bool Assert(Func<string, Operate, bool> action, string permissionName, Operate operate);
        bool AssertDependents(Func<string, string, bool> action, string permissionName, string dependents);
        bool AssertDependents(Func<string, string, Operate, bool> action, string permissionName, string dependents, Operate operate);
    }
}
