示例#1
0
        public async Task <APIResponse> Activity([FromBody] ActivityModel model)
        {
            var sortExpression = new Dictionary <string, System.Linq.Expressions.Expression <Func <DAL.Models.UserActivity, object> > >()
            {
                { "date", _ => _.TimeCreated },
            };

            // validate
            if (BasePagerModel.IsInvalid(model, sortExpression.Keys, out var errFields))
            {
                return(APIResponse.BadRequest(errFields));
            }

            var user = await GetUserFromDb();

            var query = (
                from a in DbContext.UserActivity
                where a.UserId == user.Id
                select a
                );

            var page = await DalExtensions.PagerAsync(query, model.Offset, model.Limit,
                                                      sortExpression.GetValueOrDefault(model.Sort), model.Ascending
                                                      );

            var list =
                from i in page.Selected
                select new ActivityViewItem()
            {
                Type    = i.Type.ToLower(),
                Comment = i.Comment,
                Ip      = i.Ip,
                Agent   = i.Agent,
                Date    = ((DateTimeOffset)i.TimeCreated).ToUnixTimeSeconds(),
            }
            ;

            return(APIResponse.Success(
                       new ActivityView()
            {
                Items = list.ToArray(),
                Limit = model.Limit,
                Offset = model.Offset,
                Total = page.TotalCount,
            }
                       ));
        }
示例#2
0
        public async Task <APIResponse> Transparency([FromBody] TransparencyModel model)
        {
            var sortExpression = new Dictionary <string, System.Linq.Expressions.Expression <Func <DAL.Models.Transparency, object> > >()
            {
                { "date", _ => _.TimeCreated }
            };

            // validate
            if (Models.API.BasePagerModel.IsInvalid(model, sortExpression.Keys, out var errFields))
            {
                return(APIResponse.BadRequest(errFields));
            }

            var query = (
                from a in DbContext.Transparency
                select a
                );

            var page = await DalExtensions.PagerAsync(query, model.Offset, model.Limit,
                                                      sortExpression.GetValueOrDefault(model.Sort), model.Ascending
                                                      );

            var list =
                from i in page.Selected
                select new TransparencyViewItem()
            {
                Comment = i.Comment,
                Amount  = i.Amount,
                Link    = string.Format("https://ipfs.io/ipfs/{0}", i.Hash),
                Date    = ((DateTimeOffset)i.TimeCreated).ToUnixTimeSeconds(),
            }
            ;

            var stat = await DbContext.TransparencyStat.AsNoTracking().LastOrDefaultAsync();

            var statAssets    = Common.Json.Parse <TransparencyViewStatItem[]>(stat?.AssetsArray ?? "[]");
            var statBonds     = Common.Json.Parse <TransparencyViewStatItem[]>(stat?.BondsArray ?? "[]");
            var statFiat      = Common.Json.Parse <TransparencyViewStatItem[]>(stat?.FiatArray ?? "[]");
            var statGold      = Common.Json.Parse <TransparencyViewStatItem[]>(stat?.GoldArray ?? "[]");
            var statTotalOz   = stat?.TotalOz ?? "";
            var statTotalUsd  = stat?.TotalUsd ?? "";
            var statDataTime  = stat?.DataTimestamp != null? ((DateTimeOffset)stat.DataTimestamp).ToUnixTimeSeconds(): (long?)null;
            var statAuditTime = stat?.AuditTimestamp != null? ((DateTimeOffset)stat.AuditTimestamp).ToUnixTimeSeconds(): (long?)null;

            return(APIResponse.Success(
                       new TransparencyView()
            {
                Stat = new TransparencyViewStat()
                {
                    Assets = statAssets,
                    Bonds = statBonds,
                    Fiat = statFiat,
                    Gold = statGold,
                    TotalOz = statTotalOz,
                    TotalUsd = statTotalUsd,
                    DataTimestamp = statDataTime,
                    AuditTimestamp = statAuditTime,
                },
                Items = list.ToArray(),
                Limit = model.Limit,
                Offset = model.Offset,
                Total = page.TotalCount,
            }
                       ));
        }