private void UpdateFoundCustomers()
        {
            IEnumerable <Customer> result = new List <Customer>();

            using (var worker = new BackgroundWorker())
            {
                worker.DoWork += delegate
                {
                    bool searchPn = string.IsNullOrEmpty(PhoneNumberSearchText);
                    bool searchCn = string.IsNullOrEmpty(CustomerNameSearchText);
                    bool searchAd = string.IsNullOrEmpty(AddressSearchText);

                    result = Dao.Query <Customer>(
                        x =>
                        (searchPn || x.PhoneNumber.Contains(PhoneNumberSearchText)) &&
                        (searchCn || x.Name.ToLower().Contains(CustomerNameSearchText.ToLower())) &&
                        (searchAd || x.Address.ToLower().Contains(AddressSearchText.ToLower())));
                };

                worker.RunWorkerCompleted +=
                    delegate
                {
                    AppServices.MainDispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(
                                                               delegate
                    {
                        FoundCustomers.Clear();
                        FoundCustomers.AddRange(result.Select(x => new CustomerViewModel(x)));

                        if (SelectedCustomer != null && PhoneNumberSearchText == SelectedCustomer.PhoneNumber)
                        {
                            SelectedView = 1;
                            SelectedCustomer.UpdateDetailedInfo();
                        }

                        RaisePropertyChanged("SelectedCustomer");

                        CommandManager.InvalidateRequerySuggested();
                    }));
                };

                worker.RunWorkerAsync();
            }
        }
        public void RefreshSelectedCustomer()
        {
            ClearSearchValues();

            if (AppServices.MainDataContext.SelectedTicket != null && AppServices.MainDataContext.SelectedTicket.CustomerId > 0)
            {
                var customer = Dao.SingleWithCache <Customer>(x => x.Id == AppServices.MainDataContext.SelectedTicket.CustomerId);
                if (customer != null)
                {
                    FoundCustomers.Add(new CustomerViewModel(customer));
                }
                if (SelectedCustomer != null)
                {
                    SelectedView = 1;
                    SelectedCustomer.UpdateDetailedInfo();
                }
            }
            RaisePropertyChanged("SelectedCustomer");
            RaisePropertyChanged("IsClearVisible");
            RaisePropertyChanged("IsResetCustomerVisible");
            RaisePropertyChanged("IsMakePaymentVisible");
            ActiveView = 0;
            SelectedCustomerTransactions.Clear();
        }