LearnLanguages.Study.ViewModels.StudyPhraseTimedQuestionAnswerViewModel.SaveAnswer C# (CSharp) Метод

SaveAnswer() публичный Метод

public SaveAnswer ( ) : System.Threading.Tasks.Task
Результат System.Threading.Tasks.Task
    public async Task SaveAnswer()
    {

      AnswerIsReadOnly = true;
      SaveAnswerButtonIsEnabled = false;

      #region Thinking (try..)
      var targetId = Guid.NewGuid();
      History.Events.ThinkingAboutTargetEvent.Publish(targetId);
      DisableNavigationRequestedEventMessage.Publish();
      try
      {
      #endregion
        #region Get the DB version of answer, then modify it and save

        //STORE OUR MODIFIED TEXT
        _ModifiedAnswerText = Answer.Text;

        //PREPARE ANSWER TO BE SEARCHED FOR IN DB
        Answer.Text = _InitialAnswerText;
        PhrasesByTextAndLanguageRetriever retriever = null;
        #region SEARCH IN DB FOR ANSWER (WITH INITIAL TEXT)
        History.Events.ThinkingAboutTargetEvent.Publish(System.Guid.Empty);
        {
          retriever = await Business.PhrasesByTextAndLanguageRetriever.CreateNewAsync(Answer);
        }
        History.Events.ThinkingAboutTargetEvent.Publish(System.Guid.Empty);

        var dbAnswer = retriever.RetrievedSinglePhrase;
        if (dbAnswer == null)
        {
          //ANSWER NOT IN DB, BUT ANSWER IS A CHILD
          if (Answer.IsChild)
          {
            //CANNOT SAVE THE ANSWER DIRECTLY BECAUSE IT IS A CHILD
            #region CREATE NEW PHRASE EDIT, LOAD FROM ANSWER DTO, SAVE ANSWER
            var newAnswerObj = await PhraseEdit.NewPhraseEditAsync();

            Answer.Text = _ModifiedAnswerText;
            var dto = Answer.CreateDto();
            dto.Id = Guid.NewGuid();

            newAnswerObj.LoadFromDtoBypassPropertyChecks(dto);
            Answer = newAnswerObj;

            #region Save Answer
            Answer = await Answer.SaveAsync();
            _InitialAnswerText = Answer.Text;
            _ModifiedAnswerText = "";
            SaveAnswerButtonIsEnabled = true;
            AnswerIsReadOnly = true;
            UpdateEditAnswerButtonVisibilities();
            #endregion
            #endregion
          }
          //ANSWER NOT IN DB, BUT ANSWER IS NOT A CHILD
          else
          {
            #region SAVE THE ANSWER DIRECTLY, B/C IT IS NOT A CHILD
            Answer = await Answer.SaveAsync();
            _InitialAnswerText = Answer.Text;
            _ModifiedAnswerText = "";
            SaveAnswerButtonIsEnabled = true;
            AnswerIsReadOnly = true;
            UpdateEditAnswerButtonVisibilities();
            #endregion
          }
        }
        //ANSWER WAS FOUND IN DB
        else
        {
          #region REASSIGN THE ANSWER WITH THE DBANSWER, SAVE WITH THE MODIFIED TEXT
          Answer = dbAnswer;
          Answer.Text = _ModifiedAnswerText;
          Answer = await Answer.SaveAsync();
          _InitialAnswerText = Answer.Text;
          _ModifiedAnswerText = "";
          SaveAnswerButtonIsEnabled = true;
          AnswerIsReadOnly = true;
          UpdateEditAnswerButtonVisibilities();
          #endregion
        }

        #endregion

        #endregion
        #region (...finally) Thinked
      }
      finally
      {
        EnableNavigationRequestedEventMessage.Publish();
        History.Events.ThinkedAboutTargetEvent.Publish(targetId);
      }
        #endregion
    }