/// <summary>
        /// This page should load details about the specific kid, given the kid Id, and return a view with the relevant data.
        /// Such data would include all the kid's actions, the presents being prepared for them, and their status on naughty/nice list.
        /// </summary>
        /// <param name="kidId">The ID of the kid to load data about</param>
        /// <returns></returns>
        public ActionResult Details(int id)
        {
            var kid = KidsManager.GetByID(id);

            if (kid == null)
            {
                return(RedirectToAction("Index"));
            }

            var isNice   = KidsManager.IsKidNice(id);
            var deeds    = KidsManager.GetDeeds(id);
            var presents = KidsManager.GetPresents(id);

            var viewModel = new KidDetailsViewModel(kid, isNice, deeds, presents);

            return(View(viewModel));
        }
Пример #2
0
        //Kid detail view includes: summary, tasks list, available rewards, redeemed reward
        public async Task <ViewResult> Details(
            int KidId,
            string sortOrder,
            string currentFilter,
            string searchString,
            int?pageNumber)
        {
            CheckToast();
            var currentKid = await _kidRepository.GetProfileById(KidId);

            var rewards = await _rewardRepository.GetAllByKidId(KidId);

            int pageSize = 5;

            //Task table sorting
            ViewData["CurrentSort"]   = sortOrder;
            ViewData["NameSortParm"]  = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
            ViewData["PointSortParm"] = sortOrder == "Point" ? "point_desc" : "Point";
            if (searchString != null)
            {
                pageNumber = 1;
            }
            else
            {
                searchString = currentFilter;
            }
            ViewData["CurrentFilter"] = searchString;
            var vTasks = from v in _appDbContext.VTasks.Where(v => v.KidId == KidId)
                         select v;

            if (!String.IsNullOrEmpty(searchString))
            {
                vTasks = vTasks.Where(v => v.Description.Contains(searchString));
            }
            switch (sortOrder)
            {
            case "name_desc":
                vTasks = vTasks.OrderByDescending(v => v.Description);
                break;

            case "Point":
                vTasks = vTasks.OrderBy(v => v.Point);
                break;

            case "point_desc":
                vTasks = vTasks.OrderByDescending(v => v.Point);
                break;

            default:
                vTasks = vTasks.OrderBy(v => v.Description);
                break;
            }
            var paginatedList = await PaginatedList <VTask> .CreateAsync(vTasks.AsNoTracking(), pageNumber ?? 1, pageSize);

            KidDetailsViewModel kidDetailsViewModel = new KidDetailsViewModel()
            {
                kid = currentKid,
                currentKidVTasks      = vTasks,
                currentKidRewards     = rewards,
                givenTasksCount       = vTasks.Count(),
                pendingTasksCount     = _statistic.countPendingTask(vTasks),
                completeTasksCount    = _statistic.countCompleteTask(vTasks),
                availableRewardsCount = _statistic.countAvailableRewards(rewards),
                redeemedRewardsCount  = _statistic.countRedeemedRewards(rewards),
                myToaster             = MyToaster,
                paginatedList         = paginatedList,
                PhotoPath             = currentKid.PhotoPath
            };

            return(View(kidDetailsViewModel));
        }