{
  "meta": {
    "options": {
      "linkedFile": "/views/base/criar-conta.ejs",
      "linkedForm": "criar_conta_form"
    },
    "$_POST": [
      {
        "type": "text",
        "fieldName": "nome_completo",
        "options": {
          "rules": {
            "core:required": {
              "param": "",
              "message": "Por favor, digite seu nome completo"
            }
          }
        },
        "name": "nome_completo"
      },
      {
        "type": "text",
        "fieldName": "cpf",
        "options": {
          "rules": {}
        },
        "name": "cpf"
      },
      {
        "type": "text",
        "fieldName": "email",
        "options": {
          "rules": {}
        },
        "name": "email"
      },
      {
        "type": "text",
        "fieldName": "telefone",
        "options": {
          "rules": {}
        },
        "name": "telefone"
      },
      {
        "type": "text",
        "fieldName": "placa",
        "name": "placa"
      },
      {
        "type": "text",
        "fieldName": "modelo_veiculo",
        "name": "modelo_veiculo"
      },
      {
        "type": "number",
        "fieldName": "ano_veiculo",
        "options": {
          "rules": {}
        },
        "name": "ano_veiculo"
      },
      {
        "type": "text",
        "fieldName": "cor_veiculo",
        "name": "cor_veiculo"
      },
      {
        "type": "text",
        "fieldName": "aceitar_termos",
        "options": {
          "rules": {}
        },
        "name": "aceitar_termos"
      },
      {
        "type": "text",
        "fieldName": "tipo_veiculo",
        "name": "tipo_veiculo"
      },
      {
        "type": "text",
        "name": "password"
      },
      {
        "type": "file",
        "fieldName": "foto",
        "options": {
          "rules": {}
        },
        "name": "foto",
        "sub": [
          {
            "type": "text",
            "name": "name"
          },
          {
            "type": "text",
            "name": "type"
          },
          {
            "type": "number",
            "name": "size"
          },
          {
            "type": "text",
            "name": "error"
          }
        ],
        "outputType": "file"
      }
    ]
  },
  "exec": {
    "steps": [
      {
        "name": "validate",
        "module": "validator",
        "action": "validate",
        "options": {
          "data": [
            {
              "name": "validar_cpf",
              "value": "{{$_POST.cpf}}",
              "rules": {
                "db:notexists": {
                  "param": {
                    "connection": "db",
                    "table": "colaboradores",
                    "column": "cpf_colaborador"
                  },
                  "message": "CPF Já cadastrado!"
                }
              },
              "fieldName": "cpf"
            }
          ]
        }
      },
      {
        "name": "validate_copy",
        "module": "validator",
        "action": "validate",
        "options": {
          "data": [
            {
              "name": "validate_veiculo",
              "value": "{{$_POST.placa}}",
              "rules": {
                "db:notexists": {
                  "param": {
                    "connection": "db",
                    "table": "veiculos_colaboradores",
                    "column": "placa_veiculo"
                  },
                  "message": "Veículo já cadastrado."
                }
              },
              "fieldName": "placa"
            }
          ]
        },
        "collapsed": true
      },
      {
        "name": "hash",
        "module": "crypto",
        "action": "passwordHash",
        "options": {
          "password": "{{$_POST.cpf}}",
          "algo": "argon2id"
        },
        "outputType": "text"
      },
      {
        "name": "upload",
        "module": "upload",
        "action": "upload",
        "options": {
          "fields": "{{$_POST.foto}}",
          "path": "/public/upload",
          "replaceSpace": true,
          "replaceDiacritics": true,
          "asciiOnly": true,
          "overwrite": true,
          "template": "{{$_POST.cpf}}.{ext}"
        },
        "meta": [
          {
            "name": "name",
            "type": "text"
          },
          {
            "name": "path",
            "type": "text"
          },
          {
            "name": "url",
            "type": "text"
          },
          {
            "name": "type",
            "type": "text"
          },
          {
            "name": "size",
            "type": "text"
          },
          {
            "name": "error",
            "type": "number"
          }
        ],
        "outputType": "file",
        "output": true
      },
      {
        "name": "image",
        "module": "image",
        "action": "load",
        "options": {
          "path": "{{upload.path}}"
        },
        "outputType": "object",
        "meta": [
          {
            "name": "width",
            "type": "number"
          },
          {
            "name": "height",
            "type": "number"
          }
        ]
      },
      {
        "name": "",
        "module": "image",
        "action": "crop",
        "options": {
          "instance": "image",
          "x": "center",
          "y": "middle",
          "width": 400,
          "height": 500
        }
      },
      {
        "name": "newImage",
        "module": "image",
        "action": "save",
        "options": {
          "instance": "image",
          "quality": 50,
          "format": "jpeg",
          "path": "/public/upload/perfil"
        },
        "output": true
      },
      {
        "name": "fileRemove",
        "module": "fs",
        "action": "remove",
        "options": {
          "path": "{{upload.path}}"
        },
        "outputType": "boolean"
      },
      {
        "name": "insert_colaborador",
        "module": "dbupdater",
        "action": "insert",
        "options": {
          "connection": "db",
          "sql": {
            "type": "insert",
            "values": [
              {
                "table": "colaboradores",
                "column": "nome_colaborador",
                "type": "text",
                "value": "{{$_POST.nome_completo}}"
              },
              {
                "table": "colaboradores",
                "column": "cpf_colaborador",
                "type": "text",
                "value": "{{$_POST.cpf}}"
              },
              {
                "table": "colaboradores",
                "column": "email",
                "type": "text",
                "value": "{{$_POST.email}}"
              },
              {
                "table": "colaboradores",
                "column": "telefone",
                "type": "text",
                "value": "{{$_POST.telefone}}"
              },
              {
                "table": "colaboradores",
                "column": "password",
                "type": "text",
                "value": "{{hash}}"
              },
              {
                "table": "colaboradores",
                "column": "imagem_perfil",
                "type": "text",
                "value": "{{newImage}}"
              }
            ],
            "table": "colaboradores",
            "returning": "id_colaborador",
            "query": "insert into \"colaboradores\" (\"cpf_colaborador\", \"email\", \"imagem_perfil\", \"nome_colaborador\", \"password\", \"telefone\") values (?, ?, ?, ?, ?, ?) returning \"id_colaborador\"",
            "params": [
              {
                "name": ":P1",
                "type": "expression",
                "value": "{{$_POST.nome_completo}}",
                "test": ""
              },
              {
                "name": ":P2",
                "type": "expression",
                "value": "{{$_POST.cpf}}",
                "test": ""
              },
              {
                "name": ":P3",
                "type": "expression",
                "value": "{{$_POST.email}}",
                "test": ""
              },
              {
                "name": ":P4",
                "type": "expression",
                "value": "{{$_POST.telefone}}",
                "test": ""
              },
              {
                "name": ":P5",
                "type": "expression",
                "value": "{{hash}}",
                "test": ""
              },
              {
                "name": ":P6",
                "type": "expression",
                "value": "{{newImage}}",
                "test": ""
              }
            ]
          }
        },
        "meta": [
          {
            "name": "identity",
            "type": "text"
          },
          {
            "name": "affected",
            "type": "number"
          }
        ]
      },
      {
        "name": "insert_veiculo",
        "module": "dbupdater",
        "action": "insert",
        "options": {
          "connection": "db",
          "sql": {
            "type": "insert",
            "values": [
              {
                "table": "veiculos_colaboradores",
                "column": "tipo_veiculo",
                "type": "text",
                "value": "{{$_POST.tipo_veiculo}}"
              },
              {
                "table": "veiculos_colaboradores",
                "column": "placa_veiculo",
                "type": "text",
                "value": "{{$_POST.placa.uppercase()}}"
              },
              {
                "table": "veiculos_colaboradores",
                "column": "colaborador",
                "type": "text",
                "value": "{{insert_colaborador.identity}}"
              },
              {
                "table": "veiculos_colaboradores",
                "column": "modelo_veiculo",
                "type": "text",
                "value": "{{$_POST.modelo_veiculo}}"
              },
              {
                "table": "veiculos_colaboradores",
                "column": "ano_veiculo",
                "type": "text",
                "value": "{{$_POST.ano_veiculo}}"
              },
              {
                "table": "veiculos_colaboradores",
                "column": "cor_veiculo",
                "type": "text",
                "value": "{{$_POST.cor_veiculo}}"
              }
            ],
            "table": "veiculos_colaboradores",
            "returning": "id_veiculo_colaborador",
            "query": "insert into \"veiculos_colaboradores\" (\"ano_veiculo\", \"colaborador\", \"cor_veiculo\", \"modelo_veiculo\", \"placa_veiculo\", \"tipo_veiculo\") values (?, ?, ?, ?, ?, ?) returning \"id_veiculo_colaborador\"",
            "params": [
              {
                "name": ":P1",
                "type": "expression",
                "value": "{{$_POST.tipo_veiculo}}",
                "test": ""
              },
              {
                "name": ":P2",
                "type": "expression",
                "value": "{{$_POST.placa.uppercase()}}",
                "test": ""
              },
              {
                "name": ":P3",
                "type": "expression",
                "value": "{{insert_colaborador.identity}}",
                "test": ""
              },
              {
                "name": ":P4",
                "type": "expression",
                "value": "{{$_POST.modelo_veiculo}}",
                "test": ""
              },
              {
                "name": ":P5",
                "type": "expression",
                "value": "{{$_POST.ano_veiculo}}",
                "test": ""
              },
              {
                "name": ":P6",
                "type": "expression",
                "value": "{{$_POST.cor_veiculo}}",
                "test": ""
              }
            ]
          }
        },
        "meta": [
          {
            "name": "identity",
            "type": "text"
          },
          {
            "name": "affected",
            "type": "number"
          }
        ]
      },
      {
        "name": "insert_motorista_veiculo",
        "module": "dbupdater",
        "action": "insert",
        "options": {
          "connection": "db",
          "sql": {
            "type": "insert",
            "values": [
              {
                "table": "veiculos_motoristas",
                "column": "id_motorista",
                "type": "text",
                "value": "{{insert_colaborador.identity}}"
              },
              {
                "table": "veiculos_motoristas",
                "column": "id_veiculo",
                "type": "number",
                "value": "{{insert_veiculo.identity}}"
              },
              {
                "table": "veiculos_motoristas",
                "column": "id_responsavel_motorista",
                "type": "text",
                "value": "{{insert_colaborador.identity}}"
              }
            ],
            "table": "veiculos_motoristas",
            "returning": "id_veiculos_motoristas",
            "query": "insert into \"veiculos_motoristas\" (\"id_motorista\", \"id_responsavel_motorista\", \"id_veiculo\") values (?, ?, ?) returning \"id_veiculos_motoristas\"",
            "params": [
              {
                "name": ":P1",
                "type": "expression",
                "value": "{{insert_colaborador.identity}}",
                "test": ""
              },
              {
                "name": ":P2",
                "type": "expression",
                "value": "{{insert_veiculo.identity}}",
                "test": ""
              },
              {
                "name": ":P3",
                "type": "expression",
                "value": "{{insert_colaborador.identity}}",
                "test": ""
              }
            ]
          }
        },
        "meta": [
          {
            "name": "identity",
            "type": "text"
          },
          {
            "name": "affected",
            "type": "number"
          }
        ]
      },
      {
        "name": "api",
        "module": "api",
        "action": "send",
        "options": {
          "url": "https://backend.spacefeed.app/api/qrcode",
          "params": {
            "usuario": "{{$_POST.cpf}}",
            "placa": "{{$_POST.placa}}",
            "veiculo": "{{insert_veiculo.identity}}",
            "id_usuario": "{{insert_colaborador.identity}}"
          },
          "dataType": "json",
          "schema": [
            {
              "type": "object",
              "name": "data",
              "sub": [
                {
                  "type": "text",
                  "name": "message"
                }
              ]
            },
            {
              "type": "object",
              "name": "headers",
              "sub": [
                {
                  "type": "text",
                  "name": "content-length"
                },
                {
                  "type": "text",
                  "name": "content-type"
                },
                {
                  "type": "text",
                  "name": "date"
                },
                {
                  "type": "text",
                  "name": "etag"
                },
                {
                  "type": "text",
                  "name": "server"
                },
                {
                  "type": "text",
                  "name": "vary"
                },
                {
                  "type": "text",
                  "name": "x-served-by"
                }
              ]
            }
          ]
        },
        "output": true,
        "collapsed": true,
        "meta": [
          {
            "type": "object",
            "name": "data",
            "sub": [
              {
                "type": "text",
                "name": "message"
              }
            ]
          },
          {
            "type": "object",
            "name": "headers",
            "sub": [
              {
                "type": "text",
                "name": "content-length"
              },
              {
                "type": "text",
                "name": "content-type"
              },
              {
                "type": "text",
                "name": "date"
              },
              {
                "type": "text",
                "name": "etag"
              },
              {
                "type": "text",
                "name": "server"
              },
              {
                "type": "text",
                "name": "vary"
              },
              {
                "type": "text",
                "name": "x-served-by"
              }
            ]
          }
        ],
        "outputType": "object"
      }
    ]
  },
  "usedModules": {
    "argon2": "^0.30.2",
    "sharp": "^0.29.3"
  }
}