public async Task <ActionResult> Edit(EditCharacterViewModel viewModel)
        {
            var field =
                await CharacterRepository.GetCharacterAsync(viewModel.ProjectId,
                                                            viewModel.CharacterId);

            try
            {
                if (!ModelState.IsValid)
                {
                    return(View(viewModel.Fill(field, CurrentUserId)));
                }

                await CharacterService.EditCharacter(
                    CurrentUserId,
                    viewModel.CharacterId,
                    viewModel.ProjectId,
                    viewModel.Name,
                    viewModel.IsPublic,
                    viewModel.ParentCharacterGroupIds.GetUnprefixedGroups(),
                    viewModel.IsAcceptingClaims&&
                    field.ApprovedClaim == null,
                    viewModel.HidePlayerForCharacter,
                    Request.GetDynamicValuesFromPost(FieldValueViewModel.HtmlIdPrefix),
                    viewModel.IsHot);

                return(RedirectToAction("Details",
                                        new { viewModel.ProjectId, viewModel.CharacterId }));
            }
            catch (Exception exception)
            {
                ModelState.AddException(exception);
                return(View(viewModel.Fill(field, CurrentUserId)));
            }
        }
        public async Task <ActionResult> Edit(EditCharacterViewModel viewModel)
        {
            var field = await CharacterRepository.GetCharacterAsync(viewModel.ProjectId, viewModel.CharacterId);

            try
            {
                if (!ModelState.IsValid)
                {
                    return(View(viewModel.Fill(field, CurrentUserId)));
                }
                await ProjectService.EditCharacter(
                    CurrentUserId,
                    viewModel.CharacterId,
                    viewModel.ProjectId,
                    viewModel.Name, viewModel.IsPublic,
                    viewModel.ParentCharacterGroupIds.GetUnprefixedGroups(),
                    viewModel.IsAcceptingClaims&& field.ApprovedClaim == null, //Force this field to false if has approved claim
                    viewModel.Description,
                    viewModel.HidePlayerForCharacter,
                    GetCustomFieldValuesFromPost(),
                    viewModel.IsHot);

                return(RedirectToAction("Details", new { viewModel.ProjectId, viewModel.CharacterId }));
            }
            catch (Exception exception)
            {
                ModelState.AddException(exception);
                return(View(viewModel.Fill(field, CurrentUserId)));
            }
        }
Exemple #3
0
        public async Task <ActionResult> Edit(EditCharacterViewModel viewModel)
        {
            var field = await ProjectRepository.GetCharacterAsync(viewModel.ProjectId, viewModel.CharacterId);

            var error = AsMaster(field, s => s.CanEditRoles);

            if (error != null)
            {
                return(error);
            }
            try
            {
                if (!ModelState.IsValid)
                {
                    return(View(viewModel.Fill(field, CurrentUserId)));
                }
                await ProjectService.EditCharacter(
                    CurrentUserId,
                    viewModel.CharacterId,
                    viewModel.ProjectId,
                    viewModel.Name, viewModel.IsPublic, viewModel.ParentCharacterGroupIds.GetUnprefixedGroups(), viewModel.IsAcceptingClaims,
                    viewModel.Description,
                    viewModel.HidePlayerForCharacter,
                    GetCustomFieldValuesFromPost(),
                    viewModel.IsHot);

                return(RedirectToAction("Details", new { viewModel.ProjectId, viewModel.CharacterId }));
            }
            catch (Exception exception)
            {
                ModelState.AddException(exception);
                return(View(viewModel.Fill(field, CurrentUserId)));
            }
        }