Exemplo n.º 1
0
        public async Task <IActionResult> CreateGroup(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.AddGroupAsync(model.ChallengeGroup,
                                                                              challengeIds);

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

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

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

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