состояние в корпусе коммутатора - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть коллекция из базы данных. И в коллекции есть проверка состояния ведьмы, которую имеет 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();


        }

1 Ответ

1 голос
/ 20 февраля 2020

У вас есть несколько вариантов решения проблемы:

1) Введите submission.ValidUntilUtc в качестве параметра в StatusDbToApi(), поэтому у вас есть простой DateTime для проверки

2) Сначала создайте свой EcheqSubmissionInfoApi, не заполняя его статус, а затем установите его статус после создания:

var result = new EcheqSubmissionInfoApi
            {
                Id = submission.Id,
                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();

3) Перепишите StatusDbToApi в метод non-stati c для EcheqSubmissionStatus, который возвращает правильный статус.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...