示例#1
0
        public IHttpActionResult GetSummaryData()
        {
            ApplicationUser user       = null;
            UserSummaryDTO  summaryDto = null;

            try {
                var userId = User.Identity.GetUserId <int>();
                Logger.Trace("GetSummaryData requested for [User#{0}]", userId);

                var summaryRes = invBalanceRepo.GetSummaryData(userId);
                user       = summaryRes.Item2;
                summaryDto = summaryRes.Item1;

                if (user == null)
                {
                    Logger.Error("User not found [User#{0}]", userId);
                    return(OkMsg(new object(), "User not found!"));
                }
            }
            catch (Exception ex) {
                telemetry.TrackException(ex);
                Logger.Error(ex, "Exception in GetSummaryData()");
            }
            return(OkMsg(((IInvestmentsApi)this).GetSummaryData(user, summaryDto)));
        }
示例#2
0
        /// <summary>
        ///
        /// Get the summary user data converted to the user currency.
        ///
        /// </summary>
        /// <param name="user"></param>
        /// <param name="summaryDto"></param>
        /// <returns></returns>
        SummaryDataViewModel IInvestmentsApi.GetSummaryData(ApplicationUser user, UserSummaryDTO summaryDto)
        {
            var summaryDvm = new SummaryDataViewModel
            {
                InvestmentsBalance =
                    DbExpressions.RoundCustomerBalanceAmount(summaryDto.InvestmentsBalance),
                TotalInvestments =
                    DbExpressions.RoundCustomerBalanceAmount(summaryDto.TotalInvestments),
                TotalInvestmentsReturns =
                    DbExpressions.RoundCustomerBalanceAmount(summaryDto.TotalInvestmentsReturns),
                NextInvestmentOn     = DbExpressions.GetNextMonthsFirstWeekday(),
                LastInvestmentAmount =
                    DbExpressions.RoundCustomerBalanceAmount(summaryDto.LastInvestmentAmount),
                StatusAsOf           = summaryDto.StatusAsOf,
                LockInDays           = summaryDto.LockInDays,
                EligibleWithdrawDate = summaryDto.EligibleWithdrawDate,
                OkToWithdraw         = summaryDto.OkToWithdraw,
                Prompt   = summaryDto.Prompt,
                Vintages =
                    summaryDto
                    .Vintages
                    .Select(
                        t =>
                        mapper
                        .Map <VintageDto, VintageViewModel>(t))
                    .ToList(),
                BegGmBalance = Math.Round(summaryDto.BegGmBalance, 1),
                EndGmBalance = Math.Round(summaryDto.EndGmBalance, 1),
                Deposits     = Math.Round(summaryDto.Deposits, 1),
                GmGainLoss   = Math.Round(summaryDto.GmGainLoss, 1),
                Withdrawals  = Math.Round(summaryDto.Withdrawals, 1),
                CashBonus    = Math.Round(summaryDto.CashBonus, 1)
            };

            foreach (var vm in summaryDvm.Vintages)
            {
                vm.InvestmentAmount = DbExpressions.RoundCustomerBalanceAmount(vm.InvestmentAmount);
                vm.SellingValue     = DbExpressions.RoundCustomerBalanceAmount(vm.SellingValue);
            }

            return(summaryDvm);
        }
示例#3
0
        /// <summary>
        ///
        /// Perform all the Summary SQL Queries in a optimized fashion to fill up the summary DTO object.
        ///
        /// </summary>
        /// <returns></returns>
        public Tuple <UserSummaryDTO, ApplicationUser> GetSummaryData(int userId)
        {
            ApplicationUser userRet       = null;
            UserSummaryDTO  summaryDtoRet = null;

            var invBalanceRes =
                GetLatestBalanceDto(
                    GetCachedLatestBalance(userId)
                    );

            userRet = userRepo.GetCachedUser(userId);

            var withdrawalEligibility = GetWithdrawEligibilityData(userId);

            //---------------- Execute SQL Function
            var vintages = GetCustomerVintages(userId);

            var lastInvestmentAmount =
                DbExpressions.RoundCustomerBalanceAmount(gzTransactionRepo.LastInvestmentAmount(userId,
                                                                                                DateTime.UtcNow
                                                                                                .ToStringYearMonth
                                                                                                    ()));

            //-------------- Retrieve previously executed async query results

            // user
            if (userRet == null)
            {
                _logger.Error("User with id {0} is null in GetSummaryData()", userId);
            }

            // Package all the results
            summaryDtoRet = new UserSummaryDTO()
            {
                Vintages = vintages,

                Currency = CurrencyHelper.GetSymbol(userRet.Currency),
                // current balance should not include this month's loss amount to be invested
                InvestmentsBalance = invBalanceRes.Balance - lastInvestmentAmount,

                // Monthly gaming amounts
                BegGmBalance = invBalanceRes.BegGmBalance,
                Deposits     = invBalanceRes.Deposits,
                Withdrawals  = invBalanceRes.Withdrawals,
                GmGainLoss   = invBalanceRes.GmGainLoss,
                EndGmBalance = invBalanceRes.EndGmBalance,
                CashBonus    = invBalanceRes.CashBonus,

                TotalInvestments        = invBalanceRes.TotalCashInvInHold,
                TotalInvestmentsReturns = invBalanceRes.Balance - invBalanceRes.TotalCashInvInHold,

                NextInvestmentOn     = DbExpressions.GetNextMonthsFirstWeekday(),
                LastInvestmentAmount = lastInvestmentAmount,

                //latestBalanceUpdateDatetime
                StatusAsOf = GetLastUpdatedMidnight(invBalanceRes.UpdatedOnUtc),

                // Withdrawal eligibility
                LockInDays           = withdrawalEligibility.LockInDays,
                EligibleWithdrawDate = withdrawalEligibility.EligibleWithdrawDate,
                OkToWithdraw         = withdrawalEligibility.OkToWithdraw,
                Prompt = withdrawalEligibility.Prompt
            };
            return(Tuple.Create(summaryDtoRet, userRet));
        }