//display the search results from the search term in the query string on statup protected void Page_Load(object sender, EventArgs e) { //get the search term form the querystring searchTerm = Request.QueryString["ST"]; //check if the search term is empty if (searchTerm == null || searchTerm == "") { JumbotronSearchBox.ForeColor = System.Drawing.Color.Red; JumbotronSearchBox.Text = "Enter A Search Term"; } else { //creat a counter to keep track of the current row and result count int productCount = 0; int serviceCount = 0; int stylistRowCount = 0; bookingCount = 0; try { //run the search function of the BLL to get the results and diplay them Tuple <List <SP_ProductSearchByTerm>, List <SP_SearchStylistsBySearchTerm> > results = handler.UniversalSearch(searchTerm); #region Products //check if there are product result or not if (results.Item1.Count != 0) { TableRow newRow = new TableRow(); TableHeaderCell newHeaderCell = new TableHeaderCell(); //create a loop to display each result foreach (SP_ProductSearchByTerm result in results.Item1) { //check if it is a service or product //service (Applecation / Service) if (result.ProductType == 'S' || result.ProductType == 'A') { //Service serviceCount++; //check if it the first service and create a table header if it is if (serviceCount == 1) { createServiceTableHeader(); } // create a new row in the results table and set the height newRow = new TableRow(); newRow.Height = 50; serviceSearchResults.Rows.Add(newRow); //fill the row with the data from the product results object TableCell newCell = new TableCell(); newCell.Text = "<a class='btn btn-default' href='/cheveux/services.aspx?ProductID=" + result.ProductID.ToString().Replace(" ", string.Empty) + "'>" + result.Name.ToString() + "</a>"; serviceSearchResults.Rows[serviceCount].Cells.Add(newCell); newCell = new TableCell(); newCell.Text = "<a class='btn btn-default' href='/cheveux/services.aspx?ProductID=" + result.ProductID.ToString().Replace(" ", string.Empty) + "'>" + result.ProductDescription.ToString() + "</a>"; serviceSearchResults.Rows[serviceCount].Cells.Add(newCell); newCell = new TableCell(); newCell.Text = "R " + result.Price; serviceSearchResults.Rows[serviceCount].Cells.Add(newCell); } //products (Treatments) else if (result.ProductType == 'T') { //Products productCount++; //check if it the first product and create a table header if it is if (productCount == 1) { createProductTableHeader(); } // create a new row in the results table and set the height newRow = new TableRow(); newRow.Height = 50; ProductSearchResults.Rows.Add(newRow); //fill the row with the data from the product results object TableCell newCell = new TableCell(); newCell.Text = "<a class='btn btn-default' href='/cheveux/Products.aspx??ProductID=" + result.ProductID.ToString().Replace(" ", string.Empty) + "'>" + result.Name.ToString() + "</a>"; ProductSearchResults.Rows[productCount].Cells.Add(newCell); newCell = new TableCell(); newCell.Text = "<a class='btn btn-default' href='/cheveux/Products.aspx??ProductID=" + result.ProductID.ToString().Replace(" ", string.Empty) + "'>" + result.ProductDescription.ToString() + "</a>"; ProductSearchResults.Rows[productCount].Cells.Add(newCell); newCell = new TableCell(); newCell.Text = "R " + result.Price; ProductSearchResults.Rows[productCount].Cells.Add(newCell); } //error else { //Error function.logAnError("Unknown Product Type found in search results"); } } } #endregion #region Stylist //check if the are Stylist Results or not if (results.Item2.Count != 0) { //create a new row in the results table and set the height TableRow newRow = new TableRow(); newRow.Height = 50; StylistSearchResults.Rows.Add(newRow); //create a header row and set cell withs TableHeaderCell newHeaderCell = new TableHeaderCell(); newHeaderCell.Width = 150; StylistSearchResults.Rows[0].Cells.Add(newHeaderCell); newHeaderCell = new TableHeaderCell(); newHeaderCell.Text = "Stylist Name"; newHeaderCell.Width = 750; StylistSearchResults.Rows[0].Cells.Add(newHeaderCell); newHeaderCell = new TableHeaderCell(); newHeaderCell.Text = "Stylist Specialization"; newHeaderCell.Width = 750; StylistSearchResults.Rows[0].Cells.Add(newHeaderCell);; //create a loop to display each result foreach (SP_SearchStylistsBySearchTerm result in results.Item2) { stylistRowCount++; // create a new row in the results table and set the height newRow = new TableRow(); newRow.Height = 50; StylistSearchResults.Rows.Add(newRow); //fill the row with the data from the results object TableCell newCell = new TableCell(); newCell.Text = "<img src=" + result.StylistImage + " alt='" + result.StylistFName + " " + result.StylistLName + " Profile Image' width='75' height='75'/>"; StylistSearchResults.Rows[stylistRowCount].Cells.Add(newCell); newCell = new TableCell(); newCell.Text = "<a class='btn btn-default' href='Profile.aspx?Action=View&empID=" + result.StylistID.ToString().Replace(" ", string.Empty) + "'>" + result.StylistFName + " " + result.StylistLName + "</a>"; StylistSearchResults.Rows[stylistRowCount].Cells.Add(newCell); newCell = new TableCell(); newCell.Text = "<a class='btn btn-default' href='/cheveux/services.aspx?ProductID=" + handler.viewStylistSpecialisationAndBio(result.StylistID.ToString()).serviceID.ToString().Replace(" ", string.Empty) + "'>" + handler.viewStylistSpecialisationAndBio(result.StylistID.ToString()).serviceName.ToString() + "</a>"; StylistSearchResults.Rows[stylistRowCount].Cells.Add(newCell); } } #endregion #region Bookings searchBookings(sender, e); #endregion #region count headings //set the headings based on the search results //products heading if (bookingCount != 0) { //set the product search results heading bookingResultLable.Text = "<h2> " + bookingCount + " Booking Search Results For '" + searchTerm + "' </h2>"; btnShowBoings.Visible = true; } //products heading if (productCount != 0) { //set the product search results heading ProductResultsLable.Text = "<h2> " + productCount + " Product Search Results For '" + searchTerm + "' </h2>"; btnHideProducts.Visible = true; } //service heading if (serviceCount != 0) { //set the product search results heading serviceResultsLable.Text = "<h2> " + serviceCount + " Service Search Results For '" + searchTerm + "' </h2>"; btnHideServices.Visible = true; } //Stylist Heading if (stylistRowCount != 0) { //set the stylist search results heading StylistResultsLable.Text = "<h2> " + stylistRowCount + " Stylist Search Results For '" + searchTerm + "' </h2>"; btnHideStylists.Visible = true; } //no results if (stylistRowCount == 0 && serviceCount == 0 && productCount == 0 && bookingCount == 0) { bookingResultLable.Text = "<h2> 0 Search Results For '" + searchTerm + "' </h2>"; } } #endregion catch (Exception Err) { function.logAnError(Err.ToString()); serviceResultsLable.Text = "An Error Occurred Getting Search Results From The Server, Try Again Later"; } } }