Skip to main content
Glama
IConnectorLearning.cs24.7 kB
using Api.DigitalPages.Interfaces.Models; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Threading.Tasks; namespace Api.DigitalPages.Interfaces.Connector { public interface IConnectorLearning : ISystemContextRequired, ISystemConnectorBaseCrudFlowV2<IContentSummary<ICourseActivity>, ICourseActivity, ActivitySummaryDefaultOptions>, ISystemConnectorBaseCrudFlowV2<IContentSummary<ICourse>, ICourse, CourseSummaryDefaultOptions>, ISystemConnectorBaseGetFlow<ICourseActivity, ActivityPendingSummaryOptions>, ISystemConnectorBaseGetFlow<ICourseNodeItem, NodesPendingSummaryOptions>, ISystemConnectorBaseGetFlow<ICourse, CoursePendingSummaryOptions>, ISystemConnectorBaseGetFlow<ICourse, CourseSummariesOptions> { List<string> AuthorizedMimeTypes { get; } Task<ICourseUserRegister> UserRegisterFrom(ICourseRegister register, IUser user); Task<ICourseActivityInteraction> ActivityInteractionFrom(ICourseActivity activity); Task<string> ActivityUserContentUrl(ICourseActivity activity); Task<ICourseActivityInteraction> ActivityInteractionFrom(string json); Task<ICourseActivityInteractionObject> ActivityInteractionObjectFrom(string json); Task<ICourseActivityInteractionObject> ActivityInteractionObjectScoreFrom(string json); Task<ICourseActivityInteractionObject> ActivityInteractionObjectFrom(string json, ICourseActivityInteractionObject baseInteractionObject = null); Task<ICourseActivityInteractionScoreHistory> ActivityInteractionScoreHistoryFrom(double score); Task<ICourse> CourseFrom(string json, ICourse baseCourse = null); Task<ICourseNodeItem> CourseNodeFrom(string json, IUser user, ICourseNodeItem baseNode = null); Task<ICourseProperty> CoursePropertyFrom(string json, ICourseProperty baseProperty = null); Task<ICourseAuthorization> CourseAuthorizationFrom(string json, IUser user); Task<ICourseAuthorizationReference> CourseAuthorizationReferenceFrom(string json, IUser user); Task<ICourseRegister> CourseRegisterFrom(string json, IUser user, ICourseRegister baseRegister = null); Task<ICourseActivity> ActivityFrom(IUser user); Task<List<ICourseActivity>> ActivitiesFrom(string json, IUser user); Task<ICourseActivity> ActivityFrom(string json, IUser user, ICourseActivity baseActivity = null); /// <summary> /// retorna uma url de acesso a determinado conteudo /// </summary> Task<string> ActivityUserContentUrl(ICourseActivityInteraction interaction); /// <summary> /// Retorna as opções necessarias para obter um conteudo /// </summary> Task<string> ActivityUserContentOptions(ICourseActivityInteraction interaction); Task<ICourseOverride> From(string json, IUser user, ICourseOverride baseModel = null); Task<ICourseNodeItemOverride> From(string json, IUser user, ICourseNodeItemOverride baseModel = null); #region Criação Task<ICourse> Create(ICourse course, IUser author); Task<ICourse> Clone(ICourse course, IUser author); Task<ICourseAuthorization> Insert(ICourseAuthorization authorization, ICourse inCourse); Task<ICourseActivityInteractionObject> Insert(ICourseActivityInteractionObject model, ICourseActivityInteraction inModel); Task<ICourseAuthorization> Insert(ICourseAuthorization authorization, ICourseRegister inRegister); Task<ICourseRegister> Insert(ICourseRegister model, ICourse inModel); Task<ICourseNodeItem> Insert(ICourseNodeItem node, ICourse inCourse); Task<ICourseProperty> Insert(ICourseProperty property, ICourse inCourse); Task<ICourseActivity> Insert(ICourseActivity model, ICourseNodeItem inModel); //ok Task<ICourseUserRegister> Insert(ICourseUserRegister model, ICourseRegister inModel); //ok Task<ICourseActivityInteraction> Insert(ICourseActivityInteraction model, ICourseUserRegister inModel); Task<ICourseAuthorizationReference> Insert(ICourseAuthorizationReference model, ICourseAuthorization inModel); Task<ICourseOverride> Insert(ICourseOverride model, ICourseRegister inModel); Task<ICourseNodeItemOverride> Insert(ICourseNodeItemOverride model, ICourseRegister inModel); #endregion #region Atualização Task<ICourse> Update(ICourse course); Task<ICourseNodeItem> Update(ICourseNodeItem nodeItem); Task<ICourseProperty> Update(ICourseProperty property); Task<ICourseRegister> Update(ICourseRegister model); Task<ICourseUserRegister> Update(ICourseUserRegister model); Task<ICourseActivity> Update(ICourseActivity model); Task<ICourseActivityInteraction> Update(ICourseActivityInteraction model); Task<ICourseActivityInteractionObject> Update(ICourseActivityInteractionObject model); Task<ICourseOverride> Update(ICourseOverride model); Task<ICourseNodeItemOverride> Update(ICourseNodeItemOverride model); #endregion #region Remoção Task<bool> Delete(ICourseNodeItem nodeItem); Task<bool> Delete(ICourseProperty property); Task<bool> Delete(ICourseAuthorization authorization); Task<bool> Delete(ICourseRegister register); Task<bool> Delete(ICourseUserRegister register); Task<bool> Delete(ICourse model); Task<bool> Delete(ICourseActivity model); Task<bool> Delete(ICourseActivityInteraction interaction); Task<bool> Delete(ICourseAuthorizationReference reference); Task<bool> Delete(ICourseActivityContentHistory model); Task<bool> Delete(List<ICourseActivityContentHistory> models); Task<bool> Delete(List<ICourseActivityInteraction> interactions); Task<bool> Delete(List<ICourseOverride> models); Task<bool> Delete(List<ICourseNodeItemOverride> models); #endregion #region Consulta Task<ICourse> Course(Guid uid, RegistersBasedCoursesOptions options); Task<IPagedResult<ICourse>> Courses(RegistersBasedCoursesOptions options, int page, int pageSize); Task<List<ICourse>> Courses(RegistersBasedCoursesOptions options); /// <summary> /// Retorna todas as facetas disponíveis nos cursos /// </summary> /// <param name="options"></param> /// <returns></returns> Task<ICourseFacets> CourseFacets(RegistersBasedCoursesOptions options); Task<ICourseNodeItem> Node(Guid uid, CourseNodeOptions options); /// <summary> /// Retorna uma property do curso /// </summary> /// <param name="uid">Identificador da property</param> /// <param name="options"></param> /// <returns></returns> Task<ICourseProperty> CourseProperty(Guid uid, CoursePropertiesOptions options); /// <summary> /// retorna todas as properties disponíveis em um curso /// </summary> /// <param name="options"></param> /// <returns></returns> Task<List<ICourseProperty>> CourseProperties(CoursePropertiesOptions options); Task<ICourseRegister> Register(Guid uid, RegisterOptions options); Task<IPagedResult<ICourseRegister>> Registers(RegisterOptions options, int page, int pageSize); Task<List<ICourseRegister>> Registers(RegisterOptions options); Task<ICourse> Course(Guid uid, ManagementCourseOptions options); Task<IPagedResult<ICourse>> Courses(ManagementCourseOptions options, int page, int pageSize); Task<List<ICourse>> Courses(ManagementCourseOptions options); Task<ICourse> CourseFromAuthorization(Guid uid, ManagementCourseOptions options); Task<ICourseNodeItem> Node(Guid uid, ManagementCourseNodeOptions options); Task<ICourseAuthorization> Authorization(Guid uid, ManagementAuthorizationOptions options); Task<ICourseAuthorizationReference> AuthorizationReference(Guid uid, ManagementAuthorizationOptions options); Task<ICourseRegister> Register(Guid uid, ManagementRegisterOptions options); Task<IPagedResult<ICourseRegister>> Registers(ManagementRegisterOptions options, int page, int pageSize); Task<List<ICourseRegister>> Registers(ManagementRegisterOptions options); Task<List<IUserRegisterSummaries>> RegisterSummaries(UserRegisterOptions options); Task<ICourseUserRegister> UserRegister(Guid uid, UserRegisterOptions options); Task<ICourseUserRegister> UserRegisterFromInteraction(Guid uid, UserRegisterOptions options); /// <summary> /// Monta o relatorio de frequencia a partir dos uids da matricula /// </summary> /// <param name="userRegisterUids">Lista de matriculas</param> /// <returns></returns> Task<IPagedResult<ICourseUserRegisterReportFrequency>> CourseActivityReportFrequency(List<Guid> registerUids, int page, int pageSize); [Obsolete] Task<IPagedResult<ICourseUserRegisterReportFrequency>> CourseActivityReportFrequency(UserRegisterOptions options, int page, int pageSize); Task<IPagedResult<ICourseUserRegisterReportFrequency>> GetCourseActivityReport(UserRegisterOptions options, int page, int pageSize); Task<IPagedResult<ICourseUserRegister>> UserRegisters(UserRegisterOptions options, int page, int pageSize); Task<List<ICourseUserRegister>> UserRegisters(UserRegisterOptions options); Task<ICourseActivity> Activity(Guid uid, ManagementActivityOptions options); Task<List<ICourseActivity>> Activities(ManagementActivityOptions options); Task<ICourseActivityInteraction> ActivityInteraction(Guid uid, ActivityInteractionOptions options); Task<ICourseActivityInteractionObject> ActivityInteractionObject(Guid uid, ActivityInteractionObjectsOptions options); Task<List<ICourseActivityInteractionObject>> ActivityInteractionObjects(ActivityInteractionObjectsOptions options); Task<List<ICourseActivityInteractionObjectsCount>> ActivityInteractionObjectsCount(ActivityInteractionObjectsOptions options); Task<List<ICourseActivityInteraction>> ActivityInteractions(ActivityInteractionOptions options); Task<IPagedResult<ICourseUserRegister>> UserRegisters(ICourse course, UserRegisterOptions options, int page, int pageSize); Task<List<ICourseUserRegister>> UserRegisters(ICourse course, UserRegisterOptions options); Task<IPagedResult<ICourseUserRegister>> UserRegisters(ICourseRegister regiter, UserRegisterOptions options, int page, int pageSize); Task<List<ICourseUserRegister>> UserRegisters(ICourseRegister regiter, UserRegisterOptions options); //Task<ICourseOverride> CourseOverride(Guid uid, ManagementRegisterOptions options); //Task<ICourseOverride> CourseNodeOverrideOverride(Guid uid, ManagementRegisterOptions options); #endregion /// <summary> /// Função responsável por montar o relátorio de notas por oferta. /// </summary> Task<List<ICourseUserRegisterReportScore>> RegisterCourseNodeReportScore(List<ICourseUserRegister> userRegisters); /// <summary> /// Função responsável por montar o relátorio de frequencia por oferta. /// </summary> Task<List<ICourseUserRegisterReportFrequency>> RegisterCourseNodeReportFrequency(List<ICourseUserRegister> userRegisters, List<ICourseUserRegisterReportFrequency> reportFrequency); /// <summary> /// Função responsável por montar o relátorio de ranking do curso /// </summary> Task<List<ICourseUserRegisterReportRanking>> CourseRanking(List<ICourseUserRegister> userRegisters); } public interface ICourseFacets { /// <summary> /// Entidades encontradas no cursos. /// </summary> List<ICourseFacetType<Guid>> Entities { get; set; } /// <summary> /// Status das matriculas encontradas nos cursos. /// </summary> List<ICourseFacetType<UserRegisterStatus>> Status { get; set; } /// <summary> /// Tags encontradas nos cursos. /// </summary> List<ICourseFacetType<string>> Tags { get; set; } } public interface ICourseFacetType<TType> { /// <summary> /// Valor encontrado. /// </summary> TType Key { get; set; } /// <summary> /// Total de resultado encontrado. /// </summary> int Count { get; set; } } #region LegacyOptions public abstract class BaseOptions { public IUser RequestingUser { get; set; } public bool DisableTracking { get; set; } } public abstract class BaseSecureOptions : BaseOptions { public List<IEntityItem> Entities { get; set; } } public abstract class BaseManagementOptions : BaseOptions { public List<IEntityItem> Entities { get; set; } public bool IgnoreAuthorizations { get; set; } } public class RegistersBasedCoursesOptions : BaseSecureOptions { public bool IncludeTags { get; set; } public bool IncludeAuthorizations { get; set; } public bool IncludeRegisters { get; set; } public bool IncludeRegisterAuthorizations { get; set; } public bool IncludeNodeProperties { get; set; } public bool IncludeNodes { get; set; } public bool IncludeProperties { get; set; } public bool IncludeNodesTags { get; set; } public bool IncludeNodeActivities { get; set; } public CourseType? FilterCourseType { get; set; } public List<Guid> FilterRegister { get; set; } public bool OnlyToRegister { get; set; } public bool OnlyRegistered { get; set; } public string FilterCourseMetadata { get; set; } } public enum CourseQueryTemplate { Default, EssentialActivityInfo } public class RegisterOptions : BaseSecureOptions { public bool OnlyToRegister { get; set; } public bool OnlyRegistered { get; set; } public bool IncludeCourse { get; set; } public bool IncludeCourseAuthorizations { get; set; } public bool IncludeCourseTags { get; set; } public bool IncludeCourseNodes { get; set; } public bool IncludeCourseNodesTags { get; set; } public bool IncludeCourseNodesActivities { get; set; } public bool IncludeCourseOverride { get; set; } public bool IncludeCourseTagsOverride { get; set; } public bool IncludeNodeOverride { get; set; } public bool IncludeNodeTagOverride { get; set; } public List<Guid> FilterCourse { get; set; } public List<Guid> FilterUids { get; set; } public string FilterCourseMetadata { get; set; } } public class UserRegisterOptions : BaseOptions { public bool IncludeRegister { get; set; } public bool IncludeRegisterCourseOverride { get; set; } public bool IncludeRegisterCourseTagsOverride { get; set; } public bool IncludeRegisterNodeOverride { get; set; } public bool IncludeRegisterNodeTagsOverride { get; set; } public bool IncludeCourse { get; set; } public bool IncludeCourseProperties { get; set; } public bool IncludeCourseAuthorizations { get; set; } public bool IncludeCourseTags { get; set; } public bool IncludeCourseNode { get; set; } public bool IncludeCourseNodeTags { get; set; } public bool IncludeInteractions { get; set; } public bool IncludeInteractionScores { get; set; } public bool IncludeCourseNodeActivities { get; set; } public bool IncludeInteractionActivity { get; set; } public List<ContentStatus> FilterContentStatus { get; set; } public List<UserRegisterStatus> FilterRegisterStatus { get; set; } public List<Guid> FilterUser { get; set; } public List<Guid> FilterRegister { get; set; } public List<Guid> FilterUids { get; set; } public string FilterCourseMetadata { get; set; } public bool FilterRegistersWithProducts { get; set; } } public class ManagementActivityOptions : BaseManagementOptions { public bool IncludeInteractions { get; set; } public bool IncludeCourseAuthorizations { get; set; } public bool IncludeActivityContentHistory { get; set; } public bool IncludeNode { get; set; } public bool IncludeNodeActivities { get; set; } public bool IncludeCourse { get; set; } public bool IncludeSummary { get; set; } public List<Guid> FilterCourse { get; set; } public List<Guid> FilterActivities { get; set; } } public class ActivityInteractionObjectsOptions : BaseOptions { public List<Guid> FilterContext { get; set; } public List<Guid> FilterTarget { get; set; } public List<Guid> FilterRegister { get; set; } public List<Guid> FilterInteraction { get; set; } public bool IncludeActivityContentHistory { get; set; } public bool IncludeInteractionActivity { get; set; } public bool IncludeUserRegister { get; set; } } public class ActivityInteractionOptions : BaseOptions { public bool IncludeInteractionActivity { get; set; } public bool IncludeUserRegister { get; set; } public bool IncludeUserRegisterInteractions { get; set; } public bool IncludeInteractionsObjects { get; set; } public bool IncludeActivityNode { get; set; } public bool IncludeNodeCourse { get; set; } public bool IncludeNodeActivities { get; set; } public bool IncludeUserRegisterRegister { get; set; } public bool IncludeRegisterCourseOverride { get; set; } public bool IncludeRegisterNodeOverrides { get; set; } public bool IncludeRegisterAuthorizations { get; set; } public bool IncludeScoreHistory { get; set; } public List<Guid> FilterUserRegister { get; set; } public List<Guid> FilterRegister { get; set; } public List<Guid> FilterActivities { get; set; } public List<Guid> FilterUsers { get; set; } public List<Guid> FilterByContext { get; set; } public bool FilterWithReviews { get; set; } } public class CourseNodeOptions : BaseSecureOptions { public bool IncludeActivities { get; set; } public bool IncludeCourse { get; set; } public bool IncludeTags { get; set; } public bool OnlyToRegister { get; set; } } public class CoursePropertiesOptions : BaseManagementOptions { public bool IncludeCourse { get; set; } public bool IncludeCourseAuthorizations { get; set; } public List<Guid> FilterCourse { get; set; } } public class ManagementCourseOptions : BaseManagementOptions { public bool IncludeAuthorizations { get; set; } public bool IncludeRegisters { get; set; } public bool IncludeRegisterAuthorizations { get; set; } public bool IncludeNodeProperties { get; set; } public bool IncludeProperties { get; set; } public bool IncludeNodes { get; set; } public bool IncludeNodeActivities { get; set; } public bool IncludeActivitySummary { get; set; } public bool IncludeUserRegister { get; set; } public bool FilterEvaluatives { get; set; } public bool IncludeTags { get; set; } public List<Guid> FilterRegister { get; set; } public List<Guid> FilterEntities { get; set; } public string FilterMetadata { get; set; } public CourseQueryTemplate QueryTemplate { get; set; } public CourseType? FilterCourseType { get; set; } } public class ManagementCourseNodeOptions : BaseManagementOptions { public bool IncludeActivities { get; set; } public bool IncludeCourse { get; set; } public bool IncludeCourseAuthorizations { get; set; } public bool IncluseCourseNodeProperties { get; set; } public bool IncludeActivityContentHistory { get; set; } public bool IncludeTags { get; set; } } public class ManagementAuthorizationOptions : BaseOptions { public bool IncludeReferences { get; set; } } public class ManagementRegisterOptions : BaseManagementOptions { public bool OnlyToRegister { get; set; } public bool OnlyRegistered { get; set; } public bool IncludeAuthorizations { get; set; } public bool IncludeCourse { get; set; } public bool IncludeCourseTags { get; set; } public bool IncludeCourseAuthorizations { get; set; } public bool IncludeCourseNodes { get; set; } public bool IncludeCourseNodeTags { get; set; } public bool IncludeCourseOverride { get; set; } public bool IncludeCourseTagsOverride { get; set; } public bool IncludeCourseNodeActivities { get; set; } public bool IncludeNodeItemsOverride { get; set; } public bool IncludeNodeItemsTagsOverride { get; set; } public List<Guid> FilterNodeOverride { get; set; } } #endregion #region Options /// <summary> /// Responsavel por retornar o resumo de um curso e das atividades /// </summary> public class CourseSummariesOptions : IBaseCrudOptions { public bool IncludeActivitiesSummary { get; } public List<Guid> FilterCourse { get; } public IBaseAuthorizationFilter FilterAuthorizations { get; } public CourseSummariesOptions(bool includeActivitiesSummary) { IncludeActivitiesSummary = includeActivitiesSummary; } public CourseSummariesOptions (bool includeActivitiesSummary, List<Guid> filterCourse) { IncludeActivitiesSummary = includeActivitiesSummary; FilterCourse = filterCourse; } public CourseSummariesOptions(bool includeActivitiesSummary, List<Guid> filterCourse, IBaseAuthorizationFilter authorization) { IncludeActivitiesSummary = includeActivitiesSummary; FilterCourse = filterCourse; FilterAuthorizations = authorization; } } public class CourseSummaryDefaultOptions : IBaseCrudOptions { public bool IncludeCourse { get; } public List<Guid?> FilterCourse { get; } public CourseSummaryDefaultOptions(bool includeCourse) { IncludeCourse = includeCourse; } public CourseSummaryDefaultOptions(bool includeCourse, List<Guid?> filterCourse) { IncludeCourse = includeCourse; FilterCourse = filterCourse; } } public class ActivitySummaryDefaultOptions : IBaseCrudOptions { public bool IncludeActivity { get; } public ActivitySummaryDefaultOptions (bool includeActivity) { IncludeActivity = includeActivity; } } public class ActivityPendingSummaryOptions : IBaseCrudOptions { public Guid CourseUid { get; } public int Limit { get; } public DateTime UpdatedAtBefore { get;} public ActivityPendingSummaryOptions(Guid courseUid, DateTime updatedAtBefore, int limit) { CourseUid = courseUid; UpdatedAtBefore = updatedAtBefore; Limit = limit; } } public class NodesPendingSummaryOptions : IBaseCrudOptions { public Guid CourseUid { get; } public int Limit { get; } public DateTime UpdatedAtBefore { get; } public NodesPendingSummaryOptions(Guid courseUid, DateTime updatedAtBefore, int limit) { CourseUid = courseUid; UpdatedAtBefore = updatedAtBefore; Limit = limit; } } public class CoursePendingSummaryOptions : IBaseCrudOptions { public Guid CourseUid { get; } public int Limit { get; } public DateTime UpdatedAtBefore { get; } public CoursePendingSummaryOptions(Guid courseUid, DateTime updatedAtBefore, int limit) { CourseUid = courseUid; UpdatedAtBefore = updatedAtBefore; Limit = limit; } } #endregion }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rkm097git/euconquisto-composer-mcp-poc'

If you have feedback or need assistance with the MCP directory API, please join our Discord server