public static List <eLookupGovernorRole> GetEquivalentRole(eLookupGovernorRole role)
        {
            if (role == eLookupGovernorRole.Establishment_SharedChairOfLocalGoverningBody ||
                role == eLookupGovernorRole.Group_SharedChairOfLocalGoverningBody)
            {
                return(new List <eLookupGovernorRole>
                {
                    eLookupGovernorRole.Group_SharedChairOfLocalGoverningBody,
                    eLookupGovernorRole.Establishment_SharedChairOfLocalGoverningBody
                });
            }

            if (role == eLookupGovernorRole.Establishment_SharedLocalGovernor ||
                role == eLookupGovernorRole.Group_SharedLocalGovernor)
            {
                return(new List <eLookupGovernorRole>
                {
                    eLookupGovernorRole.Group_SharedLocalGovernor,
                    eLookupGovernorRole.Establishment_SharedLocalGovernor
                });
            }

            return(new List <eLookupGovernorRole> {
                role
            });
        }
        public static eLookupGovernorRole?GetLocalEquivalentToSharedRole(eLookupGovernorRole role)
        {
            if (equivalentRoles.Any(x => x.Value.Contains(role)))
            {
                return(equivalentRoles.Single(x => x.Value.Contains(role)).Key);
            }

            return(null);
        }
        public async Task <ActionResult> SelectSharedGovernor(int establishmentUrn, eLookupGovernorRole role)
        {
            var roleName  = (await _cachedLookupService.GovernorRolesGetAllAsync()).Single(x => x.Id == (int)role).Name;
            var governors = (await _governorsReadService.GetSharedGovernorsAsync(establishmentUrn, User)).Where(g => RoleEquivalence.GetEquivalentRole(role).Contains((eLookupGovernorRole)g.RoleId)).ToList();

            var sharedGovernors = governors.Select(async g => await SharedGovernorViewModel.MapFromGovernor(g, establishmentUrn, _cachedLookupService));

            var viewModel = new SelectSharedGovernorViewModel
            {
                Governors    = (await Task.WhenAll(sharedGovernors)).ToList(),
                GovernorType = roleName.ToLowerInvariant(),
            };

            await _layoutHelper.PopulateLayoutProperties(viewModel, establishmentUrn, null, User);

            return(View(viewModel));
        }
Example #4
0
        public string GetGovernorRoleName(eLookupGovernorRole role, eTextCase textCase = eTextCase.SentenceCase, bool pluralise = false)
        {
            var roleName = role.ToString();

            if (roleName.Contains("_"))
            {
                var index = roleName.IndexOf("_", StringComparison.Ordinal);
                roleName = roleName.Substring(index + 1);
            }
            var name = roleName.ToProperCase().ToTextCase(textCase);

            if (pluralise)
            {
                name = name.Pluralize();
            }

            return(name);
        }
Example #5
0
        private async Task <bool> RoleAllowed(eLookupGovernorRole roleId, int?groupUId, int?establishmentUrn, IPrincipal user)
        {
            var existingGovernors = await _governorsReadService.GetGovernorListAsync(establishmentUrn, groupUId, user);

            if (EnumSets.eSingularGovernorRoles.Contains(roleId))
            {
                if (roleId == eLookupGovernorRole.Establishment_SharedChairOfLocalGoverningBody ||
                    roleId == eLookupGovernorRole.ChairOfLocalGoverningBody)
                {
                    return(!existingGovernors.CurrentGovernors.Any(
                               g => g.RoleId == (int)eLookupGovernorRole.Establishment_SharedChairOfLocalGoverningBody ||
                               g.RoleId == (int)eLookupGovernorRole.ChairOfLocalGoverningBody));
                }

                return(existingGovernors.CurrentGovernors.All(g => g.RoleId != (int)roleId));
            }

            return(true);
        }
 public static List <eLookupGovernorRole> GetEquivalentToLocalRole(eLookupGovernorRole role)
 {
     return(equivalentRoles.ContainsKey(role) ? equivalentRoles[role] : new List <eLookupGovernorRole> {
         role
     });
 }
Example #7
0
        /// <summary>
        /// Re-instates a chair of governors as just a simple lowly governor
        /// </summary>
        /// <param name="gid"></param>
        /// <param name="appointmentStartDate"></param>
        /// <param name="appointmentEndDate"></param>
        /// <param name="role"></param>
        /// <returns></returns>
        public async Task ReInstateChairAsNonChairAsync(int gid, DateTime appointmentStartDate, DateTime appointmentEndDate, eLookupGovernorRole currentRole)
        {
            eLookupGovernorRole targetRole;

            if (currentRole == eLookupGovernorRole.ChairOfGovernors)
            {
                targetRole = eLookupGovernorRole.Governor;
            }
            else if (currentRole == eLookupGovernorRole.ChairOfLocalGoverningBody)
            {
                targetRole = eLookupGovernorRole.LocalGovernor;
            }
            else if (currentRole == eLookupGovernorRole.ChairOfTrustees)
            {
                targetRole = eLookupGovernorRole.Trustee;
            }
            else
            {
                throw new Exception("You cannot demote from role " + currentRole);
            }

            var model = await _governorsReadService.GetGovernorAsync(gid, User);

            model.RoleId = (int)targetRole;
            model.Id     = null;
            model.AppointmentStartDate = appointmentStartDate;
            model.AppointmentEndDate   = appointmentEndDate;
            model.EmailAddress         = null;
            model.TelephoneNumber      = null;
            await _governorsWriteService.SaveAsync(model, User);
        }
Example #8
0
 public async Task <GovernorDisplayPolicy> GetEditorDisplayPolicyAsync(eLookupGovernorRole role, bool isGroup, IPrincipal principal)
 => (await _httpClient.GetAsync <GovernorDisplayPolicy>($"governor/{(int)role}/edit-policy?isForGroup={isGroup.ToString().ToLower()}", principal)).GetResponse();
 private static bool IsSharedGovernorRoleMultiSelect(eLookupGovernorRole role)
 {
     return(role == eLookupGovernorRole.Establishment_SharedLocalGovernor);
 }