msdn23_capa.jpg

Clique aqui para ler todos os artigos desta edição

 

Tutorial Asp.Net – Portal Sea & Web – Parte V

por Marcos Santos e Alexandre Santos

Este artigo discute

Este artigo usa as seguintes tecnologias:

·          Paginação

·          Ordenação

·          Logout

·          Global.asax

C#, SQL Server, ASP .Net.

 

Download:

SeaWeb.zip (326 KB)

Chapéu

ASP.NET

 

 

Na parte IV deste tutorial, publicado na edição anterior, foi finalizado o módulo Reuniões com o uso de Transações de Banco de dados, e construído o módulo Meus Arquivos com as funcionalidades de download e upload de arquivos. Esta edição é a última parte deste Tutorial, onde serão desenvolvidos os módulos Meus Status, com técnicas de ordenação e paginação no DataGrid, e Logout, no qual será liberado a Session e removido o Ticket do usuário logado.

Módulo Meus Status

O módulo Meus Status permitirá ao colaborador da empresa Sea & Web indicar seu status de forma semelhante ao software de comunicação Microsoft Messenger, como exemplo “Em reunião”, “Horário de Almoço”, “Normal – Sala Trabalho”. Agora, imagine que você deseje falar com o gerente do projeto que você está envolvido, e ao entrar no módulo Meus Status, o status dele está “Em reunião”. Provavelmente não adiantaria tentar comunicar-se com ele, uma vez que dificilmente você obteria resposta no momento solicitado. Então, como saber qual o momento propício para contatá-lo? Mediante esta necessidade, será disponibilizado um campo de data para que o colaborador indique uma data prevista para término do seu status, ou seja, o seu gerente indicaria não somente o status “Em reunião”, mas também uma estimativa de término.

Este módulo é composto por uma única página, MeuStatus.aspx, que possui o seguinte funcionamento: ao ser carregada a página, serão disponibilizados os status existentes, e exibidos os status de todos os colaboradores da empresa, ordenados por nome. No DataGrid, que receberá o conjunto de status por usuário, haverá a opção de ordenação por cada coluna visualizada. Além de paginação, caso ultrapasse o número de registros desejados por página. Como o usuário logado também será listado, este será destacado com uma cor Navy. Para alterar o seu status, basta selecionar a data de previsão de fim, além do novo status e clicar em “Salvar Meu Status”. Uma vez clicado o botão, será atualizado o banco de dados.

 

Banco de Dados

Para o módulo de Meus Status precisaremos criar a tabela Status e UsuarioStatus e as procedures relacionadas ao módulo. Para isto retorne ao Microsoft Query Analyser, conecte ao banco de dados SeaWeb e rode o seguinte script (em ordem):

 

(1)Tabela status

CREATE TABLE status (

            idStatus int IDENTITY NOT NULL ,

            deStatus varchar (200),

            ativo bit,

            PRIMARY KEY(idStatus)

)

 

(2)Tabela usuarioStatus

CREATE TABLE usuarioStatus (

            idUsuario int NOT NULL ,

            idStatus int NOT NULL ,

            deLocal varchar (255),

            dtInicio datetime,

            dtFim datetime,

            PRIMARY KEY (idUsuario),

            FOREIGN KEY(idStatus) REFERENCES status(idStatus),

            FOREIGN KEY(idUsuario) REFERENCES usuario(idUsuario)

)

 

(3)Stored procedure que retorna os status

create procedure spr_retorna_status

as

select idStatus, deStatus from status

where ativo = 1 order by deStatus

 

(4)Stored procedure que retorna os status dos usuários

CREATE procedure spr_retorna_status_usuario

 

as

select

u.matricula, u.nmUsuario, d.deDepartamento, s.deStatus,

us.deLocal, us.dtInicio, us.dtFim, u.idUsuario

from usuario u

join departamento d on d.idDepartamento = u.idDepartamento

left join usuarioStatus us on u.idUsuario = us.idUsuario

left join status s on s.idStatus = us.idStatus

 

order by deDepartamento, u.nmUsuario

 

(5)Stored procedure que atualiza ou insere registro do status do usuário

CREATE procedure spr_atualiza_status_usuario

@idUsuario int,

@idStatus int,

@deLocal varchar(255),

@dtInicio datetime,

@dtFim datetime

as

 

if (select count(*) from usuarioStatus  where idUsuario = @idUsuario) = 0

begin

            insert into usuarioStatus

...

Quer ler esse conteúdo completo? Tenha acesso completo