Пример #1
0
        protected void btnSearchVentures_Click(object sender, EventArgs e)
        {
            SelectedSkillsList = SelectSkills();
            Debug.WriteLine("Entering btnSearchVentures");
            List <GvSearchObj> list = Session["SelectedSkillsList"] as List <GvSearchObj>;

            lblSearchError.Text = " ";
            List <ExpertSearchObj> expertVentureNameSearch = new List <ExpertSearchObj>(); //all ventures searched by their names
            List <ExpertSearchObj> expertVentureDescSearch = new List <ExpertSearchObj>(); //all ventures searched by their descriptions
            List <ExpertSearchObj> expertSkillSearch       = new List <ExpertSearchObj>(); //skills
            List <ExpertSearchObj> distinctVentureIds      = new List <ExpertSearchObj>(); //distinct ventures with all their skills
            DataSet dsExpertSkillSearchResults             = new DataSet("ExpertSkillSearchResults");

            lblSearchError.Text = " ";
            int    x       = 0;
            string txtTemp = txtPrefSearchVentureDesc.Text.Replace(" ", String.Empty);

            //clear both repeaters
            rpVentureSearchResults.DataSource = null;
            rpExpertSearchResults.DataSource  = null;
            rpVentureSearchResults.DataBind();
            rpExpertSearchResults.DataBind();

            if (list == null && string.IsNullOrWhiteSpace(txtPrefSearchVentureDesc.Text))
            {//no, no
                lblSearchError.Text = "You must select some skills, enter a venture name, and/or enter a venture description to search for ventures.";
            }
            else if (!string.IsNullOrWhiteSpace(txtTemp) && Regex.IsMatch(txtTemp, "^[a-zA-Z]+$") == false)
            {
                lblSearchError.Text = "Illegal characters used. Please only use text in Search Ventures by description.";
            }
            else if (list != null && string.IsNullOrWhiteSpace(txtPrefSearchVentureDesc.Text))
            {//yes, no
             //search only by skills

                foreach (GvSearchObj gvObj in SelectedSkillsList)                //get data from search parameter selectedSkills
                {
                    DataSet results = DbMethods.SearchVentures(gvObj.SkillName); //get search result of all experts that match the searched skillName
                    if (results.Tables.Count == 0)
                    {
                        break;
                    }
                    else
                    {
                        DataTable resultTable = results.Tables[0].Copy();
                        resultTable.TableName = "Table  " + x;
                        resultTable.AcceptChanges();
                        dsExpertSkillSearchResults.Tables.Add(resultTable);//add search results of one skill to DataSet as DataTable
                        x++;
                    }
                }//END of the Search Portion of the CLick Event

                //put that data into a list; Add all tables into one table
                for (int z = 0; z < dsExpertSkillSearchResults.Tables.Count; z++)
                {
                    dsExpertSkillSearchResults.Tables[0].Merge(dsExpertSkillSearchResults.Tables[z]);
                }
                //add to Mega List from first table in ds, b/c that has all merged tables
                expertSkillSearch = Data.CreateListFromTable <ExpertSearchObj>(dsExpertSkillSearchResults.Tables[0]);

                distinctVentureIds = getVentureSkillDuplicatesAndData(expertSkillSearch);

                //The Comparison Portion of the CLick Event
                using (var gvSO = SelectedSkillsList.GetEnumerator())
                    using (var dtuid = distinctVentureIds.GetEnumerator())
                    {//start search
                        while (dtuid.MoveNext())
                        {
                            var dtuidItem = dtuid.Current;
                            while (gvSO.MoveNext())
                            {
                                var gvSoItem = gvSO.Current;

                                foreach (var k in dtuidItem.AllVentureSkills)
                                {
                                    if (k.ToString().Equals(gvSoItem.SkillName, StringComparison.OrdinalIgnoreCase))
                                    {
                                        dtuidItem.VentureRank = dtuidItem.VentureRank + 1;
                                    }
                                }
                            }
                        }
                    }//end search
            }//end else if
            else if (list == null && !string.IsNullOrWhiteSpace(txtPrefSearchVentureDesc.Text))
            {//no, yes
                if (!Regex.IsMatch(txtPrefSearchVentureDesc.Text, "^[a-zA-Z]", RegexOptions.IgnorePatternWhitespace))
                {
                    lblSearchError.Text = "invalid input: Please enter only letters when searching by Venture Description.";
                }
                else
                {
                    DataTable searchByVentureDescriptionResults = DbMethods.SearchVenturesBasedOnDesc(txtPrefSearchVentureDesc.Text).Tables[0];
                    if (searchByVentureDescriptionResults.Rows.Count == 0)
                    {
                        lblSearchError.Text = "Your search parameters didn't produce any results.";
                    }
                    else
                    {
                        distinctVentureIds = Data.CreateListFromTable <ExpertSearchObj>(searchByVentureDescriptionResults);

                        foreach (ExpertSearchObj ex in distinctVentureIds)
                        {
                            if (ex.Picture != null)
                            {
                                ex.image = d.ConvertToImage((byte[])ex.Picture);//returns string url
                            }
                            else
                            {//in case expert's profile pic is null
                                byte[]               imageBytes;
                                MemoryStream         ms  = new MemoryStream();
                                System.Drawing.Image img = System.Drawing.Image.FromFile("Images/TUOwls_logo.png");
                                img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                                imageBytes = ms.ToArray();
                                ex.image   = d.ConvertToImage(imageBytes);
                            }
                        }
                        //The Comparison Portion of the CLick Event
                        using (var dtuid = distinctVentureIds.GetEnumerator())
                        {//start search
                            while (dtuid.MoveNext())
                            {
                                var dtuidItem = dtuid.Current;
                                if (dtuidItem.VentureDesc.Contains(txtPrefSearchVentureDesc.Text))
                                {
                                    dtuidItem.VentureRank = dtuidItem.VentureRank + 1;
                                }
                            }
                        }//end search
                    }
                }
            }
            else if (list != null && !string.IsNullOrWhiteSpace(txtPrefSearchVentureDesc.Text))
            {                                                                    //yes, yes
                foreach (GvSearchObj gvObj in SelectedSkillsList)                //get data from search parameter selectedSkills
                {
                    DataSet results = DbMethods.SearchVentures(gvObj.SkillName); //get search result of all experts that match the searched skillName
                    if (results.Tables.Count == 0)
                    {
                        break;
                    }
                    else
                    {
                        DataTable resultTable = results.Tables[0].Copy();
                        resultTable.TableName = "Table  " + x;
                        resultTable.AcceptChanges();
                        dsExpertSkillSearchResults.Tables.Add(resultTable);//add search results of one skill to DataSet as DataTable
                        x++;
                    }
                }//END of the Search Portion of the CLick Event

                //put that data into a list; Add all tables into one table
                for (int z = 0; z < dsExpertSkillSearchResults.Tables.Count; z++)
                {
                    dsExpertSkillSearchResults.Tables[0].Merge(dsExpertSkillSearchResults.Tables[z]);
                }
                //add to Mega List from first table in ds, b/c that has all merged tables
                expertSkillSearch = Data.CreateListFromTable <ExpertSearchObj>(dsExpertSkillSearchResults.Tables[0]);

                distinctVentureIds = getVentureSkillDuplicatesAndData(expertSkillSearch);

                //The Comparison Portion of the CLick Event
                using (var gvSO = SelectedSkillsList.GetEnumerator())
                    using (var dtuid = distinctVentureIds.GetEnumerator())
                    {//start search
                        while (dtuid.MoveNext())
                        {
                            var dtuidItem = dtuid.Current;
                            while (gvSO.MoveNext())
                            {
                                var gvSoItem = gvSO.Current;

                                foreach (var k in dtuidItem.AllVentureSkills)
                                {
                                    if (k.ToString().Equals(gvSoItem.SkillName, StringComparison.OrdinalIgnoreCase))
                                    {
                                        dtuidItem.VentureRank = dtuidItem.VentureRank + 1;
                                    }
                                }
                            }
                        }
                    }//end search
            }

            if (distinctVentureIds.Count != 0)
            {
                List <ExpertSearchObj> SortedList = distinctVentureIds.OrderBy(o => o.VentureRank).ToList();
                this.rpVentureSearchResults.DataSource = SortedList;
                this.rpVentureSearchResults.DataBind();
            }

            ClearControls();
            txtPrefSearchVentureDesc.Text = string.Empty;
        } //end Expert Searches Ventures click event