using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
#if NETFRAMEWORK
using System;
#endif

namespace DigitalData.UserManager.Domain.Entities
{
    public class BaseEntity
    {
        [Column("GUID")]
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        [StringLength(50)]
        [Column("ADDED_WHO")]
        public string
#if NET7_0_OR_GREATER
            ?
#endif
            AddedWho
        { get; set; }

        [StringLength(50)]
        [Column("CHANGED_WHO")]
        public string
#if NET7_0_OR_GREATER
            ?
#endif
            ChangedWho
        { get; set; }

        //TODO: assign it to default value in create dto, not here!
        [Column("ADDED_WHEN", TypeName = "datetime")]
        [DefaultValue("GETDATE()")]
        public DateTime AddedWhen { get; set; } = DateTime.Now;

        [Column("CHANGED_WHEN", TypeName = "datetime")]
        public DateTime? ChangedWhen { get; set; }
    }
}