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; } }
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)); }