IConnectorPolicies.cs•3.03 kB
using Api.DigitalPages.Interfaces.Models;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Api.DigitalPages.Interfaces.Connector
{
public interface IConnectorPolicies :
IConnectorContextRequired,
ISystemConnectorBaseCrudFlowV2<ITerm, TermsOptions>,
ISystemConnectorBaseCrudFlowV2<ITermUser, ITerm, TermUsersOptions>,
ISystemConnectorBaseCrudFlowV2<ITermVersion, ITermVersion, TermVersionsOptions>,
ISystemConnectorBaseCrudFlowV2<ITermAuthorization, ITerm, TermAuthorizationOptions>
{
Task<string> ContentUrl(ITermVersion termVersion);
Task<ITerm> Term(Guid uid, TermsOptions options);
Task<string> TermContentUrl(object termVersion);
Task<ITerm> TermFrom(string json, ITerm baseTerm = null);
Task<List<ITerm>> Terms(TermsOptions options);
Task<List<ITerm>> Terms(List<Guid> uids, TermsOptions options);
Task<ITermUser> TermUser(Guid uid, TermUsersOptions options);
Task<List<ITermUser>> TermUsers(TermUsersOptions options);
Task<ITermUser> TermUserFrom(string json, ITermUser baseTermUser = null);
Task<ITermVersion> TermVersionFrom(string json);
Task<ITermVersion> TermVersionFrom(string json, ITermVersion baseTermVersion = null);
Task<ITermVersion> TermVersion(Guid uid, TermVersionsOptions options);
Task<ITermVersion> Insert(ITermVersion termVersion, ITerm termModel);
Task<ITermUser> Insert(IUser model, ITerm term);
}
/// <summary>
/// Opções de filtro para a busca de termos
/// </summary>
public class TermsOptions : IBaseCrudOptions
{
public bool IncludeUserTerms { get; set; }
public bool IncludeTermVersions { get; set; }
public IBaseAuthorizationFilter FilterAuthorizations { get; set; }
public List<Guid> FilterTerm { get; set; }
public bool FilterUserNotAccepted { get; set; }
public Guid? FilterUserUnansweredTerms { get; set; }
public List<Guid> FilterProjects { get; set; }
public List<Guid> FilterEntities { get; set; }
public ScopeQuery Scope { get; set; }
public bool LastVersion { get; set; }
public bool IncludeAuthorizations { get; set; }
public List<Guid> FilterUserEntities { get; set; }
}
/// <summary>
/// Opções de filtro para busca de aceite de usuário ao termo
/// </summary>
public class TermUsersOptions : IBaseCrudOptions
{
public bool IncludeTerm { get; set; }
public List<Guid> FilterUser { get; set; }
}
/// <summary>
/// Opções de filtro para versões do termo
/// </summary>
public class TermVersionsOptions : IBaseCrudOptions
{
public bool IncludeTerms { get; set; }
public ScopeQuery Scope { get; set; }
}
public class TermAuthorizationOptions : IBaseCrudOptions
{
public bool IncludeReferences { get; set; }
}
}