Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
12| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_accion | char | 1 | |
| @p_cli_codigo | int | 4 | |
| @p_user_id | int | 4 | |
| @p_login | varchar | 60 | |
| @p_estado_login | char | 1 | |
| @p_prod_codigo | int | 4 | |
| @p_estado_producto | bit | 1 | |
| @p_email | varchar | 500 | |
| @p_usuario | int | 4 | |
| @first_name | varchar | 50 | |
| @last_name | varchar | 50 | |
| @password | varchar | 20 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE OR ALTER PROCEDURE dbo.backend_abm_usuarios_productos
-- Parte 1: Carga el username, y estado del login.
@p_accion char(1), /*ACCIONES A = ALTA / D=DELETE / OTRA COSA = UPDATE */
@p_cli_codigo int,
@p_user_id int,
@p_login varchar(60),
@p_estado_login char(1),
@p_prod_codigo int,
@p_estado_producto bit,
@p_email varchar(500),
@p_usuario int,
@first_name varchar(50),
@last_name varchar(50),
@password varchar(20)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ok char(1)
DECLARE @p_rand int
DECLARE @p_rand_char varchar(120)
DECLARE @i int
set @p_login = ltrim(rtrim(@p_login))
set @p_email = ltrim(rtrim(@p_email))
set @first_name = ltrim(rtrim(@first_name))
set @last_name = ltrim(rtrim(@last_name))
set @password = ltrim(rtrim(@password))
if (@p_accion = 'D') /*ELIMINAMOS UN USER ID DE UN CLIENTE EN PARTICULAR*/
begin
delete usuarios_productos where user_id=@p_user_id and cliente in (select cliente from clientes where cli_codigo=@p_cli_codigo)
delete clientes_usuarios where user_id=@p_user_id and cliente in (select cliente from clientes where cli_codigo=@p_cli_codigo)
update users set cli_codigo=null where user_id=@p_user_id
return
end
set @i = 0
if (@p_accion = 'A')
begin
if (select count(*) from users where username = @p_login) = 0
begin
set @ok = 'N'
--select @ok
WHILE (@ok = 'N')
BEGIN
set @i = @i + 1
set @p_rand = ROUND(((999999999 - 1) * RAND() + 1), 0)
set @p_rand_char = convert(varchar(120),newid())
if (select count(*) from users where user_id = @p_rand or cookie_id = @p_rand_char) = 0
begin
insert into users (user_id, cookie_id, cli_codigo, username, active_user, email, user_created,first_name,last_name,password)
values (@p_rand, @p_rand_char, @p_cli_codigo, @p_login, @p_estado_login, @p_email, getdate(),@first_name,@last_name,@password)
set @ok = 'S'
--select @ok
end
END
select '0' as error, 'Alta OK 1 ' as mensaje
end
else
begin
if (select count(*) from users where username = @p_login and cli_codigo <> @p_cli_codigo) = 0
begin
if ((select password from users where user_id = @p_user_id) != @password)
begin
update users
set active_user = @p_estado_login,
email = @p_email,
first_name = @first_name,
last_name = @last_name,
password = @password
where username = @p_login
select '0' as error, 'Alta OK 2' as mensaje
end
else
begin
update users
set active_user = @p_estado_login,
email = @p_email,
first_name = @first_name,
last_name = @last_name
where username = @p_login
select '0' as error, 'Alta OK 2' as mensaje
end
end
else
begin
select '1' as error, 'Ese login ya está asignado a otro Cliente'
end
end
end
else
-- Modificacion
begin
update users
set active_user = @p_estado_login,
email = @p_email,
first_name = @first_name,
last_name = @last_name,
password = @password
where user_id = @p_user_id
select '0' as error, 'Modificación OK' as mensaje
end
update usuarios_productos set activo = @p_estado_producto where user_id = @p_user_id and id_producto = @p_prod_codigo
END
GO
GO
CREATE OR ALTER PROCEDURE dbo.backend_abm_usuarios_productos
-- Parte 1: Carga el username, y estado del login.
@p_accion char(1), /*ACCIONES A = ALTA / D=DELETE / OTRA COSA = UPDATE */
@p_cli_codigo int,
@p_user_id int,
@p_login varchar(60),
@p_estado_login char(1),
@p_prod_codigo int,
@p_estado_producto bit,
@p_email varchar(500),
@p_usuario int,
@first_name varchar(50),
@last_name varchar(50),
@password varchar(20)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ok char(1)
DECLARE @p_rand int
DECLARE @p_rand_char varchar(120)
DECLARE @i int
set @p_login = ltrim(rtrim(@p_login))
set @p_email = ltrim(rtrim(@p_email))
set @first_name = ltrim(rtrim(@first_name))
set @last_name = ltrim(rtrim(@last_name))
set @password = ltrim(rtrim(@password))
if (@p_accion = 'D') /*ELIMINAMOS UN USER ID DE UN CLIENTE EN PARTICULAR*/
begin
delete usuarios_productos where user_id=@p_user_id and cliente in (select cliente from clientes where cli_codigo=@p_cli_codigo)
delete clientes_usuarios where user_id=@p_user_id and cliente in (select cliente from clientes where cli_codigo=@p_cli_codigo)
update users set cli_codigo=null where user_id=@p_user_id
return
end
set @i = 0
if (@p_accion = 'A')
begin
if (select count(*) from users where username = @p_login) = 0
begin
set @ok = 'N'
--select @ok
WHILE (@ok = 'N')
BEGIN
set @i = @i + 1
set @p_rand = ROUND(((999999999 - 1) * RAND() + 1), 0)
set @p_rand_char = convert(varchar(120),newid())
if (select count(*) from users where user_id = @p_rand or cookie_id = @p_rand_char) = 0
begin
insert into users (user_id, cookie_id, cli_codigo, username, active_user, email, user_created,first_name,last_name,password)
values (@p_rand, @p_rand_char, @p_cli_codigo, @p_login, @p_estado_login, @p_email, getdate(),@first_name,@last_name,@password)
set @ok = 'S'
--select @ok
end
END
select '0' as error, 'Alta OK 1 ' as mensaje
end
else
begin
if (select count(*) from users where username = @p_login and cli_codigo <> @p_cli_codigo) = 0
begin
if ((select password from users where user_id = @p_user_id) != @password)
begin
update users
set active_user = @p_estado_login,
email = @p_email,
first_name = @first_name,
last_name = @last_name,
password = @password
where username = @p_login
select '0' as error, 'Alta OK 2' as mensaje
end
else
begin
update users
set active_user = @p_estado_login,
email = @p_email,
first_name = @first_name,
last_name = @last_name
where username = @p_login
select '0' as error, 'Alta OK 2' as mensaje
end
end
else
begin
select '1' as error, 'Ese login ya está asignado a otro Cliente'
end
end
end
else
-- Modificacion
begin
update users
set active_user = @p_estado_login,
email = @p_email,
first_name = @first_name,
last_name = @last_name,
password = @password
where user_id = @p_user_id
select '0' as error, 'Modificación OK' as mensaje
end
update usuarios_productos set activo = @p_estado_producto where user_id = @p_user_id and id_producto = @p_prod_codigo
END
GO
Depends On
4Used By
No items found