public BusinessPartnerRowViewModel(BusinessUnit associatedBu)
        {
            if (associatedBu != null)
            {
                this._associatedBu = associatedBu;
                this.BusinessUnitName = associatedBu.Name;
                this.NatureOfBusiness = associatedBu.NatureofBusiness;

                // TODO: Why secondary contact numnber? to be decided?
                this.PhoneNumber = associatedBu.ContactNumber;

                if (associatedBu.Address != null)
                {
                    this.Area = associatedBu.Address.Area;
                    this.Address1 = associatedBu.Address.Address1;
                }
            }
            else
            {
                this._associatedBu = new BusinessUnit();
            }
        }
        /// <summary>
        /// Makes a server call to retrieve the business units
        /// </summary>
        public void ExecuteSearchBusinessUnits()
        {
            //TODO : need to make a server call and populate BusinessPartnerSearchResults collection
            // NOte: Don't create a new instance of BusinessPartnerSearchResults collection for every search.
            //clear the existing collection and add the results to it.
            BusinessPartnerRowViewModel buRowViewModel;

            // This requires a label titled "label1" on the form...
            // Get the UI thread's context
            var context = TaskScheduler.FromCurrentSynchronizationContext();

            this.SetStatusbarMessage("Business units search inprogress...", StatusMessageType.Info);
            this.ShowBusyCursor(true, "Searching business units");

            BusinessUnitSearchResults.Clear();

            var request = new BusinessUnitSearchRequest { SearchString = this.SearchCriteriaText };
            IEnumerable<BusinessUnit> bizUnits = null;

            Task t = new Task(() =>
            {
                bizUnits = ManagerFactory.Create<BusinessUnitSearchRequest, IEnumerable<BusinessUnit>>().Execute(request);
            });

            t.ContinueWith(_ =>
            {
                if (bizUnits != null && bizUnits.Count() > 0)
                {
                    foreach (var bizUnit in bizUnits)
                    {
                        buRowViewModel = new BusinessPartnerRowViewModel(bizUnit);
                        BusinessUnitSearchResults.Add(buRowViewModel);
                    }

                    BusinessUnitSearchResults.Take(3).ToList().ForEach(item => item.SendSms = true);

                    SetStatusbarMessage("Business unit details retrieved successfully...", StatusMessageType.Info);
                }
                else
                {
                    var bizUnit = new BusinessUnit();
                    buRowViewModel = new BusinessPartnerRowViewModel(bizUnit);
                    BusinessUnitSearchResults.Add(buRowViewModel);
                    SetStatusbarMessage("No business units found..Try in google maps...", StatusMessageType.Warning);
                }

                ShowBusyCursor(false);
            }, context);

            t.Start();
        }