private void LoadGrid()
        {
            DataSet ds            = null;
            int     IdAssociateLM = GetIdAssociateLM();

            ProjectCoreTeamMember teamMember = new ProjectCoreTeamMember(SessionManager.GetSessionValueNoRedirect(this, SessionStrings.CONNECTION_MANAGER));

            teamMember.IdProject   = currentProject.Id;
            teamMember.IdAssociate = ApplicationConstants.INT_NULL_VALUE;
            ds = teamMember.GetAll(true);

            if (ds != null)
            {
                //remove inactive associates and also the member that leaves the project
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    if (!(bool)dr["OldIsActive"] || (int)dr["IdAssociate"] == IdAssociateLM)
                    {
                        dr.Delete();
                    }
                }
                ds.AcceptChanges();

                if (ds.Tables[0].Rows.Count > 0)
                {
                    grdCopyBudget.DataSource = ds.Tables[0];
                    grdCopyBudget.DataBind();
                }
                else
                {
                    grdCopyBudget.Visible = false;
                }
            }
        }
    private void SetCopyTeamButtonProperties()
    {
        try
        {
            CurrentProject currentProject    = SessionManager.GetCurrentProject(this.Page) as CurrentProject;
            object         connectionManager = SessionManager.GetConnectionManager(this.Page);
            if (connectionManager != null)
            {
                ProjectCoreTeamMember coreTeamMember = new ProjectCoreTeamMember(connectionManager);
                coreTeamMember.IdProject   = currentProject.Id;
                coreTeamMember.IdAssociate = currentProject.IdAssociate;

                btnOpenPopupCopyCoreTeam.Visible       = (coreTeamMember.IsAssociatePMOnProject());
                btnOpenPopupCopyCoreTeam.OnClientClick = "ShowPopUpWithReload('" +
                                                         ResolveUrl("~/UserControls/Budget/ProjectCopyCoreTeam/CopyCoreTeam.aspx") + "', 0, 700, '" +
                                                         ResolveUrl("~/Catalogs.aspx?Code=CRT") + "', '" +
                                                         ResolveUrl("~/Default.aspx?SessionExpired=1") + "', 'true', '" + this.Page.Form.ClientID + "');return false;";
            }
        }
        catch (IndException ex)
        {
            ReportControlError(ex);
            return;
        }
        catch (Exception ex)
        {
            ReportControlError(new IndException(ex));
            return;
        }
    }
    private void BeforePCTSave()
    {
        bool oldIsActive = ((ProjectCoreTeamMember)ProjectCoreTeamMemberEditControl.Entity).IsActive;
        bool newIsActive = chkActive.Checked;

        //If the core team member was not made inactive from active, do nothing
        if (!oldIsActive || newIsActive)
        {
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "BeforeSaveScript", Page.ClientScript.GetPostBackEventReference(btnDoPostBack, "BeforeSaveMessage"), true);
            return;
        }

        object connectionManager = SessionManager.GetConnectionManager(this.Page);

        if (connectionManager != null)
        {
            ProjectCoreTeamMember coreTeamMember = (ProjectCoreTeamMember)ProjectCoreTeamMemberEditControl.Entity;
            DataSet dsOpenBudgets = coreTeamMember.GetOpenBudgets();
            if (dsOpenBudgets.Tables[0].Rows.Count == 0)
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "BeforeSaveScript", Page.ClientScript.GetPostBackEventReference(btnDoPostBack, "BeforeSaveMessage"), true);
                return;
            }

            foreach (DataRow row in dsOpenBudgets.Tables[0].Rows)
            {
                if (row["BudgetState"].ToString() == ApplicationConstants.BUDGET_STATE_WAITING_APPROVAL ||
                    row["BudgetState"].ToString() == ApplicationConstants.BUDGET_STATE_APPROVED)
                {
                    Page.ClientScript.RegisterStartupScript(Page.GetType(), "BeforeSaveScript", "if (confirm('You are making inactive a Core Team Member which has at least one budget in Waiting for Approval or Approved state. The budget information will be lost. Are you sure you want to continue?')) { " + Page.ClientScript.GetPostBackEventReference(btnDoPostBack, "BeforeSaveMessage") + " }", true);
                    return;
                }
            }

            Page.ClientScript.RegisterStartupScript(Page.GetType(), "BeforeSaveScript", Page.ClientScript.GetPostBackEventReference(btnDoPostBack, "BeforeSaveMessage"), true);
        }
    }
    private void BeforePCTSave()
    {
        CurrentUser currentUser = (CurrentUser)SessionManager.GetSessionValueNoRedirect(ParentPage, SessionStrings.CURRENT_USER);

        if (currentUser.UserRole.Id == ApplicationConstants.ROLE_BUSINESS_ADMINISTATOR || currentUser.UserRole.Id == ApplicationConstants.ROLE_KEY_USER)
        {
            ProjectCoreTeamMember member = (ProjectCoreTeamMember)ProjectCoreTeamMemberEditControl.Entity;
            bool oldIsImpersonated       = member.IsImpersonated;
            bool newIsImpersonated       = chkImpersonate.Checked;
            member.IsImpersonated = newIsImpersonated;
            if (member.IsImpersonated)
            {
                currentUser.IdImpersonatedAssociate       = member.IdAssociate;
                currentUser.NameImpersonatedAssociate     = member.CoreTeamMemberName;
                currentUser.IdProjectFunctionImpersonated = member.IdFunction;
                currentUser.IdProjectImpersonated         = member.IdProject;
            }
            else
            {
                currentUser.IdImpersonatedAssociate       = 0;
                currentUser.NameImpersonatedAssociate     = string.Empty;
                currentUser.IdProjectImpersonated         = 0;
                currentUser.IdProjectFunctionImpersonated = 0;
            }
        }

        bool oldIsActive = ((ProjectCoreTeamMember)ProjectCoreTeamMemberEditControl.Entity).IsActive;
        bool newIsActive = chkActive.Checked;

        //If the core team member was not made inactive from active, do nothing
        if (!oldIsActive || newIsActive)
        {
            Page.ClientScript.RegisterStartupScript(Page.GetType(), "BeforeSaveScript", Page.ClientScript.GetPostBackEventReference(btnDoPostBack, "BeforeSaveMessage"), true);
            return;
        }

        object connectionManager = SessionManager.GetConnectionManager(this.Page);

        if (connectionManager != null)
        {
            ProjectCoreTeamMember coreTeamMember = (ProjectCoreTeamMember)ProjectCoreTeamMemberEditControl.Entity;
            DataSet dsOpenBudgets = coreTeamMember.GetOpenBudgets();
            if (dsOpenBudgets.Tables[0].Rows.Count == 0)
            {
                Page.ClientScript.RegisterStartupScript(Page.GetType(), "BeforeSaveScript", Page.ClientScript.GetPostBackEventReference(btnDoPostBack, "BeforeSaveMessage"), true);
                return;
            }

            foreach (DataRow row in dsOpenBudgets.Tables[0].Rows)
            {
                if (row["BudgetState"].ToString() == ApplicationConstants.BUDGET_STATE_WAITING_APPROVAL ||
                    row["BudgetState"].ToString() == ApplicationConstants.BUDGET_STATE_APPROVED)
                {
                    Page.ClientScript.RegisterStartupScript(Page.GetType(), "BeforeSaveScript", "if (confirm('You are making inactive a Core Team Member which has at least one budget in Waiting for Approval or Approved state. The budget information will be lost. Are you sure you want to continue?')) { " + Page.ClientScript.GetPostBackEventReference(btnDoPostBack, "BeforeSaveMessage") + " }", true);
                    return;
                }
            }

            Page.ClientScript.RegisterStartupScript(Page.GetType(), "BeforeSaveScript", Page.ClientScript.GetPostBackEventReference(btnDoPostBack, "BeforeSaveMessage"), true);
        }
    }