public IHttpActionResult getbonusandwithdrawyearly(int userId)
        {
            EwalletModel obj = new EwalletModel();

            obj.bonus   = GetEWalletThisYearSponsorBonus(userId);
            obj.witdraw = GetEWalletThisYearWithdrawal(userId);
            return(Ok(obj));
        }
        public IHttpActionResult getbonusandwithdrawsummary(int userId)
        {
            EwalletModel obj = new EwalletModel();

            obj.bonus   = GetEWalletSummarySponsorBonus(userId);
            obj.witdraw = GetEWalletSummaryWithdrawal(userId);
            return(Ok(obj));
        }
        public IHttpActionResult DashBoard(int userId)
        {
            Dashboarddetails dbd = new Dashboarddetails();
            string           totalGetUserTotalPackageCommission = GetUserTotalPackageCommission(userId);
            string           totaldirectcommission = GetUserTotalDirectCommission(userId);
            string           totalGetUserTotalMatchingCommission = GetUserTotalMatchingCommission(userId);
            string           totalGetUserCurrentPackage          = GetUserCurrentPackage(userId);
            string           totalGetUserDownlineMembers         = GetUserDownlineMembers(userId);
            //Cash WithDrawn
            string totalGetPayoutHistorySum           = GetPayoutHistorySum(userId);
            string totalewalletcredit                 = GetEWalletCreditSum(userId);
            string totalGetEWalletDebitSum            = GetEWalletDebitSum(userId);
            string totalGetPaymentsInProcessSum       = GetPaymentsInProcessSum(userId);
            string totalGetEWalletSummarySponsorBonus = GetEWalletSummarySponsorBonus(userId);
            //rewards
            string       totalGetAllTotalLeftUserPV  = GetAllTotalLeftUserPV(userId);
            string       totalGetAllTotalRightUserPV = GetAllTotalRightUserPV(userId);
            EwalletModel ewm = GetAllCurrentRewardInfo(userId);



            //string totalGetAllCurrentRewardInfo = GetAllCurrentRewardInfo(userId);


            ////string totalGetleftamount = GetTotalleftamount(userId);
            //string totalGetremaningleftamount = GetTotalremainingleftamount(userId);
            //string totalGetremaningrightamount = GetTotalremainingrightamount(userId);
            //object
            dbd.GetUserTotalPackageCommission  = totalGetUserTotalPackageCommission;
            dbd.totaldirectcommission          = totaldirectcommission;
            dbd.GetUserTotalMatchingCommission = totalGetUserTotalMatchingCommission;
            dbd.GetUserCurrentPackage          = totalGetUserCurrentPackage;
            dbd.GetUserDownlineMembers         = totalGetUserDownlineMembers;
            dbd.GetPayoutHistorySum            = totalGetPayoutHistorySum;
            dbd.GetEwalletCredit              = totalewalletcredit;
            dbd.GetEWalletDebitSum            = totalGetEWalletDebitSum;
            dbd.GetPaymentsInProcessSum       = totalGetPaymentsInProcessSum;
            dbd.GetEWalletSummarySponsorBonus = totalGetEWalletSummarySponsorBonus;
            dbd.GetAllTotalRightUserPV        = totalGetAllTotalRightUserPV;
            dbd.GetAllTotalLeftUserPV         = totalGetAllTotalLeftUserPV;
            dbd.GetTotalremainingleftamount   = ewm.bonus;
            dbd.GetTotalremainingrightamount  = ewm.witdraw;


            return(Ok(dbd));
        }
        //[HttpGet]
        //[Route("getuserpackagecommission/{userId}")]
        public string GetUserPackageCommissionAmount(int userId)
        {
            using (SleepingPartnermanagementTestingEntities dc = new SleepingPartnermanagementTestingEntities())
            {
                EwalletModel obj          = new EwalletModel();
                UserPackage  userPackages = dc.UserPackages.Where(a => a.UserId.Value.Equals(userId)).FirstOrDefault();

                var EWalletTransactionAmount = (from eWallTr in dc.EWalletTransactions
                                                where eWallTr.UserId == userId && eWallTr.Credit == false && eWallTr.Debit == true &&
                                                eWallTr.IsPackageBonus == true && eWallTr.PackageId == userPackages.PackageId.Value
                                                select eWallTr).ToList();
                var EWalletTransactionAmountValue = EWalletTransactionAmount.Sum(x => x.Amount);
                obj.bonus = EWalletTransactionAmountValue.ToString();


                return(EWalletTransactionAmountValue.ToString());
            }
        }
        public EwalletModel GetAllCurrentRewardInfo(int userId)
        {
            using (SleepingPartnermanagementTestingEntities dc = new SleepingPartnermanagementTestingEntities())
            {
                UserReward usrReward = dc.UserRewards.Where(a => a.UserId.Value.Equals(userId)).OrderByDescending(o => o.RewardId.Value).FirstOrDefault();

                int MinValueId = 0;

                var TotalAmountLeftUsers  = dc.GetParentChildsLeftSP(userId).Where(a => a.IsPaidMember.Value.Equals(true)).ToList();
                var TotalAmountRightUsers = dc.GetParentChildsRightSP(userId).Where(a => a.IsPaidMember.Value.Equals(true)).ToList();

                decimal TotalAmountLeftUsersShow  = TotalAmountLeftUsers.Sum(x => x.PaidAmount.Value);
                decimal TotalAmountRightUsersShow = TotalAmountRightUsers.Sum(x => x.PaidAmount.Value);

                Reward rewardRightlimit = (from rwrd in dc.Rewards
                                           where rwrd.Rightlimit >= TotalAmountRightUsersShow
                                           select rwrd).FirstOrDefault();

                Reward rewardLeftlimit = (from rwrd in dc.Rewards
                                          where rwrd.Leftlimit >= TotalAmountLeftUsersShow
                                          select rwrd).FirstOrDefault();

                if (rewardLeftlimit == null && rewardRightlimit == null) //if all rewards complete
                {
                    Reward rewardRightIfComplete = (from rwrd in dc.Rewards
                                                    where rwrd.Rightlimit <= TotalAmountRightUsersShow
                                                    select rwrd).OrderByDescending(o => o.Id).FirstOrDefault();

                    Reward rewardLeftIfComplete = (from rwrd in dc.Rewards
                                                   where rwrd.Leftlimit <= TotalAmountLeftUsersShow
                                                   select rwrd).OrderByDescending(o => o.Id).FirstOrDefault();

                    int MaxValueId = Math.Max((int)rewardRightIfComplete.Id, (int)rewardLeftIfComplete.Id);
                    if (usrReward != null)
                    {
                        if (usrReward.RewardId == MaxValueId)
                        {
                            EwalletModel obj1 = new EwalletModel();
                            obj1.bonus   = "Completed";
                            obj1.witdraw = "Completed";
                            return(obj1);
                        }
                        else
                        {
                            MinValueId = Math.Min((int)rewardRightIfComplete.Id, (int)rewardLeftIfComplete.Id);
                        }
                    }
                }
                else if (rewardLeftlimit == null)
                {
                    rewardRightlimit = (from rwrd in dc.Rewards
                                        where rwrd.Rightlimit <= TotalAmountRightUsersShow
                                        select rwrd).OrderByDescending(o => o.Id).FirstOrDefault();

                    rewardLeftlimit = (from rwrd in dc.Rewards
                                       where rwrd.Leftlimit <= TotalAmountRightUsersShow
                                       select rwrd).OrderByDescending(o => o.Id).FirstOrDefault();

                    MinValueId = Math.Min((int)rewardRightlimit.Id, (int)rewardLeftlimit.Id);
                }
                else if (rewardRightlimit == null)
                {
                    rewardRightlimit = (from rwrd in dc.Rewards
                                        where rwrd.Rightlimit <= TotalAmountRightUsersShow
                                        select rwrd).OrderByDescending(o => o.Id).FirstOrDefault();

                    rewardLeftlimit = (from rwrd in dc.Rewards
                                       where rwrd.Leftlimit <= TotalAmountRightUsersShow
                                       select rwrd).OrderByDescending(o => o.Id).FirstOrDefault();

                    MinValueId = Math.Min((int)rewardRightlimit.Id, (int)rewardLeftlimit.Id);
                }
                else
                {
                    MinValueId = Math.Min((int)rewardRightlimit.Id, (int)rewardLeftlimit.Id);
                }



                Reward reward = dc.Rewards.Where(a => a.Id.Equals(MinValueId)).FirstOrDefault();

                decimal LeftLimitPV         = (decimal)reward.Leftlimit;
                decimal TotalLeftUserPV     = TotalAmountLeftUsersShow;
                decimal MaxValueLeft        = Math.Max(LeftLimitPV, TotalLeftUserPV);
                decimal RemainingLeftUserPV = MaxValueLeft - TotalLeftUserPV;


                decimal RightLimitPV         = (decimal)reward.Rightlimit;
                decimal TotalRightUserPV     = TotalAmountRightUsersShow;
                decimal MaxValueRight        = Math.Max(RightLimitPV, TotalRightUserPV);
                decimal RemainingRightUserPV = MaxValueRight - TotalRightUserPV;


                if (reward != null)
                {
                    EwalletModel obj1 = new EwalletModel();
                    obj1.bonus   = RemainingLeftUserPV.ToString();
                    obj1.witdraw = RemainingRightUserPV.ToString();
                    return(obj1);
                }
            }
            EwalletModel obj = new EwalletModel();

            obj.bonus   = "0";
            obj.witdraw = "0";

            return(obj);
        }