コード例 #1
0
        // GET: Badges
        public ActionResult Index()
        {
            if (Session["UserID"] == null)
            {
                return(RedirectToAction("Login", "Home"));
            }
            else
            {
                CLIENT_ID = int.Parse(Session["UserID"].ToString());
            }

            //get badges the user has earned
            BadgesModelView badgeModel = new BadgesModelView();

            badgeModel.badges       = getUserBadges();
            badgeModel.tweetMessage = "! Come budget with Commerce today at commercebank.com";

            badgeTrigger(badgeModel);

            badgeModel.badgeCount      = badgeModel.badges.Count();
            badgeModel.totalBadgeCount = dbContext.Badges.Count();

            //get most recent badge
            ClientBadge recent = dbContext.ClientBadges.Where(x => x.ClientID == CLIENT_ID).OrderByDescending(t => t.DateEarned).FirstOrDefault();

            badgeModel.mostRecent = dbContext.Badges.Where(x => x.BadgeID == recent.BadgeID).FirstOrDefault();

            return(View(badgeModel));
        }
コード例 #2
0
        // GET: Home
        public ActionResult Index()
        {
            ActionResult result = checkUser();

            if (result != null)
            {
                return(result);
            }

            BadgesModelView bmv = new BadgesModelView();

            bmv.addNewBadge(74, CLIENT_ID); //Give user inital load of app badge if they havent earned it.

            indexModelView mv = new indexModelView();

            mv.savingsGoals = getSavingGoals();
            mv.budgetGoals  = getBudgetInfo();
            mv.transactions = getTransactionInfo();
            mv.badges       = getAllBadges();
            mv.clientBadges = getClientBadges();
            decimal[] totals = getTotalIncomeAndSpent();
            mv.totalIncome = totals[0];
            mv.totalSpent  = totals[1];
            badgeTriggers();
            return(View(mv));
        }
コード例 #3
0
        public void addBadge()
        {
            //count number of badges
            List <SavingsGoal> goalList = new List <SavingsGoal>();

            goalList = dbContext.SavingsGoals.Where(x => x.ClientID == CLIENT_ID).ToList();
            BadgesModelView bmv = new BadgesModelView();

            //add badges based on goal count
            switch (goalList.Count())
            {
            case (1):
                bmv.addNewBadge(75, CLIENT_ID);
                break;

            case (3):
                //add previous badges for testing
                bmv.addNewBadge(75, CLIENT_ID);

                bmv.addNewBadge(76, CLIENT_ID);
                break;

            case (5):
                bmv.addNewBadge(75, CLIENT_ID);

                bmv.addNewBadge(76, CLIENT_ID);

                bmv.addNewBadge(77, CLIENT_ID);
                break;
            }


            //determine if user is completed with goals
            List <SavingsGoal> activeGoalList  = dbContext.SavingsGoals.Where(x => x.ClientID == CLIENT_ID).Where(x => x.Status == "Active").ToList();
            List <SavingsGoal> successGoalList = dbContext.SavingsGoals.Where(x => x.ClientID == CLIENT_ID).Where(x => x.Status == "Success").ToList();

            if (activeGoalList.Count() == 0 && successGoalList.Count() >= 1)
            {
                bmv.addNewBadge(96, CLIENT_ID);
            }
            //determine is user is halfway through goals
            else
            {
                double totalGoalAmount     = activeGoalList.Sum(x => Convert.ToDouble(x.SavingsGoalAmount));
                double totalSavingsAlloted = activeGoalList.Sum(x => Convert.ToDouble(x.CurrentGoalAmount));

                double ratio = totalSavingsAlloted / totalGoalAmount;

                if (ratio >= .5)
                {
                    bmv.addNewBadge(95, CLIENT_ID);
                }
            }
        }
コード例 #4
0
        private void badgeTrigger(BadgesModelView bmv)
        {
            //check if user does not have any badges tied to the badge page
            //bool array for achievement of each badge
            bool[] badgeObtained = new bool[9];
            int    holidayCount  = 0;

            List <ClientBadge> ClientBadgeList = new List <ClientBadge>();

            ClientBadgeList = dbContext.ClientBadges.Where(x => x.ClientID == CLIENT_ID).ToList();

            for (int i = 0; i < ClientBadgeList.Count(); i++)
            {
                //count number of holiday badges
                if (ClientBadgeList[i].BadgeID >= 109 && ClientBadgeList[i].BadgeID <= 121)
                {
                    holidayCount++;
                }

                //check if any badges related to the badge page are already acquired
                switch (ClientBadgeList[i].BadgeID)
                {
                case (99):
                    badgeObtained[0] = true;
                    break;

                case (100):
                    badgeObtained[1] = true;
                    break;

                case (102):
                    badgeObtained[2] = true;
                    break;

                case (103):
                    badgeObtained[3] = true;
                    break;

                case (104):
                    badgeObtained[4] = true;
                    break;

                case (107):
                    badgeObtained[5] = true;
                    break;

                case (122):
                    badgeObtained[6] = true;
                    break;

                case (123):
                    badgeObtained[7] = true;
                    break;

                case (108):
                    badgeObtained[8] = true;
                    break;
                }
            }

            for (int j = 0; j < badgeObtained.Count(); j++)
            {
                if (!badgeObtained[j])
                {
                    switch (j)
                    {
                    case (0):
                        //check if user has shared one badge
                        break;

                    case (1):
                        //... shared 5 badges
                        break;

                    case (2):
                        //Achieved 5 badges
                        if (ClientBadgeList.Count() == 5)
                        {
                            bmv.addNewBadge(102, CLIENT_ID);
                        }
                        break;

                    case (3):
                        //10 badges
                        if (ClientBadgeList.Count() == 10)
                        {
                            bmv.addNewBadge(103, CLIENT_ID);
                        }
                        break;

                    case (4):
                        //20 badges
                        if (ClientBadgeList.Count() == 20)
                        {
                            bmv.addNewBadge(104, CLIENT_ID);
                        }
                        break;

                    case (5):
                        //auto since user has to click on badge page
                        bmv.addNewBadge(107, CLIENT_ID);
                        break;

                    case (6):
                        //check if all holiday badges are cleared
                        if (holidayCount.Equals(13))
                        {
                            bmv.addNewBadge(122, CLIENT_ID);
                        }
                        break;

                    case (7):
                        //check if 44 badges have been obtained
                        if (ClientBadgeList.Count() == 44)
                        {
                            bmv.addNewBadge(123, CLIENT_ID);
                        }
                        break;

                    case (8):
                        //check if 106, 107, and 75 have been obtained
                        int count = 0;

                        for (int k = 0; k < ClientBadgeList.Count(); k++)
                        {
                            switch (ClientBadgeList[k].BadgeID)
                            {
                            case (106):
                                count++;
                                break;

                            case (107):
                                count++;
                                break;

                            case (75):
                                count++;
                                break;
                            }
                        }

                        if (count == 3)
                        {
                            bmv.addNewBadge(108, CLIENT_ID);
                        }
                        break;
                    }
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// This method will be used as a scheduled task to update the budget goals
        /// Badges will also be earned for each user, no matter who is currently logged in
        /// </summary>
        private void updateBudgetGoals()
        {
            List <BudgetGoal>  budgetGoals  = dbContext.BudgetGoals.Where(x => x.Month.Month < DateTime.Now.Month && x.Month.Year <= DateTime.Now.Year && x.GoalCategory != 1 && x.Status == "A").ToList();
            DateTime           lastMonth    = DateTime.Now.AddMonths(-1);
            List <Transaction> transactions = dbContext.Transactions.Where(x => x.TransactionDate.Month == lastMonth.Month && x.TransactionDate.Year == lastMonth.Year && x.CategoryID != 1).ToList();

            foreach (Client client in dbContext.Clients)
            {
                var account  = dbContext.Accounts.Where(x => x.ClientID == client.ClientID).Select(x => x.AccountNo).ToList();
                var total    = transactions.Where(x => account.Contains(x.TransactionAccountNo)).Sum(x => x.TransactionAmount);
                var budgeted = budgetGoals.Where(x => x.ClientID == client.ClientID).Sum(x => x.BudgetGoalAmount);

                BadgesModelView bmv = new BadgesModelView();
                if (total <= budgeted)
                {
                    bmv.addNewBadge(84, client.ClientID); //Give user inital load of app badge if they havent earned it.
                    //determine what month of the streak we're at, award badge accordingly

                    //determine if any holidays apply
                    switch (lastMonth.Month)
                    {
                    case (2):                                  //February
                        bmv.addNewBadge(111, client.ClientID); //washington's birthday
                        break;

                    case (3):                                  //March
                        bmv.addNewBadge(112, client.ClientID); //april fools
                        break;

                    case (4):                                  //April
                        bmv.addNewBadge(113, client.ClientID); // easter
                        break;

                    case (5):                                  //May
                        bmv.addNewBadge(114, client.ClientID); //memorial day
                        break;

                    case (6):                                  //June
                        bmv.addNewBadge(116, client.ClientID); //Independence Day
                        break;

                    case (10):                                 //October
                        bmv.addNewBadge(117, client.ClientID); //Halloween
                        break;

                    case (11):                                 //November
                        bmv.addNewBadge(118, client.ClientID); //Thanksgiving
                        break;

                    case (12):                                 //December
                        bmv.addNewBadge(120, client.ClientID); //xmas
                        break;
                    }
                }
                else if (total == budgeted)
                {
                    //client is in the black for this month
                    bmv.addNewBadge(97, client.ClientID);
                }
                else
                {
                    //client went over budget, streak is broken, update DB
                }
            }
        }
コード例 #6
0
        //adds badge if user has started
        public void badgeTriggers()
        {
            BadgesModelView bmv = new BadgesModelView();

            bmv.addNewBadge(74, CLIENT_ID);
        }