52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.ComponentModel.DataAnnotations;
 | 
						|
using System.ComponentModel.DataAnnotations.Schema;
 | 
						|
using NodaTime.Serialization.Protobuf;
 | 
						|
 | 
						|
namespace DysonNetwork.Shared.Models;
 | 
						|
 | 
						|
public class SnBotAccount : ModelBase
 | 
						|
{
 | 
						|
    public Guid Id { get; set; } = Guid.NewGuid();
 | 
						|
    [MaxLength(1024)] public string Slug { get; set; } = null!;
 | 
						|
 | 
						|
    public bool IsActive { get; set; } = true;
 | 
						|
 | 
						|
    public Guid ProjectId { get; set; }
 | 
						|
    public SnDevProject Project { get; set; } = null!;
 | 
						|
    
 | 
						|
    [NotMapped] public SnAccount? Account { get; set; }
 | 
						|
    
 | 
						|
    /// <summary>
 | 
						|
    /// This developer field is to serve the transparent info for user to know which developer
 | 
						|
    /// published this robot. Not for relationships usage.
 | 
						|
    /// </summary>
 | 
						|
    [NotMapped] public SnDeveloper? Developer { get; set; }
 | 
						|
 | 
						|
    public Proto.BotAccount ToProtoValue()
 | 
						|
    {
 | 
						|
        var proto = new Proto.BotAccount
 | 
						|
        {
 | 
						|
            Slug = Slug,
 | 
						|
            IsActive = IsActive,
 | 
						|
            AutomatedId = Id.ToString(),
 | 
						|
            CreatedAt = CreatedAt.ToTimestamp(),
 | 
						|
            UpdatedAt = UpdatedAt.ToTimestamp()
 | 
						|
        };
 | 
						|
 | 
						|
        return proto;
 | 
						|
    }
 | 
						|
 | 
						|
    public static SnBotAccount FromProto(Proto.BotAccount proto)
 | 
						|
    {
 | 
						|
        var botAccount = new SnBotAccount
 | 
						|
        {
 | 
						|
            Id = Guid.Parse(proto.AutomatedId),
 | 
						|
            Slug = proto.Slug,
 | 
						|
            IsActive = proto.IsActive,
 | 
						|
            CreatedAt = proto.CreatedAt.ToInstant(),
 | 
						|
            UpdatedAt = proto.UpdatedAt.ToInstant()
 | 
						|
        };
 | 
						|
 | 
						|
        return botAccount;
 | 
						|
    }
 | 
						|
} |