IConnectorInsightsUser.cs•6.63 kB
using Api.DigitalPages.Interfaces.Models;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Api.DigitalPages.Interfaces.Connector
{
/// <summary>
/// Interface utilizada para obter dados do insights agrupando valores identificador
/// </summary>
/// <typeparam name="TGroup">Parametro usado para agrupar resultados da consulta</typeparam>
public interface IConnectorInsightsUser :
ISystemConnectorBaseCrudFlowV2<IUserReports, UserReportsOptions>,
ISystemConnectorBaseCrudFlowV2<IUserReport, IUserReports, UserReportOptions>,
ISystemConnectorBaseCrudFlowV2<IUserReportDetailForManager, IUserReport, UserReportDetailForManagerOptions>,
ISystemConnectorBaseCrudFlowV2<IUserReportDetailForUser, IUserReport, UserReportDetailForUserOptions>,
ISystemConnectorBasePagedFlow<IUserReports, UserReportsOptions>,
ISystemConnectorBasePagedFlow<IUserReport, UserReportOptions>,
ISystemConnectorBaseGetFlow<IUserReports, UserReportsWithoutReportOptions>,
ISystemConnectorBaseGetFlow<IUserReport, UserReportWaitingProcessing>,
ISystemConnectorBaseGetFlow<IUserReport, UserReportPendingClosing>,
ISystemContextRequired
{
/// <summary>
/// Retorna um relatorio do insights com as entitades mais relacionadas aos conteudos acessados pelo usuario.
/// </summary>
/// <param name="userUid"></param>
/// <param name="options"></param>
/// <returns></returns>
Task<SummarizeResult<Guid>> UserContentEntity(EntityUserQueryOptions options);
/// <summary>
/// Cria um novo conteudo mais acessado pelo usuario.
/// </summary>
/// <param name="userContent"></param>
/// <returns></returns>
Task<IUserContent<Guid>> Create(IUserContent<Guid> userContent);
/// <summary>
/// Retorna os conteudos mais acessados pelo usuario no banco.
/// </summary>
/// <param name="options"></param>
/// <returns></returns>
Task<List<IUserContent<Guid>>> Get(EntityUserQueryOptions options);
/// <summary>
/// Retorna os conteudos mais acessados pelo usuario no banco.
/// </summary>
/// <param name="options"></param>
/// <returns></returns>
Task<IPagedResult<IUserContent<Guid>>> Get(EntityUserQueryOptions options, int page, int pageSize);
/// <summary>
/// Atualiza
/// </summary>
/// <param name="userContent"></param>
/// <returns></returns>
Task<IUserContent<Guid>> Update(IUserContent<Guid> userContent);
/// <summary>
/// Criacao de relatorios de forma automatica.
/// Funcional apenas com o projeto e diretorio vinculado, possui integracao com api generativa.
/// </summary>
public bool AutomaticReports { get; set; }
}
public class UserReportsOptions : IBaseCrudOptions
{
public List<Guid> FilterUsers { get; set; }
public bool IncludeReports { get; set; }
public DateTime? FilterPeriodStart { get; set; }
public DateTime? FilterPeriodEnd { get; set; }
}
/// <summary>
/// Retorna todos os grupos de relatorios em que nenhum relatorio
/// foi inserido no periodo informado.
/// </summary>
public class UserReportsWithoutReportOptions : IBaseCrudOptions
{
public DateTime FilterPeriodStart { get; }
public DateTime FilterPeriodEnd { get; }
public ReportType ReportType { get; }
public int Limit { get; }
public UserReportsWithoutReportOptions(DateTime filterPeriodStart, DateTime filterPeriodEnd, ReportType type, int limit)
{
FilterPeriodStart = filterPeriodStart;
FilterPeriodEnd = filterPeriodEnd;
ReportType = type;
Limit = limit;
}
}
public class UserReportWaitingProcessing: IBaseCrudOptions
{
public int Limit { get; }
public ReportType ReportType { get; }
public DateTime BeforeAt { get; }
public UserReportWaitingProcessing(DateTime beforeAt, ReportType type, int limit)
{
BeforeAt = beforeAt;
ReportType = type;
Limit = limit;
}
}
public class UserReportPendingClosing : IBaseCrudOptions
{
public DateTime BeforeAt { get; }
public int Limit { get; }
public UserReportPendingClosing(DateTime beforeAt, int limit)
{
BeforeAt = beforeAt;
Limit = limit;
}
}
public class UserReportOptions : IBaseCrudOptions
{
public List<ReportType> FilterReportType { get; set; }
public List<ReportState> FilterReportState { get; set; }
public DateTime? FilterPeriodStart { get; set; }
public DateTime? FilterPeriodEnd { get; set; }
public List<Guid> FilterUser { get; set; }
}
public class UserReportDetailForManagerOptions : IBaseCrudOptions
{
}
public class UserReportDetailForUserOptions : IBaseCrudOptions
{
}
public class EntityQueryOptions
{
public List<Guid> FilterUsers { get; set; }
public List<Guid> FilterProjects { get; set; }
public List<Guid> FilterDirectorys { get; set; }
public List<Guid> FilterConnectors { get; set; }
public DateTime? FilterStart { get; set; }
public DateTime? FilterEnd { get; set; }
public SummarizeType SummarizeType { get; set; }
public OrderType? OrderTotal { get; set; }
public int? LimitResult { get; set; }
}
public class EntityUserQueryOptions : EntityQueryOptions
{
public bool IncludeUser { get; set; }
public bool IncludeProject { get; set; }
}
public class UserContentResult<TGroup>
{
public Guid? UserUid { get; set; }
public Guid? ProjectUid { get; set; }
public Guid? DirectoryUid { get; set; }
public Guid? ConnectorUid { get; set; }
public TGroup GroupUid { get; set; }
public long Total { get; set; }
}
public class SummarizeResult<TData>
{
public SummarizeType SummarizeType { get; set; }
public List<UserContentResult<TData>> Results { get; set; }
}
public enum SummarizeType
{
Sum,
Max,
Min,
Avg
}
public enum EDataQueryType
{
EntitiesConsumption //consumir relatorio de uso por entidades
}
}