Как правильно маппить результат функции в поле?
У меня есть две модели: 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 );