public void OrganizationChartLogManager_GetByID()
        {
            OrganizationChartLog chart = OrganizationChartLogManager.Instance.GetByID(2);

            Assert.IsNotNull(chart, "OrganizationChartLog is null");
            Assert.IsTrue(chart.OrganizationChartLogID == 2, "Organization Chart not found");
        }
Exemple #2
0
        private void loadData()
        {
            OrganizationChartLog chartLog = base.CurrentOrgChartLog;

            // validation check for base.CurrentOrgChartLog is in PubOrgChartRequiredUserControlBase
            base.SetPageTitle(string.Format(GetLocalResourceObject("PageTitle").ToString(), chartLog.OrganizationName, chartLog.OrgCode.OrganizationCodeValue));

            int  tempPositionID = -1;
            bool isTempIDOK     = true;

            // check drill down value -- not certain if there is a global
            if (Request.QueryString[POSITIONIDKEY] != null)
            {
                isTempIDOK = int.TryParse(Request.QueryString[POSITIONIDKEY], out tempPositionID);
            }

            if (isTempIDOK)
            {
                setView(chartLog, tempPositionID);
                this.customPubOrgChartDetails.BindData(chartLog);
                bindPositionsGrid();
            }
            else
            {
                base.PrintErrorMessage(GetLocalResourceObject("InvalidPositionIDParameterMessage").ToString());
            }
        }
        public void OrganizationChartLogManager_GetOrganizationChartLogByOrgCodeAndChartType()
        {
            OrganizationChartLog chart = OrganizationChartLogManager.Instance.GetByOrgCodeAndChartType(4, enumOrgChartType.SingleOrg);

            Assert.IsNotNull(chart, "OrganizationChartLog is null");
            Assert.IsTrue(chart.OrganizationChartTypeID == enumOrgChartType.SingleOrg && chart.OrgCode.OrganizationCodeID == 4, "Organization Chart not found");
        }
        private void loadData()
        {
            OrganizationChartLog chartLog = base.CurrentOrgChartLog;
            int  tempPositionID           = -1;
            bool isOK = int.TryParse(Request.QueryString[VIEWPOSIDKEY], out tempPositionID);

            if (isOK)
            {
                OrganizationChartPositionLog position = OrganizationChartPositionLogManager.Instance.GetByID(chartLog.OrganizationChartLogID, tempPositionID);

                if (position.WFPPositionID == -1)
                {
                    base.PrintErrorMessage(GetLocalResourceObject("PositionDoesNotExistMessage").ToString());
                }
                else
                {
                    this.customPubOrgChartDetails.BindData(chartLog);
                    this.customFPPSPositionInformation.BindData(position, chartLog.StartPointWFPPositionID);
                }
            }
            else
            {
                base.PrintErrorMessage(GetLocalResourceObject("PositionIDQuerystringNotValidMessage").ToString());
            }
        }
 public void BindData(OrganizationChartLog chartLog)
 {
     try
     {
         loadData(chartLog);
     }
     catch (Exception ex)
     {
         base.HandleException(ex);
     }
 }
        private void dropDownOrganizationCodes_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
        {
            try
            {
                enumOrgChartType selectedChartType = (enumOrgChartType)int.Parse(this.dropDownChartTypes.SelectedValue);
                int orgCodeID = ControlUtility.GetDropdownValue(this.dropDownOrganizationCodes, "-1");

                // reset panel view
                resetOrgChartPanels();

                if (orgCodeID != -1)
                {
                    // Three POSSIBLE STATES:
                    // A. Existing In-Progress Chart
                    // B. No In-Process Chart but has a Published Chart
                    // C. No In-Process Chart/No Published Chart

                    // State 1: Existing In-Progress Chart
                    OrganizationChart chart = OrganizationChartManager.Instance.GetByOrgCodeAndChartType(orgCodeID, selectedChartType);

                    if (chart.OrganizationChartID != -1)
                    {
                        // Chart is In-Process
                        setChartView(this.panelInProcessChart, CreationType.None, false);
                    }
                    else
                    {
                        // No In-Process Chart -- now check published charts
                        OrganizationChartLog chartLog = OrganizationChartLogManager.Instance.GetByOrgCodeAndChartType(orgCodeID, selectedChartType);

                        if (chartLog.OrganizationChartLogID == -1)
                        {
                            // State 3: No In-Process Chart/No Published Chart
                            setChartView(this.panelNoInProcessNoPublished, CreationType.New, true);

                            // bind root positions by org code
                            bindRootPositionsByOrgCode(orgCodeID);
                        }
                        else
                        {
                            // State 2: No In-Process Chart but has a Published Chart
                            setChartView(this.panelPublishedChart, CreationType.NewFromTemplate, true);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }
        }
Exemple #7
0
        private void loadData()
        {
            OrganizationChartLog chartLog = base.CurrentOrgChartLog;

            if (chartLog.OrganizationChartLogID == -1)
            {
                base.PrintErrorMessage(GetLocalResourceObject("OrganizationChartLogNotFoundMessage").ToString());
            }
            else
            {
                // load data
                base.SetPageTitle(string.Format(GetLocalResourceObject("PageTitle").ToString(), chartLog.OrganizationName, chartLog.OrgCode.OrganizationCodeValue));
                this.customPubOrgChartDetails.BindData(chartLog);
            }
        }
        public void BindChart(OrganizationChart chart, OrganizationChartTypeViews viewType)
        {
            try
            {
                this.customOrgChartDetails.BindData(chart);

                // set chart generation parameters
                ChartGenerationParameters chartParameters = new ChartGenerationParameters()
                {
                    ChartType = viewType
                };

                if (viewType == OrganizationChartTypeViews.InProcess)
                {
                    // get in process chart
                    int chartID = base.CurrentOrgChartID;
                    chartParameters.ID = chartID;

                    this.customDisplayChart.PreviewTitle = this.PreviewTitleInProcess;
                    OrganizationChartPositionCollection positionList = OrganizationChartPositionManager.Instance.GetOrganizationChartPositions(chartID);

                    // pass position list and starting point of the in-process chart
                    this.customDisplayChart.BindChart(chartParameters, positionList.ToList <IChartPosition>(), chart.StartPointWFPPositionID);
                }
                else if (viewType == OrganizationChartTypeViews.Published)
                {
                    int chartLogID = base.CurrentOrgChart.PublishedOrganizationChartLogID;
                    chartParameters.ID = chartLogID;
                    ChartGenerationParametersSessionWrapper.Parameters = chartParameters;

                    this.customDisplayChart.PreviewTitle = this.PreviewTitlePublished;

                    // Load up chart log based on most recent published version
                    OrganizationChartLog chartLog = OrganizationChartLogManager.Instance.GetByID(chartLogID);
                    IList <OrganizationChartPositionLog> positionList = OrganizationChartPositionLogManager.Instance.GetOrganizationChartPositionLogs(chartLogID);

                    // pass position list and starting point OF THE PUBLISHED CHART (not the in-process chart)
                    this.customDisplayChart.BindChart(chartParameters, positionList.ToList <IChartPosition>(), chartLog.StartPointWFPPositionID);
                }
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }
        }
Exemple #9
0
        private void loadData()
        {
            if (Request.QueryString[CHARTLOGIDKEY] == null)
            {
                printMessage(GetLocalResourceObject("NullIDKey").ToString());
            }
            else
            {
                int  tempID  = -1;
                bool paramOK = int.TryParse(Request.QueryString[CHARTLOGIDKEY], out tempID);

                if (!paramOK)
                {
                    printMessage(GetLocalResourceObject("IDKeyNotAValidInteger").ToString());
                }
                else
                {
                    OrganizationChartLog chartLog = OrganizationChartLogManager.Instance.GetByID(tempID);

                    if (chartLog.OrganizationChartLogID == -1)
                    {
                        printMessage(GetLocalResourceObject("IDNotFoundMessage").ToString());
                    }
                    else
                    {
                        this.customDisplayChart.Visible = true;
                        this.Page.Title = string.Format(GetLocalResourceObject("PageTitle").ToString(), chartLog.OrganizationName, chartLog.OrgCode.OrganizationCodeValue);
                        IList <OrganizationChartPositionLog> positionList = OrganizationChartPositionLogManager.Instance.GetOrganizationChartPositionLogs(chartLog.OrganizationChartLogID);

                        ChartGenerationParameters genParams = new ChartGenerationParameters()
                        {
                            ID        = chartLog.OrganizationChartLogID,
                            ChartType = OrganizationChartTypeViews.Published
                        };

                        this.customDisplayChart.BindChart(genParams, positionList.ToList <IChartPosition>(), chartLog.StartPointWFPPositionID);
                    }
                }
            }
        }
Exemple #10
0
        private void loadData()
        {
            try
            {
                OrganizationChartLog chartLog = base.CurrentOrgChartLog;
                this.customPubOrgChartDetails.BindData(chartLog);

                // set chart generation parameters
                ChartGenerationParameters genParams = new ChartGenerationParameters()
                {
                    ID        = chartLog.OrganizationChartLogID,
                    ChartType = OrganizationChartTypeViews.Published
                };

                base.SetPageTitle(string.Format(GetLocalResourceObject("PageTitle").ToString(), chartLog.OrganizationName, chartLog.OrgCode.OrganizationCodeValue));
                IList <OrganizationChartPositionLog> positionList = OrganizationChartPositionLogManager.Instance.GetOrganizationChartPositionLogs(chartLog.OrganizationChartLogID);
                this.customDisplayChart.BindChart(genParams, positionList.ToList <IChartPosition>(), chartLog.StartPointWFPPositionID);
            }
            catch (Exception ex)
            {
                base.HandleException(ex);
            }
        }
Exemple #11
0
        private void setView(OrganizationChartLog chart, int tempPositionID)
        {
            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

                OrganizationChartPositionLog testPosition = OrganizationChartPositionLogManager.Instance.GetByID(chart.OrganizationChartLogID, 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
                    if (string.IsNullOrWhiteSpace(testPosition.FullName))
                    {
                        this.literalDrillPositionDetails.Text = string.Format("{0} ({1})", _nameNotAvailable, testPosition.PositionTitle);
                    }
                    else
                    {
                        this.literalDrillPositionDetails.Text = string.Format("{0} ({1})", testPosition.FullName, 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 = "~/PubOrgChart/OrgChartPositions.aspx#positionlist";
                        }
                        else
                        {
                            upOneLevelURL = string.Format("~/PubOrgChart/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;
                }
            }
        }
Exemple #12
0
        public List <OrgChartSearchResult> LoadSearchResults(int userID, int?organizationChartID            = null,
                                                             int?organizationChartTypeID                    = null, int?organizationCodeID = null,
                                                             enumOrgWorkflowStatus orgChartWorkflowStatusID = enumOrgWorkflowStatus.Undefined,
                                                             int?regionID      = null, string authorName = null, string approverName = null,
                                                             int?publishedYear = null, int?seriesID      = null, string employeeName = null)
        {
            List <OrgChartSearchResult> searchResults = new List <OrgChartSearchResult>();

            if (userID <= 0)
            {
                throw new BusinessException("UserID must be provided.");
            }
            else if (organizationChartID == null && organizationChartTypeID == null && organizationCodeID == null && orgChartWorkflowStatusID == enumOrgWorkflowStatus.Undefined &&
                     regionID == null && string.IsNullOrEmpty(authorName) && string.IsNullOrEmpty(approverName) && publishedYear == null && seriesID == null &&
                     string.IsNullOrEmpty(employeeName))
            {
                throw new BusinessException("No search criteria provided. At least one expected.");
            }
            else
            {
                try
                {
                    DbCommand commandWrapper = GetDbCommand("spr_SearchOrganizationCharts");

                    commandWrapper.Parameters.Add(new SqlParameter("@UserID", userID));


                    if (organizationChartID.HasValue)
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@OrganizationChartID", organizationChartID.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@OrganizationChartID", DBNull.Value));
                    }

                    if (organizationChartTypeID.HasValue)
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@OrganizationChartTypeID", organizationChartTypeID.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@OrganizationChartTypeID", DBNull.Value));
                    }

                    if (organizationCodeID.HasValue)
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@OrganizationCodeID", organizationCodeID.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@OrganizationCodeID", DBNull.Value));
                    }

                    if (orgChartWorkflowStatusID == enumOrgWorkflowStatus.Undefined)
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@OrgChartWorkflowStatusID", DBNull.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@OrgChartWorkflowStatusID", (int)orgChartWorkflowStatusID));
                    }

                    if (regionID.HasValue)
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@RegionID", regionID.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@RegionID", DBNull.Value));
                    }

                    if (string.IsNullOrWhiteSpace(authorName))
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@AuthorName", DBNull.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@AuthorName", authorName.Trim()));
                    }

                    if (string.IsNullOrWhiteSpace(approverName))
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@ApprovedByName", DBNull.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@ApprovedByName", approverName.Trim()));
                    }

                    if (publishedYear.HasValue)
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@PublishedYear", publishedYear.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@PublishedYear", DBNull.Value));
                    }

                    if (seriesID.HasValue)
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@SeriesID", seriesID.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@SeriesID", DBNull.Value));
                    }

                    if (string.IsNullOrWhiteSpace(employeeName))
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@EmployeeName", DBNull.Value));
                    }
                    else
                    {
                        commandWrapper.Parameters.Add(new SqlParameter("@EmployeeName", employeeName.Trim()));
                    }

                    // get data set
                    DataSet ds = ExecuteDataSet(commandWrapper);

                    if (ds.Tables.Count > 0)
                    {
                        // Table 0: OrganizationChart records
                        if (ds.Tables[0] != null)
                        {
                            DataTable tableOC = ds.Tables[0];
                            OrganizationChartDataAdapter OCAdapter = new OrganizationChartDataAdapter();

                            foreach (DataRow dr in tableOC.Rows)
                            {
                                OrgChartSearchResult resultItem = getSearchResultObject(dr);
                                OrganizationChart    chart      = new OrganizationChart();
                                OCAdapter.Fill(dr, chart);
                                resultItem.ChartEntity = chart;  // OrganizationChartManager.Instance.BuildFromDataRow(dr);

                                searchResults.Add(resultItem);
                            }
                        }

                        // Table 1: OrganizationChartLog records
                        if (ds.Tables[1] != null)
                        {
                            DataTable tableOCL = ds.Tables[1];
                            OrganizationChartLogDataAdapter OCLAdapter = new OrganizationChartLogDataAdapter();

                            foreach (DataRow dr in tableOCL.Rows)
                            {
                                OrgChartSearchResult resultItem = getSearchResultObject(dr);
                                OrganizationChartLog chartLog   = new OrganizationChartLog();
                                OCLAdapter.Fill(dr, chartLog);
                                resultItem.ChartEntity = chartLog;   // OrganizationChartLogManager.Instance.BuildFromDataRow(dr);

                                searchResults.Add(resultItem);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    HandleException(ex);
                }
            }
            return(searchResults);
        }
Exemple #13
0
        protected void rgSearchResults_ItemDataBound(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)
            {
                try
                {
                    HideRefreshButton(e);

                    GridDataItem dataItem = e.Item as GridDataItem;

                    if (dataItem.ItemType == GridItemType.Item || dataItem.ItemType == GridItemType.AlternatingItem || dataItem.ItemType == GridItemType.SelectedItem)
                    {
                        OrgChartSearchResult searchResult = (OrgChartSearchResult)e.Item.DataItem;

                        Image imgORGCHARTCheckedOutStatus = dataItem.FindControl("imgORGCHARTCheckedOutStatus") as Image;
                        imgORGCHARTCheckedOutStatus.Visible = false;
                        string checkedoutdt = string.Empty;
                        string editedBy     = string.Empty;



                        #region [ Action menu/ Document Menu]

                        //Action Menu
                        RadMenu     menuAction            = dataItem.FindControl("rmOrgChartMenuAction") as RadMenu;
                        RadMenuItem viewMenuItem          = menuAction.FindItemByValue("View");
                        RadMenuItem viewPublishedMenuItem = menuAction.FindItemByValue("ViewPublished");
                        RadMenuItem editMenuItem          = menuAction.FindItemByValue("Edit");
                        RadMenuItem continueMenuItem      = menuAction.FindItemByValue("ContinueEdit");
                        RadMenuItem finishMenuItem        = menuAction.FindItemByValue("FinishEdit");
                        RadMenuItem deleteMenuItem        = menuAction.FindItemByValue("Delete");

                        //Document Menu
                        RadMenu     menuDocument         = dataItem.FindControl("rmDocument") as RadMenu;
                        RadMenuItem InProcessPDFMenuItem = menuDocument.FindItemByValue("1");
                        RadMenuItem PublishedPDFMenuItem = menuDocument.FindItemByValue("2");


                        if (searchResult.IsCheckedOut)
                        {
                            // At this point, we know this has to be an OrgChart because it is checked out
                            // But let's be safe

                            if (searchResult.ChartEntity is OrganizationChart)
                            {
                                OrganizationChart chart = searchResult.ChartEntity as OrganizationChart;

                                if (chart != null)
                                {
                                    if (chart.CheckedOutBy.ActionDate.HasValue)
                                    {
                                        checkedoutdt = string.Format(chart.CheckedOutBy.ActionDate.Value.ToString(), "d");

                                        editedBy = String.Format("Being edited by {0} since {1}", chart.CheckedOutBy.FullName, checkedoutdt);

                                        imgORGCHARTCheckedOutStatus.Visible = true;
                                    }

                                    if (chart.CheckedOutBy.UserID == base.CurrentUserID)
                                    {
                                        imgORGCHARTCheckedOutStatus.ImageUrl = Page.ResolveUrl(String.Format("~/App_Themes/{0}/Images/Icons/icon_unlock.gif", Page.Theme));
                                    }
                                    else
                                    {
                                        imgORGCHARTCheckedOutStatus.ImageUrl = Page.ResolveUrl(String.Format("~/App_Themes/{0}/Images/Icons/icon_lock.gif", Page.Theme));
                                        imgORGCHARTCheckedOutStatus.ToolTip  = editedBy;
                                        dataItem.ToolTip = editedBy;
                                    }
                                }
                            }
                        }

                        //Action Menu visibility
                        deleteMenuItem.Visible   = searchResult.CanDelete;
                        editMenuItem.Visible     = searchResult.CanEdit;
                        finishMenuItem.Visible   = searchResult.CanFinishEdit;
                        continueMenuItem.Visible = searchResult.CanContinueEdit;

                        //Action/Document Menu visibility and data field setting
                        if (searchResult.ChartEntity is OrganizationChartLog)
                        {
                            OrganizationChartLog orgchartlog = (OrganizationChartLog)searchResult.ChartEntity;

                            menuAction.DataFieldID = orgchartlog.OrganizationChartLogID.ToString();
                            menuAction.Attributes["OrganizationChartLogID"] = orgchartlog.OrganizationChartLogID.ToString();

                            viewPublishedMenuItem.Visible = true;
                            viewMenuItem.Visible          = false;


                            menuDocument.DataFieldID = orgchartlog.OrganizationChartLogID.ToString();
                            menuDocument.Attributes["OrganizationChartLogID"] = orgchartlog.OrganizationChartLogID.ToString();
                            menuDocument.Attributes["OrganizationChartID"]    = string.Empty;
                            //this is for Export to excel
                            menuDocument.Attributes["OrgChartID"] = orgchartlog.OrganizationChartID.ToString();

                            PublishedPDFMenuItem.Visible = true;
                            InProcessPDFMenuItem.Visible = false;
                        }
                        else
                        {
                            menuAction.DataFieldID = searchResult.ChartEntity.OrganizationChartID.ToString();
                            menuAction.Attributes["OrganizationChartID"] = searchResult.ChartEntity.OrganizationChartID.ToString();

                            viewPublishedMenuItem.Visible = false;

                            if ((searchResult.ChartEntity is OrganizationChart) && (!searchResult.CanContinueEdit))
                            {
                                viewMenuItem.Visible = true;
                            }
                            else
                            {
                                viewMenuItem.Visible = false;
                            }


                            menuDocument.DataFieldID = searchResult.ChartEntity.OrganizationChartID.ToString();
                            menuDocument.Attributes["OrganizationChartID"]    = searchResult.ChartEntity.OrganizationChartID.ToString();
                            menuDocument.Attributes["OrganizationChartLogID"] = string.Empty;
                            //this is for Export to excel
                            menuDocument.Attributes["OrgChartID"] = searchResult.ChartEntity.OrganizationChartID.ToString();
                            InProcessPDFMenuItem.Visible          = true;
                            PublishedPDFMenuItem.Visible          = false;
                        }
                        #endregion
                    }
                }
                catch (Exception ex)
                {
                    base.HandleException(ex);
                }
            }
        }
        private void loadData(OrganizationChartLog chartLog)
        {
            this.panelHeaderLinks.Visible = this._showViewPublishedChartLink;

            //  this.literalChartOrganizationLogID.Text = chartLog.OrganizationChartLogID.ToString();
            this.literalOrganizationChartID.Text = chartLog.OrganizationChartID.ToString();
            this.literalChartType.Text           = chartLog.OrganizationChartTypeName;
            this.literalOrganizationName.Text    = string.Format("{0} ({1})", chartLog.OrganizationName, chartLog.OrgCode.OrganizationCodeValue);

            string mailAddressLineItem = GetLocalResourceObject("NullMailAddressLineItem").ToString();

            if (chartLog.OrgCode != null && (!string.IsNullOrWhiteSpace(chartLog.OrgCode.MailCity) || !string.IsNullOrWhiteSpace(chartLog.OrgCode.MailStateAbbr)))
            {
                if (string.IsNullOrWhiteSpace(chartLog.OrgCode.MailCity))
                {
                    // MailCity is null -- use State
                    mailAddressLineItem = chartLog.OrgCode.MailStateAbbr;
                }
                else if (string.IsNullOrWhiteSpace(chartLog.OrgCode.MailStateAbbr))
                {
                    // MailState is null -- use city
                    mailAddressLineItem = chartLog.OrgCode.MailCity;
                }
                else
                {
                    // use both
                    mailAddressLineItem = string.Format("{0}, {1}", chartLog.OrgCode.MailCity, chartLog.OrgCode.MailStateAbbr);
                }
            }

            this.literalOrgCodeLocation.Text = mailAddressLineItem;

            string topPositionLineItem = string.Empty;

            if (chartLog.StartPointWFPPositionID == -1)
            {
                topPositionLineItem = GetLocalResourceObject("NoTopLevelPositionMessage").ToString();
            }
            else
            {
                topPositionLineItem = chartLog.StartPointPositionLineItemFullName;
            }

            this.literalTopLevelPosition.Text = topPositionLineItem;
            this.literalWorkflowStatus.Text   = chartLog.OrgWorkflowStatusName;

            if (chartLog.CreatedBy != null)
            {
                bool hasCreatedByName = !string.IsNullOrWhiteSpace(chartLog.CreatedBy.FullName);
                this.rowCreatedOn.Visible = chartLog.CreatedBy.ActionDate.HasValue;
                this.rowCreatedBy.Visible = hasCreatedByName;

                if (chartLog.CreatedBy.ActionDate.HasValue)
                {
                    this.literalCreatedDate.Text = chartLog.CreatedBy.ActionDate.Value.ToString();
                }

                if (hasCreatedByName)
                {
                    this.literalCreatedByFullName.Text = chartLog.CreatedBy.FullName;
                }
            }

            if (chartLog.UpdatedBy != null)
            {
                bool hasLastUpdatedName = !string.IsNullOrWhiteSpace(chartLog.UpdatedBy.FullName);
                this.rowUpdatedOn.Visible = chartLog.UpdatedBy.ActionDate.HasValue;
                this.rowUpdatedBy.Visible = hasLastUpdatedName;

                if (chartLog.UpdatedBy.ActionDate.HasValue)
                {
                    this.literalLastUpdated.Text = chartLog.UpdatedBy.ActionDate.Value.ToString();
                }

                if (hasLastUpdatedName)
                {
                    this.literalLastUpdatedBy.Text = chartLog.UpdatedBy.FullName;
                }
            }
        }