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)); }
public IActionResult CreateGroup() { PageTitle = "Create Challenge Group"; var viewModel = new ChallengeGroupDetailViewModel() { Action = nameof(CreateGroup) }; return(View("GroupDetail", viewModel)); }
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)); }