Как правильно маппить результат функции в поле?

У меня есть две модели: Operator и OperatorDto. Выглядят они вот так:

public class Operator : BaseEntity
{
    public string Login { get; protected set; }

    public string Password { get; protected set; }

    public bool IsActive { get; set; }

    public DateTime? PasswordChangeDate { get; protected set; }

    public DateTime? LastLoginDate { get; protected set; }

    public DateTime? BlockDate { get; protected set; }

    public Guid SubjectId { get; set; }

    public virtual Subject Subject { get; set; }
}

public class OperatorDto
{
    [JsonProperty( PropertyName = "id" )]
    public Guid? Id { get; set; }

    [JsonProperty( PropertyName = "login" )]
    public string Login { get; set; }

    [JsonProperty( PropertyName = "is_active" )]
    public bool IsActive { get; set; }

    [JsonProperty( PropertyName = "blocked_until_date" )]
    public DateTime? BlockedUntilDate { get; set; }
}

Задача: вычислить дату разблокировки пользователя. Сейчас я сделал вот так: Расширил OperatorDto, добавив

[JsonIgnore]
public DateTime? BlockDate { get; set; }

Дальше в нужных методах я вызываю я получаю время, на которое заблокировали пользователя, а потом складываю время блокировки с этим временем:

var currentOperator = await context.PrincipalGet();

var accountLockoutMinutes = SecurityLogic
            .GetSecuritySettings().AccountLockoutMinutes;

currentOperator.BlockedUntilDate = currentOperator.BlockDate + TimeSpan.FromMinutes(
                accountLockoutMinutes );

Проблема в том, что это приходится делать в каждом методе, про это можно попросту забыть. Как сделать правильно? Я использую мапстер для маппинга некоторых дто, но я не совсем понимаю, как он мне тут может помочь

update:

Я могу сделать так, но осталось понять, на сколько заблокировали пользователя

[JsonProperty( PropertyName = "blocked_until_date" )]
public DateTime? BlockedUntilDate => 
    BlockDate + TimeSpan.FromMinutes( 1 );

Ответы (0 шт):