import { PartialType } from '@nestjs/mapped-types';

  export class CreateMemberFamilyDto {
    name!: string;
    nameEn?: string;
    relation!: string;
    dob?: string;
    dobBs?: string;
    citizenshipNo?: string;
    contactNumber?: string;
    address?: string;
    isNominee?: boolean;
    nomineeSharePercent?: string;
    photoUrl?: string;
    order?: number;
  }

  export class CreateMemberDto {
    officeId?: string;
    memberId?: string;
    subscriptionId?: string;
    memberType?: string;
    subscriptionDate?: string;
    subscriptionDateBs?: string;
    name?: string;
    nameEn?: string;
    gender?: string;
    dob?: string;
    dobBs?: string;
    age?: string;
    contactNumber?: string;
    email?: string;
    eduQualification?: string;
    casteCode?: string;
    maritalStatus?: string;
    occupation?: string;
    occupationLocation?: string;
    occupationTitle?: string;
    nationality?: string;
    religion?: string;
    // Permanent address
    pProvince?: string;
    pDistrict?: string;
    pLocalgovt?: string;
    pWard?: string;
    pTole?: string;
    pHouseNo?: string;
    // Temporary address
    tProvince?: string;
    tDistrict?: string;
    tLocalgovt?: string;
    tWard?: string;
    tTole?: string;
    tHouseNo?: string;
    // ID documents
    citizenshipNumber?: string;
    citizenshipIssueDate?: string;
    citizenshipIssueDateBs?: string;
    citizenshipIssueDistrict?: string;
    citizenshipFormerAddress?: string;
    panNo?: string;
    panIssuePlace?: string;
    panIssueDate?: string;
    panIssueDateBs?: string;
    nationalIdNo?: string;
    nationalIdIssuePlace?: string;
    nationalIdIssueDate?: string;
    nationalIdIssueDateBs?: string;
    votersIdCardNo?: string;
    pollingStation?: string;
    drivingLicenseNo?: string;
    drivingLicenseIssuePlace?: string;
    drivingLicenseIssueDate?: string;
    drivingLicenseIssueDateBs?: string;
    passportNo?: string;
    passportIssuePlace?: string;
    passportIssueDate?: string;
    passportIssueDateBs?: string;
    // Membership
    shareAmount?: string;
    memberPurpose?: string;
    // Emergency contact
    detailsNearestPersonName?: string;
    detailsNearestPersonRelation?: string;
    // AML
    politicallyExposed?: string;
    anyCrimeOnPast?: string;
    riskCategory?: string;
    // Business
    businessVatNumber?: string;
    businessEstimateAnnualIncome?: string;
    businessRegisterOffice?: string;
    businessRegisterNumber?: string;
    businessPanNumber?: string;
    businessRegisterDateBs?: string;
    businessRegistrationType?: string;
    businessNature?: string;
    // Financial
    estimatedHoldingsAmount?: string;
    estimatedAnnualAccountDebitCredit?: string;
    estimatedAnnualTurnover?: string;
    amountToBeDepositedAnnually?: string;
    amountOfDebtOwedInstitution?: string;
    // Family names
    grandfatherName?: string;
    grandmotherName?: string;
    fatherName?: string;
    motherName?: string;
    spouseName?: string;
    fatherInLawName?: string;
    motherInLawName?: string;
    // Media
    photoUrl?: string;
    signatureUrl?: string;
    // Document images (GCS paths)
    citizenshipFront?: string;
    citizenshipBack?: string;
    passportImage?: string;
    panCardPhoto?: string;
    nidCardPhoto?: string;
    voterIdCard?: string;
    marriageRegistrationCertificate?: string;
    basaiSaraiCertificate?: string;
    businessRegistrationCertificate?: string;
    landlordProof?: string;
    othersImage?: string;
    // Share certificate
    shareCertificateNumber?: string;
    // Business extended
    businessEstimatedCost?: string;
    businessProprietor?: string;
    businessProprietorRelation?: string;
    // Landlord
    landlordsName?: string;
    landlordsContactNo?: string;
    localRecommendations?: string;
    // Generation
    secondGeneration?: string;
    secondGenerationName?: string;
    thirdGeneration?: string;
    thirdGenerationName?: string;
    // Approval
    memberStatus?: string;
    memberRelationPrakar?: string;
    isPreMember?: string;
    boardMeetingDate?: string;
    boardMeetingDateBs?: string;
    reviewedBy?: string;
    approvedBy?: string;
    // Family members / nominees
    family?: CreateMemberFamilyDto[];
    status?: boolean;
  }

  export class UpdateMemberDto extends PartialType(CreateMemberDto) {}
