예제 #1
0
        public async Task <ActionResult <ChainInfoView> > Get(int id)
        {
            Chain chain = await _db.Chains
                          .Include(x => x.QuestChains)
                          .ThenInclude(x => x.Quest)
                          .FirstOrDefaultAsync(x => x.Id == id);

            if (chain == null)
            {
                return(NotFound());
            }

            var chainInfo = new ChainInfoView
            {
                Chain = new Chain
                {
                    Description = chain.Description,
                    Id          = chain.Id,
                    Name        = chain.Name,
                },
                QuestChains = chain.QuestChains.Select(x => new QuestChain
                {
                    ChainId    = x.ChainId,
                    Id         = x.Id,
                    QuestId    = x.QuestId,
                    StepNumber = x.StepNumber,
                    Quest      = new Quest
                    {
                        Id   = x.QuestId,
                        Name = x.Quest.Name,
                    },
                }).ToList(),
            };

            return(new ObjectResult(chainInfo));
        }
예제 #2
0
        protected void SetupPage()
        {
            AddTitleRow("Title");

            AddHeaderRow("Service");

#pragma warning disable RECS0021 // Warns about calls to virtual member functions occuring in the constructor
            PreAddRows();
#pragma warning restore RECS0021 // Warns about calls to virtual member functions occuring in the constructor

            _chainIdText = AddEntryRow(null, "ChainInfoBasePage.ChainId");
            _chainIdText.SetDetailViewIcon(Icons.Link);

            if (_chainId > 0)
            {
                _chainIdText.Edit.Text      = _chainId.ToString();
                _chainIdText.Edit.IsEnabled = false;
            }

            _chainView = new ChainInfoView();
            AddViewRow(_chainView);
            _link           = AddLinkRow("ChainInfoBasePage.ChainLink", "");
            _link.IsEnabled = false;

            _account = AddButtonRow("ChainInfoBasePage.AccountProfile", Account);
            _account.SetDetailViewIcon(Icons.Coins);
            _account.IsEnabled = false;

#pragma warning disable RECS0021 // Warns about calls to virtual member functions occuring in the constructor
            PostAddRows();
#pragma warning restore RECS0021 // Warns about calls to virtual member functions occuring in the constructor

            AddFooterRow();

            Status.Add(_chainIdText.Edit, T("ChainInfoBasePage.ChainIdStatus"), (sv, edit, newText, oldText) =>
            {
                var success = false;
                if (StatusValidators.PositiveNumberValidator(sv, edit, newText, oldText))
                {
                    if (int.TryParse(newText, out var id))
                    {
                        if (_chainInfo != null && _chainInfo.ChainId == id)
                        {
                            success = true;
                        }
                        else
                        {
                            _ = QueryChainInfo(id);
                        }
                    }
                }
                else
                {
                    _queryChainId = -1;
                    _chainInfo    = null;
                    QueryDone(-1, null);
                    UIApp.Run(() => QueryDoneAsync(-1, null));
                }

                _chainView.Update(_chainInfo);
                if (_chainInfo != null)
                {
                    if (!string.IsNullOrEmpty(_chainInfo.Website))
                    {
                        _link.IsEnabled = true;
                        _link.Tag       = _chainInfo.Website;
                    }
                    _account.IsEnabled = true;
                }
                else
                {
                    _link.IsEnabled    = false;
                    _account.IsEnabled = false;
                }

                ChainInfoChanged();

                return(success);
            });
        }