private void LoadProgramsFiltered(int ownerId)
    {
        ProjectSelectorFilter projectSelectorFilter = new ProjectSelectorFilter(SessionManager.GetSessionValueNoRedirect(this, SessionStrings.CONNECTION_MANAGER));

        projectSelectorFilter.IdAssociate = CurrentUser.IdAssociate;
        projectSelectorFilter.ShowOnly    = cmbShowOnly.SelectedValue;
        projectSelectorFilter.OrderBy     = rbOrderProjects.SelectedValue;
        //Fill the project combo box with the values corresponding to the selected owner
        projectSelectorFilter.IdOwner = ownerId;

        DataSet programsDS = projectSelectorFilter.SelectProcedure("SelectPrograms");

        DSUtils.AddEmptyRecord(programsDS.Tables[0]);
        cmbPG.DataSource     = programsDS;
        cmbPG.DataMember     = programsDS.Tables[0].ToString();
        cmbPG.DataValueField = "ProgramId";
        cmbPG.DataTextField  = "Name";
        cmbPG.DataBind();

        //reset the function
        lblFunction.Text = String.Empty;
        //reset additional labels
        lblActiveMembers.Text          = String.Empty;
        lblTimingIntercoPercent.Text   = String.Empty;
        lblInitialBudgetValidated.Text = String.Empty;
    }
        private void SetCurrentProject(int projectId)
        {
            CurrentProject        prj       = new CurrentProject(null);
            ProjectSelectorFilter prjFilter = new ProjectSelectorFilter(ApplicationConstants.INT_NULL_VALUE, projectId,
                                                                        SessionManager.GetSessionValueRedirect((IndBasePage)this.Page, SessionStrings.CONNECTION_MANAGER));

            prj.Id = prjFilter.IdProject;

            //NOTE: in some conditions below line gives an error
            //because the object is looked for on a different session
            prj.IdAssociate = SessionManager.GetCurrentUser((IndBasePage)this.Page).IdAssociate;
            prj.IdProgram   = prjFilter.IdProgram;
            prj.IdOwner     = prjFilter.IdOwner;
            prj.Name        = prjFilter.ProjectName;

            SessionManager.SetSessionValue((IndBasePage)this.Page, SessionStrings.CURRENT_PROJECT, prj);
        }
    /// <summary>
    /// Event that is fired when the Programs Combo Box index changes
    /// </summary>
    /// <param name="o"></param>
    /// <param name="e"></param>
    protected void cmbPG_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        try
        {
            //select the owner of the selected program
            ProjectSelectorFilter projectSelectorFilter = null;
            if (!cmbPG.IsEmptyValueSelected())
            {
                DataRow row = cmbPG.GetComboSelection();
                projectSelectorFilter = new ProjectSelectorFilter(int.Parse(cmbPG.SelectedValue), ApplicationConstants.INT_NULL_VALUE, SessionManager.GetConnectionManager(this));

                //re-load the owners
                LoadOwners();

                //re-select the active element
                cmbOW.SelectedValue = projectSelectorFilter.IdOwner.ToString();
            }
            else
            {
                cmbOW.ClearSelection();
                LoadOwners();
            }

            //re-load the programs with the owner selected so that only the program under the current owner are shown
            LoadPrograms();

            if (projectSelectorFilter != null) //if there is one value selected we need to restore selection
            {
                cmbPG.SelectedValue = projectSelectorFilter.IdProgram.ToString();
            }

            //Fill the project combo box with the values corresponding to the Program selected
            LoadProjects();
        }
        catch (IndException ex)
        {
            ShowError(ex);
            return;
        }
        catch (Exception ex)
        {
            ShowError(new IndException(ex));
            return;
        }
    }
        private void LoadProgramsFiltered(int ownerId)
        {
            ProjectSelectorFilter projectSelectorFilter = new ProjectSelectorFilter(SessionManager.GetSessionValueNoRedirect(this, SessionStrings.CONNECTION_MANAGER));

            projectSelectorFilter.IdOwner     = ownerId;
            projectSelectorFilter.IdAssociate = currentUser.IdAssociate;
            projectSelectorFilter.ShowOnly    = string.Empty; //it is not used
            projectSelectorFilter.IdProgram   = -1;           //all program
            DataSet programsDS = projectSelectorFilter.SelectProcedure("SelectPrograms");

            DSUtils.AddEmptyRecord(programsDS.Tables[0], "ProgramId");

            cmbProgram.DataSource     = programsDS;
            cmbProgram.DataMember     = programsDS.Tables[0].ToString();
            cmbProgram.DataValueField = "ProgramId";
            cmbProgram.DataTextField  = "Name";
            cmbProgram.DataBind();
        }
        protected void cmbProject_SelectedIndexChanged(object o, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
        {
            try
            {
                ProjectSelectorFilter projectSelectorFilter = null;

                if (cmbProject.IsEmptyValueSelected())
                {
                    cmbProgram.ClearSelection();
                    LoadPrograms();
                }
                else
                {
                    DataRow row = cmbProject.GetComboSelection();

                    //then the owner and the program
                    projectSelectorFilter = new ProjectSelectorFilter(ApplicationConstants.INT_NULL_VALUE, int.Parse(cmbProject.SelectedValue), SessionManager.GetSessionValueNoRedirect(this, SessionStrings.CONNECTION_MANAGER));


                    //re-load the programs with the programs corresponding to the owner selected
                    LoadProgramsFiltered(projectSelectorFilter.IdOwner);

                    //restore selection
                    cmbProgram.SelectedValue = projectSelectorFilter.IdProgram.ToString();
                }

                //re-load the project with the projects corresponding to the program selected
                LoadProjects();
                if (projectSelectorFilter != null) //restore selection
                {
                    cmbProject.SelectedValue = projectSelectorFilter.IdProject.ToString();
                }
            }
            catch (IndException ex)
            {
                ShowError(ex);
                return;
            }
            catch (Exception ex)
            {
                ShowError(new IndException(ex));
                return;
            }
        }
    private void LoadOwnersFiltered(int ownerId)
    {
        ProjectSelectorFilter projectSelectorFilter = new ProjectSelectorFilter(SessionManager.GetSessionValueNoRedirect(this, SessionStrings.CONNECTION_MANAGER));

        projectSelectorFilter.IdAssociate = CurrentUser.IdAssociate;
        projectSelectorFilter.ShowOnly    = cmbShowOnly.SelectedValue;
        projectSelectorFilter.OrderBy     = rbOrderProjects.SelectedValue;
        //Fill the project combo box with the values corresponding to the selected owner
        projectSelectorFilter.IdOwner = ownerId;

        DataSet ownerDS = projectSelectorFilter.SelectProcedure("SelectOwners");

        DSUtils.AddEmptyRecord(ownerDS.Tables[0]);
        cmbOW.DataSource     = ownerDS;
        cmbOW.DataMember     = ownerDS.Tables[0].ToString();
        cmbOW.DataValueField = "OwnerId";
        cmbOW.DataTextField  = "Name";
        cmbOW.DataBind();
    }
    public void AfterSave(object sender, ImageClickEventArgs e)
    {
        try
        {
            //if we do not have anty error from the save.
            Control pnlErrors = this.ParentPage.FindControl("pnlErrors");
            if (pnlErrors != null && pnlErrors.Controls.Count == 0)
            {
                CurrentUser currentUser = SessionManager.GetCurrentUser(this.Page) as CurrentUser;
                //if the user role changed is exactly the one of the current user
                if (((ProjectCoreTeamMember)ProjectCoreTeamMemberEditControl.Entity).IdAssociate == currentUser.IdAssociate)
                {
                    CurrentUser updatedUser = new CurrentUser(currentUser.InergyLogin, SessionManager.GetConnectionManager(this.Page));
                    updatedUser.IdCountry = currentUser.IdCountry;

                    updatedUser.LoadUserDetails();
                    SessionManager.SetSessionValue(this.Page, SessionStrings.CURRENT_USER, updatedUser);

                    CurrentProject        currentProject = SessionManager.GetSessionValueRedirect(this.Page, SessionStrings.CURRENT_PROJECT) as CurrentProject;
                    ProjectSelectorFilter prjFilter      = new ProjectSelectorFilter(ApplicationConstants.INT_NULL_VALUE, currentProject.Id, currentProject.IdAssociate,
                                                                                     SessionManager.GetSessionValueRedirect((IndBasePage)this.Page, SessionStrings.CONNECTION_MANAGER));

                    currentProject.ProjectFunctionWPCodeSuffix = prjFilter.ProjectFunctionWPCodeSuffix;
                    SessionManager.SetSessionValue(this.Page, SessionStrings.CURRENT_PROJECT, currentProject);
                }
            }
        }
        catch (IndException ex)
        {
            ReportControlError(ex);
            return;
        }
        catch (Exception ex)
        {
            ReportControlError(new IndException(ex));
            return;
        }
    }
    private void LoadProjectsFiltered(int programId)
    {
        ProjectSelectorFilter projectSelectorFilter = new ProjectSelectorFilter(SessionManager.GetSessionValueNoRedirect(this, SessionStrings.CONNECTION_MANAGER));

        if (!cmbOW.IsEmptyValueSelected())
        {
            projectSelectorFilter.IdOwner = Int32.Parse(cmbOW.SelectedValue);
        }

        projectSelectorFilter.IdAssociate = CurrentUser.IdAssociate;
        projectSelectorFilter.ShowOnly    = cmbShowOnly.SelectedValue;
        projectSelectorFilter.OrderBy     = rbOrderProjects.SelectedValue;
        projectSelectorFilter.IdProgram   = programId;

        DataSet projectDS = projectSelectorFilter.SelectProcedure("SelectProjects");;

        DSUtils.AddEmptyRecord(projectDS.Tables[0]);
        cmbPJ.DataSource     = projectDS;
        cmbPJ.DataMember     = projectDS.Tables[0].ToString();
        cmbPJ.DataValueField = "ProjectId";
        cmbPJ.DataTextField  = "ProjectName";
        cmbPJ.DataBind();
    }
        private void LoadProjectsFiltered(int programId)
        {
            ProjectSelectorFilter projectSelectorFilter = new ProjectSelectorFilter(SessionManager.GetSessionValueNoRedirect(this, SessionStrings.CONNECTION_MANAGER));
            CurrentUser           currentUser           = (CurrentUser)SessionManager.GetSessionValueRedirect(this, SessionStrings.CURRENT_USER);

            if (!cmbProgram.IsEmptyValueSelected())
            {
                projectSelectorFilter.IdProgram = Int32.Parse(cmbProgram.SelectedValue);
            }
            else
            {
                projectSelectorFilter.IdProgram = -1;
            }
            projectSelectorFilter.IdAssociate = currentUser.IdAssociate;

            DataSet projectDS = projectSelectorFilter.SelectProcedure("SelectProjects");;

            DSUtils.AddEmptyRecord(projectDS.Tables[0], "ProjectId");
            cmbProject.DataSource     = projectDS;
            cmbProject.DataMember     = projectDS.Tables[0].ToString();
            cmbProject.DataValueField = "ProjectId";
            cmbProject.DataTextField  = "ProjectName";
            cmbProject.DataBind();
        }
    /// <summary>
    /// Event that is fired when the Projects Combo Box index changes
    /// </summary>
    /// <param name="o"></param>
    /// <param name="e"></param>
    protected void cmbPJ_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        try
        {
            ProjectSelectorFilter projectSelectorFilter = null;

            if (cmbPJ.IsEmptyValueSelected())
            {
                cmbOW.ClearSelection();
                LoadOwners();
                cmbPG.ClearSelection();
                LoadPrograms();

                lblFunction.Text               = String.Empty;
                lblActiveMembers.Text          = String.Empty;
                lblTimingIntercoPercent.Text   = String.Empty;
                lblInitialBudgetValidated.Text = String.Empty;
            }
            else
            {
                DataRow row = cmbPJ.GetComboSelection();

                //then the owner and the program
                projectSelectorFilter = new ProjectSelectorFilter(ApplicationConstants.INT_NULL_VALUE, int.Parse(cmbPJ.SelectedValue), SessionManager.GetSessionValueNoRedirect(this, SessionStrings.CONNECTION_MANAGER));

                //re-load owners
                LoadOwnersFiltered(projectSelectorFilter.IdOwner);

                //restore selection
                cmbOW.SelectedValue = projectSelectorFilter.IdOwner.ToString();


                //re-load the programs with the programs corresponding to the owner selected
                LoadProgramsFiltered(projectSelectorFilter.IdOwner);

                //restore selection
                cmbPG.SelectedValue = projectSelectorFilter.IdProgram.ToString();
            }

            //re-load the project with the projects corresponding to the program selected
            LoadProjects();
            if (projectSelectorFilter != null) //restore selection
            {
                cmbPJ.SelectedValue = projectSelectorFilter.IdProject.ToString();

                UpdateFunctionLabel();
                UpdateActiveMembersLabel();
                UpdateTimingIntercoPercentLabel();
                UpdateInitialBudgetValidatedLabel();
            }
        }
        catch (IndException ex)
        {
            ShowError(ex);
            return;
        }
        catch (Exception ex)
        {
            ShowError(new IndException(ex));
            return;
        }
    }