private def writeSubmissionsPage()

in formstack-baton-requests/src/main/scala/com/gu/identity/formstackbatonrequests/services/DynamoUpdateService.scala [59:105]


  private def writeSubmissionsPage(
                                    form: Form,
                                    minTimeUTC: LocalDateTime,
                                    maxTimeUTC: Option[LocalDateTime],
                                    token: FormstackAccountToken
                                  )(
                                    submissionPage: Int = 1
                                  ): Either[Throwable, Int] = {
    logger.info(
      s"(Form ${form.id} / SubmissionPage $submissionPage): Requesting submissionPage"
    )

    for {
      response <- formstackClient.formSubmissionsForGivenPage(
        page = submissionPage,
        formId = form.id,
        minTimeUTC = minTimeUTC,
        maxTimeUTC = maxTimeUTC,
        encryptionPassword = config.encryptionPassword,
        accountToken = token
      ).left.flatMap(skipSafeErrors)

      _ = logger.info(
        s"(Form ${form.id} / SubmissionPage $submissionPage): Received submissionPage of ${response.pages} pages"
      )

      submissionsIdsWithEmails = submissionsWithEmailAndAccount(
        submissions = response.submissions,
        accountNumber = token.account
      )

      _ = logger.info(
        s"(Form ${form.id} / SubmissionPage $submissionPage): Writing ${submissionsIdsWithEmails.length} submission id(s) and emails to Dynamo"
      )

      _ <- dynamoClient.writeSubmissions(
        submissionIdsAndEmails = submissionsIdsWithEmails,
        salt = config.bcryptSalt,
        submissionsTableName = config.submissionTableName
      ).flatMap(failUnprocessedItems)

      _ = logger.info(
        s"(Form ${form.id} / SubmissionPage $submissionPage): Wrote ${submissionsIdsWithEmails.length} submission id(s) and emails to Dynamo"
      )

    } yield response.pages
  }