public void CreatePolicy(ref PetfirstCustomer mCustomer, List<Pet> lstPets)
        {
            mCustomer.WebserviceErrorMsg = "";
            PolicyServiceSellPolicyRequest pRequest = new PolicyServiceSellPolicyRequest();
            if (!string.IsNullOrEmpty(mCustomer.CcNumber))
            {
                pRequest.CreditCard = new CreditCard()
                {
                    Address1 = mCustomer.BillingInfo.Address1,
                    Address2 = mCustomer.BillingInfo.Address2,
                    City = mCustomer.BillingInfo.City,
                    Cvvs2 = mCustomer.SecCode,
                    ExpirationMonth = mCustomer.ExpirationMonth,
                    ExpirationYear = mCustomer.ExpirationYear,
                    FirstName = mCustomer.BillingInfo.FirstName,
                    LastName = mCustomer.BillingInfo.LastName,
                    Number = mCustomer.CcNumber,
                    StateId = mCustomer.BillingInfo.StateId,
                    ZipCode = mCustomer.BillingInfo.Zip

                };
            }
            if (mCustomer.GiftCards != null)
            {
                int gcCount = mCustomer.GiftCards.Count;
                pRequest.GiftCards = new PolicyServiceReference.GiftCard[gcCount];
                int i =0;
                foreach (GiftCard gc in mCustomer.GiftCards)
                {
                    PolicyServiceReference.GiftCard pGC = new PolicyServiceReference.GiftCard();
                    pGC.Pin = gc.Pin;
                    pGC.SrcRefNum = 0;
                    pRequest.GiftCards[i] = pGC;
                    i++;
                }
            }
            pRequest.Customer = new PolicyServiceReference.Customer()
            {
                ZipCode = mCustomer.MembershipInfo.Zip,
                WorkPhone = String.Empty,
                StreetAddress2 = mCustomer.MembershipInfo.Address2,
                StreetAddress = mCustomer.MembershipInfo.Address1,
                StateId = mCustomer.MembershipInfo.StateId,
                MobilePhone = String.Empty,
                LastName = mCustomer.MembershipInfo.LastName,
                FirstName = mCustomer.MembershipInfo.FirstName,
                HomePhone = mCustomer.MembershipInfo.Phone,
                CityName = mCustomer.MembershipInfo.City,
                EmailAddress = mCustomer.MembershipInfo.Email
            };
            pRequest.CoInsurance = 1-lstPets[0].Reimbursement;
            pRequest.Deductible = lstPets[0].DeductibleAmount;
            pRequest.EnrollmentCode = mCustomer.EnrollmentCode;
            pRequest.PlanId = lstPets[0].PlanId;
            pRequest.PaymentFrequencyId = (int)mCustomer.PayFrequency;//annual
            pRequest.IncludeRoutine = false;
            pRequest.IncludeRoutine125 = false;
            pRequest.IncludeRoutine250 = false;
            pRequest.IncludeRoutine400 = false;
            if (!lstPets[0].Routine.ToLower().Equals("0"))
            {
                pRequest.IncludeRoutine = true;
                switch (lstPets[0].Routine.ToLower())
                {
                    case "routine125":
                        pRequest.IncludeRoutine125 = true;
                        break;
                    case "routine250":
                        pRequest.IncludeRoutine250 = true;
                        break;
                    case "routine400": pRequest.IncludeRoutine400 = true;
                        break;

                }
            }

            pRequest.InternetDiscount = mCustomer.DiscountInternetPurchase;
            pRequest.MilitaryDiscount = mCustomer.DiscountMilitarySelected;
            pRequest.VetDiscount = mCustomer.DiscountVetSelected;
            int nPlan = lstPets[0].PlanId;
            int stateid = mCustomer.MembershipInfo.StateId;
            int underwriter = mCustomer.Underwriter;
            pRequest.UnderwriterID = mCustomer.Underwriter;
            pRequest.FilingID = (from pts in context.v_PlansToStates
                                 where pts.stateProvinceID.Equals(stateid) &&
                                     pts.UnderwriterID.Equals(underwriter) &&
                                     pts.plan_id == nPlan
                                 select pts.FilingID).First();

            pRequest.IncludeBreeders = lstPets[0].Breeder;
            if (lstPets[0].Hereditary.ToLower().Equals("hereditary100"))
            {
                pRequest.IncludeHereditary100 = true;
            }
            else if (lstPets[0].Hereditary.ToLower().Equals("hereditary25"))
            {
                pRequest.IncludeHereditary25 = true;
            }
            else
            {
                pRequest.IncludeHereditary100 = false;
                pRequest.IncludeHereditary25 = false;
            }
            pRequest.IncludePrescriptionFood = lstPets[0].PrescriptionFood;
            pRequest.KrogerLoyaltyNumber = string.Empty;

            PolicyServiceReference.Pet p1 = CreatePolicyRequestPet(lstPets[0]);
            if (lstPets.Count ==3)//3 pets
            {
                pRequest.Pets = new PolicyServiceReference.Pet[3];
                pRequest.Pets[0] = p1;
                pRequest.Pets[1] = CreatePolicyRequestPet(lstPets[1]);
                pRequest.Pets[2] = CreatePolicyRequestPet(lstPets[2]);
            }
            else if (lstPets.Count ==2)
            {
                pRequest.Pets = new PolicyServiceReference.Pet[2];
                pRequest.Pets[0] = p1;
                pRequest.Pets[1] = CreatePolicyRequestPet(lstPets[1]);
            }
            else
            {
                pRequest.Pets = new PolicyServiceReference.Pet[1];
                pRequest.Pets[0] = p1;
            }

            PolicyServiceClient pc = new PolicyServiceClient();
            try
            {
                PolicyServiceSellPolicyResponse resp = pc.SellPolicy(pRequest);
                if (string.IsNullOrEmpty(resp.Error))
                {
                    foreach (Pet p in lstPets)
                    {
                        p.PolicyNumber = resp.PolicyNumber;
                        p.PolicyId = resp.PolicyId;
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(resp.PolicyNumber))
                    {
                        foreach (Pet p in lstPets)
                        {
                            p.PolicyNumber = resp.PolicyNumber;
                            p.PolicyId = resp.PolicyId;
                        }
                    }
                    mCustomer.WebserviceErrorMsg = resp.Error;
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                try
                {
                    if (pc.State == CommunicationState.Faulted)
                        pc.Abort();
                    else if (pc.State == CommunicationState.Opened)
                        pc.Close();
                }
                catch { }
            }
        }