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 }); }
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 }); } }