private void DisplayMailingPlans(int agentId, ScheduleService.PlanType planType)
    {
        try
        {
            ScheduleService.ScheduleService      scheduleService = serviceLoader.GetSchedule();
            IList <ScheduleService.ScheduleInfo> schedules       =
                scheduleService.GetMailingPlans(agentId, planType);

            if (schedules.Count == 0)
            {
                ActivePlansDataGrid.AllowPaging = false;
            }
            else
            {
                if (schedules.Count > ActivePlansDataGrid.PageSize)
                {
                    ActivePlansDataGrid.AllowPaging = true;
                }
                else
                {
                    ActivePlansDataGrid.AllowPaging = false;
                }

                ActivePlansDataGrid.CurrentPageIndex =
                    Convert.ToInt32(PageNumberHiddenField.Value);
            }

            ActivePlansDataGrid.DataSource = schedules;
            ActivePlansDataGrid.DataBind();

            if (schedules.Count == 0)
            {
                NoRecordsTable.Visible = true;
            }
            else
            {
                NoRecordsTable.Visible = false;
            }
        }
        catch (Exception ex)
        {
            ErrorMessageLabel.Text    = "Unable to process the request. Please contact your administrator.";
            ErrorMessageLabel.Visible = true;

            log.Error("Unknown Error", ex);
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        ErrorMessageLabel.Visible = false;

        ScheduleService.PlanType planType = ScheduleService.PlanType.Active;
        int pageNumber = 0;
        int agentId    = 0;

        // Get the logged in account information.
        RegistrationService.LoginInfo loginInfo =
            (RegistrationService.LoginInfo)Session["loginInfo"];

        if (loginInfo.Role == RegistrationService.UserRole.Agent)
        {
            agentId = loginInfo.UserId;
        }

        if (!IsPostBack)
        {
            // Get the query string values.
            NameValueCollection coll = Request.QueryString;

            if (coll.Get("ptype") != "" && coll.Get("ptype") != null)
            {
                planType = (ScheduleService.PlanType)Convert.ToInt32(coll.Get("ptype"));
            }

            if (coll.Get("pg") != "" && coll.Get("pg") != null)
            {
                pageNumber = Convert.ToInt32(coll.Get("pg"));
            }

            if (coll.Get("aId") != "" && coll.Get("aId") != null)
            {
                agentId = Convert.ToInt32(coll.Get("aId"));
            }

            if (loginInfo.Role != RegistrationService.UserRole.Agent)
            {
                try
                {
                    AgentSelectionPanel.Visible = true;

                    // Get the list of agents and display.
                    CommonService.CommonService commonService = serviceLoader.GetCommon();

                    AgentNameDropDownList.DataSource     = commonService.GetAgentsList();
                    AgentNameDropDownList.DataValueField = "UserId";
                    AgentNameDropDownList.DataTextField  = "UserName";
                    AgentNameDropDownList.DataBind();

                    AgentNameDropDownList.Items.Insert(0, new ListItem("<Select an Agent>", "-1"));

                    // Get the query string values and set the agent id.
                    if (agentId != 0)
                    {
                        AgentNameDropDownList.SelectedValue = agentId.ToString();

                        AgentNameHiddenField.Value = AgentNameDropDownList.SelectedItem.Text;
                    }
                }
                catch (Exception ex)
                {
                    ErrorMessageLabel.Text    = "Unable to process the request. Please contact your administrator.";
                    ErrorMessageLabel.Visible = true;

                    log.Error("Unknown Error", ex);
                }
            }
        }
        else
        {
            planType   = (ScheduleService.PlanType)Convert.ToInt32(PlanTypeHiddenField.Value);
            pageNumber = Convert.ToInt32(PageNumberHiddenField.Value);

            if (AgentSelectionPanel.Visible == true)
            {
                agentId = Convert.ToInt32(AgentNameDropDownList.SelectedValue);

                AgentNameHiddenField.Value = AgentNameDropDownList.SelectedItem.Text;
            }
            else
            {
                agentId = Convert.ToInt32(AgentIdHiddenField.Value);
            }
        }

        // Set the required query string values in hidden fields.
        PlanTypeHiddenField.Value   = Convert.ToInt32(planType).ToString();
        PageNumberHiddenField.Value = pageNumber.ToString();
        AgentIdHiddenField.Value    = agentId.ToString();

        // Set the screen elements based on the type of plans that are displayed.
        string queryString = "?aId=" + agentId.ToString() +
                             "&ptype=" + (planType == ScheduleService.PlanType.Active ? Convert.ToInt32(ScheduleService.PlanType.Completed) : Convert.ToInt32(ScheduleService.PlanType.Active)) +
                             "&pg=0";

        if (planType == ScheduleService.PlanType.Active)
        {
            SetHyperLink(ActivePlansHyperLink, "");
            LegendTitleLabel.Text = "List of Active Mailing Plans";

            SetHyperLink(CompletedPlansHyperLink, "~/Members/ScheduleManagement.aspx" + queryString);
        }
        else
        {
            SetHyperLink(CompletedPlansHyperLink, "");
            LegendTitleLabel.Text = "List of Completed Mailing Plans";

            SetHyperLink(ActivePlansHyperLink, "~/Members/ScheduleManagement.aspx" + queryString);
        }

        // Load the agent specific schedule details.
        DisplayMailingPlans(agentId, planType);
    }