import { Injectable } from '@angular/core'; import { ISubscriptionRequest } from '../data/api/subscriptionrequest.interface'; import { IApplication } from '../data/application.interface'; import { FormFieldConstants } from '../data/api/application/formfieldconstants'; import { Constants } from '../../common/constants'; @Injectable() export class SubscriptionRequestService { ffConstants = new FormFieldConstants(); constants = new Constants(); getRequest(application: IApplication, signupTypeId: number, formTemplateId: number, paymentType: string, clientSubscriberId: string): ISubscriptionRequest { let request: ISubscriptionRequest = { FormData: { FormTemplateID: formTemplateId, SignupTypeID: signupTypeId, FormFields: [ { Name: this.ffConstants.MembershipType, Value: application.subscriptionInvoiceId }, { Name: this.ffConstants.FrequencyTypeID, Value: application.frequencyId }, { Name: this.ffConstants.ApplicantAddressType, Value: application.addressType ? application.addressType.trim() : application.addressType }, { Name: this.ffConstants.ApplicantSuffix, Value: application.suffix }, { Name: this.ffConstants.ApplicantFirstName, Value: application.firstName ? application.firstName.trim() : application.firstName }, { Name: this.ffConstants.ApplicantMiddleName, Value: application.middleName ? application.middleName.trim() : application.middleName }, { Name: this.ffConstants.ApplicantLastName, Value: application.lastName ? application.lastName.trim() : application.lastName }, { Name: this.ffConstants.ApplicantTitleId, Value: application.title }, { Name: this.ffConstants.ApplicantTitleOther, Value: application.titleOther }, { Name: this.ffConstants.ApplicantEmail, Value: application.email ? application.email.trim() : application.email }, { Name: this.ffConstants.ApplicantFax, Value: application.fax ? application.fax.trim() : application.fax }, { Name: this.ffConstants.ApplicantPhone, Value: application.phone ? application.phone.trim() : application.phone}, { Name: this.ffConstants.SponsoringMemberName, Value: application.sponsoringName ? application.sponsoringName.trim() : application.sponsoringName }, { Name: this.ffConstants.SponsoringMemberPIN, Value: application.sponsoringPin ? application.sponsoringPin.trim() : application.sponsoringPin }, { Name: this.ffConstants.SponsoringMemberEmail, Value: application.sponsoringEmail ? application.sponsoringEmail.trim() : application.sponsoringEmail }, { Name: this.ffConstants.ApplicantAddress1, Value: application.applicant_address1 ? application.applicant_address1.trim() : application.applicant_address1}, { Name: this.ffConstants.ApplicantAddress2, Value: application.applicant_address2 ? application.applicant_address2.trim() : application.applicant_address2}, { Name: this.ffConstants.ApplicantAddressCountry, Value: application.applicant_country }, { Name: this.ffConstants.ApplicantAddressCity, Value: application.applicant_city ? application.applicant_city.trim() : application.applicant_city}, { Name: this.ffConstants.ApplicantAddressState, Value: application.applicant_state ? application.applicant_state.trim() : application.applicant_state }, { Name: this.ffConstants.ApplicantAddressPostalCode, Value: application.applicant_postalCode ? application.applicant_postalCode.trim() : application.applicant_postalCode}, { Name: this.ffConstants.ApplicantCompanyName, Value: application.companyName ? application.companyName.trim() : application.companyName }, { Name: this.ffConstants.ApplicantCompanyWebsite, Value: application.companyWebsite ? application.companyWebsite.trim() : application.companyWebsite}, { Name: this.ffConstants.ApplicantCompanyAddress1, Value: application.company_address1 ? application.company_address1.trim() : application.company_address1}, { Name: this.ffConstants.ApplicantCompanyAddress2, Value: application.company_address2 ? application.company_address2.trim() : application.company_address2 }, { Name: this.ffConstants.ApplicantCompanyAddressCity, Value: application.company_city ? application.company_city.trim() : application.company_city }, { Name: this.ffConstants.ApplicantCompanyAddressState, Value: application.company_state ? application.company_state.trim() : application.company_state}, { Name: this.ffConstants.ApplicantCompanyAddressPostalCode, Value: application.company_postalCode ? application.company_postalCode : application.company_postalCode }, { Name: this.ffConstants.ApplicantCompanyAddressCountry, Value: application.company_country ? application.company_country.trim() : application.company_country }, { Name: this.ffConstants.BusinessPrimaryActivity, Value: application.primaryActivity }, { Name: this.ffConstants.BusinessSecondaryActivity1, Value: application.secondaryActivity1 }, { Name: this.ffConstants.BusinessSecondaryActivity2, Value: application.secondaryActivity2 }, { Name: this.ffConstants.BusinessPrimaryActivityOther, Value: application.primaryActivity_other }, { Name: this.ffConstants.BusinessSecondaryActivity1Other, Value: application.secondaryActivity1_other }, { Name: this.ffConstants.BusinessSecondaryActivity2Other, Value: application.secondaryActivity2_other }, { Name: this.ffConstants.RenewalAge, Value: application.demographic_age }, //{ Name: this.constants.RenewalRace, Value: application.demographic_race }, { Name: this.ffConstants.Demographic_ConstructionEmployees, Value: application.demographic_constructionEmployees }, { Name: this.ffConstants.Demographic_NonConstructionEmployees, Value: application.demographic_nonConstructionEmployees }, { Name: this.ffConstants.Demographic_DollarVolume, Value: application.demographic_dollarVolume }, { Name: this.ffConstants.Demographic_SingleFamilyUnits, Value: application.demographic_singleFamilyUnits }, { Name: this.ffConstants.RenewalEducation, Value: application.demographic_education }, { Name: this.ffConstants.RenewalEthnicity, Value: application.demographic_ethnicity }, { Name: this.ffConstants.RenewalGender, Value: application.demographic_gender }, { Name: this.ffConstants.Demographic_MultiFamilyUnits, Value: application.demographic_multiFamilyUnits } ] }, AchPaymentInfo: { AccountHolderName: application.paymentMethod.bank.accountHolderName, AccountNumber: application.paymentMethod.bank.accountNo, AccountType: application.paymentMethod.bank.accountType, CheckNumber: application.paymentMethod.bank.checkNumber, RoutingNumber: application.paymentMethod.bank.routingNo }, CcPaymentInfo: { BillingAddress: (application.paymentMethod.card.cardholderBillingAddress1 ? application.paymentMethod.card.cardholderBillingAddress1.trim() : application.paymentMethod.card.cardholderBillingAddress1) + " " + (application.paymentMethod.card.cardholderBillingAddress2 ? application.paymentMethod.card.cardholderBillingAddress2.trim() : application.paymentMethod.card.cardholderBillingAddress2), CardholderName: application.paymentMethod.card.cardholderName ? application.paymentMethod.card.cardholderName.trim() : application.paymentMethod.card.cardholderName, CardNumber: application.paymentMethod.card.cardNo ? application.paymentMethod.card.cardNo.trim() : application.paymentMethod.card.cardNo, City: application.paymentMethod.card.cardholderCity ? application.paymentMethod.card.cardholderCity.trim() : application.paymentMethod.card.cardholderCity, Country: application.paymentMethod.card.cardholderCountry ? application.paymentMethod.card.cardholderCountry.trim() : application.paymentMethod.card.cardholderCountry, ExpMonth: application.paymentMethod.card.expiryMonth ? application.paymentMethod.card.expiryMonth.trim() : application.paymentMethod.card.expiryMonth, ExpYear: application.paymentMethod.card.expiryYear ? application.paymentMethod.card.expiryYear.trim() : application.paymentMethod.card.expiryYear, PostalCode: application.paymentMethod.card.cardholderPostalCode ? application.paymentMethod.card.cardholderPostalCode.trim() : application.paymentMethod.card.cardholderPostalCode, StateProvince: application.paymentMethod.card.cardholderState ? application.paymentMethod.card.cardholderState.trim() : application.paymentMethod.card.cardholderState, Cvv: application.paymentMethod.card.securityCode ? application.paymentMethod.card.securityCode.trim() : application.paymentMethod.card.securityCode }, SubscriptionInfo: { AutoRenew: application.autoRenew, FrequencyID: application.frequencyId, HasAgreedToTerms: true, SubscriptionInvoiceID: application.subscriptionInvoiceId, ClientSubscriberId: (signupTypeId == 2) ? clientSubscriberId : '' }, VerificationInfo: { Provider: 'ReCaptcha', RemoteIP: '', VerificationCode: application.reCaptcha } } if (paymentType === this.constants.PaymentMethodType.Card) { request.AchPaymentInfo = null; } if (paymentType === this.constants.PaymentMethodType.Bank) { request.CcPaymentInfo = null; } return request; } }