ITeam.cs•3.07 kB
using System;
using System.Collections.Generic;
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>
/// 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 gerenciamento
/// </summary>
public interface ITeamAuthorization : IBaseAuthorizationV4
{
}
/// <summary>
/// Represa uma referência de um membro em um time
/// Aceito objectType: User, Entity e Team
/// </summary>
public interface ITeamUserMemberReference : IBaseModelV3<ITeam>
{
ObjectType ReferenceType { get; set; }
Guid ReferenceUid { get; set; }
string GroupUid { get; set; }
List<ITeamObjectReference> ObjectReferences { 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; }
bool Required { 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; }
}
}