protected void Search_Error(object sender, ErrorEventArgs e)
 {
     _lblMessage.CssClass = "errorMessage";
     _lblMessage.Text = e.Message;
 }
 protected virtual void OnError(ErrorEventArgs e)
 {
     if (Error != null)
     {
         Error(this, e);
     }
 }
        protected void _odsContactSearch_Selected(object sender, ObjectDataSourceStatusEventArgs e)
        {
            //Handle exceptions that may occur while binding client grid
            if (e.Exception != null)
            {
                ErrorEventArgs errorEventArgs = new ErrorEventArgs();
                errorEventArgs.Message = e.Exception.InnerException.Message;
                OnError(errorEventArgs);
                e.ExceptionHandled = true;
            }

            //Set force refresh to false so that data is retrieved from cache during paging
            _hdnRefresh.Value = "false";
        }
        protected void _grdSearchServiceList_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.Header)
                {
                    foreach (TableCell tc in e.Row.Cells)
                    {
                        if (tc.HasControls())
                        {
                            // search for the header link
                            LinkButton lnk = (LinkButton)tc.Controls[0];
                            if (lnk != null)
                            {
                                // inizialize a new image
                                System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
                                // setting the dynamically URL of the image
                                img.ImageUrl = "~/Images/PNGs/sort_az_" + (_grdSearchServiceList.SortDirection == SortDirection.Ascending ? "descending" : "ascending") + ".png";
                                // checking if the header link is the user's choice
                                if (_grdSearchServiceList.SortExpression == lnk.CommandArgument)
                                {
                                    // adding a space and the image to the header link
                                    tc.Controls.Add(new LiteralControl(" "));
                                    tc.Controls.Add(img);
                                }
                            }
                        }
                    }
                }

                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    Label lblAddress = (Label)e.Row.FindControl("_lblAddress");
                    Label lblAddressStreetNo = (Label)e.Row.FindControl("_lblAddressStreetNo");
                    Label lblAddressLine1 = (Label)e.Row.FindControl("_lblAddressLine1");
                    ServiceSearchItem service = (ServiceSearchItem)e.Row.DataItem;

                    if (service.AddressHouseName != "System.DBNull" && service.AddressStreetNo != "System.DBNull" && service.AddressLine1 != "System.DBNull")
                    {
                        service.AddressHouseName = service.AddressHouseName + " " + service.AddressStreetNo;
                        service.AddressHouseName = service.AddressHouseName.Trim() + " " + service.AddressLine1;
                    }

                    lblAddress.Text = service.AddressHouseName;

                    // Truncate fields having length more than 20
                    // Truncate large service name
                    if (service.Name.Length > 20)
                    {
                        LinkButton lnkBtnServiceName = (LinkButton)e.Row.FindControl("_lnkServiceName");
                        lnkBtnServiceName.Text = service.Name;//.Substring(0, 20) + "...";
                    }

                    // Truncate large house name
                    if (service.AddressHouseName.Length > 20)
                    {
                        Label lblAddressHouseName = (Label)e.Row.FindControl("_lblAddress");
                        lblAddressHouseName.Text = service.AddressHouseName.Substring(0, 20) + "...";
                    }

                    // Truncate large house name
                    if (service.AddressLine1.Length > 20)
                    {
                        lblAddressLine1.Text = service.AddressLine1.Substring(0, 20) + "...";
                    }

                     // Truncate large town name
                    if (service.AddressTown.Length > 20)
                    {
                        Label lblAddressTown = (Label)e.Row.FindControl("_lblTown");
                        lblAddressTown.Text = service.AddressTown.Substring(0, 20) + "...";
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorEventArgs error = new ErrorEventArgs();
                error.Message = ex.Message;
                OnError(error);
            }
        }
        public ContactSearchItem[] SearchContact(int startRow, int pageSize, string sortBy, string contactName, string organisation, 
                                                 string houseNo, string POBox, string postCode, string town, 
                                                 bool forceRefresh)
        {
            ContactServiceClient contactService = null;
            ContactSearchItem[] contacts = null;
            try
            {
                if (HttpContext.Current.Session[SessionName.LogonSettings] != null)
                {
                    Guid _logonId = ((LogonReturnValue)HttpContext.Current.Session[SessionName.LogonSettings]).LogonId;

                    CollectionRequest collectionRequest = new CollectionRequest();
                    collectionRequest.ForceRefresh = forceRefresh;
                    collectionRequest.StartRow = startRow;
                    collectionRequest.RowCount = pageSize;

                    ContactSearchCriteria criteria = new ContactSearchCriteria();
                    criteria.ContactName = contactName;
                    criteria.HouseNumber = houseNo;
                    criteria.Organisation = organisation;
                    criteria.POBox = POBox;
                    criteria.PostCode = postCode;
                    criteria.Town = town;
                    criteria.OrderBy = sortBy;

                    contactService = new ContactServiceClient();

                    ContactSearchReturnValue returnValue =
                                                contactService.ContactSearch(_logonId,
                                                                             collectionRequest,
                                                                             criteria);
                    if (returnValue.Success)
                    {
                        contacts = returnValue.Contacts.Rows;
                        _contactSearchRowCount = returnValue.Contacts.TotalRowCount;
                    }
                    else
                    {
                        ErrorEventArgs e = new ErrorEventArgs();
                        e.Message = returnValue.Message;
                        OnError(e);
                    }
                }
                return contacts;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (contactService.State != System.ServiceModel.CommunicationState.Faulted)
                    contactService.Close();
            }
        }
        protected void _grdSearchServiceContactList_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            try
            {
                if (e.Row.RowType == DataControlRowType.Header)
                {
                    foreach (TableCell tc in e.Row.Cells)
                    {
                        if (tc.HasControls())
                        {
                            // search for the header link
                            LinkButton lnk = (LinkButton)tc.Controls[0];
                            if (lnk != null)
                            {
                                // inizialize a new image
                                System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
                                // setting the dynamically URL of the image
                                img.ImageUrl = "~/Images/PNGs/sort_az_" + (_grdSearchServiceContactList.SortDirection == SortDirection.Ascending ? "descending" : "ascending") + ".png";
                                // checking if the header link is the user's choice
                                if (_grdSearchServiceContactList.SortExpression == lnk.CommandArgument)
                                {
                                    // adding a space and the image to the header link
                                    tc.Controls.Add(new LiteralControl(" "));
                                    tc.Controls.Add(img);
                                }
                            }
                        }
                    }
                }

                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    LinkButton lnkContactName = (LinkButton)e.Row.FindControl("_lnkContactName");
                    Label _lblPersonTitle = (Label)e.Row.FindControl("_lblPersonTitle");
                    Label _lblPersonSurname = (Label)e.Row.FindControl("_lblPersonSurname");
                    ServiceContactSearchItem serviceContact = (ServiceContactSearchItem)e.Row.DataItem;
                    string displayName = "";

                    if (_lblPersonSurname.Text == "To Whom It May Concern" || _lblPersonSurname.Text == "Default Contact")
                    {
                        displayName = "Default Contact";
                    }
                    else
                    {
                        if (_lblPersonSurname.Text == "To Whom It May Concern" || _lblPersonSurname.Text == "Default Contact")
                        {
                            displayName = "Default Contact";
                        }
                        else
                        {
                            displayName = _lblPersonTitle.Text.Trim() + " " + lnkContactName.Text.Trim() + " " + _lblPersonSurname.Text.Trim();
                        }
                    }

                    lnkContactName.Text = displayName;

                    // Truncates fields having length more than 20
                    // Truncate large person name
                    if (serviceContact.PersonName.Length > 20)
                    {
                        LinkButton lnkBtnPersonName= (LinkButton)e.Row.FindControl("_lnkContactName");
                        lnkBtnPersonName.Text = serviceContact.PersonName;//.Substring(0, 20) + "...";
                    }

                    // Truncate large person surname
                    if (serviceContact.PersonSurname.Length > 20)
                    {
                        Label lblPersonSurname = (Label)e.Row.FindControl("_lblPersonSurname");
                        lblPersonSurname.Text = serviceContact.PersonSurname.Substring(0, 20) + "...";
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorEventArgs error = new ErrorEventArgs();
                error.Message = ex.Message;
                OnError(error);
            }
        }
        protected void _grdSearchServiceList_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                //Get the contacts for the service
                if (e.CommandName == "contact")
                {
                    int rowId = ((GridViewRow)((LinkButton)(e.CommandSource)).NamingContainer).RowIndex;
                    _hdnServiceOrgId.Value = _grdSearchServiceList.DataKeys[rowId].Values["Id"].ToString();
                    if (!string.IsNullOrEmpty(_hdnServiceOrgId.Value))
                    {
                        _hdnRefreshServiceContact.Value = "true";
                        _grdSearchServiceContactList.EmptyDataText = NO_SERVICE_CONTACTS_FOUND;
                        _grdSearchServiceContactList.PageIndex = 0;
                        _grdSearchServiceContactList.DataSourceID = _odsServiceContactSearch.ID;

                        if (_displayPopup == false)
                        {
                            _pnlServiceSearch.Style.Add("display", "");
                        }
                        else
                        {
                            _modalpopupServiceSearch.Show();
                        }
                    }
                }
                else if (e.CommandName == "select")
                {
                    GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
                    int rowId = ((GridViewRow)((LinkButton)(e.CommandSource)).NamingContainer).RowIndex;
                    _hdnServiceOrgId.Value = _grdSearchServiceList.DataKeys[rowId].Values["Id"].ToString();
                    _serviceOrgId = new Guid(_grdSearchServiceList.DataKeys[rowId].Values["Id"].ToString());

                    if (row.Cells[0].FindControl("_lnkServiceName") != null)
                    {
                        _serviceText = ((LinkButton)row.Cells[0].FindControl("_lnkServiceName")).Text;
                        _industryText = _hdnServiceName.Value;
                    }

                    if (_displayPopup == true)
                    {
                        _txtService.Text = _serviceText + " - " + _industryText;
                        OnServiceSelected(EventArgs.Empty);
                        _modalpopupServiceSearch.Hide();
                    }
                }
                else
                {
                    _modalpopupServiceSearch.Show();
                }
            }
            catch (Exception ex)
            {
                ErrorEventArgs error = new ErrorEventArgs();
                error.Message = ex.Message;
                OnError(error);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void _btnSearch_Click(object sender, EventArgs e)
        {
            try
            {
                //Set force refresh to true so that data is not retrieved from the cache
                _hdnRefresh.Value = "true";

                if (_ddlIndustry.SelectedIndex > 0)
                {
                    _hdnServiceName.Value = GetIndustryValue(_ddlIndustry.SelectedItem.Text);
                }

                _grdSearchServiceList.EmptyDataText = NO_SERVICES_FOUND;
                _grdSearchServiceList.PageIndex = 0;
                _grdSearchServiceList.DataSourceID = _odsSearchService.ID;

                //Clear the contacts grid
                _grdSearchServiceContactList.EmptyDataText = string.Empty;
                _grdSearchServiceContactList.DataSourceID = "";

                if (_displayPopup == false)
                {
                    _pnlServiceSearch.Style.Add("display", "");
                }
            }
            catch (Exception ex)
            {
                ErrorEventArgs errorEventArgs = new ErrorEventArgs();
                errorEventArgs.Message = ex.Message;
                OnError(errorEventArgs);
            }
            _modalpopupServiceSearch.Show();
        }
 protected void _grdSearchServiceContactList_RowCommand(object sender, GridViewCommandEventArgs e)
 {
     try
     {
         if (e.CommandName == "select")
         {
             GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
             int rowId = ((GridViewRow)((LinkButton)(e.CommandSource)).NamingContainer).RowIndex;
             _serviceContactId = new Guid(_grdSearchServiceContactList.DataKeys[rowId].Values["MemberId"].ToString());
             if (row.Cells[0].FindControl("_lnkContactName") != null)
             {
                 _serviceText = ((LinkButton)row.Cells[0].FindControl("_lnkContactName")).Text;
                 _modalpopupServiceSearch.Hide();
             }
             OnServiceContactSelected(EventArgs.Empty);
         }
         else
         {
             _modalpopupServiceSearch.Show();
         }
     }
     catch (Exception ex)
     {
         ErrorEventArgs error = new ErrorEventArgs();
         error.Message = ex.Message;
         OnError(error);
     }
 }
        protected void _imgBtnSearch_Click(object sender, ImageClickEventArgs e)
        {
            if (_txtSearch.Text.Trim() == string.Empty)
            {
                _txtSearch.Text = AllClients;
            }

            ClientServiceClient clientService = null;
            try
            {
                CollectionRequest collectionRequest = new CollectionRequest();
                collectionRequest.ForceRefresh = true;

                ClientSearchCriteria criteria = new ClientSearchCriteria();
                if (_txtSearch.Text.Trim() == string.Empty || _txtSearch.Text.Trim() == AllClients)
                {
                    criteria.Name = string.Empty;
                }
                else
                {
                    criteria.Name = _txtSearch.Text.Trim();
                }

                if (_ddlFeeEarner.SelectedIndex > 0)
                {
                    criteria.Partner = new Guid(_ddlFeeEarner.SelectedValue);
                }

                clientService = new ClientServiceClient();
                ClientSearchReturnValue returnValue = clientService.ClientSearch(_logonId,
                                            collectionRequest, criteria);

                _ddlClients.Items.Clear();
                _ddlClientMatters.Items.Clear();

                if (returnValue.Success)
                {
                    if (returnValue.Clients.Rows.Length > 0)
                    {
                        foreach (ClientSearchItem client in returnValue.Clients.Rows)
                        {
                            ListItem item = new ListItem();
                            item.Text = client.ClientReference.Trim() + " - " + client.Name;
                            item.Value = client.MemberId.ToString() + "$" + client.OrganisationId.ToString();
                            _ddlClients.Items.Add(item);
                        }
                    }
                    else
                    {
                        SuccessEventArgs success = new SuccessEventArgs();
                        success.Message = "Search is complete. There are no results to display.";
                        OnSearchSuccessful(success);
                    }

                    if (_ddlClients.Items.Count > 0)
                    {
                        _clientRowCount = _ddlClients.Items.Count;

                        Guid memberId = new Guid(GetValueOnIndexFromArray(_ddlClients.SelectedValue, 0));
                        Guid organisationId = new Guid(GetValueOnIndexFromArray(_ddlClients.SelectedValue, 1));
                        GetClientMatters(memberId, organisationId);
                        SelectLastMatter();
                    }

                }
                else
                {
                    ErrorEventArgs error = new ErrorEventArgs();
                    error.Message = returnValue.Message.Replace("WebClientSearch requires some parameters", "Please select a Fee Earner or use the client search.");
                    OnError(error);
                }
            }
            catch (Exception ex)
            {
                ErrorEventArgs error = new ErrorEventArgs();
                error.Message = ex.Message;
                OnError(error);
            }
            finally
            {
                if (clientService != null)
                {
                    if (clientService.State != System.ServiceModel.CommunicationState.Faulted)
                        clientService.Close();
                }
            }
        }
 protected void _imgBtnMatterSearch_Click(object sender, ImageClickEventArgs e)
 {
     try
     {
         Guid memberId = new Guid(GetValueOnIndexFromArray(_ddlClients.SelectedValue, 0));
         Guid organisationId = new Guid(GetValueOnIndexFromArray(_ddlClients.SelectedValue, 1));
         GetClientMatters(memberId, organisationId);
         SelectLastMatter();
     }
     catch (Exception ex)
     {
         ErrorEventArgs error = new ErrorEventArgs();
         error.Message = ex.Message;
         OnError(error);
     }
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            // If Session expires, redirect the user to the login screen
            if (Session[SessionName.LogonId] == null)
            {
                Response.Redirect("~/LoginMobile.aspx?SessionExpired=1", true);
            }
            else
            {
                _logonId = (Guid)Session[SessionName.LogonId];
            }

            if (!IsPostBack)
            {
                try
                {
                    GetFeeEarners();
                    SetDefaultFeeEarner();
                    LoadClientMatterDetails();
                }
                catch (Exception ex)
                {
                    ErrorEventArgs error = new ErrorEventArgs();
                    error.Message = ex.Message;
                    OnError(error);
                }
            }

            EnableDisableValidators();
        }
 protected void _msFileReviews_Error(object sender, ErrorEventArgs e)
 {
     _lblMessage.CssClass = "errorMessage";
     _lblMessage.Text = e.Message;
 }
        protected void _msAddTimeEntry_Error(object sender, ErrorEventArgs e)
        {
            _lblMessage.CssClass = "errorMessage";
            _lblMessage.Text = e.Message;

            _ddlTimeType.Items.Clear();
        }