Criação de APIKey em hml (HARD)
declare @unidadeId INT,
@UsuarioId INT,
@correspondenteId INT,
@hierarquiaNivelDetalhe INT,
@senha VARCHAR(32),
@pessoaid INT,
@output_data varchar(max),
@idApiKey int,
@apikey uniqueidentifier,
@put_data varchar(max) = '{
"Id": null,
"CorrespondenteId": _correspondenteId_,
"CanalId": 3, ------------- ?
"todasUnidades": 0,
"operacao": "I"
}'
select @correspondenteId = correspondenteid from unidade with(nolock) where cpfcnpj = '13054592000176' and Ativo = 1
-- Criando unidade do vendedor
INSERT INTO Unidade(
CorrespondenteId,
UnidadeId,
Tipo,
CEP,
CidadeId,
Bairro,
Logradouro,
Numero,
Complemento,
Nome,
Cadastro,
CPFCNPJ,
IndicadorId,
Ativo,
TipoModalidade
)VALUES(
@correspondenteId,
NULL, ----------------- ?
4, ---------------- ?
'60430730', -------------------- ?
1749, -- SELECT * from Cidade WITH(nolock) where Nome like'%FORTALEZA%' ----------- cidade------
'RODOLFO TEOFILO', -----------
'RUA TEODORETO SOUTO', ------------------- enderenço ------------
null, ------------?
null, ---------------?
'EMILIANO LUCIUS LIMA VIANA ', ----------------- ?
dbo.getdateBR(),
'64190005304', ----------- ?
NULL,
1,
0
)
SET @unidadeId = @@IDENTITY
SET @senha = CONVERT(VARCHAR(32), HashBytes('MD5', '641900'), 2) -- 6 primeiros difitos do cpf
--Criando o usuario
INSERT INTO Seguranca.Usuario(
PessoaId,
[Login],
Senha,
Ramal,
CorrespondenteId,
UnidadeId,
Nome,
CPFCNPJ,
Ativo,
Bloqueado,
DepartamentoId,
UsuarioTipoId,
Cadastro
)VALUES(
NULL,
'CC030177289',
@senha,
NULL,
@correspondenteId,
@unidadeId,
'EMILIANO LUCIUS LIMA VIANA ',
'64190005304',
1,
0,
15,
5,
dbo.getdateBR()
)
SET @UsuarioId = @@IDENTITY
INSERT INTO seguranca.UsuarioSenhaHistorico(
UsuarioId,
Senha,
DataExpiracao,
SofreExpiracao
)VALUES(
@usuarioId,
@senha,
dbo.getdateBR(),
0
)
-- Setando perfil
INSERT INTO Seguranca.PerfilUsuario(
PerfilId,
UsuarioId
)VALUES(
18,
@UsuarioId
)
--Pegando posição do supervisor
set @hierarquiaNivelDetalhe = 57
-- Vinculando unidade a hierarquia/correspondente
INSERT INTO CorrespondenteHierarquiaNivelDetalhe(
CorrespondenteId,
UnidadeId,
HierarquiaNivelDetalheId,
DataInicio,
DataFim
)VALUES(
@correspondenteId,
@unidadeId,
@hierarquiaNivelDetalhe,
dbo.getdateBR(),
null
)
--Criando API Key
set @put_data = replace(@put_data, '_correspondenteId_', @correspondenteId)
exec Suporte.stpAPIKey @put_data, @output_data output
select
@idApiKey = id
from openjson(@output_data) with (id int)
set @output_data = null
set @put_data = '{
"id": null,
"unidadeId": _unidadeID_,
"apiKeyId": _apiKeyId_,
"operacao": "I"
}'
set @put_data = replace(replace(@put_data, '_unidadeID_', @unidadeId), '_apiKeyId_', @idApiKey)
exec Suporte.stpUnidadeAPIKey @put_data, @output_data output
select @apikey = apikey from seguranca.apikey where Id = @idApiKey
insert into
seguranca.ApikeyUnidade (Apikey, UnidadeId, DataHoraVigenciaInicio, DataHoraVigenciaFim, CanalId, VersaoApiParceirosIdMinima, VersaoApiParceirosIdMaxima)
values
(@apikey, @unidadeId, dbo.getdatebr(), null, 3, 1, 1)
-----------------------------------DETALHAMENTOS--------------------------------------------------------------------------------
---------Declara variáveis de trabalho usadas ao longo do processo
declare @unidadeId INT, ------ Id da nova Unidade que será criada
@UsuarioId INT, ------ Id do novo Usuário que será criado
@correspondenteId INT, ------ Id do Correspondente (matriz) ao qual a Unidade pertence
@hierarquiaNivelDetalhe INT, ------ Posição na hierarquia (nível/detalhe) para vincular a Unidade
@senha VARCHAR(32), ------ Hash (MD5) da senha inicial do usuário
@pessoaid INT, ------ (não utilizado neste script)
@output_data varchar(max), ------ Saída (JSON) das procedures de API
@idApiKey int, ------ Id numérico da API Key criada
@apikey uniqueidentifier, ------ Valor GUID da API Key criada
@put_data varchar(max) = '{ ------ JSON de entrada para criar a API Key do Correspondente
"Id": null,
"CorrespondenteId": _correspondenteId_,
"CanalId": 3, ------------- ? VERIFICAR OS TIPOS DE CANALID
"todasUnidades": 0, ------------- 0 = a API Key NÃO vale para todas as unidades (escopo restrito)
"operacao": "I" ------------- "I" = Inserção (criar nova API Key)
}'
------ Localiza o CorrespondenteId a partir de uma unidade ativa por CNPJ informado
select @correspondenteId = correspondenteid
from unidade with(nolock)
where cpfcnpj = '13054592000176' and Ativo = 1
------ Criando a nova Unidade do vendedor (filial/ponto) vinculada ao Correspondente
INSERT INTO Unidade(
CorrespondenteId, ------ Relaciona esta unidade ao correspondente (matriz)
UnidadeId, ------ Unidade pai (NULL = unidade de topo/raiz ou sem pai neste contexto)
Tipo, ------ Tipo de unidade (4 = código interno para tipo específico; ex.: unidade de vendedor)
CEP, ------ CEP da unidade
CidadeId, ------ Id da cidade (1749 = Fortaleza, conforme comentário)
Bairro, ------ Bairro da unidade
Logradouro, ------ Logradouro (rua/avenida) da unidade
Numero, ------ Número do endereço (NULL = sem número informado)
Complemento, ------ Complemento do endereço (NULL = sem complemento)
Nome, ------ Nome fantasia/identificação da unidade
Cadastro, ------ Data/hora do cadastro (dbo.getdateBR() = data/hora no padrão do sistema)
CPFCNPJ, ------ Documento (CPF/CNPJ) associado à unidade/responsável
IndicadorId, ------ (NULL = sem indicador associado)
Ativo, ------ 1 = unidade ativa
TipoModalidade ------ 0 = modalidade padrão (regra do sistema)
)VALUES(
@correspondenteId,
NULL, ----------------- ? ------ Sem unidade pai; esta unidade não está subordinada a outra unidade
4, ---------------- ? ------ Código interno do tipo da unidade (ex.: "unidade vendedor/representante")
'60430730', -------------------- ? ------ CEP da unidade (Rodolfo Teófilo, Fortaleza/CE)
1749, -- SELECT * from Cidade WITH(nolock) where Nome like'%FORTALEZA%' ----------- cidade------
'RODOLFO TEOFILO', ----------- Bairro da unidade
'RUA TEODORETO SOUTO', ------------------- enderenço ------------ Logradouro (rua)
null, ------------? ------ Número (não informado)
null, ---------------? ------ Complemento (não informado)
'EMILIANO LUCIUS LIMA VIANA ', ----------------- ? ------ Nome de exibição da unidade (responsável/identificação)
dbo.getdateBR(), ------ Data/hora de criação segundo função do sistema
'64190005304', ----------- ? ------ Documento (CPF) vinculado à unidade (responsável)
NULL,
1, ------ Ativo
0 ------ TipoModalidade padrão
)
SET @unidadeId = @@IDENTITY ------ Captura o Id gerado para a unidade (ver observações: prefira SCOPE_IDENTITY())
------ Monta senha inicial: MD5 dos 6 primeiros dígitos do CPF "641900"
SET @senha = CONVERT(VARCHAR(32), HashBytes('MD5', '641900'), 2) -- 6 primeiros dígitos do CPF
------ Criação do Usuário vinculado ao Correspondente e à nova Unidade
INSERT INTO Seguranca.Usuario(
PessoaId, ------ (NULL = sem pessoa vinculada na tabela de pessoas)
[Login], ------ Login de acesso
Senha, ------ Hash da senha (MD5 em hex)
Ramal, ------ (NULL = sem ramal)
CorrespondenteId, ------ Vincula ao correspondente
UnidadeId, ------ Vincula à unidade recém-criada
Nome, ------ Nome do usuário
CPFCNPJ, ------ Documento do usuário
Ativo, ------ 1 = ativo
Bloqueado, ------ 0 = não bloqueado
DepartamentoId, ------ Departamento (15 = código interno)
UsuarioTipoId, ------ Tipo do usuário (5 = código interno)
Cadastro ------ Data/hora de criação
)VALUES(
NULL,
'CC030177289',
@senha,
NULL,
@correspondenteId,
@unidadeId,
'EMILIANO LUCIUS LIMA VIANA ',
'64190005304',
1,
0,
15,
5,
dbo.getdateBR()
)
SET @UsuarioId = @@IDENTITY ------ Captura o Id do usuário criado (ver observações: prefira SCOPE_IDENTITY())
------ Registro no histórico de senhas do usuário
INSERT INTO seguranca.UsuarioSenhaHistorico(
UsuarioId,
Senha,
DataExpiracao,
SofreExpiracao
)VALUES(
@usuarioId,
@senha,
dbo.getdateBR(), ------ Data de geração/validação
0 ------ 0 = senha não sofre expiração automática (regra do sistema)
)
------ Concessão de perfil/acesso ao usuário
INSERT INTO Seguranca.PerfilUsuario(
PerfilId, ------ Perfil de acesso (18 = perfil interno definido pelo negócio)
UsuarioId
)VALUES(
18,
@UsuarioId
)
------ Define a posição (nível detalhe) na hierarquia organizacional
set @hierarquiaNivelDetalhe = 57 ------ 57 = código da posição/nível (ex.: supervisor/região), conforme a hierarquia do negócio
------ Vincula a Unidade à hierarquia do Correspondente (vigência aberta)
INSERT INTO CorrespondenteHierarquiaNivelDetalhe(
CorrespondenteId,
UnidadeId,
HierarquiaNivelDetalheId,
DataInicio,
DataFim
)VALUES(
@correspondenteId,
@unidadeId,
@hierarquiaNivelDetalhe,
dbo.getdateBR(), ------ Início de vigência
null ------ Sem data fim (vigente)
)
------ Criação da API Key do Correspondente (escopo no CanalId=3)
set @put_data = replace(@put_data, '_correspondenteId_', @correspondenteId) ------ Injeta o id do correspondente no JSON
exec Suporte.stpAPIKey @put_data, @output_data output ------ Chama a procedure que cria a API Key e retorna JSON em @output_data
------ Lê do JSON retornado o id numérico da API Key criada
select @idApiKey = id
from openjson(@output_data) with (id int)
------ Prepara JSON para vincular a API Key à Unidade
set @output_data = null
set @put_data = '{
"id": null,
"unidadeId": _unidadeID_,
"apiKeyId": _apiKeyId_,
"operacao": "I"
}'
------ Injeta ids de unidade e apiKey no JSON
set @put_data = replace(replace(@put_data, '_unidadeID_', @unidadeId), '_apiKeyId_', @idApiKey)
------ Chama a procedure que cria o vínculo Unidade x API Key
exec Suporte.stpUnidadeAPIKey @put_data, @output_data output
------ Obtém o GUID da API Key recém-criada
select @apikey = apikey
from seguranca.apikey
where Id = @idApiKey
------ Registra a vigência da API Key na Unidade (Canal 3; versões mín/máx = 1)
insert into seguranca.ApikeyUnidade (
Apikey, ------ Valor GUID da API Key
UnidadeId, ------ Unidade à qual a chave ficará válida
DataHoraVigenciaInicio, ------ Início da vigência
DataHoraVigenciaFim, ------ Fim da vigência (NULL = vigente)
CanalId, ------ Canal de uso (3 = canal/parceiros/integração)
VersaoApiParceirosIdMinima, ------ Versão mínima suportada para parceiros
VersaoApiParceirosIdMaxima ------ Versão máxima suportada para parceiros
) values (
@apikey,
@unidadeId,
dbo.getdatebr(),
null,
3,
1,
1
)
No Comments