У меня есть коллекция из базы данных. И в коллекции есть проверка состояния ведьмы, которую имеет vcheq.
Коллекция выглядит так:
List<EcheqSubmissionInfoApi> submissions = await _patientDbContext.EcheqSubmissions
.Where(s => s.AssignedToId == participantId)
.OrderBy(s => (int)s.Status)
.ThenByDescending(s => s.AssignedOnUtc)
.Select(i => ConvertToPartialApi(i)).ToListAsync();
, а метод ConvertToPartialApi выглядит следующим образом:
private static EcheqSubmissionInfoApi ConvertToPartialApi(EcheqSubmission submission)
{
return new EcheqSubmissionInfoApi
{
Id = submission.Id,
Status = submission.Status.StatusDbToApi(),
DefinitionId = submission.DefinitionId,
SubmittedOnUtc = submission.SubmittedOnUtc,
AssignedByOrgId = submission.AssignedByOrgId,
AssignedByProfId = submission.AssignedByProfId,
AssignedOnUtc = submission.AssignedOnUtc,
AssignedToId = submission.AssignedToId,
ValidUntilUtc = submission.ValidUntilUtc,
CurrentPage = submission.CurrentPage,
Progress = submission.Progress
};
}
, а StatusDbToApi - это случай переключения, например:
public static EcheqSubmissionStatusApi StatusDbToApi(this EcheqSubmissionStatus dbStatus)
{
EcheqSubmissionStatusApi status;
EcheqSubmissionInfoApi echeqSubmissionInfoApi;
if (echeqSubmissionInfoApi.ValidUntilUtc < DateTime.Now)
{
return EcheqSubmissionStatusApi.Expired;
}
else
{
switch (dbStatus)
{
case EcheqSubmissionStatus.New:
status = EcheqSubmissionStatusApi.New;
break;
case EcheqSubmissionStatus.Active:
status = EcheqSubmissionStatusApi.Active;
break;
case EcheqSubmissionStatus.Submitted:
status = EcheqSubmissionStatusApi.Submitted;
break;
//case EcheqSubmissionStatus.Expired:
// status = EcheqSubmissionStatusApi.Expired;
// break;
default:
throw new ArgumentOutOfRangeException(nameof(dbStatus), dbStatus, "Not a valid status enum");
}
}
return status;
}
Но теперь я хочу создать проверку для состояния с истекшим сроком действия. как это:
if (echeqSubmissionInfoApi.ValidUntilUtc < DateTime.Now)
{
return EcheqSubmissionStatusApi.Expired;
}
Но, конечно, вы получите ошибку в этой строке, потому что она не назначена.
Но как это исправить?
Спасибо
Или как это изменить?
если я сделаю это так:
EcheqSubmissionInfoApi echeqSubmissionInfoApi = new EcheqSubmissionInfoApi();
if (echeqSubmissionInfoApi.ValidUntilUtc < DateTime.Now)
{
return EcheqSubmissionStatusApi.Expired;
}
ValidUntilUtc
всегда равно нулю
Ок, я положил это:
public class EcheqSubmission{
public EcheqSubmissionStatusApi StatusDbToApi(EcheqSubmissionStatus dbStatus, EcheqSubmissionInfoApi echeqSubmissionInfoApi)
{
EcheqSubmissionStatusApi status;
// EcheqSubmissionInfoApi echeqSubmissionInfoApi = new EcheqSubmissionInfoApi();
if (echeqSubmissionInfoApi.ValidUntilUtc < DateTime.Now)
{
return EcheqSubmissionStatusApi.Expired;
}
else
{
switch (dbStatus)
{
case EcheqSubmissionStatus.New:
status = EcheqSubmissionStatusApi.New;
break;
case EcheqSubmissionStatus.Active:
status = EcheqSubmissionStatusApi.Active;
break;
case EcheqSubmissionStatus.Submitted:
status = EcheqSubmissionStatusApi.Submitted;
break;
//case EcheqSubmissionStatus.Expired:
// status = EcheqSubmissionStatusApi.Expired;
// break;
default:
throw new ArgumentOutOfRangeException(nameof(dbStatus), dbStatus, "Not a valid status enum");
}
}
return status;
}
}
в классе:
EcheqSubmission
что тогда является возвращаемым типом этого:
private static EcheqSubmissionInfoApi ConvertToPartialApi(EcheqSubmission submission)
{
var result = new EcheqSubmissionInfoApi
{
Id = submission.Id,
Status = submission.Status.StatusDbToApi(),
DefinitionId = submission.DefinitionId,
SubmittedOnUtc = submission.SubmittedOnUtc,
AssignedByOrgId = submission.AssignedByOrgId,
AssignedByProfId = submission.AssignedByProfId,
AssignedOnUtc = submission.AssignedOnUtc,
AssignedToId = submission.AssignedToId,
ValidUntilUtc = submission.ValidUntilUtc,
CurrentPage = submission.CurrentPage,
Progress = submission.Progress
};
result.Status = submission.Status.StatusDbToApi();
}