public static void BindBuckets(RadDropDownList dd_Projects, RadDropDownList dd_Buckets, String BucketID, bool SelectCurrentlyViewed, bool ShowOnlyInactiveBuckets = false, bool OnlyCountContactsWithEmail = false)
    {
        if (dd_Projects.Items.Count > 0 && dd_Projects.SelectedItem != null)
        {
            String OnlyWithEmailExpr = String.Empty;
            if (OnlyCountContactsWithEmail)
            {
                OnlyWithEmailExpr = " AND (Email IS NOT NULL OR PersonalEmail IS NOT NULL)";
            }

            String SumLeadsExpr = "SUM(CASE WHEN l.Active=1" + OnlyWithEmailExpr + " THEN 1 ELSE 0 END)";
            if (ShowOnlyInactiveBuckets)
            {
                SumLeadsExpr = "SUM(CASE WHEN l.Active=0" + OnlyWithEmailExpr + " THEN 1 ELSE 0 END)";
            }

            String qry = "SELECT p.ProjectID, CONCAT(Name,' (',IFNULL(" + SumLeadsExpr + ",0),CASE WHEN IFNULL(" + SumLeadsExpr + ",0)=1 THEN ' lead)' ELSE ' leads)' END) as 'Name' " +
                         "FROM dbl_project p LEFT JOIN dbl_lead l ON p.ProjectID = l.ProjectID LEFT JOIN db_contact c ON c.ContactID = l.ContactID " +
                         "WHERE p.Active=@active AND p.IsBucket=1 AND ParentProjectID=@project_id GROUP BY p.ProjectID ORDER BY Name";
            DataTable dt_buckets = SQL.SelectDataTable(qry,
                                                       new String[] { "@project_id", "@active" },
                                                       new Object[] { dd_Projects.SelectedItem.Value, !ShowOnlyInactiveBuckets });

            dd_Buckets.DataSource     = dt_buckets;
            dd_Buckets.DataTextField  = "Name";
            dd_Buckets.DataValueField = "ProjectID";
            dd_Buckets.DataBind();

            if (SelectCurrentlyViewed)
            {
                LeadsUtil.SelectCurrentlyViewedProject(dd_Buckets, BucketID);
            }
        }
    }
    public static void BindProjects(RadDropDownList dd_Projects, RadDropDownList dd_Buckets, String ProjectID, String BucketID, bool SelectCurrentlyViewedParent, bool SelectCurrentlyViewedChild = true, bool ExcludeThisProject = false, bool OnlyCountContactsWithEmail = false)
    {
        String[] pn = new String[] { "@UserID", "@ThisProjectID" };
        Object[] pv = new Object[] { Util.GetUserId(), ProjectID };

        String exclude_expr = String.Empty;

        if (ExcludeThisProject)
        {
            exclude_expr = " AND dbl_project.ProjectID!=@ThisProjectID";
        }

        // Bind projects and buckets for moving leads
        String qry =
            "SELECT p.ProjectID, CONCAT(Name,CASE WHEN s.UserID IS NOT NULL THEN ' [Shared]' ELSE '' END) as Name " +
            "FROM dbl_project p " +
            "LEFT JOIN dbl_project_share s ON p.ProjectID = s.ProjectID " +
            "LEFT JOIN dbl_lead l ON p.ProjectID = l.ProjectID " +
            "WHERE p.Active=1 AND p.IsBucket=0 AND (p.UserID=@UserId OR s.UserID=@UserId)" + exclude_expr + " " +
            "GROUP BY p.ProjectID ORDER BY Name";
        DataTable dt_projects = SQL.SelectDataTable(qry, pn, pv);

        dd_Projects.DataSource     = dt_projects;
        dd_Projects.DataTextField  = "Name";
        dd_Projects.DataValueField = "ProjectID";
        dd_Projects.DataBind();

        if (SelectCurrentlyViewedParent)
        {
            LeadsUtil.SelectCurrentlyViewedProject(dd_Projects, ProjectID);
        }

        if (dd_Buckets != null)
        {
            BindBuckets(dd_Projects, dd_Buckets, BucketID, SelectCurrentlyViewedChild, false, OnlyCountContactsWithEmail);
        }
    }