iteam.md•4.56 kB
### Times
Um time é uma entidade especializada que representa um grupo de usuários dentro da plataforma. Os times podem ser usados para organizar usuários, gerenciar projetos, colaborar em atividades e muito mais.
**Características Principais:**
~~~csharp
namespace Api.DigitalPages.Interfaces.Models
{
/// <summary>
/// Representa um agrupador de pessoas e/ou grupos gerenciado por usuário ou um grupo de usuários.
/// Pode estar atrelado a diferentes contextos da plataforma, como cursos, arquivos...
/// </summary>
public interface ITeam : IBaseModelV3, IRestrictedDataV4<ITeamAuthorization>
{
/// <summary>
/// Nome atribuído ao time
/// </summary>
string Name { get; set; }
/// <summary>
/// Descrição atribuída ao time
/// </summary>
string Description { get; set; }
/// <summary>
/// Nome único atribuído ao time
/// </summary>
string UniqueName { get; set; }
/// <summary>
/// Data que o time deve estar ativo (opcional)
/// </summary>
DateTime? StartAt { get; set; }
/// <summary>
/// Data que o time deve estar finalizado (opcional)
/// </summary>
DateTime? EndAt { get; set; }
/// <summary>
/// Propriedades customizadas que podem ser atribuídas ao time
/// </summary>
List<IDynamicPropertyValue> Properties { get; set; }
/// <summary>
/// Todos os contextos referenciados/gerenciados pelo time.
/// </summary>
List<ITeamObjectReference> ObjectReferences { get; set; }
/// <summary>
/// Todos os usuários que devem fazer parte do time.
/// Aceito objectType: User e Entity
/// </summary>
List<ITeamUserMemberReference> UserMembers { get; set; }
/// <summary>
/// Todos os usuários que devem gerenciar o time.
/// Aceito objectType: User e Entity
/// </summary>
List<ITeamUserManagerReference> UserManagers { get; set; }
}
/// <summary>
/// Permissões de gerenciamnto
/// </summary>
public interface ITeamAuthorization : IBaseAuthorizationV4
{
}
/// <summary>
/// Represa uma referência de um membro em um time
/// Aceito objectType: User e Entity
/// </summary>
public interface ITeamUserMemberReference : IBaseModelV3<ITeam>
{
ObjectType ReferenceType { get; set; }
Guid ReferenceUid { get; set; }
}
/// <summary>
/// Represa uma referência de um membro capaz de gerenciar o time
/// Aceito objectType: User e Entity
/// </summary>
public interface ITeamUserManagerReference : IBaseModelV3<ITeam>
{
ObjectType ReferenceType { get; set; }
Guid ReferenceUid { get; set; }
}
/// <summary>
/// Representa os objetos aceitos pelo time para gerenciamento.
/// </summary>
public interface ITeamObjectReference : IBaseModelV3<ITeam>
{
ObjectType ReferenceType { get; set; }
Guid ReferenceUid { get; set; }
}
}
~~~
**Flexibilidade:**
Os times são altamente flexíveis devido à capacidade de adicionar propriedades customizadas e referências a uma variedade de objetos e entidades. Isso permite que os times sejam adaptados a diferentes contextos, como gerenciamento de projetos, equipes de aprendizado, salas de chat, etc.
**Serialização do modelo em JSON:**
~~~json
{
"uid": "7c1e35b6-7506-ef11-96f5-00224821b633",
"name": "Time de desenvolvimento",
"description": "Conteúdos especificos para o time de desenvolvimento",
"unique_name": "team_dev",
"start_at": "2024-04-29",
"end_at": "2025-04-29",
"properties": [
{
"name": "Cor",
"type": "ColorHex",
"value": "#ff0000",
"regex_validation": null
},
{
"name": "Valor",
"type": "NumberInteger",
"value": "10",
"regex_validation": null
}
],
"object_references": [
{
"reference_uid": "10000000-0000-0000-0000-000000000000",
"reference_type" : "Course"
}
],
"user_members": [
{
"reference_type" : "User",
"reference_uid": "20000000-0000-0000-0000-000000000000"
}
],
"user_managers": [
{
"reference_type" : "User",
"reference_uid": "30000000-0000-0000-0000-000000000000"
}
]
}
~~~