示例#1
0
        public async Task <IActionResult> EditGroup(int id)
        {
            PageTitle = "Edit Challenge Group";
            var challengeGroup = await _challengeService.GetGroupByIdAsync(id);

            var baseUrl = await _siteService.GetBaseUrl(Request.Scheme, Request.Host.Value);

            var viewModel = new ChallengeGroupDetailViewModel()
            {
                ChallengeGroup  = challengeGroup,
                ChallengeIds    = string.Join(",", challengeGroup.Challenges.Select(_ => _.Id)),
                Action          = nameof(EditGroup),
                RelatedEvents   = await _eventService.GetByChallengeGroupIdAsync(challengeGroup.Id),
                CanManageEvents = UserHasPermission(Permission.ManageEvents),
                GroupUrl        = $"{baseUrl}{Url.Action("List", "Challenges", new { area = "", id = challengeGroup.Stub })}"
            };

            foreach (var challenge in viewModel.ChallengeGroup.Challenges)
            {
                if (!string.IsNullOrWhiteSpace(challenge.BadgeFilename))
                {
                    challenge.BadgeFilename = _pathResolver.ResolveContentPath(
                        challenge.BadgeFilename);
                }
            }

            return(View("GroupDetail", viewModel));
        }
示例#2
0
        public IActionResult CreateGroup()
        {
            PageTitle = "Create Challenge Group";
            var viewModel = new ChallengeGroupDetailViewModel()
            {
                Action = nameof(CreateGroup)
            };

            return(View("GroupDetail", viewModel));
        }
示例#3
0
        public async Task <IActionResult> EditGroup(ChallengeGroupDetailViewModel model)
        {
            var challengeIds = new List <int>();

            if (!string.IsNullOrWhiteSpace(model.ChallengeIds))
            {
                challengeIds = model?.ChallengeIds
                               .Split(',')
                               .Where(_ => !string.IsNullOrWhiteSpace(_))
                               .Select(int.Parse)
                               .ToList();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var serviceResult = await _challengeService.EditGroupAsync(model.ChallengeGroup,
                                                                               challengeIds);

                    if (serviceResult.Status == ServiceResultStatus.Warning &&
                        !string.IsNullOrWhiteSpace(serviceResult.Message))
                    {
                        ShowAlertWarning(serviceResult.Message);
                    }
                    ShowAlertSuccess($"Saved Challenge Group \"{model.ChallengeGroup.Name}\"!");
                    return(RedirectToAction(nameof(EditGroup), new { id = serviceResult.Data.Id }));
                }
                catch (GraException gex)
                {
                    ShowAlertDanger("Unable to edit Challenge Group: ", gex);
                }
            }

            model.ChallengeGroup.Challenges = await _challengeService.GetByIdsAsync(challengeIds);

            model.RelatedEvents = await _eventService.GetByChallengeGroupIdAsync(
                model.ChallengeGroup.Id);

            model.CanManageEvents = UserHasPermission(Permission.ManageEvents);
            foreach (var challenge in model.ChallengeGroup.Challenges)
            {
                if (!string.IsNullOrWhiteSpace(challenge.BadgeFilename))
                {
                    challenge.BadgeFilename = _pathResolver.ResolveContentPath(
                        challenge.BadgeFilename);
                }
            }

            PageTitle = "Edit Challenge Group";
            return(View("GroupDetail", model));
        }