ICourse.cs•3.83 kB
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Api.DigitalPages.Interfaces.Models
{
public interface ICourse : IBaseModelV3
{
/// <summary>
/// Nome do curso.
/// </summary>
///
string Title { get; set; }
/// <summary>
/// Descrição do curso.
/// </summary>
string Description { get; set; }
/// <summary>
/// Thumb representação do curso.
/// </summary>
string ThumbUrl { get; set; }
/// <summary>
/// Nome interno do curso, utilizado apenas para facilitar o gerenciamento.
/// </summary>
string InternalName { get; set; }
/// <summary>
/// Entidades relacionadas ao curso.
/// </summary>
List<Guid> Entities { get; set; }
/// <summary>
/// Descritivo da estrutura base de cada nó do curso.
/// </summary>
List<ICourseNodeProperty> NodeProperties { get; set; }
/// <summary>
/// Propriedades adicionais do curso.
/// </summary>
List<ICourseProperty> CourseProperties { get; set; }
/// <summary>
/// Todos os nós do curso, formando a trilha.
/// </summary>
List<ICourseNodeItem> Nodes { get; set; }
/// <summary>
/// Úsuários ou entidades que possuem permissão de visualizar o curso independente da data de abertura de um curso.
/// </summary>
List<ICourseAuthorization> Authorizations { get; set; }
/// <summary>
/// Relação de períodos que o curso deve estar visível e acessível para os os usuários.
/// </summary>
List<ICourseRegister> Registers { get; set; }
/// <summary>
/// Tags adicionadas no curso visivél para os usuários.
/// </summary>
List<ITag> Tags { get; set; }
/// <summary>
/// Tipo de curso.
/// </summary>
CourseType Type { get; set; }
/// <summary>
/// Tipo de calculo que será feito com os nós em um curso.
/// </summary>
FormulaType? TypeFormulaScore { get; set; }
IContentSummary<ICourse> Summary { get; set; }
/// <summary>
/// Adiciona nova campo para estrutura base de um nó.
/// </summary>
/// <param name="name"></param>
/// <param name="regexValidation"></param>
/// <param name="type"></param>
void AddProperty(string name, string regexValidation, DynamicPropertyType type);
Task<Dictionary<string, object>> ValidData(ICourseNodeItem item);
Task<bool> ValidProperties();
Task<bool> ValidProperty(ICourseProperty property);
}
public interface ICourseOverride : IBaseModelV2
{
/// <summary>
/// Curso que terá suas proproedades alteradas.
/// </summary>
ICourse Course { get; set; }
/// <summary>
/// Nome do curso.
/// </summary>
string Title { get; set; }
/// <summary>
/// Descrição do curso.
/// </summary>
string Description { get; set; }
/// <summary>
/// Thumb representação do curso.
/// </summary>
string ThumbUrl { get; set; }
/// <summary>
/// Entidades relacionadas ao curso.
/// </summary>
List<Guid> Entities { get; set; }
/// <summary>
/// Tags adicionadas no curso visivél para os usuários.
/// </summary>
List<ITag> Tags { get; set; }
}
public enum CourseStatus
{
All,
Completed,
Incomplete
}
public enum CourseType
{
Content,
Interaction,
EvaluativeContent
}
}