drivers/src/residuos/index.ts
2026-06-15 10:39:49 -03:00

171 lines
4.6 KiB
TypeScript

import { z } from "zod"
/** Estrutura que deve ser aplicada para solictação de autenticação, deve ser feito via back */
export const zAuntenticacaoResiduosSolicitar = z.object({
// codigo_token: "aaaaaaaa-bbbb-1ccc-8ddd-eeeeeeeeeeee",
codigo_token: z.string().optional(),
//codigo_usuario: "aaaaaaaa-bbbb-1ccc-8ddd-eeeeeeeeeeef",
codigo_usuario: z.string().uuid(),
//nome_usuario: "Jaci Tupi",
nome_usuario: z.string(),
//email_usuario: "jaci@maillinator.com",
email_usuario: z.string(),
//documento_usuario: "111.111.111-11",
documento_usuario: z.string(),
//organizacao: "aaaaaaaa-bbbb-1ccc-8ddd-eeeeeeeeeeee",
inquilino: z.string(),
//rotas: {},
rotas: z.object({}),
//url_usuarios: "http://127.0.0.1:5010/residuos/exemplos/usuarios",
url_usuarios: z.string().url(),
//url_empreendedores: "http://127.0.0.1:5010/residuos/exemplos/empreendedores",
url_empreendedores: z.string().url(),
//url_empreendimentos: "http://127.0.0.1:5010/residuos/exemplos/empreendimentos",
url_empreendimentos: z.string().url(),
//tipo_usuario: "usuario",
tipo_usuario: z.string(),
//sistema: "gov-criciuma",
sistema: z.string(),
//sistema_cor: "#688c00",
sistema_cor: z.string(),
//sistema_nome: "e-licencie",
sistema_nome: z.string(),
//sistema_logo: "http://0.0.0.0:5020/estaticos/logos/e-licencie/branco-branco.png",
sistema_logo: z.string(),
})
/** Tipagem usada para o processo de sincronização entre modulos */
export const zUsuarioSincronizar = z.object({
codigo: z.string().uuid(),
documento: z.string(),
excluido: z.boolean(),
nome: z.string(),
permicoes: z.record(z.string(), z.any()),
versao: z.number().int(),
credenciais_sinir: z
.object({
login_cpf: z.string().optional(),
login_cnpj: z.string().optional(),
unidade: z.string().optional(),
senha: z.string().optional(),
})
.optional(),
})
export const zCredenciaisSinir = z.object({
login_cpf: z.string().optional(),
login_cnpj: z.string().optional(),
unidade: z.string().optional(),
senha: z.string().optional(),
})
export const zCredenciaisSIGOR = z.object({
login_cpf: z.string().optional(),
login_cnpj: z.string().optional(),
unidade: z.string().optional(),
senha: z.string().optional(),
email: z.string().optional(),
})
export const zCredenciais = z.object({
login_cpf: z.string().optional(),
login_cnpj: z.string().optional(),
unidade: z.string().optional(),
senha: z.string().optional(),
})
export const teste = z.object({
documento: z.string().optional(),
procom: z.string().optional(),
unidadeTop: z.string().optional(),
senhaSecreta: z.string().optional(),
})
export const orgaos: { [k in keyof TipoCredenciais]: k } = {
IEMA: "IEMA",
SINIR: "SINIR",
INEA: "INEA",
SIGOR: "SIGOR",
IMA: "IMA",
FEPAM: "FEPAM",
FEAM: "FEAM",
} as const
export const objetoCredencial: { [k in keyof typeof orgaos]: z.ZodObject } = {
IEMA: zCredenciais,
SINIR: zCredenciaisSinir,
INEA: zCredenciais,
SIGOR: zCredenciaisSIGOR,
IMA: zCredenciais,
FEPAM: zCredenciais,
FEAM: zCredenciais,
}
export type TipoCredenciais = Partial<{
SINIR: z.infer<typeof zCredenciaisSinir>
IEMA: z.infer<typeof zCredenciais>
INEA: z.infer<typeof zCredenciais>
SIGOR: z.infer<typeof zCredenciaisSIGOR>
IMA: z.infer<typeof zCredenciais>
FEPAM: z.infer<typeof zCredenciais>
FEAM: z.infer<typeof zCredenciais>
}>
export const zTipoCredenciais: z.ZodType<TipoCredenciais> = z.object({
SINIR: zCredenciaisSinir.optional(),
IEMA: zCredenciais.optional(),
INEA: zCredenciais.optional(),
SIGOR: zCredenciaisSIGOR.optional(),
IMA: zCredenciais.optional(),
FEPAM: zCredenciais.optional(),
FEAM: zCredenciais.optional(),
})
export type TipoCredenciaisLista = {
[K in keyof TipoCredenciais]: {
K: TipoCredenciais[K]
}
}[keyof TipoCredenciais]
export type tipo_zUsuarioSincronizar = z.infer<typeof zUsuarioSincronizar>
/** Tipagem usada para o processo de sincronização entre modulos */
export const zEmpreendedorSincronizar = z.object({
codigo: z.string().uuid(),
documento: z.string(),
excluido: z.boolean(),
nome: z.string(),
unidade_mtr: z.string().nullable().optional(),
versao: z.number().int(),
})
/** Tipagem usada para o processo de sincronização entre modulos */
export const zEmpreendimentoSincronizar = z.object({
codigo: z.string().uuid(),
codigo_empreendedor: z.string().uuid(),
documento: z.string(),
excluido: z.boolean(),
nome: z.string(),
unidade_mtr: z.string().nullable().optional(),
versao: z.number().int(),
})
export const nomesSincronizacoes = z.enum([
"usuarios",
"empreendedores",
"empreendimentos",
])