protected void btnSearchSubmit_Click(object sender, ImageClickEventArgs e)
    {
        SearchTribute SerachParam = null;

        StateManager stateManager = StateManager.Instance;
        SerachParam = (SearchTribute)stateManager.Get(PortalEnums.SearchEnum.Search.ToString(), StateManager.State.Session);

        if ((Page.GetType().Name.ToLower() == PortalEnums.PageNameEnum.tribute_alltribute_aspx.ToString()) || (SerachParam == null))
        {
            SerachParam = new SearchTribute();

            SerachParam.SearchString = txtSearchKeyword.Text.Trim();
            SerachParam.TributeType = "All Tributes";
            SerachParam.SearchType = PortalEnums.SearchEnum.Basic.ToString();
            SerachParam.SortOrder = "DESC";

            stateManager.Add(PortalEnums.SearchEnum.Search.ToString(), SerachParam, StateManager.State.Session);
        }
        else
        {
            if (SerachParam != null)
            {
                SerachParam.SearchString = txtSearchKeyword.Text.Trim();

                SerachParam.TributeType += " Tributes";
                SerachParam.SearchType = PortalEnums.SearchEnum.Basic.ToString();
                SerachParam.SortOrder = "DESC";
                stateManager.Add(PortalEnums.SearchEnum.Search.ToString(), SerachParam, StateManager.State.Session);
            }
        }

        // Redirect to the Search Result page
        Response.Redirect(Redirect.RedirectToPage(Redirect.PageList.SearchResult.ToString()));
    }
 /// <summary>
 /// This method will call the SearchTribute Manager class method for searching the tribute (basic search)
 /// Added By Parul Jain
 /// </summary>
 /// <param name="objBasicSearchParam">This is the SearchTribute object which contain the Search Parameter 
 /// to get the tribute list</param>
 /// <returns>This method will return the List of Tribute</returns>
 public List<SearchTribute> BasicSearch(SearchTribute objBasicSearchParam)
 {
     try
     {
         return FacadeManager.SearchTributeManager.BasicSearch(objBasicSearchParam);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
 /// <summary>
 /// This method will call the SearchTribute Manager class method for searching the tribute (Advance search)
 /// Added By Parul Jain
 /// </summary>
 /// <param name="objAdvanceSearchParam">This is the SearchTribute object which contain the Search Parameter 
 /// to get the tribute list</param>
 /// <returns>This method will return the List of Tribute</returns>
 public List<SearchTribute> AdvanceSearch(SearchTribute objAdvanceSearchParam)
 {
     try
     {
         return FacadeManager.SearchTributeManager.AdvanceSearch(objAdvanceSearchParam);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
    protected void lbtnSearch_Click(object sender, EventArgs e)
    {
        try
         {
            string error = string.Empty;
            bool pass1 = true;
            bool pass2 = true;
            DateTime objDate1;
            DateTime objDate2;
            error1.Visible = false;
            error2.Visible = false;

            if ((!string.IsNullOrEmpty(txtBeforeYear.Text)) || (ddlBeforeMonth.SelectedValue != "0") || (ddlBeforeDay.SelectedValue != "00"))
            {
                pass2 = DateTime.TryParse(ddlBeforeMonth.SelectedValue + "-" + ddlBeforeDay.SelectedValue + "-" + txtBeforeYear.Text.ToString(), out objDate2);
                if (pass2)
                {
                    if (objDate2 <= DateTime.Parse("01-01-1753"))
                    {
                        pass2 = false;
                        error2.Visible = true;
                    }
                }
                else
                    error2.Visible = true;
            }
            if ((!string.IsNullOrEmpty(txtAfterYear.Text)) || (ddlAfterMonth.SelectedValue != "0") || (ddlAfterDay.SelectedValue != "00"))
            {
                pass1 = DateTime.TryParse(ddlAfterMonth.SelectedValue + "-" + ddlAfterDay.SelectedValue + "-" + txtAfterYear.Text.ToString(), out objDate1);
                if (pass1)
                {
                    if (objDate1 <= DateTime.Parse("01-01-1753"))
                    {
                        pass1 = false;
                        error1.Visible = true;
                    }
                }
                else
                    error1.Visible = true;
            }
            if (pass1 && pass2)
            {
                # region process
                TributesPortal.ResourceAccess.IOVS.Sanitise(txtTributeName.Text, ref error);
                if (string.IsNullOrEmpty(error))
                    TributesPortal.ResourceAccess.IOVS.Sanitise(txtCity.Text, ref error);
                if (!string.IsNullOrEmpty(error))
                {
                    ShowMessage(error);
                    return;
                }

                // Create an object to pass to search tribute page
                SearchTribute objSearchTribute = new SearchTribute();

                objSearchTribute.TributeType = ddlTributeType.SelectedItem.Text;
                objSearchTribute.SearchString = txtTributeName.Text.ToString();
                objSearchTribute.SearchType = PortalEnums.SearchEnum.Advance.ToString();
                objSearchTribute.SortOrder = "DESC";

                objSearchTribute.City = txtCity.Text.ToString();

                if (ddlState.SelectedIndex > 0)
                {
                    objSearchTribute.State = int.Parse(ddlState.SelectedValue.ToString());
                    objSearchTribute.StateName = ddlState.SelectedItem.Text;
                }
                else
                {
                    objSearchTribute.State = -1;
                }

                if (ddlCountry.SelectedIndex >= 0)
                {
                    objSearchTribute.Country = int.Parse(ddlCountry.SelectedValue.ToString());
                    objSearchTribute.CountryName = ddlCountry.SelectedItem.Text;
                }
                else
                {
                    objSearchTribute.Country = -1;
                }

                // Format the created after Date and time
                if ((ddlAfterMonth.SelectedIndex != 0) && (ddlAfterDay.SelectedIndex != 0) && (txtAfterYear.Text.ToString() != ""))
                {
                    objSearchTribute.CreatedAfterDate = FormatDate(ddlAfterDay.SelectedIndex.ToString(), ddlAfterMonth.SelectedIndex.ToString(), txtAfterYear.Text.ToString());
                }

                // Format the created before Date and time
                if ((ddlBeforeMonth.SelectedIndex != 0) && (ddlBeforeDay.SelectedIndex != 0) && (txtBeforeYear.Text.ToString() != ""))
                {
                    objSearchTribute.CreatedBeforeDate = FormatDate(ddlBeforeDay.SelectedIndex.ToString(), ddlBeforeMonth.SelectedIndex.ToString(), txtBeforeYear.Text.ToString());
                }

                // Create StateManager object and add search paramter in the session
                StateManager objStateMgr = StateManager.Instance;
                objStateMgr.Add("Search", objSearchTribute, StateManager.State.Session);

                // Redirect to the Search Result page
                Response.Redirect(Redirect.RedirectToPage(Redirect.PageList.SearchResult.ToString()));
                //Response.Redirect("searchresult.aspx");
                # endregion
            }
            else
            {
                string errorText=string.Empty;
                if (!pass1)
                    errorText = "Please enter valid Created After date.";
                if (!pass2)
                {
                    if (string.IsNullOrEmpty(errorText))
                        errorText = "Please enter valid Created Before date.";
                    else
                        errorText = errorText + "</br> Please enter valid Created Before date.";
                }
                ShowMessage("<h2>Oops - there was a problem with your Search.</h2><br><h3>Please correct the error(s) below:</h3> ", errorText, true);
            }

        }
 public void GetBusinessUserTributeListTest()
 {
     UserInfoManager target = new UserInfoManager(); // TODO: Initialize to an appropriate value
     SearchTribute objTributeParam = new SearchTribute(); // TODO: Initialize to an appropriate value
     objTributeParam.SearchString = "taj";
     objTributeParam.UserName = "******";
     objTributeParam.TributeType = "All";
     objTributeParam.PageSize = 1;
     objTributeParam.PageNumber = 1;
     //objTributeParam.SortOrder = "ASC";
     //List<SearchTribute> expected = null; // TODO: Initialize to an appropriate value
     string AppDomain = "yourtribute";
     List<SearchTribute> actual = target.GetBusinessUserTributeList(objTributeParam, AppDomain);
     Assert.AreEqual("tajinder", actual[0].TributeName);
     //Assert.Inconclusive("Verify the correctness of this test method.");
 }
        /// <summary>
        /// This method will call the Database method for getting the tribute Listing for the
        /// Business user.
        /// Added By Parul Jain
        /// </summary>
        /// <param name="objTributeParam">This is the SearchTribute object which contain the Parameter 
        /// to get the tribute list - Sort Order, Tribuet Type and User ID</param>
        /// <returns>This method will return the List of Tribute</returns>
        public List<SearchTribute> GetBusinessUserTributeList(SearchTribute objTributeParam, string ApplicationType)
        {
            int coApplicationId = GetCoApplicationIdOnAppliactionType(ApplicationType);
            try
            {
                object[] objParam =     {   objTributeParam.TributeType,
                                            objTributeParam.UserName,
                                            objTributeParam.ChangeSearchString,
                                            objTributeParam.SortOrder,
                                            objTributeParam.PageSize,
                                            objTributeParam.PageNumber,
                                            coApplicationId
                                          };

                DataSet dsSearch = new DataSet();

                dsSearch = GetDataSet("usp_GetBusinessUserTribute", objParam);

                List<SearchTribute> objBasicSearchTributeList = GetTributeList(dsSearch, objTributeParam);

                return objBasicSearchTributeList;

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    /// <summary>
    /// This function will get the User Detail and Search Parameter from the session
    /// </summary>
    private void GetValuesFromSession()
    {
        try
        {
            Response.Cache.SetExpires(DateTime.Now);

            // Create State manager instance
            StateManager objStateManager = StateManager.Instance;

            // To get user id from session as user is logged in user
            _SessionValue = (SessionValue)objStateManager.Get(PortalEnums.SessionValueEnum.objSessionvalue.ToString(), StateManager.State.Session);
            if (_SessionValue != null)
            {
                _UserId = _SessionValue.UserId;
            }

          //  string typeName = (string)objStateManager.Get(PortalEnums.SessionValueEnum.SearchPageName.ToString(), StateManager.State.Session);
          //  if ((typeName != null) || (typeName != ""))
           // {
               // SetPageName(typeName);
           // }

            // To get current page number, if user clicks on page number in paging it gets the page number from query string
            // else page number is 1
            if (Request.QueryString["PageNo"] != null)
            {
                _CurrentPage = int.Parse(Request.QueryString["PageNo"].ToString());
            }
            else
            {
                _CurrentPage = 1;
            }

            // To get page size from config file
            _PageSize = (int.Parse(WebConfig.Pagesize_Gift));

            // Get the search Parameter from the session/querystring
            if (!IsPostBack)
            {
                if (Request.QueryString["mode"] != null)
                {
                    if (Request.QueryString["mode"] == "search")
                    {
                        _SearchParam = new SearchTribute();
                        _SearchParam.TributeType = Security.DecryptSymmetric(Request.QueryString["tributetype"].ToString());
                        if (Request.QueryString["searchstring"] != null)
                            _SearchParam.SearchString = Security.DecryptSymmetric(Request.QueryString["searchstring"].ToString());
                        else
                            _SearchParam.SearchString = string.Empty;
                        _SearchParam.SearchType = Security.DecryptSymmetric(Request.QueryString["searchtype"].ToString());
                        _SearchParam.SortOrder = Security.DecryptSymmetric(Request.QueryString["searchorder"].ToString());

                       //Adding Session for paging

                        // Create StateManager object and add search paramter in the session
                        //COMDIFFRES: (Search parameters are stored in the session. This might be done due to the security reason) following two lines are commented in .com file
                        objStateManager.Add(PortalEnums.SearchEnum.Search.ToString(), _SearchParam, StateManager.State.Session);
                    }
                }
                else
                {
                   // WriteLog(Request.Cookies["ASP.NET_SessionId"].Value);
                    _SearchParam = (SearchTribute)objStateManager.Get(PortalEnums.SearchEnum.Search.ToString(), StateManager.State.Session);
                 }
            }
            else
                _SearchParam = (SearchTribute)objStateManager.Get(PortalEnums.SearchEnum.Search.ToString(), StateManager.State.Session);
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
        /// <summary>
        /// This method will populate the Tribute List object from the dataset
        /// Added By Parul Jain
        /// </summary>
        /// <param name="dsSearch">A Dataset object which contain tribuet listing</param>
        /// <param name="objSearchParam">A SerachTribuet object which contain the search parameter</param>
        /// <returns>This method will return the List of Tribute</returns>
        private List<SearchTribute> GetTributeList(DataSet dsSearch, SearchTribute objSearchParam)
        {
            try
            {
                List<SearchTribute> objTributeList = new List<SearchTribute>();

                string virtualPath = GetVirtualPath();

                if (dsSearch.Tables.Count > 0)
                {
                    if (dsSearch.Tables[0].Rows.Count > 0)
                    {
                        //if (dsSearch.Tables["USERS"].ToString()
                        foreach (DataRow drBusineeUser in dsSearch.Tables[0].Rows)
                        {
                            objSearchParam.UserBusinessInfo = new UserBusiness();

                            objSearchParam.UserBusinessInfo.BusinessAddress = drBusineeUser["BusinessAddress"].ToString();
                            objSearchParam.UserBusinessInfo.City = drBusineeUser["City"].ToString();
                            objSearchParam.UserBusinessInfo.State = drBusineeUser["State"].ToString();
                            objSearchParam.UserBusinessInfo.Country = drBusineeUser["Country"].ToString();
                            objSearchParam.UserBusinessInfo.CompanyName = drBusineeUser["CompanyName"].ToString();
                            objSearchParam.UserBusinessInfo.Phone = drBusineeUser["Phone"].ToString();
                            objSearchParam.UserBusinessInfo.Website = drBusineeUser["Website"].ToString();
                            objSearchParam.UserBusinessInfo.ZipCode = drBusineeUser["ZipCode"].ToString();
                            objSearchParam.UserBusinessInfo.WelcomeMessage = drBusineeUser["WelcomeMessage"].ToString();
                            objSearchParam.UserBusinessInfo.CompanyLogo = virtualPath + drBusineeUser["CompanyLogo"].ToString();
                            objSearchParam.UserBusinessInfo.UserId = int.Parse(drBusineeUser["UserId"].ToString());
                            objSearchParam.UserBusinessInfo.Email = drBusineeUser["EmailId"].ToString();
                            objSearchParam.UserBusinessInfo.UserType = int.Parse(drBusineeUser["UserType"].ToString());
                        }
                    }
                }

                if (dsSearch.Tables.Count > 1)
                {
                    if (dsSearch.Tables[1].Rows.Count > 0)
                    {
                        foreach (DataRow drSearch in dsSearch.Tables[1].Rows)
                        {
                            SearchTribute objSearchTribute = new SearchTribute();

                            objSearchTribute.TributeID = int.Parse(drSearch["TributeId"].ToString());
                            objSearchTribute.UserTributeID = int.Parse(drSearch["UserTributeId"].ToString());
                            objSearchTribute.TributeName = drSearch["TributeName"].ToString();
                            objSearchTribute.TributeUrl = drSearch["TributeUrl"].ToString();
                            objSearchTribute.TributeType = drSearch["TributeType"].ToString();
                            if (drSearch["TributeImage"].ToString().Split('/').Length <= 2)
                                objSearchTribute.TributeImage = virtualPath + "thumbnails/" + drSearch["TributeImage"].ToString();
                            else
                                objSearchTribute.TributeImage = virtualPath + drSearch["TributeImage"].ToString();

                            objSearchTribute.Location = GetLocation(drSearch);
                            objSearchTribute.DateForSorting = DateTime.Parse(drSearch["CreatedDate"].ToString());
                            objSearchTribute.CreatedDate = DateTime.Parse(drSearch["CreatedDate"].ToString()).ToString("MMMM dd, yyyy");
                            objSearchTribute.Date1 = GetDate(drSearch);
                            objSearchTribute.TotalRecords = objSearchParam.TotalRecords = int.Parse(drSearch["TotalRecords"].ToString());
                            objSearchTribute.CreatedBy = GetUserName(drSearch);
                            objSearchTribute.Hits = drSearch["hits"].ToString();
                            objSearchTribute.VideoTributeId = drSearch["VideoTributeId"].ToString();

                            objTributeList.Add(objSearchTribute);
                            objSearchTribute = null;
                        }
                    }
                    else
                    {
                        objSearchParam.TotalRecords = 0;
                    }
                }

                return objTributeList;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    protected void btnGo_Click(object sender, EventArgs e)
    {
        try
        {
            // Create SearchTribute object
            SearchTribute objSearchTribute = new SearchTribute();

            // Assign the search parameter to this object
            objSearchTribute.TributeType = GetTributeType();
            //objSearchTribute.SearchString = txtSearchKeyword.Text.ToString();
            objSearchTribute.SearchType = PortalEnums.SearchEnum.Basic.ToString();
            objSearchTribute.SortOrder = "DESC";

            // Create StateManager object and add search paramter in the session
            StateManager objStateMgr = StateManager.Instance;
            objStateMgr.Add(PortalEnums.SearchEnum.Search.ToString(), objSearchTribute, StateManager.State.Session);

            // Redirect to the Search Result page
            Response.Redirect(Redirect.RedirectToPage(Redirect.PageList.SearchResult.ToString()));
        }
        catch (Exception ex)
        {
            throw (ex);
        }
    }
        /// <summary>
        /// This method will call the UserInfoResource Resource class method for getting the tribute Listing for the
        /// Business user.
        /// Added By Parul Jain
        /// </summary>
        /// <param name="objTributeParam">This is the SearchTribute object which contain the Parameter 
        /// to get the tribute list - Sort Order, Tribuet Type and User ID</param>
        /// <returns>This method will return the List of Tribute</returns>
        public List<SearchTribute> GetBusinessUserTributeList(SearchTribute objTributeParam, string ApplicationType)
        {
            try
            {
                UserInfoResource objUser = new UserInfoResource();

                // Replace wildcard character (*, ?) by the (% and _)
                if (objTributeParam.SearchString != "")
                {
                    String searchString = objTributeParam.SearchString.Replace('*', '%');

                    if (!searchString.Contains("%"))
                    {
                        string newsearchString = "%" + searchString + "%";
                        searchString = newsearchString;
                    }

                    objTributeParam.ChangeSearchString = searchString.Replace('?', '_');
                }
                else
                {
                    objTributeParam.ChangeSearchString = "%";
                }

                return objUser.GetBusinessUserTributeList(objTributeParam, ApplicationType);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// This method will populate the Tribute List object from the dataset
        /// </summary>
        /// <param name="dsSearch">A Dataset object which contain tribuet listing</param>
        /// <param name="isPopular">A bool object which contain whether populate the most popular tribute or most recently
        /// Tribute</param>
        /// <returns>his method will return the List of Tribute</returns>
        private List<SearchTribute> GetTributeList(DataSet dsSearch, bool isPopular)
        {
            try
            {
                List<SearchTribute> objTributeList = new List<SearchTribute>();

                // Append This virtual path with the Image
                string virtualPath = GetPath();

                if (dsSearch.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow drSearch in dsSearch.Tables[0].Rows)
                    {
                        SearchTribute objSearchTribute = new SearchTribute();

                        objSearchTribute.TributeID = int.Parse(drSearch["TributeId"].ToString());
                        objSearchTribute.UserTributeID = int.Parse(drSearch["UserTributeId"].ToString());
                        objSearchTribute.TributeName = drSearch["TributeName"].ToString();
                        objSearchTribute.TributeType = drSearch["TributeType"].ToString();
                        if (drSearch["TributeImage"].ToString().Split('/').Length <= 2)
                           objSearchTribute.TributeImage = virtualPath + "thumbnails/" + drSearch["TributeImage"].ToString();
                        else
                            objSearchTribute.TributeImage = virtualPath + drSearch["TributeImage"].ToString();

                        objSearchTribute.TributeUrl = drSearch["TributeUrl"].ToString();
                        objSearchTribute.Location = GetLocation(drSearch);
                        objSearchTribute.CreatedDate = DateTime.Parse(drSearch["CreatedDate"].ToString()).ToString("MMMM dd, yyyy");
                        objSearchTribute.Date1 = GetDate(drSearch);
                        objSearchTribute.CreatedBy = GetUserName(drSearch);
                        objSearchTribute.Hits = drSearch["hits"].ToString();
                        objSearchTribute.TributeUrl = drSearch["TributeUrl"].ToString();
                        objTributeList.Add(objSearchTribute);
                        objSearchTribute = null;
                    }
                }

                return objTributeList;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        // TODO - Remove
        private List<SearchTribute> GetAllTributeList(DataSet dsSearch, bool isPopular)
        {
            try
            {
                List<SearchTribute> objTributeList = new List<SearchTribute>();

                if (dsSearch.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow drSearch in dsSearch.Tables[0].Rows)
                    {
                        SearchTribute objSearchTribute = new SearchTribute();

                        objSearchTribute.TributeID = int.Parse(drSearch["TributeId"].ToString());
                        objSearchTribute.UserTributeID = int.Parse(drSearch["UserTributeId"].ToString());
                        objSearchTribute.TributeName = drSearch["TributeName"].ToString();
                        objSearchTribute.TributeType = drSearch["TributeType"].ToString();
                        objSearchTribute.TributeImage = drSearch["TributeImage"].ToString();
                        objSearchTribute.CreatedDate = DateTime.Parse(drSearch["CreatedDate"].ToString()).ToString("MMMM dd, yyyy");
                        objSearchTribute.TypeDescription = drSearch["TypeDescription"].ToString();
                        objSearchTribute.TributeUrl = drSearch["TributeUrl"].ToString();
                        objSearchTribute.Date1 = GetDate(drSearch);
                        objTributeList.Add(objSearchTribute);
                        objSearchTribute = null;
                    }
                }

                return objTributeList;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 /// <summary>
 /// This method will call the UserInfoManager Manager class method for getting the tribute Listing for the
 /// Business user.
 /// Added By Parul Jain
 /// </summary>
 /// <param name="objTributeParam">This is the SearchTribute object which contain the Parameter 
 /// to get the tribute list - Sort Order, Tribuet Type and User ID</param>
 /// <returns>This method will return the List of Tribute</returns>
 public List<SearchTribute> GetBusinessUserTributeList(SearchTribute objTributeParam,string ApplicationType)
 {
     try
     {
         return FacadeManager.UserInfoManager.GetBusinessUserTributeList(objTributeParam, ApplicationType);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }