コード例 #1
0
        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));
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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));
        }