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 IEMA: z.infer INEA: z.infer SIGOR: z.infer IMA: z.infer FEPAM: z.infer FEAM: z.infer }> export const zTipoCredenciais: z.ZodType = 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 /** 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", ])