/// <summary> /// Get user limits /// </summary> public static async Task <UpdateUserLimitsData> GetUserLimits(ApplicationDbContext dbContext, long userId) { var limits = await dbContext.UserLimits .Where(_ => _.UserId == userId) .GroupBy(_ => _.UserId) .Select(g => new UpdateUserLimitsData() { EthDeposited = g.Sum(_ => _.EthDeposited), EthWithdrawn = g.Sum(_ => _.EthWithdrawn), FiatUsdDeposited = g.Sum(_ => _.FiatDeposited), FiatUsdWithdrawn = g.Sum(_ => _.FiatWithdrawn), }) .FirstOrDefaultAsync(); ; if (limits == null) { limits = new UpdateUserLimitsData(); } return(limits); }
/// <summary> /// Change user limits /// </summary> public static async Task UpdateUserLimits(ApplicationDbContext dbContext, long userId, UpdateUserLimitsData data) { var nowTime = DateTime.UtcNow; var today = new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, 0, 0, 0, DateTimeKind.Utc); var isNew = false; // get from db var limits = await dbContext.UserLimits.FirstOrDefaultAsync(_ => _.UserId == userId && _.TimeCreated == today); // doesn't exist if (limits == null) { limits = new UserLimits() { UserId = userId, TimeCreated = today, }; isNew = true; } limits.EthDeposited += data.EthDeposited; limits.EthWithdrawn += data.EthWithdrawn; limits.FiatDeposited += data.FiatUsdDeposited; limits.FiatWithdrawn += data.FiatUsdWithdrawn; if (isNew) { await dbContext.UserLimits.AddAsync(limits); } await dbContext.SaveChangesAsync(); }