create procedure sistema.sp_obtenerUsuariosPorModulo
@numModulo int
as
begin
	set nocount on;
	declare @dbModulo int,@dbUsuario int,@dbAsignado int,@dbCnt int;
	declare UsuariosTbl CURSOR FOR SELECT id FROM sistema.view_usuarios where estado = 1;
	
	set @dbModulo = @numModulo;

	IF OBJECT_ID(N'tempdb..#usuarios_por_modulo') IS NOT NULL
		BEGIN
			DROP TABLE #usuarios_por_modulo;
		END

	IF OBJECT_ID(N'tempdb..#roles_usuario') IS NOT NULL
		BEGIN
			DROP TABLE #roles_usuario;
		END

	create table #usuarios_por_modulo(
		id int
	);

	create table #roles_usuario(
		id int
	);

	open UsuariosTbl
	fetch next from UsuariosTbl into @dbUsuario
		while @@FETCH_STATUS = 0
			BEGIN
				set @dbAsignado = 0;
				insert into #roles_usuario select idRol from sistema.view_rolesUsuario where usuario = @dbUsuario;

				select @dbCnt = COUNT(*) from sistema.datos_permisos where estado = 1 and ((tipoAsignacion = 'usuario' and idAsignacion = @dbUsuario) OR (tipoAsignacion = 'rol' and idAsignacion in(select id from #roles_usuario))) and ((tipoContenedor = 'modulo' and idContenedor = @dbModulo) OR (tipoContenedor = 'apartado' and idContenedor in (select id from sistema.det_apartados where idModulo = @dbModulo and estado = 1)));
				if @dbCnt > 0
					begin
						insert into #usuarios_por_modulo(id) values (@dbUsuario);
					end
				truncate table #roles_usuario;
				fetch next from UsuariosTbl into @dbUsuario
			END
	close UsuariosTbl
	deallocate UsuariosTbl;

	select id,
	foto,
	nombres+' '+apellidos nombreCompleto,
	email,
	fechaRegistro
	from sistema.view_usuarios where id in(select id from #usuarios_por_modulo) and estado = 1 and bloqueado = 0;
end