Exemplo n.º 1
0
        public static AjaxCallResult TerminatePositionAssignment(int assignmentId)
        {
            AuthenticationData authData = GetAuthenticationDataAndCulture();

            PositionAssignment assignment = PositionAssignment.FromIdentity(assignmentId);

            if (assignment.OrganizationId == 0)
            {
                if (!authData.Authority.HasAccess(new Access(AccessAspect.Administration)))   // System-wide admin
                {
                    throw new UnauthorizedAccessException();
                }
            }
            else // Org-specific assignment
            {
                if (assignment.GeographyId == 0)
                {
                    if (!authData.Authority.HasAccess(new Access(authData.CurrentOrganization, AccessAspect.Administration)))
                    {
                        throw new UnauthorizedAccessException();
                    }
                }
                else // Org- and geo-specific assignment
                {
                    if (
                        !authData.Authority.HasAccess(new Access(authData.CurrentOrganization,
                                                                 assignment.Position.Geography, AccessAspect.Administration)))
                    {
                        throw new UnauthorizedAccessException();
                    }
                }
            }

            // Ok, go ahead and terminate

            try
            {
                assignment.Terminate(authData.CurrentUser, authData.CurrentUser.GetPrimaryPosition(authData.CurrentOrganization), string.Empty);
            }
            catch (DatabaseConcurrencyException)
            {
                return(new AjaxCallResult {
                    Success = false, DisplayMessage = Resources.Global.Error_DatabaseConcurrency
                });
            }

            return(new AjaxCallResult {
                Success = true
            });
        }
Exemplo n.º 2
0
        static public AssignmentData GetAssignmentData(int assignmentId)
        {
            AuthenticationData authData   = GetAuthenticationDataAndCulture();
            PositionAssignment assignment = PositionAssignment.FromIdentity(assignmentId);

            if (authData.Authority.CanAccess(assignment, AccessType.Read))
            {
                return(new AssignmentData
                {
                    Success = true,
                    AssignedPersonCanonical = assignment.Person.Canonical,
                    AssignedPersonId = assignment.PersonId,
                    PositionAssignmentId = assignment.Identity,
                    PositionId = assignment.PositionId,
                    PositionLocalized = assignment.Position.Localized()
                });
            }
            else
            {
                return(new AssignmentData {
                    Success = false
                });
            }
        }