public async Task <ActionResult> EditDetails(GroupEditorViewModel viewModel) { var result = await new GroupEditorViewModelValidator(_groupReadService, _establishmentReadService, User, _securityService).ValidateAsync(viewModel); result.AddToModelState(ModelState, string.Empty); await PopulateSelectLists(viewModel); if (viewModel.CanUserEditStatus) { PopulateStatusSelectList(viewModel); } if (viewModel.GroupTypeId.HasValue) { viewModel.GroupTypeName = (await _lookup.GetNameAsync(() => viewModel.GroupTypeId)); } await ValidateAsync(viewModel); if (ModelState.IsValid && !viewModel.WarningsToProcess.Any()) { var dto = CreateSaveDto(viewModel).Group; var changes = await _groupReadService.GetModelChangesAsync(dto, User); if (changes.Any() && viewModel.GroupTypeId.OneOfThese(GT.SingleacademyTrust, GT.MultiacademyTrust) && !viewModel.ChangesAcknowledged) { viewModel.ChangesSummary = changes; return(View("EditDetails", viewModel)); } else { var actionResult = await ProcessCreateEditGroup(viewModel); if (actionResult != null) { return(actionResult); } } } else { if (viewModel.GroupUId.HasValue) { var domainModel = (await _groupReadService.GetAsync((int)viewModel.GroupUId, User)).GetResult(); viewModel.OriginalGroupName = domainModel.Name; viewModel.OriginalGroupTypeName = await _lookup.GetNameAsync(() => domainModel.GroupTypeId); } } viewModel.ListOfEstablishmentsPluralName = _nomenclatureService.GetEstablishmentsPluralName((GT)viewModel.GroupTypeId.Value); await SetEditPermissions(viewModel); return(View("EditDetails", viewModel)); }