コード例 #1
0
        public async Task <IActionResult> ContractPrice(
            [FromServices] ITokenAPIRopository tokenAPIRopository,
            string id,
            CancellationToken token)
        {
            try
            {
                var r = await tokenAPIRopository.GetTokenContractPriceAsync(id);

                return(Json(r));
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw e;
            }
        }
コード例 #2
0
        public async Task <IActionResult> Index([FromServices] KyubeyContext db, [FromServices] ITokenRepository _tokenRepository, [FromServices] ITokenAPIRopository tokenAPIRopository, string id, CancellationToken cancellationToken)
        {
            var token = await db.Tokens
                        .Include(x => x.Curve)
                        .SingleOrDefaultAsync(x => x.Id == id &&
                                              x.Status == TokenStatus.Active, cancellationToken);

            if (token == null)
            {
                return(Prompt(x =>
                {
                    x.Title = SR["Token not found"];
                    x.Details = SR["The token {0} is not found", id];
                    x.StatusCode = 404;
                }));
            }

            ViewBag.Curve = token.Curve;
            ViewBag.Token = token;

            var tokenInfo = _tokenRepository.GetOne(id);

            ViewBag.TokenInfo        = tokenInfo;
            ViewBag.TokenDescription = _tokenRepository.GetTokenIncubationDescription(id, currentCulture);

            if (!token.HasIncubation || tokenInfo.Incubation == null)
            {
                return(View("IndexOld", token));
            }
            tokenInfo.Incubation.Begin_Time = tokenInfo.Incubation.Begin_Time ?? DateTime.MinValue;

            ViewBag.Flex = false;

            var comments = db.TokenComments
                           .Include(x => x.User)
                           .Include(x => x.ReplyUserId)
                           .Where(x => x.TokenId == id && x.IsDelete == false)
                           .Select(x => new TokenComment()
            {
                Id              = x.Id,
                ReplyUserId     = x.ReplyUserId,
                UserId          = x.UserId,
                User            = x.User,
                Content         = x.Content,
                CreateTime      = x.CreateTime,
                DeleteTime      = x.DeleteTime,
                IsDelete        = x.IsDelete,
                ParentCommentId = x.ParentCommentId,
                ReplyUser       = db.Users.FirstOrDefault(u => u.Id == x.ReplyUserId),
                TokenId         = x.TokenId
            })
                           .ToList();

            var commentPraises = await(from p in db.TokenCommentPraises
                                       join c in db.TokenComments
                                       on p.CommentId equals c.Id
                                       where c.IsDelete == false && c.TokenId == id
                                       select p).ToListAsync(cancellationToken);

            var commentsVM = comments.Where(x => x.ReplyUserId == null).OrderByDescending(x => x.CreateTime).Select(x => new TokenCommentViewModel()
            {
                Content       = x.Content,
                CreateTime    = x.CreateTime.ToLocalTime().ToString("d", System.Globalization.CultureInfo.InvariantCulture),
                PraiseCount   = commentPraises.Count(p => p.CommentId == x.Id),
                UserId        = x.UserId,
                UserName      = x.User.UserName,
                ChildComments = comments.Where(cc => cc.ParentCommentId == x.Id).OrderByDescending(c => c.CreateTime).Select(c => new TokenCommentViewModel()
                {
                    Content       = c.Content,
                    CreateTime    = c.CreateTime.ToLocalTime().ToString("d", System.Globalization.CultureInfo.InvariantCulture),
                    PraiseCount   = commentPraises.Count(p => p.CommentId == x.Id),
                    ReplyUserId   = c.ReplyUserId,
                    UserId        = c.UserId,
                    UserName      = c.User.UserName,
                    ReplyUserName = c.ReplyUser?.UserName
                }).ToList()
            }).ToList();

            var handlerVM = new TokenIncubationViewModel()
            {
                IncubationInfo = new IncubationInfo()
                {
                    Detail             = _tokenRepository.GetTokenIncubationDetail(id, currentCulture),
                    Introduction       = _tokenRepository.GetTokenIncubationDescription(id, currentCulture),
                    RemainingDay       = tokenInfo?.Incubation?.DeadLine == null ? -999 : Math.Max((tokenInfo.Incubation.DeadLine - DateTime.Now).Days, 0),
                    TargetCredits      = tokenInfo?.Incubation?.Goal ?? 0,
                    CurrentRaised      = token.Raised,
                    CurrentRaisedCount = await db.RaiseLogs.Where(x =>
                                                                  (x.Timestamp > (tokenInfo.Incubation.Begin_Time ?? DateTime.MinValue) &&
                                                                   x.Timestamp < tokenInfo.Incubation.DeadLine) &&
                                                                  x.TokenId == token.Id && !x.Account.StartsWith("eosio.")).CountAsync(),
                    BeginTime = tokenInfo?.Incubation?.Begin_Time
                },
                IncubatorBannerUrls = TokenTool.GetTokenIncubatorBannerUris(id, _tokenRepository.GetTokenIncubationBannerPaths(id, currentCulture)),
                Comments            = commentsVM,
                RecentUpdate        = _tokenRepository.GetTokenIncubatorUpdates(id, currentCulture)?.Select(x => new RecentUpdateViewModel()
                {
                    Content = Pomelo.Marked.Instance.Parse(x.Content),
                    Time    = x.Time,
                    Title   = x.Title
                }).ToList()
            };

            ViewBag.CurrentPrice = (await tokenAPIRopository.GetTokenContractPriceAsync(id)).BuyPrice;
            ViewBag.HandlerView  = handlerVM;

            return(View(token));
        }