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
...