public async Task <ActionResult> EditDetails(int id) { var domainModel = (await _groupReadService.GetAsync(id, User)).GetResult(); var viewModel = new GroupEditorViewModel(eSaveMode.Details) { Address = domainModel.Address.ToString(), AddressJsonToken = UriHelper.SerializeToUrlToken(domainModel.Address), ClosedDate = new DateTimeViewModel(domainModel.ClosedDate), OpenDate = new DateTimeViewModel(domainModel.OpenDate), LocalAuthorityId = domainModel.LocalAuthorityId, GroupTypeId = domainModel.GroupTypeId, ManagerEmailAddress = domainModel.ManagerEmailAddress, GroupName = domainModel.Name, CompaniesHouseNumber = domainModel.CompaniesHouseNumber, GroupUId = domainModel.GroupUId, GroupId = domainModel.GroupId, SelectedTabName = "details", StatusId = domainModel.StatusId }; viewModel.ListOfEstablishmentsPluralName = _nomenclatureService.GetEstablishmentsPluralName((GT)viewModel.GroupTypeId.Value); await PopulateEstablishmentList(viewModel.LinkedEstablishments.Establishments, id, true); await PopulateSelectLists(viewModel); viewModel.LocalAuthorityName = await _lookup.GetNameAsync(() => viewModel.LocalAuthorityId); viewModel.DeriveCCLeadCentreUrn(); if (viewModel.GroupTypeId.HasValue) { viewModel.GroupTypeName = (await _lookup.GetNameAsync(() => viewModel.GroupTypeId)); } viewModel.CanUserCloseMATAndMarkAsCreatedInError = viewModel.GroupType.OneOfThese(GT.MultiacademyTrust) && !viewModel.StatusId.OneOfThese(GS.CreatedInError, GS.Closed) && User.InRole(EdubaseRoles.ROLE_BACKOFFICE); viewModel.IsLocalAuthorityEditable = viewModel.GroupTypeId.OneOfThese(GT.ChildrensCentresCollaboration, GT.ChildrensCentresGroup) && viewModel.LinkedEstablishments.Establishments.Count == 0 && User.InRole(EdubaseRoles.ROLE_BACKOFFICE); return(View("EditDetails", viewModel)); }
public async Task PopulateLayoutProperties(object viewModel, int?establishmentUrn, int?groupUId, IPrincipal user, Action <EstablishmentModel> processEstablishment = null, Action <GroupModel> processGroup = null) { if (establishmentUrn.HasValue && groupUId.HasValue) { throw new InvalidParameterException("Both urn and uid cannot be populated"); } if (!establishmentUrn.HasValue && !groupUId.HasValue) { throw new InvalidParameterException($"Both {nameof(establishmentUrn)} and {nameof(groupUId)} parameters are null"); } if (establishmentUrn.HasValue) { var domainModel = (await _establishmentReadService.GetAsync(establishmentUrn.Value, user)).GetResult(); var displayPolicy = await _establishmentReadService.GetDisplayPolicyAsync(domainModel, user); var permissibleGovernanceModes = await _establishmentReadService.GetPermissibleLocalGovernorsAsync(establishmentUrn.Value, user); if (!permissibleGovernanceModes.Any()) { domainModel.GovernanceModeId = null; // hack the model returned. } var vm = (IEstablishmentPageViewModel)viewModel; vm.Layout = EstabLayout; vm.Name = domainModel.Name; if (domainModel.TypeId.HasValue) { vm.TypeName = (await _cls.GetNameAsync(() => domainModel.TypeId)); } vm.SelectedTab = "governance"; vm.Urn = domainModel.Urn; vm.TabDisplayPolicy = new TabDisplayPolicy(domainModel, displayPolicy, user); vm.LegalParentGroup = EstablishmentController.GetLegalParent(vm.Urn.Value, await _groupReadService.GetAllByEstablishmentUrnAsync(vm.Urn.Value, user), user); // I agree, this shouldn't be a static. We should refector all this. We should have a base view model class. processEstablishment?.Invoke(domainModel); } else if (groupUId.HasValue) { var domainModel = (await _groupReadService.GetAsync(groupUId.Value, user)).GetResult(); var vm = (IGroupPageViewModel)viewModel; vm.Layout = GroupsLayout; vm.GroupName = domainModel.Name; vm.GroupTypeId = domainModel.GroupTypeId.Value; vm.GroupUId = groupUId; if (vm.GroupTypeId.HasValue) { vm.GroupTypeName = (await _cls.GetNameAsync(() => vm.GroupTypeId)); } vm.SelectedTabName = "governance"; vm.ListOfEstablishmentsPluralName = _nomenclatureService.GetEstablishmentsPluralName((eLookupGroupType)vm.GroupTypeId.Value); processGroup?.Invoke(domainModel); } }
public async Task <ActionResult> EditDetails(int id) { var domainModel = (await _groupReadService.GetAsync(id, User)).GetResult(); var viewModel = new GroupEditorViewModel(eSaveMode.Details) { Address = domainModel.Address.ToString(), AddressJsonToken = UriHelper.SerializeToUrlToken(domainModel.Address), ClosedDate = new DateTimeViewModel(domainModel.ClosedDate), OpenDate = new DateTimeViewModel(domainModel.OpenDate), LocalAuthorityId = domainModel.LocalAuthorityId, GroupTypeId = domainModel.GroupTypeId, ManagerEmailAddress = domainModel.ManagerEmailAddress, GroupName = domainModel.Name, CompaniesHouseNumber = domainModel.CompaniesHouseNumber, GroupUId = domainModel.GroupUId, GroupId = domainModel.GroupId, SelectedTabName = "details", StatusId = domainModel.StatusId, OriginalStatusId = domainModel.StatusId, UKPRN = domainModel.UKPRN.ToInteger() }; viewModel.ListOfEstablishmentsPluralName = _nomenclatureService.GetEstablishmentsPluralName((GT)viewModel.GroupTypeId.Value); await PopulateEstablishmentList(viewModel.LinkedEstablishments.Establishments, id, true); await PopulateSelectLists(viewModel); viewModel.LocalAuthorityName = await _lookup.GetNameAsync(() => viewModel.LocalAuthorityId); viewModel.DeriveCCLeadCentreUrn(); if (viewModel.GroupTypeId.HasValue) { viewModel.GroupTypeName = await _lookup.GetNameAsync(() => viewModel.GroupTypeId); } await SetEditPermissions(viewModel); return(View("EditDetails", viewModel)); }