27 lines
		
	
	
		
			752 B
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			752 B
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.ComponentModel.DataAnnotations;
 | 
						|
using System.ComponentModel.DataAnnotations.Schema;
 | 
						|
using NodaTime;
 | 
						|
 | 
						|
namespace DysonNetwork.Shared.Models;
 | 
						|
 | 
						|
public enum PunishmentType
 | 
						|
{
 | 
						|
    // TODO: impl the permission modification
 | 
						|
    PermissionModification,
 | 
						|
    BlockLogin,
 | 
						|
    DisableAccount,
 | 
						|
    Strike
 | 
						|
}
 | 
						|
 | 
						|
public class SnAccountPunishment : ModelBase
 | 
						|
{
 | 
						|
    public Guid Id { get; set; } = Guid.NewGuid();
 | 
						|
    [MaxLength(8192)] public string Reason { get; set; } = string.Empty;
 | 
						|
    public Instant? ExpiredAt { get; set; }
 | 
						|
    
 | 
						|
    public PunishmentType Type { get; set; }
 | 
						|
    [Column(TypeName = "jsonb")] public List<string>? BlockedPermissions { get; set; }
 | 
						|
 | 
						|
    public Guid AccountId { get; set; }
 | 
						|
    public SnAccount Account { get; set; } = null!;
 | 
						|
} |