66 lines
2.0 KiB
C#
66 lines
2.0 KiB
C#
using Elwig.Helpers;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace Elwig.Models.Entities {
|
|
[Table("member_history"), PrimaryKey("HistNr")]
|
|
public class MemberHistory {
|
|
[Column("histnr")]
|
|
public int HistNr { get; set; }
|
|
|
|
[Column("from_mgnr")]
|
|
public int? FromMgNr { get; set; }
|
|
[Column("from_type")]
|
|
public int? FromType { get; set; }
|
|
|
|
[Column("to_mgnr")]
|
|
public int? ToMgNr { get; set; }
|
|
[Column("to_type")]
|
|
public int? ToType { get; set; }
|
|
|
|
[Column("date")]
|
|
public required string DateString { get; set; }
|
|
[NotMapped]
|
|
public DateOnly Date {
|
|
get => DateOnly.ParseExact(DateString, "yyyy-MM-dd");
|
|
set => value.ToString("yyyy-MM-dd");
|
|
}
|
|
|
|
[Column("reason")]
|
|
public required string Reason { get; set; }
|
|
|
|
[Column("source")]
|
|
public required string Source { get; set; }
|
|
|
|
[Column("shares")]
|
|
public int Shares { get; set; }
|
|
|
|
[Column("value_per_share")]
|
|
public long? ValuePerShareValue { get; set; }
|
|
[NotMapped]
|
|
public decimal? ValuePerShare {
|
|
get => ValuePerShareValue != null ? Utils.DecFromDb(ValuePerShareValue.Value, 2) : null;
|
|
set => ValuePerShareValue = value != null ? Utils.DecToDb(value.Value, 2) : null;
|
|
}
|
|
|
|
[NotMapped]
|
|
public decimal? TotalValue => Shares * ValuePerShare;
|
|
|
|
[Column("currency")]
|
|
public string? CurrencyCode { get; set; }
|
|
|
|
[Column("comment")]
|
|
public string? Comment { get; set; }
|
|
|
|
[ForeignKey("FromMgNr")]
|
|
public virtual Member FromMember { get; private set; } = null!;
|
|
|
|
[ForeignKey("ToMgNr")]
|
|
public virtual Member ToMember { get; private set; } = null!;
|
|
|
|
[ForeignKey("CurrencyCode")]
|
|
public virtual Currency Currency { get; private set; } = null!;
|
|
}
|
|
}
|