private void gridPositions_ItemCommand(object sender, GridCommandEventArgs e) { try { if (e.CommandName == "Exclude") { OrganizationChartPositionManager manager = new OrganizationChartPositionManager(); OrganizationChartPosition position = new OrganizationChartPosition() { OrganizationChartID = base.CurrentOrgChartID, WFPPositionID = int.Parse(e.CommandArgument.ToString()), UpdatedByID = CurrentUserID }; manager.Exclude(position); this.bindPositionsGrid(); // refresh chart data base.RefreshOrgChartDataOnly(); // reload validations this.customOrgChartDetails.BindData(base.CurrentOrgChart); } } catch (PositionContainsSubordinatesException) { customPositionsErrorMessage.ErrorMessage = GetLocalResourceObject("PositionContainsSubordinatesExceptionMessage").ToString(); this.bindPositionsGrid(); } catch (Exception ex) { base.HandleException(ex); } }
private void loadData() { base.RefreshOrgChartDataOnly(); OrganizationChart chart = base.CurrentOrgChart; int tempPositionID = -1; bool isOK = int.TryParse(Request.QueryString[EDITPOSIDKEY], out tempPositionID); if (isOK) { OrganizationChartPosition position = OrganizationChartPositionManager.Instance.GetByID(chart.OrganizationChartID, tempPositionID); if (position.WFPPositionID == -1) { base.PrintErrorMessage(GetLocalResourceObject("PositionDoesNotExistMessage").ToString()); } else { // now check to see if this is a WFP or an FPPS if (position.ChartPositionType == enumChartPositionType.WFP) { this.customWFPPosition.BindData(position); } else { this.customFPPSPosition.BindData(position); } } } else { base.PrintErrorMessage(GetLocalResourceObject("PositionIDQuerystringNotValidMessage").ToString()); } }
public void OrganizationChartPositionManager_GetByID() { OrganizationChartPosition position = OrganizationChartPositionManager.Instance.GetByID(testChartID, testPositionID); Assert.IsNotNull(position, "Chart Position is null"); Assert.IsTrue(position.WFPPositionID != -1, "Position ID is == -1"); }
public void BindData(OrganizationChartPosition position) { try { this.panelMainInner.Visible = true; this.EditPositionID = position.WFPPositionID; OrganizationCode orgCode = new OrganizationCode(position.OrganizationCodeID); if (orgCode.ReportingOrganizationCode == -1) { customErrorMessage.ErrorMessage = string.Format(GetLocalResourceObject("NullReportingOrganizationCode").ToString(), orgCode.OrganizationName, orgCode.OrganizationCodeValue); } bindPayPlans(); bindFPLAndCurrentGrade(); bindDutyStationCountries(); bindDutyStationStates(); bindPositionTypesSupervisoryStatues(); bindOrgPositionTypes(); bindParentPositions(position.WFPPositionID); bindPositionBoxPlacement(); bindPositionBoxLocationGroupTypes(); loadData(position); } catch (Exception ex) { base.HandleException(ex); } }
private void buttonSave_Click(object sender, EventArgs e) { try { if (Page.IsValid) { OrganizationChartPosition newPosition = buildNewPosition(); OrganizationChartPositionManager.Instance.Add(newPosition); goToPositionManager(); } } catch (InvalidParentChartPositionException) { // show message this.customAddNewErrorMessage.ErrorMessage = GetLocalResourceObject("ParentNotInPositionExceptionMessage").ToString(); // rebind parent position list this.bindParentPositions(); } catch (Exception ex) { base.HandleException(ex); } }
private void buttonIncludePosition_Click(object sender, EventArgs e) { try { if (Page.IsValid) { OrganizationChartPosition position = buildPosition(); OrganizationChartPositionManager.Instance.Include(position); goToSourcePage(); } } catch (CircularPositionReferenceException) { // show message this.customErrorMessage.ErrorMessage = GetLocalResourceObject("CircularPositionReferenceExceptionMessage").ToString(); } catch (InvalidChartPositionException) { // unique case -- if this exception occurs then the position isn't available // just redirect to the New FPPS page this.goToSourcePage(); } catch (Exception ex) { base.HandleException(ex); } }
private OrganizationChartPosition buildNewPosition() { OrganizationChart chart = base.CurrentOrgChart; int calculatedOrgCodeID = -1; int dutyCountryID = ControlUtility.GetDropdownValue(this.dropDownDutyStationCountries); if (chart.OrganizationChartTypeID == enumOrgChartType.SingleOrg) { calculatedOrgCodeID = chart.OrgCode.OrganizationCodeID; } else { calculatedOrgCodeID = int.Parse(this.dropDownMultipleOrgCodes.SelectedValue); } // now add position and include in the current chart OrganizationChartPosition newPosition = new OrganizationChartPosition() { OrganizationChartID = chart.OrganizationChartID, OrganizationCodeID = calculatedOrgCodeID, CreatedByID = base.CurrentUserID, PositionTitle = this.textboxPositionTitle.Text, PayPlanID = ControlUtility.GetDropdownValue(this.dropDownPayPlan), SeriesID = ControlUtility.GetDropdownValue(this.dropDownSeries), RegionID = chart.OrgCode.RegionID, FPLGrade = ControlUtility.GetDropdownValue(this.dropDownFPLGrades), Grade = ControlUtility.GetDropdownValue(this.dropDownCurrentGrades), DutyStationCountryID = dutyCountryID, DutyStationStateID = (dutyCountryID == -1) ? (int?)null : dutyCountryID, DutyStationDescription = this.textboxDutyStationCity.Text, eOrgPositionType = (enumOrgPositionType)ControlUtility.GetDropdownValue(this.dropDownOrganizationPositionTypes), SupervisoryStatus = ControlUtility.GetDropdownValue(this.dropDownPositionTypesSupervisoryStatuses), ReportsToID = ControlUtility.GetDropdownValue(this.dropDownParentPositions), PositionGroupType = (enumOrgPositionGroupType)ControlUtility.GetDropdownValue(this.dropDownPositionLocationGroupTypes), PositionPlacementType = (enumOrgPositionPlacementType)ControlUtility.GetDropdownValue(this.dropDownPositionPlacements) }; if (this.checkboxIsEncumbered.Checked) { newPosition.FirstName = this.textboxFirstName.Text; newPosition.LastName = this.textboxLastName.Text; newPosition.MiddleName = this.textboxMiddleName.Text; newPosition.EmployeeName = string.Format("{0} {1} {2}", this.textboxFirstName.Text.Trim(), string.IsNullOrWhiteSpace(this.textboxMiddleName.Text) ? string.Empty : this.textboxMiddleName.Text.Trim(), this.textboxLastName.Text.Trim()); newPosition.PositionStatusHistory = (int)enumOrgPositionStatusHistoryType.ActiveEmployee; } else { newPosition.PositionStatusHistory = (int)enumOrgPositionStatusHistoryType.ActiveVacant; } return(newPosition); }
public void OrganizationChartPositionManager_GetByID() { const int testChartID = 1007; const int testPositionID = 622; OrganizationChartPosition position = OrganizationChartPositionManager.Instance.GetByID(testChartID, testPositionID); Assert.IsNotNull(position, "Chart Position is null"); Assert.IsTrue(position.WFPPositionID != -1, "Position ID is == -1"); Assert.IsTrue(!string.IsNullOrWhiteSpace(position.PositionTitle), "Position has no title"); }
public void OrganizationChartPositionManager_Add() { const int testOrgCodeID = 15; int newOrgChartID = -1; int primaryUserID = 1; enumOrgChartType selectedChartType = enumOrgChartType.SingleOrg; try { OC.OrganizationChart chart = OC.OrganizationChartManager.Instance.GetByOrgCodeAndChartType(testOrgCodeID, selectedChartType); if (chart.OrganizationChartID == -1) { newOrgChartID = CreateOrgChartNew("OrganizationChartPositionManager_Add", testOrgCodeID, selectedChartType, primaryUserID); } else { newOrgChartID = chart.OrganizationChartID; } chart = OC.OrganizationChartManager.Instance.GetByID(newOrgChartID); Assert.IsNotNull(chart, "Organization Chart is null"); Assert.IsTrue(chart.OrganizationChartID == newOrgChartID, "Organization Chart not found"); // now add position OrganizationChartPosition newPosition = new OrganizationChartPosition() { OrganizationChartID = newOrgChartID, OrganizationCodeID = testOrgCodeID, CreatedByID = primaryUserID, PositionTitle = "Generated Position Title" }; OrganizationChartPositionManager.Instance.Add(newPosition); // try to find position OrganizationChartPosition position = OrganizationChartPositionManager.Instance.GetByID(newOrgChartID, newPosition.WFPPositionID); Assert.IsTrue(position.WFPPositionID != -1, "Position Not Created"); WorkforcePlanningPositionManager.Instance.Delete(position.WFPPositionID, newOrgChartID, primaryUserID); } catch (Exception ex) { throw ex; } finally { DeleteChart(newOrgChartID); } }
private void gridPositions_ItemCommand(object sender, GridCommandEventArgs e) { try { if (e.CommandName == "Exclude" || e.CommandName == "Delete") { if (e.CommandName == "Exclude") { // exclude command OrganizationChartPosition position = new OrganizationChartPosition() { OrganizationChartID = base.CurrentOrgChartID, WFPPositionID = int.Parse(e.CommandArgument.ToString()), UpdatedByID = CurrentUserID }; OrganizationChartPositionManager.Instance.Exclude(position); } else { // delete command int WFPPositionID = int.Parse(e.CommandArgument.ToString()); WorkforcePlanningPositionManager.Instance.Delete(WFPPositionID, base.CurrentOrgChartID, base.CurrentUserID); } this.bindAbolishedPositions(); // refresh chart data base.RefreshOrgChartDataOnly(); // reload validations this.customOrgChartDetails.BindData(base.CurrentOrgChart); } } catch (PositionContainsSubordinatesException) { customPositionsErrorMessage.ErrorMessage = GetLocalResourceObject("PositionContainsSubordinatesExceptionMessage").ToString(); this.bindAbolishedPositions(); } catch (Exception ex) { base.HandleException(ex); } }
private void loadData() { base.RefreshOrgChartDataOnly(); OrganizationChart chart = base.CurrentOrgChart; int tempPositionID = -1; bool isOK = int.TryParse(Request.QueryString[EDITPOSIDKEY], out tempPositionID); if (isOK) { OrganizationChartPosition position = OrganizationChartPositionManager.Instance.GetByID(chart.OrganizationChartID, tempPositionID); if (position.WFPPositionID == -1) { base.PrintErrorMessage(GetLocalResourceObject("PositionDoesNotExistMessage").ToString()); } else { this.EditPositionID = position.WFPPositionID; base.SetPageTitle(string.Format(GetLocalResourceObject("PageTitle").ToString(), position.PositionLineItemFullNameReverse)); this.customOrgChartDetails.BindData(chart); this.literalReportsToPositionTitleLineItem.Text = position.PositionLineItemFullNameReverse; this.literalPrimaryOrgCode.Text = chart.OrgCode.NewOrgCodeLine; this.rowChildOrgCodes.Visible = (chart.OrganizationChartTypeID == enumOrgChartType.MultiOrg); if (chart.OrganizationChartTypeID == enumOrgChartType.MultiOrg) { // bind list of child org codes this.bindMultipleChildOrgCodes(chart.OrgCode.OrganizationCodeID); } // show all positions in primary org code bindAvailablePositions(-1); } } else { base.PrintErrorMessage(GetLocalResourceObject("PositionIDQuerystringNotValidMessage").ToString()); } }
private OrganizationChartPosition buildPosition() { OrganizationChartPosition position = new OrganizationChartPosition() { OrganizationChartID = base.CurrentOrgChartID, WFPPositionID = this.EditPositionID, eOrgPositionType = (enumOrgPositionType)ControlUtility.GetDropdownValue(this.dropDownOrganizationPositionTypes), PositionGroupType = (enumOrgPositionGroupType)ControlUtility.GetDropdownValue(this.dropDownPositionLocationGroupTypes), PositionPlacementType = (enumOrgPositionPlacementType)ControlUtility.GetDropdownValue(this.dropDownPositionPlacements), UpdatedByID = CurrentUserID }; if (this.TopLevelEditOK) { position.ReportsToID = ControlUtility.GetDropdownValue(this.dropDownParentPositions); } else { position.ReportsToID = this.OriginalReportsToID; } return(position); }
private void buttonUpdatePosition_Click(object sender, EventArgs e) { try { if (Page.IsValid) { OrganizationChartPosition position = buildPosition(); OrganizationChartPositionManager.Instance.UpdateFPPS(position); goToSourcePage(); } } catch (InvalidParentChartPositionException) { // show message this.customErrorMessage.ErrorMessage = GetLocalResourceObject("ParentNotInPositionExceptionMessage").ToString(); // rebind parent position list this.bindParentPositions(this.EditPositionID); } catch (Exception ex) { base.HandleException(ex); } }
private void loadData(IWorkforcePlanningPosition position) { base.RefreshOrgChartDataOnly(); OrganizationChart chart = base.CurrentOrgChart; bool tempIsChartPosition = position is OrganizationChartPosition; this.IsChartPosition = tempIsChartPosition; this.customOrgChartDetails.BindData(chart); this.customOrgChartDetails.RedirectSuffix = tempIsChartPosition ? "pos" : "newfpps"; this.customFPPSPositionInformation.BindData(position, chart.StartPointWFPPositionID); if (position.PositionStatusHistory.HasValue && position.PositionStatusHistory.Value == (int)enumOrgPositionStatusHistoryType.ActiveEmployee) { base.SetPageTitle(string.Format(GetLocalResourceObject("PageTitle").ToString(), position.PositionLineItemFullName)); } else { base.SetPageTitle(string.Format(GetLocalResourceObject("PageTitle").ToString(), string.Format("{0} {1}", position.PositionTitle, GetLocalResourceObject("VacantWordPhrase").ToString()))); } // This is a nested control and as such, the use is a little different from the other user controls -- we need to check read/write permission here // This is because we load this control by an explicit Bind -- not in page load this.OriginalReportsToID = position.ReportsToID; this.AccessOK = (base.CurrentOrgChartNavMode == enumNavigationMode.Insert || base.CurrentOrgChartNavMode == enumNavigationMode.Edit); bool actionsOK = this.AccessOK && (chart.OrgWorkflowStatusID == enumOrgWorkflowStatus.Draft || chart.OrgWorkflowStatusID == enumOrgWorkflowStatus.Review); bool isRoot = (position.WFPPositionID == base.CurrentOrgChart.StartPointWFPPositionID); bool isTopLevelEditOk = (base.HasHRGroupPermission || base.IsAdmin) || !isRoot; this.TopLevelEditOK = isTopLevelEditOk; this.buttonIncludePosition.Visible = actionsOK && !tempIsChartPosition; this.buttonUpdatePosition.Visible = actionsOK && tempIsChartPosition; this.rowReportsToPositionRoot.Visible = !isTopLevelEditOk; this.rowReportsToPositionUpdate.Visible = isTopLevelEditOk; this.requiredParentPosition.Enabled = !isRoot; // parent position is required for all positions except the root node this.spanPositionRequired.Visible = !isRoot; // hide the required asterisk "*" this.rowLocationGroupType.Visible = !isRoot; this.rowPlacementType.Visible = !isRoot; this.dropDownOrganizationPositionTypes.SelectedValue = ((int)position.eOrgPositionType).ToString(); if (isTopLevelEditOk) { if (position.ReportsToID != -1) { this.dropDownParentPositions.SelectedValue = position.ReportsToID.ToString(); } } else { literalReportsToPosition.Text = position.ReportsToFullNameReverse; } if (tempIsChartPosition && !isRoot) { // only set if this is a chart position AND it is not the root node position OrganizationChartPosition chartPosition = position as OrganizationChartPosition; this.dropDownPositionPlacements.SelectedValue = ((int)chartPosition.PositionPlacementType).ToString(); this.dropDownPositionLocationGroupTypes.SelectedValue = ((int)chartPosition.PositionGroupType).ToString(); } }
private void loadData(OrganizationChartPosition position) { base.RefreshOrgChartDataOnly(); OrganizationChart chart = base.CurrentOrgChart; customOrgChartDetails.BindData(chart); bool isActiveEmployee = (position.PositionStatusHistory.HasValue && position.PositionStatusHistory.Value == (int)enumOrgPositionStatusHistoryType.ActiveEmployee); if (isActiveEmployee) { base.SetPageTitle(string.Format(GetLocalResourceObject("PageTitle").ToString(), position.PositionLineItemFullName)); } else { base.SetPageTitle(string.Format(GetLocalResourceObject("PageTitle").ToString(), string.Format("{0} {1}", position.PositionTitle, GetLocalResourceObject("VacantWordPhrase").ToString()))); } // This is a nested control and as such, the use is a little different from the other user controls -- we need to check read/write permission here // This is because we load this control by an explicit Bind -- not in page load this.OriginalReportsToID = position.ReportsToID; bool isRoot = (position.WFPPositionID == base.CurrentOrgChart.StartPointWFPPositionID); this.AccessOK = (base.CurrentOrgChartNavMode == enumNavigationMode.Insert || base.CurrentOrgChartNavMode == enumNavigationMode.Edit); bool actionsOK = this.AccessOK && (chart.OrgWorkflowStatusID == enumOrgWorkflowStatus.Draft || chart.OrgWorkflowStatusID == enumOrgWorkflowStatus.Review); this.buttonDeletePosition.Visible = actionsOK && (position.DirectChildCount == 0) && !isRoot; this.buttonSave.Visible = actionsOK; // show org code section based on chart type bool isSingleChartType = (chart.OrganizationChartTypeID == enumOrgChartType.SingleOrg); this.rowSingleOrgCode.Visible = isSingleChartType; this.rowMultipleOrgCodes.Visible = !isSingleChartType; if (isSingleChartType) { this.literalSingleOrgCode.Text = chart.OrgCode.DetailLine; } else { bindMultipleChildOrgCodes(chart.OrgCode.OrganizationCodeID); this.dropDownMultipleOrgCodes.SelectedValue = position.OrganizationCodeID.ToString(); } // load all other data fields this.textboxPositionTitle.Text = position.PositionTitle; this.panelPositionNameInner.Visible = isActiveEmployee; this.checkboxIsEncumbered.Checked = isActiveEmployee; if (isActiveEmployee) { this.textboxFirstName.Text = position.FirstName; this.textboxMiddleName.Text = position.MiddleName; this.textboxLastName.Text = position.LastName; } this.dropDownPayPlan.SelectedValue = position.PayPlanID.ToString(); bindSeries(position.PayPlanID); this.dropDownSeries.SelectedValue = position.SeriesID.ToString(); this.dropDownFPLGrades.SelectedValue = position.FPLGrade.ToString(); this.dropDownCurrentGrades.SelectedValue = position.Grade.ToString(); bool isUS = position.DutyStationCountryID == (int)enumCountries.UnitedStates; this.dropDownDutyStationCountries.SelectedValue = position.DutyStationCountryID.ToString(); this.rowDutyStationState.Visible = isUS; if (isUS) { this.dropDownDutyStationStates.SelectedValue = position.DutyStationStateID.ToString(); } this.textboxDutyStationCity.Text = position.DutyStationDescription; this.dropDownPositionTypesSupervisoryStatuses.SelectedValue = position.SupervisoryStatus.ToString(); this.dropDownOrganizationPositionTypes.SelectedValue = ((int)position.eOrgPositionType).ToString(); // in theory -- the root should not be a WFP, but would rather be safe bool isTopLevelEditOk = (base.HasHRGroupPermission || base.IsAdmin) || !isRoot; this.TopLevelEditOK = isTopLevelEditOk; this.rowReportsToPositionRoot.Visible = !isTopLevelEditOk; this.rowReportsToPositionUpdate.Visible = isTopLevelEditOk; this.requiredParentPosition.Enabled = !isRoot; // parent position is required for all positions except the root node this.spanPositionRequired.Visible = !isRoot; // hide the required asterisk "*" this.rowLocationGroupType.Visible = !isRoot; this.rowPlacementType.Visible = !isRoot; if (isTopLevelEditOk) { if (position.ReportsToID != -1) { this.dropDownParentPositions.SelectedValue = position.ReportsToID.ToString(); } } else { literalReportsToPosition.Text = position.ReportsToFullNameReverse; } if (!isRoot) { this.dropDownPositionPlacements.SelectedValue = ((int)position.PositionPlacementType).ToString(); this.dropDownPositionLocationGroupTypes.SelectedValue = ((int)position.PositionGroupType).ToString(); } }
private void setView(OrganizationChart chart, int tempPositionID) { if (chart.OrgWorkflowStatusID == enumOrgWorkflowStatus.Undefined || chart.OrgWorkflowStatusID == enumOrgWorkflowStatus.Approval || chart.OrgWorkflowStatusID == enumOrgWorkflowStatus.Published) { this.gridPositions.Columns[0].Visible = false; // Exclude Column this.gridPositions.Columns[1].Visible = false; // Include Column this.buttonAddNewWFP.Visible = false; // Add New WFP button } bool showDrillDown = (tempPositionID != -1); this.panelDrillUp.Visible = showDrillDown; if (showDrillDown) { // 1. load position and see if it is valid // 2. set this.DrillPositionID // 3. check to see if it is broken hierarchy // 4. load reports to ID OrganizationChartPosition testPosition = OrganizationChartPositionManager.Instance.GetByID(base.CurrentOrgChartID, tempPositionID); if (testPosition.WFPPositionID == -1) { base.PrintErrorMessage(GetLocalResourceObject("DrillPositionIDNotFoundInChartMessage").ToString()); } else { // 2. set this.DrillPositionID this.DrillPositionID = tempPositionID; // show drill down position name/title if (testPosition.PositionStatusHistory.HasValue && testPosition.PositionStatusHistory.Value == (int)enumOrgPositionStatusHistoryType.ActiveEmployee && !string.IsNullOrWhiteSpace(testPosition.FullName)) { this.literalDrillPositionDetails.Text = string.Format("{0} ({1})", testPosition.FullName, testPosition.PositionTitle); } else { this.literalDrillPositionDetails.Text = string.Format("{0} ({1})", _FPPSVacancyWordPhrase, testPosition.PositionTitle); } // 3. check to see if it is broken hierarchy // 4. load reports to ID (if not -1) bool showUpOneLevel = testPosition.IsInChartHierarchy && testPosition.ReportsToID != -1; bool isCurrentPositionRoot = (testPosition.WFPPositionID == chart.StartPointWFPPositionID); if (showUpOneLevel) { string upOneLevelURL = string.Empty; if (isCurrentPositionRoot) { // this is the root node of the chart -- next is to show all positions upOneLevelURL = "~/OrgChart/OrgChartPositions.aspx#positionlist"; } else { upOneLevelURL = string.Format("~/OrgChart/OrgChartPositions.aspx?posID={0}#positionlist", testPosition.ReportsToID); } this.linkDrillUpOneLevel.NavigateUrl = upOneLevelURL; this.linkDrillUpOneLevelArrow.NavigateUrl = upOneLevelURL; } this.tdDrillUpOneLevel.Visible = showUpOneLevel && !isCurrentPositionRoot; this.tdDrillUpOneLevelArrow.Visible = showUpOneLevel && !isCurrentPositionRoot; this.tdDrillUpOneLevelArrowDisabled.Visible = !testPosition.IsInChartHierarchy; this.tdDrillUpOneLevelDisabled.Visible = !testPosition.IsInChartHierarchy; } } }
private void gridPositions_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { OrganizationChartPosition itemPosition = e.Item.DataItem as OrganizationChartPosition; Literal literalEmployeeName = e.Item.FindControl("literalEmployeeName") as Literal; HyperLink linkPositionTitle = e.Item.FindControl("linkPositionTitle") as HyperLink; Literal literalPositionNumberBaseSuffix = e.Item.FindControl("literalPositionNumberBaseSuffix") as Literal; Literal literalPayPlanGrade = e.Item.FindControl("literalPayPlanGrade") as Literal; Literal literalNoExclude = e.Item.FindControl("literalNoExclude") as Literal; Literal literalSeriesNumber = e.Item.FindControl("literalSeriesNumber") as Literal; ImageButton imageButtonExclude = e.Item.FindControl("imageButtonExclude") as ImageButton; Literal literalStarForChildCount = e.Item.FindControl("literalStarForChildCount") as Literal; HyperLink linkChildCount = e.Item.FindControl("linkChildCount") as HyperLink; Literal literalChildCount = e.Item.FindControl("literalChildCount") as Literal; Literal literalRootParentInHierarchy = e.Item.FindControl("literalRootParentInHierarchy") as Literal; Image imageInHierarchy = e.Item.FindControl("imageInHierarchy") as Image; Image imageNotInHierarchy = e.Item.FindControl("imageNotInHierarchy") as Image; Image imageParentInHierarchy = e.Item.FindControl("imageParentInHierarchy") as Image; Image imageParentNotInHierarchy = e.Item.FindControl("imageParentNotInHierarchy") as Image; HtmlGenericControl divTopLevelPosition = e.Item.FindControl("divTopLevelPosition") as HtmlGenericControl; HyperLink linkInclude = e.Item.FindControl("linkInclude") as HyperLink; bool isRoot = (itemPosition.WFPPositionID != -1 && itemPosition.WFPPositionID == base.CurrentOrgChart.StartPointWFPPositionID); divTopLevelPosition.Visible = isRoot; imageButtonExclude.CommandArgument = itemPosition.WFPPositionID.ToString(); // exclude root node AND check to make sure that there are no children bool okToExclude = (!isRoot && itemPosition.ChartChildCount == 0); literalNoExclude.Visible = !okToExclude; imageButtonExclude.Visible = okToExclude; linkPositionTitle.Text = HttpUtility.HtmlEncode(itemPosition.PositionTitle); string linkPositionEditURL = string.Format("~/OrgChart/UpdateChartPosition.aspx?editPosID={0}", itemPosition.WFPPositionID); string linkIncludeURL = string.Format("~/OrgChart/IncludePositions.aspx?editPosID={0}", itemPosition.WFPPositionID); if (this.DrillPositionID != -1) { linkPositionEditURL += string.Format("&viewPosID={0}", this.DrillPositionID); linkIncludeURL += string.Format("&viewPosID={0}", this.DrillPositionID); } linkPositionTitle.NavigateUrl = linkPositionEditURL; linkInclude.NavigateUrl = linkIncludeURL; bool isFPPSOnly = !string.IsNullOrWhiteSpace(itemPosition.PositionNumberBase) && !string.IsNullOrWhiteSpace(itemPosition.PositionNumberSuffix); literalPositionNumberBaseSuffix.Visible = isFPPSOnly; string vacantPhrase = string.Empty; if (isFPPSOnly) { vacantPhrase = _FPPSVacancyWordPhrase; literalPositionNumberBaseSuffix.Text = HttpUtility.HtmlEncode(string.Format("{0}-{1}", itemPosition.PositionNumberBase, itemPosition.PositionNumberSuffix)); } else { vacantPhrase = _WFPVacancyWordPhrase; } literalEmployeeName.Text = HttpUtility.HtmlEncode(itemPosition.PositionStatusHistory.HasValue && itemPosition.PositionStatusHistory.Value == (int)enumOrgPositionStatusHistoryType.ActiveEmployee ? itemPosition.FullNameReverse : vacantPhrase); literalPayPlanGrade.Text = HttpUtility.HtmlEncode(string.Format("{0}-{1}", itemPosition.PayPlanAbbreviation, itemPosition.Grade)); literalSeriesNumber.Text = itemPosition.PaddedSeriesID; // set direct child count bool hasTotalChildrenAndInHierarchy = (itemPosition.DirectChildCount > 0); linkChildCount.Visible = hasTotalChildrenAndInHierarchy; literalChildCount.Visible = !hasTotalChildrenAndInHierarchy; literalStarForChildCount.Visible = hasTotalChildrenAndInHierarchy; if (hasTotalChildrenAndInHierarchy) { linkChildCount.Text = string.Format(_childCountFormatLine, itemPosition.ChartChildCount, itemPosition.DirectChildCount); linkChildCount.NavigateUrl = string.Format("~/OrgChart/OrgChartPositions.aspx?posID={0}#positionlist", itemPosition.WFPPositionID); } else { literalChildCount.Text = itemPosition.DirectChildCount.ToString(); } // set image in/not in chart hierarchy display imageInHierarchy.Visible = itemPosition.IsInChartHierarchy; imageNotInHierarchy.Visible = !itemPosition.IsInChartHierarchy; // set image PARENT in/not in chart hierarchy display imageParentInHierarchy.Visible = !isRoot && itemPosition.IsParentInChartHierarchy; imageParentNotInHierarchy.Visible = !isRoot && !itemPosition.IsParentInChartHierarchy; literalRootParentInHierarchy.Visible = isRoot; } }