async private Task <bool> getClaims()
        {
            if (Claims == null)
            {
                Claims = new ObservableCollection <Claim>();

                foreach (DTO_Claim claim in ServiceLayer.ClaimsList)
                {
                    Claims.Add(new Claim(claim));
                    Customer cust = Customers.Where(c => c.CustomerID == Claims.Last().CustomerID).Single();
                    Claims.Last().CustomerName         = cust.FirstName + " " + cust.LastName;
                    Address address                    = Addresses.Where(a => a.AddressID == Claims.Last().PropertyID).Single();
                    Claims.Last().Address              = address.StreetAddress + ", " + address.Zip;
                    Claims.Last().InsuranceCompanyName = InsuranceCompanies.Where(i => i.InsuranceCompanyID == Claims.Last().InsuranceCompanyID).Single().CompanyName;
                }
            }

            return(true);
        }
        async private void accountSelected(object o)
        {
            if (o is Claim)
            {
                Claim = o as Claim;
                // Retrieve the Customer, Property Address, Billing Address, previous Inspection, and Lead information.
                Customer           = Customers.Where(c => c.CustomerID == Claim.CustomerID).Single();
                IsExistingCustomer = true;

                PropertyAddress   = Addresses.Where(a => a.AddressID == Claim.PropertyID).Single();
                IsExistingAddress = true;

                // Check if the BillingID is the same as PropertyID
                if (Claim.BillingID == Claim.PropertyID)
                {
                    /// BillingSameAsProperty = true;
                    BillingAddress = PropertyAddress;
                }
                else // If it's not retrieve the BillingAddress from the server
                {
                    ///BillingSameAsProperty = false;
                    BillingAddress = Addresses.Where(a => a.AddressID == Claim.BillingID).Single();
                }

                Lead = Leads.Where(l => l.LeadID == Claim.LeadID).Single();

                if (Lead.LeadTypeID == 1)
                {
                    if ((ErrorMessage = await new ServiceLayer().GetKnockerResponseByID(new DTO_KnockerResponse {
                        KnockerResponseID = (int)Lead.KnockerResponseID
                    })) != null)
                    {
                        return;
                    }
                    else
                    {
                        KnockerResponse = new KnockerResponse(ServiceLayer.KnockerResponse);
                    }
                }
                else if (Lead.LeadTypeID == 2)
                {
                    if ((ErrorMessage = await new ServiceLayer().GetReferrerByID(new DTO_Referrer {
                        ReferrerID = (int)Lead.CreditToID
                    })) != null)
                    {
                        return;
                    }
                    else
                    {
                        Referrer = new Referrer(ServiceLayer.Referrer);
                    }
                }

                Inspection = Inspections.Where(i => i.ClaimID == Claim.ClaimID).Single();

                Claim.InsuranceCompanyName = InsuranceCompanies.Where(i => i.InsuranceCompanyID == Claim.InsuranceCompanyID).Single().CompanyName;
            }
            else if (o is Lead)
            {
                Lead = o as Lead;
                // Retrieve the Customer and Property Address Information, and Claim if there is one attached.
                Customer           = Customers.Where(c => c.CustomerID == Lead.CustomerID).Single();
                IsExistingCustomer = true;
                PropertyAddress    = Addresses.Where(a => a.AddressID == Lead.AddressID).Single();
                IsExistingAddress  = true;
                BillingAddress     = null;

                // Check if any Claims are connected to the Lead
                if (Claims.Any(c => c.LeadID == Lead.LeadID))
                {
                    Claim = Claims.Where(c => c.LeadID == Lead.LeadID).Single();

                    // Check if BillingID is the same as PropertyID
                    if (Claim.BillingID == Claim.PropertyID)
                    {
                        ///BillingSameAsProperty = true;
                        BillingAddress     = PropertyAddress;
                        IsExistingAddressB = true;
                    }
                    else // If it's not retrieve the BillingAddress from the server
                    {
                        ///BillingSameAsProperty = false;
                        BillingAddress = Addresses.Where(a => a.AddressID == Claim.BillingID).Single();
                    }

                    // Retrieve the Inspection attached to the Claim
                    if ((ErrorMessage = await new ServiceLayer().GetInspectionsByClaimID(Claim.toDTO())) != null)
                    {
                        return;
                    }

                    Inspection = new Inspection(ServiceLayer.InspectionsList.Last());
                }
                else // Instantiate the Claim object
                {
                    Claim = new Claim {
                        LeadID = Lead.LeadID
                    };
                }

                BillingAddress = new Address();
                ///LeadIsAttached = true;
            }
            else if (o is Customer)
            {
                Customer = o as Customer;
            }
            else if (o is Address && code == 4)
            {
                PropertyAddress = o as Address;
            }
            else if (o is Address && code == 5)
            {
                BillingAddress = o as Address;
            }

            else if (o is Adjuster && code == 6)
            {
                Adjuster = o as Adjuster;
            }
            else if (o is Adjustment && code == 7)
            {
                Adjustment = o as Adjustment;
            }
            else if (o == null)
            {
                //AddLead.Execute(o);
            }

            CurrentPage = new ClaimHUDView();
            //OnRequestClose(this, new EventArgs());
        }