# Gerencie os turnos dos operadores

Este guia mostra como configurar a quantidade de turnos em um terminal, avançar para o próximo turno e consultar quantos turnos estão configurados, usando o deeplink Shift.

## Como funciona

As três operações compartilham a URI `getnet://payment/v1/shift` e são selecionadas pelo parâmetro `shiftOperation`:

| `shiftOperation` | Ação | Observações |
| :--- | :--- | :--- |
| `"1"` | Configura a quantidade de turnos disponíveis | Informe a quantidade em `numberOfShifts`. |
| `"2"` | Troca para o próximo turno | Nenhum parâmetro extra é necessário. |
| `"3"` | Recupera a quantidade atual de turnos | A resposta inclui `totalOfShifts`. |

O terminal adapta o fluxo ao que você envia. Quando um valor obrigatório já está na requisição, o terminal ignora a tela de entrada correspondente. Quando ele falta, o terminal pede o valor ao operador.

## Antes de começar

O Getnet Payment App precisa estar instalado no terminal e sua aplicação precisa conseguir iniciá-lo, como descrito em [Arquitetura e fluxo](/pt/app2app/first-steps-a2a/architecture-flow).

## Passo 1: envie o Intent de turno

Monte o Intent com a operação que você precisa. O exemplo abaixo configura dois turnos e assume a responsabilidade de impressão:

```kotlin
private val REQUEST_CODE = 1001

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://payment/v1/shift"))
    intent.putExtra("shiftOperation", "1")
    intent.putExtra("numberOfShifts", "2")
    intent.putExtra("allowPrintCurrentTransaction", "false")
    startActivityForResult(intent, REQUEST_CODE)
}
```

O parâmetro opcional `skipConfirmation` oculta a tela de confirmação de troca de turno. O parâmetro `allowPrintCurrentTransaction` segue as regras em [Responsabilidade de impressão](/pt/app2app/core-concept-a2a/printing-responsibility).

## Passo 2: trate a resposta

Leia `result` e `resultDetails` no Intent retornado. Para `shiftOperation` `"3"`, leia também `totalOfShifts`:

```kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        val extras = data?.extras
        val result = extras?.getString("result")
        val resultDetails = extras?.getString("resultDetails")
        val totalOfShifts = extras?.getString("totalOfShifts")
    }
}
```

Uma configuração ou troca bem-sucedida retorna `result` `0` com `resultDetails` `APPROVED`. A operação de consulta retorna o mesmo par mais a quantidade de turnos:

```json
{
  "result": 0,
  "resultDetails": "APPROVED",
  "totalOfShifts": "3"
}
```

`totalOfShifts` só aparece quando `shiftOperation` é `"3"`.

## Próximos passos

* [Referência de parâmetros do deeplink](/pt/app2app/reference-a2a/deeplink-parameters) - todos os parâmetros de requisição e resposta do deeplink Shift.
* [Códigos de resultado e estruturas de dados](/pt/app2app/reference-a2a/result-codes-data-structure) - interprete o valor `result` retornado pela operação.