Exemplo n.º 1
0
        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");
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
     }
 }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
        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());
            }
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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();
            }
        }
Exemplo n.º 15
0
        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();
            }
        }
Exemplo n.º 16
0
        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;
                }
            }
        }
Exemplo n.º 17
0
        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;
            }
        }