public UserChallengeListModel GetUserChallenges(int id, int? orderBy, bool? pointsClaimed, string suburb, string search, int? timeRange, int page, int pageSize)
        {
            using (var context = new greenMoneyEntities())
            {
                UserChallengeListModel listModel = new UserChallengeListModel();
                if (timeRange == 100 || timeRange == null)
                    timeRange = 0;
                int range = (-1) * Convert.ToInt32(timeRange);
                DateTime history = DateTime.Now.Date.AddDays(range);

                var userChallenges = from uc in context.UserChallenges
                                     join u in context.Users1 on uc.UserId equals u.Id //uc.UserId.Equals(u.Id)
                                     join a in context.Addresses on u.Address_Id equals a.Id
                                     where uc.ChallengeId == id && (uc.PointsClaimed == pointsClaimed || pointsClaimed == null) && (a.Suburb == suburb || suburb == "Suburb") && (u.FirstName.Contains(search) || u.LastName.Contains(search))
                                            && (uc.Issued > history || range == 0)
                                     orderby uc.Issued descending
                                     select new
                                     {
                                         Id = uc.Id,
                                         ChallengeId = uc.ChallengeId,
                                         Issued = uc.Issued,
                                         UserId = uc.UserId,
                                         UserName = (String.IsNullOrEmpty(u.FirstName) ? "" : u.FirstName) + " " + (String.IsNullOrEmpty(u.LastName) ? "" : u.LastName),
                                         Suburb = a.Suburb,
                                         Workplace = a.StreetName,
                                         PointsClaimed = uc.PointsClaimed
                                     };

                if (pageSize == 0)
                    pageSize = userChallenges.Count();

                switch (orderBy)
                {
                    case 0: userChallenges = userChallenges.OrderByDescending(x => x.Issued);
                        break;
                    case 1: userChallenges = userChallenges.OrderBy(x => x.Issued);
                        break;
                }

                listModel.NumChallenges = userChallenges.Count();
                listModel.Page = page;
                listModel.NumPages = (int)Math.Ceiling((double)userChallenges.Count() / pageSize);

                userChallenges = userChallenges.Skip((page - 1) * pageSize).Take(pageSize);

                //var userChallenges = context.UserChallenges.Where(x => x.ChallengeId == id).Include(p => p.Users1);

                List<UserChallengeModel> list = new List<UserChallengeModel>();

                foreach (var userChallenge in userChallenges)
                {
                    UserChallengeModel userChallengeModel = new UserChallengeModel();
                    Utils.CopyProperties(userChallenge, userChallengeModel);
                    list.Add(userChallengeModel);
                }
                listModel.UserChallengeList = list;
                return listModel;

            }
        }
        public UserChallengeModel GetUserChallenge(int id)
        {
            using (var context = new greenMoneyEntities())
            {
                UserChallenges userChallenge = context.UserChallenges.Single(x => x.Id == id);
                UserChallengeModel ucModel = new UserChallengeModel();

                Utils.CopyProperties(userChallenge, ucModel);

                return ucModel;
            }
        }