import { type ListFrontEndInterface } from '../../CommonType'

export interface PartnershiplListDataTypeInterface
    extends PartnershipFormDataInterface {
    key: React.Key
}

export interface PartnershipFormDataInterface {
    partnershipId: string
    name: string
    contactName: string
    tradingName: string
    partnershipUTR: string
    clientNumber: string
    activestatus: string
    serviceIds: string
    mobilenumber: string
    emailAddress: string
    alternativeEmailAddress: string
    defaultUser: string
    defaultAssigneeUser: string
}

export interface PartnershipListStateInterface {
    partnershipList: PartnershiplListDataTypeInterface[]
    partnershipListCount: number
    serviceId: number
}

export interface PartnershipPayloadInteface {
    data: PartnershipFormDataInterface[]
    noOfRecords: number
}

export interface PartnershipListInterface {
    partnershipList: PartnershiplListDataTypeInterface[]
    partnershipListCount: number
    selectedCategoryId: number
    selectedServiceId: number
}

export interface PartnershipExpandViewInterface {
    PartnershipData: PartnershiplListDataTypeInterface
}
export interface PartnershipChatStateInterface {
    userList: ListFrontEndInterface[]
}
export interface PartnershipChatProps extends PartnershipChatStateInterface {
    partnershipId: number
    closeModel: () => void
}
export interface PartnershipChatInterface {
    partnershipId: string
    ReferernceId: number
    Description: string
    userIds: number[]
    BusinessTypeId: number
    IsClientCommunication: number
}
export interface PartnershipFormInterface {
    clientDropDownList: ListFrontEndInterface[]
    categoryDropDownList: ListFrontEndInterface[]
    countryList: ListFrontEndInterface[]
}
export interface PartnershipNewStateInterface {
    clientDropDownList: ListFrontEndInterface[]
}

export interface PartnershipCreateTaskStateInterface {
    serviceDropDownList: ListFrontEndInterface[]
    userList: ListFrontEndInterface[]
    priorityDropDownList: ListFrontEndInterface[]
}

export interface PartnershipCreateTaskInterface {
    serviceDropDownList: ListFrontEndInterface[]
    userList: ListFrontEndInterface[]
    priorityDropDownList: ListFrontEndInterface[]
    onClose: () => void
}
export interface PartneshipData {
    businessTradingName: string
    contactName: string
    clientnumber: string
    clientType: string
}

export interface PartneshipTaps {
    partnershipInitialDetails?: {
        partnershipId?: number
        clientNumber?: number
        clientCategoryName?: string
        tradingName?: string
        dateOfTermSigned?: string
        partnershipUTR?: string
        clientCategoryId?: number
    }
    businessAddress?: {
        busaddress1?: string
        busaddress2?: string
        bustown?: string
        buscountry?: string
        buspostcode?: string
    }
    correspondanceAddress?: {
        corraddress1?: string
        corraddress2?: string
        corrtown?: string
        corrcountry?: string
        corrpostcode?: string
    }
}
export interface PartneshipInitialDetailsInterface {
    categoryDropDownList: ListFrontEndInterface[]
    partneshipTaps: PartneshipTaps
    // onDateChange: (dateString: string) => void
    onCategorySelect: (id: number) => void
}

export interface PartneshipHomeFormDataInterface {
    tradingName: string
    corrpostcode: string
    corrcountry: string
    corrtown: string
    corraddress2: string
    corraddress1: string
    buspostcode: string
    buscountry: string
    bustown: string
    busaddress2: string
    busaddress1: string
    partnershipId: number
    partnershipUTR: string
    dateOfTermSigned: string
    clientNumber: number
    clientCategoryId: number
    regaddress1: string
    regaddress2: string
    regtown: string
    regcountry: string
    regpostcode: string
    clientCategoryName: string
    date: string
    DateofIncorporation: string
}

export interface PartneshipHomeApi {
    partnershipId: number
    clientCategoryId: number
    clientNumber: string
    tradingName: string
    partnershipUTR: string
    busAddressOne: string
    busAddressTwo: string
    busTown: string
    busCountry: string
    busPostCode: string
    corrAddressOne: string
    corrAddressTwo: string
    corrTown: string
    corrCountry: string
    corrPostCode: string
    isActive: string
    isDelete: string
}

export interface HomeStateProps {
    categoryDropDownList: ListFrontEndInterface[]
    countryList: ListFrontEndInterface[]
    partnershipTaps: PartneshipTaps
}

export interface initialState {
    categoryDropDownList: ListFrontEndInterface[]
}

export interface PartneshipBussinessAddress {
    countryList: ListFrontEndInterface[]
    partnershipTaps: PartneshipTaps
    isEditing?: boolean
    toggleEditing?: () => void
    onDateChange: (country: string) => void
}

export interface PartneshipBussinessStateProps {
    countryList: ListFrontEndInterface[]
    partnershipTaps: PartneshipTaps
}

export interface PartneshipHomeProps {
    categoryDropDownList: ListFrontEndInterface[]
    countryList: ListFrontEndInterface[]
    partnershipTaps: PartneshipTaps
    partnershipId: number
    selectedCategoryId?: number
}

export interface PartneshipRegisterAddress {
    countryList: ListFrontEndInterface[]
    partnershipTaps?: PartneshipTaps
    isEditing?: boolean
    toggleEditing?: () => void
    onDateChange?: (country: string) => void
    edit: boolean
    toggleCorrBussEditing: () => void
}

export interface PartneshipSupplierDetailsFormData {
    supplierId: number
    supplierName: string
    clientCompanySupplierId: number
    companyType: number
    referenceId: number
    userName: string
    password: string
    consumerNo: string
    url: string
    status: string
}
export interface PartneshipSupplierDetailsFormSaveData {
    supplierId: number
    clientCompanySupplierId: number
    companyType: number
    referenceId: number
    userName: string
    password: string
    consumerNo: string
    url: string
    status: string
}
export interface PartneshipSupplierForm {
    partnershipTaps: any
    partnershipId: number
}
export interface ContactInfoData {
    contactpersonid: number
    registerid: number
    registertype: string
    title: string
    firstname: string
    middlename: string
    surname: string
    preferredname: string
    mobilenumber: string
    homenumber: string
    worknumber: string
    emailaddress: string
    altemailaddress: string
    preferredlanguage: number
    languageName: string
}

export interface ContactInfoDataTabs {
    partnershipTaps: ContactInfoData
    partnershipId: number
}

export interface ContactInfoOfficerDatas {
    partnershipTaps: ContactInfoData
}

export interface ContactEditFormInterface {
    editData: ContactInfoData
    partnershipId: number
    onSave: (data: ContactInfoData) => void
}
export interface ClientVerificationData {
    clientCompanyVerificationId: number
    clientVerificationId: number
    CompanyType: number
    clientVerificationName: string
    status: string
    referenceId: number
}

export interface ClientControlData {
    clientControlId: number
    clientCompanyControlId: number
    keyName: string
    keyDataType: string
    description: string
    value: string
}

export interface ClientCompanyActiveService {
    clientCompanyActiveServiceId: number
    companyType: number
    referenceId: number
    serviceId: number
    status: string
    serviceAmount: number
    serviceAmountTotal: number
    subscriptionType: number
    displayType: number
    includeVat: number
    vatAmount: number
    otherServiceDescription: string
}

export interface ClientCompanyControlData {
    clientControlId: number
    clientCompanyControlId: number
    value: string
    companyType: number
    referenceId: number
}

export interface ClientCompanyVerification {
    clientCompanyVerificationId: number
    clientVerificationId: number
    companyType: number
    referenceId: number
    status: string
}

export interface ComplainceDefaultinterface {
    clientCompanyServiceViewList: ServiceData[]
    clientCompanyVerificationViewList: ClientVerificationData[]
    clientControlViewList: ClientControlData[]
}

export interface ComplaincepropView {
    partnershipTaps: ComplainceDefaultinterface
}

export interface Complainceprop {
    partnershipTaps: ComplainceDefaultinterface
    partnershipId: number
    onbordingId: number
}

export interface GenerateEmails {
    clientEmailId: number
    templateId: number
    serviceProcessId: number
    companyTypeId: number
    referenceId: number
    serviceActionId: number
    serviceActionStepId: number
    fromAddress: string
    toAddress: string
    ccAddress: string
    bccAddress: string
    subject: string
    description: string
    IykonsBCCAddress: string
}

export interface ServiceData {
    serviceId: number
    serviceReferenceId: number
    serviceName: string
    status: string
    serviceAmount: number
    serviceAmountTotal: number
    subscriptionType: number
    displayType: number
    includeVat: number
    vatAmount: number
    subscriptionTypeTotal: number
}
export interface PartnershipServiceTapData {
    serviceId: number
    serviceReferenceId: number
    serviceName: string
    status: string
    serviceAmount: number
    serviceAmountTotal: number
    subscriptionType: number
    displayType: number
    includeVat: number
    vatAmount: number
    subscriptionTypeTotal: number
}
export interface PartnershipDocumentSave {
    companyAttachmentId: number
    companyTypeId: number
    referenceId: number
    referenceId2: number
    documentBaseId: number
    documentBaseName: string
    attachmentPath: string
    partnershipId: number
    type: string
    ppExpiryDate: string
    dlExpiryDate: string
    prExpiryDate: string
}

export interface PartnerDocumentList {
    companyAttachmentId: number
    title: string
    description: string
    documentBaseId: number
    documentType: number
    documentBaseIcon: string
    attachmentPath: string
    lastUpdateDate: string
    lastUpdateUser: string
    ppExpiryDate: string
    dlExpiryDate: string
    prExpiryDate: string
}

export interface CompanyAttachment {
    companyAttachmentId: number
    title: string
    description: string
    generalOrOfficerType: string
    documentBaseId: number
    documentBaseIcon: string
    attachmentPath: string
    lastUpdateDate: string
    lastUpdateUser: string
    documentType: number
}

export interface PartnershipDocumentView {
    partnershipTaps: PartnershipDocuentData
    documenttypeList: ListFrontEndInterface[]
}

export interface PartnershipDocuentData {
    generalDocumentList: CompanyAttachment[]
    officerDocumentHeaderList: OfficerData[]
    serviceDocumentList: ServiceDocument[]
}

export interface OfficerData {
    officerPersonOrCorporateType: string
    officerPersonOrCorporateId: number
    documentOwner: string
    documentType: number
    officerDocumentList: PartnerDocumentList[]
}

export interface ServiceDocument {
    companyAttachmentId: number
    title: string
    description: string
    serviceName: string
    documentBaseId: number
    documentBaseIcon: string
    attachmentPath: string
    lastUpdateDate: string
    lastUpdateUser: string
    documentType: number
    serviceCurrentStatus: string
}

export interface PartnershipDoucmentOfficerExpandView {
    expandData: PartnerDocumentList[]
}
export interface PartnershipConfigurationInterface {
    registeredClientPartnershipConfiguration: any
    partnershipId: number
}

export interface PartnershipConfigurationInviteClientInterface {
    paymentOptionDropDownList: ListFrontEndInterface[]
    cancelGoCardlessModal: CallableFunction
    partnershipId: number
}

export interface DirectDebitCustomerInterface {
    CustomerId: number
    ApplicationId: number
    ReferenceId: number
    ClientCategoryId: number
    BusinessTypeId: number
    CompanyName: string
    GivenName: string
    FamilyName: string
    Email: string
    AddressLine1: string
    AddressLine2: string
    AddressLine3: string
    City: string
    PostalCode: string
    CountryCode: string
    Region: string
    Language: string
    PhoneNumber: string
    DanishIdentityNumber: string
    SwedishIdentityNumber: string
    Description: string
    RegisterToken: string
    PaymentOptionId: number
}
export interface PartnerTapData {
    partnerId: number
    partnershipId: number
    individualId: number
    tagIndividualId: number
    individualClientNumber: string
    title: string
    firstName: string
    middleName: string
    surName: string
    dateOfBirth: string
    partnerAddressOne: string
    partnerAddressTwo: string
    partnerTown: string
    partnerCountry: string
    partnerPostCode: string
    mobileNumber: string
    homeNumber: string
    workNumber: string
    emailAddress: string
    alternativeEmailAddress: string
    individualUTR: string
    niNumber: string
    isActive: string
    isDelete: string
}

export interface PartnersDataInterface {
    countryList: ListFrontEndInterface[]
    partnershipTaps: PartnerTapData[]
    InduvidualMemberList: ListFrontEndInterface[]
}

export interface PartnersDataFormInterface {
    countryList: ListFrontEndInterface[]
    partnershipTaps: PartnerTapData[]
    partnershipId: number
    InduvidualMemberList: ListFrontEndInterface[]
}
export interface PartnerTogilleAddress {
    addressLineOne: string
    addressLineTwo: string
    town: string
    country: string
    postCode: string
}
export interface PartnershipServiceMainInterface {
    partnershipTaps: PartnershipServiceTapData[]
    partnershipId: number
}
export interface ParnersgipStateInteface {
    partnershipTaps: PartnershipServiceTapData[]
}

export interface PayeServiceDataSS {
    payeId: number
    companyType: number
    referenceId: number
    payeReference: string
    accountOfficeReference: string
    payrollFrequency: string
    schemeStartDate: string
    addressLineOne: string
    addressLineTwo: string
    town: string
    country: string
    postCode: string
    gateWayId: string
    password: string
    status: string
    csiFiling: number
    payeProcess: number
    filingMethod: number
    payeProcessName: string
    filingMethodName: string
    hmrcPaymentFrequency: number
    hmrcPaymentFrequencyName: string
}

export interface pensionViewPageData {
    pensionId: number
    companyType: number
    referenceId: number
    letterCode: string
    stagingDate: string
    pensionProvider: string
    hmrcDate: string
    nestEmployerId: string
    nestUserName: string
    nestPassword: string
    employerPW: string
    delegateId: string
    primaryDelegateUserId: string
    primaryDelegatePassword: string
    primaryDelegatePIN: string
    status: string
}
export interface PayeViewPagePropData {
    PayeServiceData: any
    datareFetch: () => void
    partnershipId: number
}
export interface PayeEditpageProps {
    PayeeditData: PayeServiceDataSS
    handleChildFormSave: () => void
    partnershipId: number
    countryList: ListFrontEndInterface[]
}

export interface VatData {
    vatId: number
    companyType: number
    referenceId: number
    vatNumber: string
    vatScheme: string
    vatRegistrationDate: string
    addressLineOne: string
    addressLineTwo: string
    town: string
    country: string
    postCode: string
    effectiveDate: string
    endingDate: string
    dataInput: string
    status: string
    hmrcGatewayId: string
    hmrcPassword: string
    vatFrequency: number
    vatFrequencyName: string
}
export interface VatViewPagePropData {
    VatServiceData: any
    partnershipId: number
    datareFetch: () => void
}

export interface vatFormInterface {
    vateditdata: VatData
    partnershipId: number
    countryList: ListFrontEndInterface[]
    handleChildFormSave: () => void
}

export interface VatpageStateProp {
    countryList: ListFrontEndInterface[]
}

export interface AnnualAccountData {
    annualAccountId: number
    companyType: number
    referenceId: number
    fromDate: string
    toDate: string
    deadlineDate: string
    status: string
}

export interface PensionData {
    pensionId: number
    companyType: number
    referenceId: number
    letterCode: string
    stagingDate: string
    pensionProvider: string
    hmrcDate: string
    nestEmployerId: string
    nestUserName: string
    nestPassword: string
    employerPW: string
    delegateId: string
    primaryDelegateUserId: string
    primaryDelegatePassword: string
    primaryDelegatePIN: string
    status: string
}
export interface PensionEditFormprops {
    pensioneditData: PensionData
    partnershipId: number
    handleChildFormSave: () => void
}
export interface PensionViewPagePropData {
    PensionServiceData: any
    partnershipId: number
    datareFetch: () => void
}

export interface AnnualEditData {
    editData: AnnualAccountData
    partnershipId: number
    handleChildFormSave: () => void
}

export interface TogilleAddress {
    addressLineOne: string
    addressLineTwo: string
    town: string
    country: string
    postCode: string
}

export interface IndividualData {
    individualId: number
    clientCategoryId: number
    clientNumber: string
    typeOfSelfEmployment: string
    tradingName: string
    title: string
    firstName: string
    middleName: string
    surName: string
    dateOfBirth: string
    addressOne: string
    addressTwo: string
    town: string
    country: string
    postCode: string
    mobileNumber: string
    workNumber: string
    homeNumber: string
    emailAddress: string
    alternativeEmailAddress: string
    individualUTR: string
    niNumber: string
    dueDate: string
    isActive: boolean
    isDelete: boolean
}
