Exemplo n.º 1
0
        public BaseResponse GetGeneralReportToday()
        {
            var query = new GeneralReportQuery
            {
                FromDate = DateTime.Now.ToString(CommonConstants.DATE_FORMAT),
                ToDate   = DateTime.Now.ToString(CommonConstants.DATE_FORMAT)
            };

            return(this.GetGeneralReportByDay(query));
        }
Exemplo n.º 2
0
        public BaseResponse GetGeneralReportByDay(GeneralReportQuery query)
        {
            var response = new BaseListResponse <GeneralReportByDayVM>();
            var errors   = new List <PropertyError>();

            GeneralReportByDayVM temp = null;

            try
            {
                DateTime fromDate = DateTime.Now;
                DateTime toDate   = DateTime.Now;

                if (string.IsNullOrWhiteSpace(query.FromDate) && string.IsNullOrWhiteSpace(query.ToDate))
                {
                    // first request
                    fromDate = toDate.AddDays(-15);
                }
                else
                {
                    // chỉ giới hạn hiển bị báo cáo tổng hợp trong khoảng 5 ngày liên tiếp để tránh hít DB quá nhiều
                    if (!string.IsNullOrWhiteSpace(query.FromDate))
                    {
                        bool isDate = CommonUtils.ToDate(query.FromDate, out fromDate);
                        if (!isDate)
                        {
                            errors.Add(new PropertyError
                            {
                                PropertyName = TypeHelper.GetPropertyName(() => query.FromDate),
                                ErrorMessage = "Invalid From Date.Must be in format dd/mm/yyyy"
                            });
                            return(new BaseSingleResponse <bool>(false, errors));
                        }
                    }

                    if (!string.IsNullOrWhiteSpace(query.ToDate))
                    {
                        bool isDate = CommonUtils.ToDate(query.ToDate, out toDate);
                        if (!isDate)
                        {
                            errors.Add(new PropertyError
                            {
                                PropertyName = TypeHelper.GetPropertyName(() => query.ToDate),
                                ErrorMessage = "Invalid To Date.Must be in format dd/mm/yyyy"
                            });
                            return(new BaseSingleResponse <bool>(false, errors));
                        }
                    }

                    if ((toDate.Date - fromDate.Date).TotalDays < 0)
                    {
                        errors.Add(new PropertyError
                        {
                            PropertyName = TypeHelper.GetPropertyName(() => query.ToDate),
                            ErrorMessage = "To Date must be greater than From Date."
                        });
                        return(new BaseSingleResponse <bool>(false, errors));
                    }

                    if ((toDate.Date - fromDate.Date).TotalDays > 15)
                    {
                        errors.Add(new PropertyError
                        {
                            PropertyName = TypeHelper.GetPropertyName(() => query.ToDate),
                            ErrorMessage = "The range between dates is 15 days."
                        });
                        return(new BaseSingleResponse <bool>(false, errors));
                    }
                }

                var reports = new List <GeneralReportByDayVM>();

                _dataContext.Connection.Open();
                System.Data.Common.DbTransaction transaction = _dataContext.Connection.BeginTransaction();
                _dataContext.Transaction = transaction;

                try
                {
                    while ((toDate.Date - fromDate.Date).TotalDays >= 0)
                    {
                        temp = new GeneralReportByDayVM();

                        temp.Date = fromDate;

                        // 1. TotalDepositBTC tổng số BTC đã nạp
                        var btcData = _dataContext.BTCStoreTransactions.Where(x => x.CreatedDate.Year == fromDate.Year &&
                                                                              x.CreatedDate.Month == fromDate.Month &&
                                                                              x.CreatedDate.Day == fromDate.Day &&
                                                                              x.Type == (int)BTCStoreTransactionTypeEnum.DEPOSIT)
                                      .Select(x => x.Amount)
                                      .ToList();
                        if (btcData != null)
                        {
                            temp.TotalDepositBTC = btcData.Sum(x => x);
                        }

                        // 2.TotalAmountPH Tổng số BTC PH
                        var phData = _dataContext.ProvideHelps.Where(x => x.CreateDate.Year == fromDate.Year &&
                                                                     x.CreateDate.Month == fromDate.Month &&
                                                                     x.CreateDate.Day == fromDate.Day)
                                     .Select(x => x.BTCAmount)
                                     .ToList();
                        if (phData != null)
                        {
                            temp.TotalAmountPH = phData.Sum(x => x);
                        }

                        // 3. TotalNewMember Tổng số thành viên mới
                        temp.TotalNewMember = _dataContext.Accounts.Count(x => x.CreatedDate.Year == fromDate.Year &&
                                                                          x.CreatedDate.Month == fromDate.Month &&
                                                                          x.CreatedDate.Day == fromDate.Day);

                        // 4.TotalDirectCom Tổng amount hoa hồng trực tiếp
                        var directComData = _dataContext.LogPHComissions.Where(x => x.CreatedDate.Year == fromDate.Year &&
                                                                               x.CreatedDate.Month == fromDate.Month &&
                                                                               x.CreatedDate.Day == fromDate.Day)
                                            .Select(x => x.BIAmount)
                                            .ToList();

                        if (directComData != null)
                        {
                            temp.TotalDirectCom = directComData.Sum(x => x);
                        }

                        // 5.TotalMatchingCom Tổng hoa hồng cân cặp
                        var matchingComData = _dataContext.LogMatchingCommissions.Where(x => x.CreatedDate.Year == fromDate.Year &&
                                                                                        x.CreatedDate.Month == fromDate.Month &&
                                                                                        x.CreatedDate.Day == fromDate.Day)
                                              .Select(x => x.CommissionAmount)
                                              .ToList();
                        if (matchingComData != null)
                        {
                            temp.TotalMatchingCom = matchingComData.Sum(x => x);
                        }


                        // 6.TotalLeaderCom Tổng hoa hồng Leader
                        temp.TotalLeaderCom = 0;

                        // 7.TotalUsedToken : Tổng số lượng mà user dùng cho PH/GH
                        var usedTokenData = _dataContext.TransactionTokens.Where(x => x.CreatedDate.Year == fromDate.Year &&
                                                                                 x.CreatedDate.Month == fromDate.Month &&
                                                                                 x.CreatedDate.Day == fromDate.Day &&
                                                                                 (x.TransferType == (int)TransactionTokenTransferTypeEnum.PAID_FOR_GET_HELP ||
                                                                                  x.TransferType == (int)TransactionTokenTransferTypeEnum.PAID_FOR_PROVIDE_HELP))
                                            .Select(x => x.NumberTransToken)
                                            .ToList();
                        if (usedTokenData != null)
                        {
                            temp.TotalUsedToken = usedTokenData.Sum(x => x);
                        }

                        // 8.TotalBuyToken Tổng số lượng Token mà user đã mua
                        var buyTokenData = _dataContext.TransactionTokens.Where(x => x.CreatedDate.Year == fromDate.Year &&
                                                                                x.CreatedDate.Month == fromDate.Month &&
                                                                                x.CreatedDate.Day == fromDate.Day &&
                                                                                x.TransferType == (int)TransactionTokenTransferTypeEnum.BUY_FROM_SYSTEM)
                                           .Select(x => x.NumberTransToken)
                                           .ToList();
                        if (buyTokenData != null)
                        {
                            temp.TotalBuyToken = buyTokenData.Sum(x => x);
                        }

                        // 9.TotalTokenLeftOfMember Tổng số lượng Token còn lại trong tài khoản của user

                        // 10 .TotalWithdrawBTC Tổng rút BTC

                        var withDrawData = _dataContext.HistoryBTCWithDraws.Where(x => x.CreatedDate.Year == fromDate.Year &&
                                                                                  x.CreatedDate.Month == fromDate.Month &&
                                                                                  x.CreatedDate.Day == fromDate.Day)
                                           .Select(x => x.Amount)
                                           .ToList();

                        if (withDrawData != null)
                        {
                            temp.TotalWithdrawBTC = withDrawData.Sum(x => x);
                        }

                        // 11. Total GH: Tổng amount GetHelp
                        var getHelpData = _dataContext.GetHelps.Where(x => x.GetDate.Year == fromDate.Year &&
                                                                      x.GetDate.Month == fromDate.Month &&
                                                                      x.GetDate.Day == fromDate.Day)
                                          .Select(x => x.BIAmountNeedToken + x.BIAmountNotNeedToken)
                                          .ToList();

                        if (getHelpData != null)
                        {
                            temp.TotalAmountGH = getHelpData.Sum(x => x);
                        }

                        temp.TotalDepositBTC  = CommonUtils.FoatBTCAmount(temp.TotalDepositBTC);
                        temp.TotalAmountPH    = CommonUtils.FoatBTCAmount(temp.TotalAmountPH);
                        temp.TotalDirectCom   = CommonUtils.FoatBTCAmount(temp.TotalDirectCom);
                        temp.TotalMatchingCom = CommonUtils.FoatBTCAmount(temp.TotalMatchingCom);
                        temp.TotalLeaderCom   = CommonUtils.FoatBTCAmount(temp.TotalLeaderCom);
                        temp.TotalAmountGH    = CommonUtils.FoatBTCAmount(temp.TotalAmountGH);

                        reports.Add(temp);

                        fromDate = fromDate.AddDays(1);
                    }
                }
                catch (Exception ex)
                {
                    response.IsSuccess = false;
                    response.Message   = ex.Message + ex.StackTrace;
                }
                finally
                {
                    transaction.Rollback();
                }

                reports = reports.OrderByDescending(x => x.Date).ToList();

                response.Data = reports;
            }
            catch (Exception ex)
            {
                response.IsSuccess = false;
                //response.Message = ex.Message + ex.StackTrace;
            }
            return(response);
        }
Exemplo n.º 3
0
 public BaseResponse Search(GeneralReportQuery query)
 {
     return(_reportService.GetGeneralReportByDay(query));
 }