mutation createTaxForm(
  $formType: TaxFormType!
  $firstName: String!
  $lastName: String!
  $mInitial: String
  $oLastName: String
  $dob: Timestamp
  $socialSN: Int!
  $email: String
  $phone: String
  $address: String!
  $placeId: String
  $latitude: Float
  $longitude: Float
  $city: String
  $apt: String
  $state: String
  $street: String
  $country: String
  $zipCode: String

  # W-4
  $marital: MaritalStatus
  $multipleJob: Boolean
  $childrens: Int
  $otherDeps: Int
  $totalCredits: Float
  $otherInconme: Float
  $deductions: Float
  $extraWithholding: Float

  # I-9
  $citizen: CitizenshipStatus
  $uscis: String
  $passportNumber: String
  $countryIssue: String
  $prepartorOrTranslator: Boolean

  # both
  $signature: String
  $date: Timestamp

  $status: TaxFormStatus!
  $staffId: UUID!
  $createdBy: String
) @auth(level: USER) {
  taxForm_insert(
    data: {
      formType: $formType
      firstName: $firstName
      lastName: $lastName
      mInitial: $mInitial
      oLastName: $oLastName
      dob: $dob
      socialSN: $socialSN
      email: $email
      phone: $phone
      address: $address
      placeId: $placeId
      latitude: $latitude
      longitude: $longitude
      city: $city
      apt: $apt
      state: $state
      street: $street
      country: $country
      zipCode: $zipCode

      marital: $marital
      multipleJob: $multipleJob
      childrens: $childrens
      otherDeps: $otherDeps
      totalCredits: $totalCredits
      otherInconme: $otherInconme
      deductions: $deductions
      extraWithholding: $extraWithholding

      citizen: $citizen
      uscis: $uscis
      passportNumber: $passportNumber
      countryIssue: $countryIssue
      prepartorOrTranslator: $prepartorOrTranslator

      signature: $signature
      date: $date

      status: $status
      staffId: $staffId
      createdBy: $createdBy
    }
  )
}

mutation updateTaxForm(
  $id: UUID!

  $formType: TaxFormType
  $firstName: String
  $lastName: String
  $mInitial: String
  $oLastName: String
  $dob: Timestamp
  $socialSN: Int
  $email: String
  $phone: String
  $address: String
  $placeId: String
  $latitude: Float
  $longitude: Float
  $city: String
  $apt: String
  $state: String
  $street: String
  $country: String
  $zipCode: String

  # W-4
  $marital: MaritalStatus
  $multipleJob: Boolean
  $childrens: Int
  $otherDeps: Int
  $totalCredits: Float
  $otherInconme: Float
  $deductions: Float
  $extraWithholding: Float

  # I-9
  $citizen: CitizenshipStatus
  $uscis: String
  $passportNumber: String
  $countryIssue: String
  $prepartorOrTranslator: Boolean

  # both
  $signature: String
  $date: Timestamp

  $status: TaxFormStatus

) @auth(level: USER) {
  taxForm_update(
    id: $id
    data: {
      formType: $formType
      firstName: $firstName
      lastName: $lastName
      mInitial: $mInitial
      oLastName: $oLastName
      dob: $dob
      socialSN: $socialSN
      email: $email
      phone: $phone
      address: $address
      placeId: $placeId
      latitude: $latitude
      longitude: $longitude
      city: $city
      apt: $apt
      state: $state
      street: $street
      country: $country
      zipCode: $zipCode

      marital: $marital
      multipleJob: $multipleJob
      childrens: $childrens
      otherDeps: $otherDeps
      totalCredits: $totalCredits
      otherInconme: $otherInconme
      deductions: $deductions
      extraWithholding: $extraWithholding

      citizen: $citizen
      uscis: $uscis
      passportNumber: $passportNumber
      countryIssue: $countryIssue
      prepartorOrTranslator: $prepartorOrTranslator

      signature: $signature
      date: $date

      status: $status
    }
  )
}

mutation deleteTaxForm($id: UUID!) @auth(level: USER) {
  taxForm_delete(id: $id)
}
