using ManagerService.DTOs;
using System;
using System.ComponentModel.DataAnnotations;
using Microsoft.EntityFrameworkCore;
namespace ManagerService.Data
{
///
/// User Information
///
[Index(nameof(InstanceId))]
public class User : IAuditableEntity
{
[Key]
[Required]
/*[BsonId]
[BsonRepresentation(MongoDB.Bson.BsonType.ObjectId)]*/
public string Id { get; set; }
//[BsonElement("Email")]
//[BsonRequired]
[Required]
public string Email { get; set; } // UNIQUE !..
//[BsonElement("Password")]
//[BsonRequired]
[Required]
public string Password { get; set; }
//[BsonElement("FirstName")]
//[BsonRequired]
public string FirstName { get; set; }
//[BsonElement("LastName")]
//[BsonRequired]
[Required]
public string LastName { get; set; }
//[BsonElement("Token")]
//[BsonRequired]
[Required]
public string Token { get; set; }
//[BsonElement("DateCreation")]
public DateTime DateCreation { get; set; }
public DateTime DateUpdate { get; set; }
/*[BsonElement("InstanceId")]
[BsonRequired]*/
[Required]
public string InstanceId { get; set; }
public UserRole Role { get; set; } = UserRole.ContentEditor;
/// SHA-256 hash of the pending set-password/reset token, if any.
public string? PasswordTokenHash { get; set; }
public DateTime? PasswordTokenExpiresAt { get; set; }
public UserDetailDTO ToDTO()
{
return new UserDetailDTO()
{
id = Id,
email = Email,
firstName = FirstName,
lastName = LastName,
instanceId = InstanceId,
role = Role,
};
}
}
}