Multi-Enterprise Condominium Management System
Sistema de Gestão de Condomínios Multiempresa
João Miguel Almeida Magalhães – Nº Mec. A21608
Mauro da Conceição Santos – Nº Mec. A21879
Trabalho realizado sob a orientação do
Professor Doutor Paulo Jorge Teixeira Matos
Informática de Gestão
2011/2012
iii
Multi-Enterprise Condominium Management System
Sistema de Gestão de Condomínios Multiempresa
Relatório da UC de Projeto de Informática
Licenciatura em Informática de Gestão
Escola Superior de Tecnologia e de Gestão
João Magalhães, Mauro Santos
2011/2012
iv
A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas
neste relatório.
v
Certifico que li este relatório e que na minha opinião, é adequado no seu
conteúdo e forma como demonstrador do trabalho desenvolvido no
âmbito da UC de Projeto de Informática.
___________________________________________
Paulo Jorge Teixeira Matos - Orientador
Certifico que li este relatório e que na minha opinião, é adequado no seu
conteúdo e forma como demonstrador do trabalho desenvolvido no
âmbito da UC de Projeto de Informática.
___________________________________________
- Arguente
Aceite para avaliação da UC de Projeto de Informática
ix
Agradecimentos
Existem documentos que assinamos ao longo da vida com manifesto interesse e relevância,
este será um deles, não só pela componente da UC, mas por marcar o fim de um ciclo na
nossa vida. Aproveito o espaço para agradecer ao meu amigo Mauro Santos, por ter aceite
mais este desafio, tendo sido sem dúvida um prazer ter partilhado estes três anos de academia,
onde a busca por nos superarmos um ao outro foi constante, culminando na amizade que hoje
temos.
Agradeço aos meus pais, pilares da minha sustentabilidade, que apesar da minha idade
desenquadrada com aquela que se deseja para aluno de licenciatura, me permitiram esta
oportunidade.
João Magalhães
Ao meu colega e amigo, João, pela paciência e coragem demonstradas ao longo do
desenvolvimento deste projeto. Por não desistir, mesmo quando nada tínhamos que nos
levantasse a moral. E acima de tudo pelo espírito competitivo que revelou ao longo do nosso
percurso académico, sem o qual a minha motivação se teria desvanecido, num ”pequeno
mundo” onde a nossa competitividade foi singular.
À minha família, sem a qual não teria tido esta oportunidade, e pelas horas de convívio
perdidas, que a distância ajudou a intensificar.
E em especial, à Ana Mota, minha companheira, pela compreensão, paciência e apoio
revelados, que muito foram necessários, tendo sempre acreditado em mim.
Mauro Santos
Resta-nos deixar um especial agradecimento pela colaboração neste projeto, ao nosso
orientador, Professor Doutor Paulo Jorge Teixeira Matos.
xi
Resumo
O presente documento surge no enquadramento da unidade curricular denominada por Projeto
de Informática inserido na Licenciatura em Informática de Gestão.
Pretende-se portanto, relatar e documentar toda a componente prática da UC.
O projeto que se apresenta compreende a análise e desenvolvimento de um sistema de gestão
de condomínios multiempresa, em PHP, suportado por uma base de dados MySQL, com
recurso as linguagens HTML5, CSS e Javascript, onde se pretende uma participação ativa por
parte dos condóminos.
Palavras-chave:
Plataforma, condomínio, empresa, gestão.
xiii
Abstract
This document arises in the context of the discipline of informatics project, inserted in
informatics management degree.
The aim is, therefore, report and document all the practical component of de course.
The project that is presented includes the analysis and development of a condominium
management system, multi-enterprise, that promotes an active participation of the clients into
the management activities. The system was developed using HTML5, CSS, Javascript and
PHP, supported by a MySQL database.
Keywords:
Platform, condominium, enterprise, management.
xv
Conteúdo
1 Introdução .......................................................................................................................... 1
1.1 Enquadramento ............................................................................................................. 1
1.2 Objetivos do projeto ...................................................................................................... 2
1.3 Organização do documento ........................................................................................... 3
2 Domínio do problema ........................................................................................................ 5
2.1 Contexto ........................................................................................................................ 5
2.2 Arquitetura Conceptual ................................................................................................. 6
2.3 Framework de desenvolvimento web ........................................................................... 9
2.3.1 O CodeIgniter ......................................................................................................... 9 2.3.2 Arquitetura MVC ................................................................................................... 9
2.4 Funcionalidades .......................................................................................................... 10
3 Especificação de Requisitos ............................................................................................ 12
3.1 UML e Enterprise Architect ........................................................................................ 12
3.2 Requisitos Funcionais ................................................................................................. 13
3.3 Diagramas dos subsistemas ......................................................................................... 15 3.3.1 Perspetiva do Meta-Administrador (Backoffice) ................................................. 15
3.3.2 Perspetiva do Administrador da Empresa (Backoffice) ....................................... 17 3.3.3 Perspetiva do Utilizador (Backoffice) .................................................................. 19
4 Implementação ................................................................................................................. 20
4.1 Modelo Relacional ...................................................................................................... 20
4.2 Desenho Aplicacional ................................................................................................. 21
4.2.1 Visão Geral ........................................................................................................... 21
4.2.2 Processo de criação de uma empresa ................................................................... 22
4.2.3 Geração de páginas ............................................................................................... 22 4.2.4 Recurso ao AJAX ................................................................................................. 23 4.2.5 Registo Log .......................................................................................................... 25
5 Conclusão ......................................................................................................................... 27
Bibliografia ............................................................................................................................. 29
16
A – Casos de Uso .................................................................................................................... 1
A.1 Diagramas ..................................................................................................................... 1
A.1.1 Diagrama Geral .......................................................................................................... 2 A.2 Descrição dos Cenários ............................................................................................. 4
B – Diagrama Entidade-Relacionamento .......................................................................... 52
C – Templates das Páginas ................................................................................................. 54
C.1 Frontoffice do Meta-Site ............................................................................................. 55
C.2 Backoffice do Meta-Site ............................................................................................. 56
C.3 Frontoffice da Empresa ............................................................................................... 57
C.4 Backoffice da Empresa ............................................................................................... 58
D – Codificação .................................................................................................................... 59
D.1 Processo de inserção de uma Empresa ........................................................................ 59
D.2 Classe Genpage ........................................................................................................... 64
xviii
Lista de Figuras
Ilustração 1 – Arquitetura Conceptual .................................................................................................................... 7 Ilustração 2 – Backoffice do Meta-administrador ................................................................................................. 15 Ilustração 3 – Backoffice do Administrador da Empresa ...................................................................................... 17 Ilustração 4 – Backoffice do Utilizador ................................................................................................................ 19 Ilustração 7 – Estrutura Aplicacional PHP ............................................................................................................ 21
xx
Lista de Abreviaturas, Abreviações e Siglas
PHP – Hypertext Preprocessor;
MVC – Model, View and Controller;
HTML – Hypertext Markup Language;
CSS – Cascading Style Sheets;
AJAX – Asynchronous Javascript and XML;
CMS – Content Management System;
PGC – Plataforma de Gestão de Condomínios;
UML – Unified Modelling Language;
OMT – Object Oriented Modelling Technique;
OOSE – Object Oriented Software Engineering;
OMG – Open Management Group;
ISO – International Organization for Standardization;
CASE – Computer-Assisted Software Engineering;
POO – Programação Orientada por Objetos;
1
1 Introdução
1.1 Enquadramento
Encontra-se atualmente em conceção (ainda na fase de análise do modelo de negócio) um
projeto empreendedor que visa facultar meios às empresas de gestão de condomínios para que
estas possam prestar serviços de melhor qualidade e complementares aos que atualmente
prestam. Projeto este que visa suportar a criação de um spin-off nesta área de atividade. A
realização deste projeto passa pela conceção e implementação de um portal cujos utilizadores
são as empresas de gestão de condomínios (ou entidades individuais que desempenhem
funções similares) e os clientes destas empresas (os condóminos). Trata-se assim de um portal
com três perfis distintos, a saber:
BackOffice de gestão para a própria empresa;
BackOffice/FrontOffice de gestão para as empresas de gestão de condomínios;
FrontOffice para os condóminos.
Esta proposta, de projeto de fim de curso, vem no sentido de contactar alunos empenhados,
motivados, com uma forte capacidade de concretização e com gosto para lidarem com
problemas reais. A sua contribuição para este projeto será a conceção e implementação do já
referido portal, ou pelo menos de algumas das funcionalidades mais pertinente.
2
1.2 Objetivos do projeto
Os principais objetivos deste projeto prendem-se com o estudo do modelo de negócio e
apresentação da melhor análise do mesmo, complementada com a implementação de uma
solução arquitetural, o mais fiel possível.
Posto isto, é objetivo principal obter como produto final, uma plataforma com funcionalidades
bem definidas e de fácil utilização por parte dos utilizadores. Elaborar um produto final,
eficiente, e acima de tudo, sustentável, sendo o mais autónomo possível, que faculte serviços
de qualidade úteis para os utilizadores, destacando-se da restante oferta de mercado.
No âmbito da disciplina de projeto de informática, pretende-se com este projeto, proporcionar
um mecanismo de aprofundamento e aquisição de conhecimento, amadurecimento, e
constatar com uma realidade um pouco diferente da visão académica.
3
1.3 Organização do documento
Este relatório encontra-se organizado em 5 capítulos e 4 anexos conforme se resume de
seguida.
O capítulo 1 (Introdução) apresenta os conceitos gerais, visão do modelo de negócio e
objetivos gerais.
O capítulo 2 (Domínio do problema), contextualiza o domínio do problema, apresenta a
arquitetura conceptual que deu base à estrutura aplicacional da plataforma, e introduz as
arquitetura MVC, principal ferramenta de suporte à implementação.
O capítulo 3 (Especificação de requisitos) apresenta a especificação e análise dos requisitos,
transcritos em funcionalidades, com suporte em diagramas e descrição de cenários de
utilização.
O capítulo 4 (Implementação) incide sobre o desenvolvimento e implementação, mais
precisamente a parte de codificação e as tecnologias em quais assenta.
O capítulo 5 apresenta um resumo e conclusões do trabalho desenvolvido com ênfase no
trabalho futuro a desenvolver em virtude da evolução da plataforma e essencialmente em
virtude da não implementação de algumas das funcionalidades.
O anexo A “Casos de Uso” é composto por três sub-anexos, onde constam os diagramas de
casos de uso para as diferentes perspetivas da aplicação, e o dicionário de dados
respetivamente.
O anexo B “Diagrama Entidade-relacionamento” apresenta o diagrama entidade-
relacionamento ilustrativo da estrutura da base de dados.
O anexo C “Templates das páginas” apresenta os diferentes templates para as diferentes vistas
da plataforma.
O anexo D “Codificação” apresenta as principais classes representativas dos principais
aspetos da fase de implementação.
5
2 Domínio do problema
2.1 Contexto
O objeto de estudo deste projeto prende-se com a análise e implementação de uma plataforma
que permita às empresas de gestão de condomínio prestar serviços de qualidade, e acima de
tudo, serviços com total transparência. Atualmente a área de mercado na qual se insere esta
atividade encontra-se saturada e viciada, no sentido que são muito poucas as empresas que
prestam serviços honestos e com vista à satisfação dos seus clientes. Por isso, e assumindo o
cliente final (o condómino) como o possível grande impulsionador deste conceito, pretende-se
desenvolver esta plataforma, assente num conceito de “fórum” onde todos os participantes
poderão consultar, comentar e discutir, os problemas do seu condomínio.
Ao disponibilizar este serviço, paralelamente complementado com funcionalidades
inovadoras, tais como a gestão de inventários dos edifícios, a reserva de equipamentos, assim
como a divulgação e publicação das contas do condomínio, pretende-se atingir uma referência
na gestão de condomínios. Com isto consegue-se a valorização da imagem da empresa,
obtendo uma espécie de “selo de garantia”, certificando de certa forma, a transparência e
honestidade na prestação dos serviços. Por outro lado, consegue-se ir de encontro às reais
necessidades dos condóminos, prestando assim um serviço com qualidade, rapidez e eficácia.
6
2.2 Arquitetura Conceptual
O conceito assenta assim, num modelo de negócio vocacionado para o comércio web, mais
precisamente, a prestação de serviços, complementando serviços físicos com serviços
“virtuais”, como o facultar para atingir os meios. É esta a filosofia que rege este modelo, que
visa a massificação dos utilizadores intervenientes neste processo, permitindo assim a médio
prazo, explorar o valor comercial do conceito, quando implementada no mercado.
Este conjunto de serviços, exige o desenvolvimento de um website por cada empresa, com
imagem e funcionalidades personalizáveis, o que seria incomportável, se se procedesse à
conceção de raiz de cada um desses websites. Posto isto, a ideia será desenvolver um
mecanismo que permita, de forma automática, gerar todo o “sistema web” individual de casa
empresa.
Assente nos pressupostos anteriormente mencionados, conseguem-se destacar três atores
principais, intervenientes em todo este processo. Por um lado temos as empresas de gestão de
condomínios, mais especificamente os seus gestores, aqui no papel de Administrador da
empresa, responsável por usufruir do backoffice da empresa; por outro lado temos os
condóminos, clientes das empresas de gestão de condomínios, aqui no papel de Utilizador da
plataforma, responsável por usufruir do backoffice do utilizador; num nível mais acima,
temos o responsável por gerir toda a plataforma central, que agrega todas as empresas, aqui
no papel de Administrador-Meta.
Com base nisto, decidiu-se elaborar um esquema representativo dos diferentes níveis em que
assenta este modelo conceptual, conforme ilustra a figura abaixo.
7
Ilustração 1 – Arquitetura Conceptual
Como tal, e tendo como base uma hierarquia em pirâmide, descrevem-se os seguintes níveis
conceptuais:
Nível Meta: o nível Meta refere-se à aplicação no seu todo, mas do ponto de vista da
gestão e agrupamento de dados. Toda a aplicação é criada, expandida e mantida em
torno deste nível. Como tal, os administradores de topo da aplicação
(administradores-meta) trabalham a este nível tendo o total controlo sobre a
plataforma. Neste nível, o gestor global, poderá usufruir da plataforma, essencialmente
para fins estatísticos, onde todos os fluxos de dados serão analisados com o objetivo
de produzir informação útil para a gestão da plataforma. Complementarmente
encontra-se todo o processo de criação e manutenção dos perfis das empresas de
gestão de condomínios, incluindo a sua personalização. Uma outra componente deste
nível prende-se com o fato de gerir o frontoffice principal da plataforma, constituindo
um elo de comunicação entre o Administrador-meta e as potenciais novas empresas.
8
Nível Empresa: o nível Empresa refere-se, à parte aplicacional, gerida pela empresa
de gestão de condomínios, e delimita a fronteira entre o nível Meta e o nível Empresa.
Neste nível trabalham os administradores das empresas, gerindo e mantendo os
edifícios e todos os seus dependentes (ocorrências, equipamentos, frações e
utilizadores). A este nível existem duas perspetivas diferentes: o backoffice da
empresa, que permite estabelecer uma interface de ligação da empresa com os
condóminos; e o frontoffice da empresa, funcionando essencialmente como divulgador
da imagem da empresa, facultando ao mesmo tempo a via de acesso ao backoffice.
Nível Condómino: o nível Condómino refere-se à parte aplicacional gerida pelos
utilizadores, mais propriamente os condóminos. É neste nível que os condóminos poderão
usufruir da plataforma, acedendo ao backoffice do utilizador, elo de ligação do condómino
à empresa de gestão de condomínios. Para o grupo principal de utilização da plataforma
(condóminos), este será o nível responsável por gerar o maior fluxo de dados/informação,
tendo um peso muito significativo na dinâmica geral dos serviços.
Este esquema hierárquico permite assim evitar duplicação de tabelas com características
idênticas para cada empresa, garantindo uma gestão integrada dos dados por parte do nível
Meta. Significa que em determinado instante podemos ter o mesmo utilizador afeto a
diferentes frações de diferentes edifícios da mesma empresa, otimizando o desempenho e
eficiência do sistema.
Conscientes das limitações, principalmente temporais, optou-se por valorizar, em termos de
concretização/implementação, a estrutura aplicacional, independentemente da complexidade,
tentando desenvolver um produto, o mais funcional possível, sem sacrificar o modelo de
negócio. Algumas questões, funcionalidades mais concretamente, embora tendo sido
identificadas, não poderam ser abordadas da devida forma, tendo sido remetidas para trabalho
futuro.
9
2.3 Framework de desenvolvimento web
2.3.1 O CodeIgniter
No âmbito do projeto a que nos propusemos desenvolver, constatou-se logo na fase de
levantamento de requisitos que o problema proposto era de grande dimensão. Posto isto, e
uma vez que o tempo de desenvolvimento que detínhamos para a realização da unidade
curricular era escasso, optou-se pela utilização de uma framework PHP opensource. O
CodeIgniter é uma framework PHP gratuita, desenvolvida pela ElliseLab, que se encontra no
momento de desenvolvimento deste projeto na versão 2.1. É uma framework extremamente
leve, com uma curva de aprendizagem relativamente curta, e com uma comunidade ativa
extremamente colaborativa. O uso de frameworks no desenvolvimento de aplicações de alta
dimensão minimiza os tempos de desenvolvimento das bibliotecas e classes básicas e comuns
a qualquer aplicação deste nível. Nos dias que correm e num mundo altamente competitivo
como o que vivemos, em que a política da reutilização está cada vez mais patente, achou-se
por bem abrir mão do desenvolvimento dos componentes básicos e usar as bibliotecas que nos
são disponibilizadas pelo CodeIgniter, desenvolvidas por uma equipa especializada, e em
constante melhoria, assentes em padrões bem definidos, bem testados, minimizando assim
erros comuns, inerentes à atividade de codificação. A equipa do CodeIgniter providencia
também um sistema de suporte bem documentado, complementado por uma comunidade de
utilizadores experientes. O CodeIgniter utiliza na sua base o modelo de arquitetura MVC e
está desenvolvido segundo os paradigmas da POO, o que se traduz em boas práticas e
políticas de segurança e robustez no momento de desenvolvimento e implementação da
aplicação Web. (CodeIgniter User Guide Version 2.1.2)
2.3.2 Arquitetura MVC
“O model é usado para definir e gerir o domínio da informação e notificar sobre mudanças
nos dados.” (Model–view–controller) Pode ser encarado aqui como a camada de acesso aos
10
dados, pois é o responsável por aceder à base de dados e encaminhar os dados para os devidos
Controllers e Views.
“A view apresenta o model num formato adequado ao utilizador, na saída de dados, e podem
existir diferentes views para um mesmo model, seguindo diferentes propósitos.” (Model–
view–controller) Por exemplo, a mesma estrutura de dados a ser exibida (Model), pode ter
várias representações visuais (Views), no que à disposição ou tipo de dados diz respeito, como
num website.
“O controller recebe a entrada de dados e inicia a resposta ao utilizador ao evocar objetos do
model, e por fim uma visão baseada na entrada. Ele é também responsável pela validação e
filtragem da entrada de dados.” (Model–view–controller)
2.4 Funcionalidades
Relativamente aos objetivos em concreto deste projeto, conseguimos enumerar aqueles cuja
sua importância é fulcral para a concretização da ideia de negócio. Como tal, e tendo em
conta o referido anteriormente, consideraram-se os seguintes tópicos:
A plataforma deverá ser capaz de permitir aos seus utilizadores, a inserção, atualização e
remoção de perfis de utilizadores e administradores; a inserção, atualização e remoção dos
perfis das empresas e respetivos edifícios; a inventariação dos equipamentos pertencentes aos
edifícios, assim como a calendarização de reservas dos respetivos equipamentos; a criação de
tópicos de discussão, inseridos num processo que engloba atividades como comentar, arquivar
e eliminar as respetivas ocorrências; e para finalizar, todos estes processos deverão estar
assentes na criação dinâmica e automatizada da estrutura aplicacional de cada uma das
empresas criadas, permitindo a personalização da imagem à medida de cada empresa, para
cada uma das respetivas páginas (front/backoffices).
Paralelamente a estas funcionalidades, mais de vertente da gestão, encontra-se planeada, a
implementação, de um sistema de gestão de anúncios, relacionados com a comercialização de
bens e serviços por parte de terceiros, representativo do potencial económico/financeiro do
modelo de negócio. Pretende-se, apoiado na utilização da plataforma, facultar um meio de
publicidade e divulgação de serviços, por parte de empresas que operem nas áreas
relacionadas com a gestão de condomínios e não só. Conscientes da dispersão geográfica que
11
a plataforma pode alcançar, será importante que este serviço funcione com base em
regiões/localidades, de forma a atingir o público-alvo que interessa.
Relativamente ao desenvolvimento do portal este deverá ser desenvolvido em linguagem PHP
tendo por base uma arquitetura MVC e suportado pelo serviço de gestão de base de dados
MySQL. O grafismo das várias vertentes do portal não deverá ser algo fundamental, no
entanto pretende-se que seja intuitivo e fácil de utilizar. Para este fim, serão utilizadas as
linguagens de desenvolvimento web, HTML, CSS, Javascript (com recurso ao jQuery/AJAX)
assim como o Adobe Photoshop para a edição e tratamento da imagem dos front/backoffices.
A par das funcionalidades centrais, identificaram-se ao longo da análise de requisitos, outras
funcionalidades, não menos importantes, que no entanto, e devido ao fator temporal, se estima
não virem a ser implementadas. Entre elas, consideraram-se os seguintes tópicos:
Relativamente ao processo de gestão de ocorrências, concluiu-se ser vantajoso estruturar um
workflow de atividades que permitisse, ao longo da sua discussão, atribuir estados às
ocorrências, permitindo um processo de votação por parte dos utilizadores; identificou-se
também a necessidade de ir mais longe na personalização do grafismo das páginas das
empresas, tornando todo o processo mais automático e simplificado, permitindo a cada
empresa escolher que funcionalidades estariam ativas em determinado momento, conferindo
um aspeto de CMS à nossa plataforma.
12
3 Especificação de Requisitos
3.1 UML e Enterprise Architect
A especificação de requisitos foi efetuada com recurso à linguagem UML, utilizando como
ferramenta de modelação o Enterprise Architect.
“O UML é uma linguagem diagramática, utilizável para especificação, visualização e
documentação de sistemas de software. O UML surge em 1997 na sequência de um esforço
de unificação de três das principais linguagens de modelação orientadas por objetos (OMT,
Booch e OOSE). Seguidamente adquiriu o estatuto de norma no âmbito da OMG e da ISO,
tendo vindo a ser adotado progressivamente pela indústria e academia em todo o mundo.
O UML apresenta, entre outras, as seguintes características principais: (1) é independente do
domínio de aplicação (i.e., pode ser usado em projetos de diferentes características, tais como
sistemas cliente/servidor tradicionais; sistemas baseados na Web; sistemas de informação
geográficos; sistemas de tempo real); (2) é independente do processo ou metodologia de
desenvolvimento; (3) é independente das ferramentas de modelação; (4) apresenta
mecanismos potentes de extensão; (5) agrega um conjunto muito significativo de diferentes
diagramas/técnicas dispersas por diferentes linguagens (e.g., diagramas de casos de utilização,
de classes, de objetos, de colaboração, de atividades, de estados, de componentes, e de
instalação).” (da Silva & Videira, 2001)
A escolha da ferramenta de modelação (CASE), Enterprise Architect da empresa Sparx
Systems, baseado na versão 2.4.1 do UML, cingiu-se essencialmente ao fato de ser a
ferramenta, cujos elementos participantes no projeto estavam inteirados, aquando do início do
projeto.
13
3.2 Requisitos Funcionais
No que aos requisitos diz respeito, e tendo em conta os principais tópicos identificados
anteriormente, procedemos à sua descrição mais detalhada de forma a perceber em
pormenor as classes de dados e respetivos atributos que a plataforma deverá comtemplar,
assim como as relações entre elas.
a) Uma empresa de gestão de condomínios possui características próprias. Entre elas, é
de interesse personalizar questões como a imagem, template, layout, etc. Cada
empresa de gestão será responsável pela gestão de vários edifícios (condomínios).
b) Cada edifício é composto por várias frações e diferentes equipamentos (materiais de
limpeza, barbecues, piscina, etc.), sendo que cada fração possui características
próprias e tem associado, em determinado instante, um ou mais utilizadores. Cada
utilizador possui também características próprias, e em cada instante estão
associados a uma ou mais frações.
i. A empresa é caracterizada por identificador, nome, identificador fiscal,
moradas, contatos, logótipo, descrição, url, subdomínio, título e slogan.
ii. O edifício é caracterizado por, identificador, nome, rua, lote, localidade, tipo
(moradia, prédio, etc.), e poderá possuir uma série de equipamentos e espaços
próprios.
iii. A fração é caracterizada por identificador, número de fração e tipologia.
iv. O utilizador é caracterizado por identificador, username, password, e-mail,
nome, moradas, contatos, BI, NIF, data nascimento, estado civil, género, foto
de perfil e tipo (administrador, administrador-meta ou utilizador), sendo que
estes terão diferentes níveis de privilégios.
c) A cada empresa criada estarão associados num determinado momento n edifícios. A
empresa de gestão de condomínios poderá registar novos edifícios, desvincular
edifícios dos quais já não possua a gestão, e alterar atributos de cada edifício. Cada
edifício criado no sistema de gestão será composto por n frações.
d) A cada empresa criada estarão num determinado momento n utilizadores associados.
A afetação dos utilizadores às frações é feita pela empresa de gestão de condomínios,
com base num login gerado (automaticamente) para cada utilizador, sendo registado o
14
período de utilização do mesmo. A cada fração poderão, num determinado espaço de
tempo, estar associados um ou mais utilizadores. Por cada edifício será registado um
histórico com as empresas detentoras da sua gestão, bem como os intervalos de datas
associados a cada empresa. Por cada fração será registado um histórico de todos os
utilizadores afetos à mesma, em que seja registado o utilizador, o tipo de utilizador, e
o intervalo de datas entre os diferentes períodos.
e) Cada edifício poderá conter espaços e equipamentos passíveis de reserva por parte dos
utilizadores afetos ao mesmo. Haverá uma agenda de reservas que será entendida
como uma funcionalidade gerida de forma autónoma. Cada reserva deverá ser feita
por períodos de tempo estabelecidos pela empresa de gestão, podendo a empresa
alterar ou anular a reserva.
f) A cada edifício estará associado um fórum de debate moderado pela empresa de
gestão, em que os utilizadores poderão criar ocorrências passíveis de serem debatidas,
ou apenas para mera informação. A cada ocorrência poderão estar associados n
documentos. Os documentos serão geridos pelo administrador da empresa e pelo
criador da ocorrência. A cada edifício estarão associados lançamentos contabilísticos
(despesas e recebimentos). A cada lançamento estará associado um documento que o
comprove. Por cada lançamento financeiro será criada uma ocorrência com a
possibilidade de discussão no fórum de debate. Cada ocorrência despoletada será de
uma determinada categoria, e sequentemente terá um responsável por parte da
empresa de gestão de condomínios que lhe dará seguimento e que lhe atribuirá um
determinado estado (ativo, arquivado e eliminado);
g) No backoffice da empresa, e relativamente ao processo responsável por controlar os
anúncios publicitários, será da responsabilidade da empresa gerir os atributos, assim
como a disposição dos anúncios;
h) Relativamente à gestão centralizada por parte dos administradores da plataforma
(Meta), pretende-se proceder à análise estatística dos dados guardados em base de
dados, assim como implementar um sistema de “logs” onde seja possível, em caso de
necessidade, alguns dados referentes à alteração e manipulação dos dados.
15
3.3 Diagramas dos subsistemas
3.3.1 Perspetiva do Meta-Administrador (Backoffice)
Ilustração 2 – Backoffice do Meta-administrador
Conforme ilustra a figura acima, e fazendo referência à estrutura de níveis anteriormente
identificados, do ponto de vista do Administrador-Meta, conseguimos identificar os seguintes
casos de uso (funcionalidades), na vertente de backoffice da empresa central. No seu todo,
16
todas as funcionalidades identificadas, pressupõem a autenticação do Administrador-Meta,
estando nesta primeira fase, limitado a ações de consulta, no que a informação dos
utilizadores diz respeito. Ou seja, não existe um contato direto entre o Administrador-Meta e
os outros intervenientes do processo. Nesta fase, o principal papel do Administrador-Meta,
prende-se com a criação e manutenção dos perfis das empresas. (Consultar anexo A.2 –
Descrição dos Cenários)
17
3.3.2 Perspetiva do Administrador da Empresa (Backoffice)
Ilustração 3 – Backoffice do Administrador da Empresa
18
Da perspetiva do Administrador da empresa de gestão de condomínios, a figura acima ilustra
as funcionalidades principais, relacionadas com a gestão dos edifícios e utilizadores.
Relativamente às restrições colocadas, o Administrador necessita de estar autenticado de
forma a poder usufruir de todas as funcionalidades do backoffice da empresa, estando
limitado o acesso aos dados apenas da sua empresa. Nesta primeira fase, o papel do
Administrador, prende-se como a gestão e manutenção dos perfis dos utilizadores, assim
como a gestão de todos os edifícios que agrega. É também da responsabilidade do
Administrador, mediar o fórum de discussão das ocorrências. (Consultar anexo A.2 –
Descrição dos Cenários)
19
3.3.3 Perspetiva do Utilizador (Backoffice)
Ilustração 4 – Backoffice do Utilizador
Da perspetiva do Utilizador (condómino), a figura acima ilustra as principais funcionalidades
que o Utilizador pode executar. O papel do Utilizador nesta primeira fase, resume-se à gestão
do seu próprio perfil, intervenção no fórum de discussão de ocorrências, consulta e reserva de
equipamentos, assim como consulta das contas da empresa. Pressupõe que o Utilizador tenha
de estar autenticado, limitando o seu acesso, apenas aos dados relacionados com o seu perfil,
assim como limitado aos dados referentes aos edifícios a que está afeto. (Consultar anexo A.2
– Descrição dos Cenários)
20
4 Implementação
4.1 Modelo Relacional
Conscientes da dimensão que poderá vir a ter o universo de dados num serviço como este,
decidiu-se apostar numa estrutura de dados o mais otimizada possível. Como tal, o principal
objetivo prendeu-se com a eficiência e integridade dos dados. Portanto, e com base na
arquitetura conceptual mencionada anteriormente, são identificadas as três tabelas principais
sob a qual assentam todos os fluxos de dados. Temos assim, as empresas de gestão de
condomínios [empresa], os edifícios [edifício] sob a alçada das empresas, e os utilizadores
[utilizador], onde se agrupam todos os intervenientes com o formato de utilizador (Utilizador,
Administrador e Administrador-Meta).
O relacionamento entre a empresa e o utilizador é estabelecido por intermédio do edifício,
cujo principal elo de ligação é estabelecido ao agregar utilizadores a frações. Este
relacionamento poderá ter múltiplas instâncias, na medida que um utilizador poderá estar
ligado à empresa por intermédio de várias frações. No entanto, esta multiplicidade é
necessária, uma vez que entre as frações e a empresa, ainda existem os edifícios. Nesta
primeira fase, interessa manter a integridade dos dados, e como tal foram evitadas ao máximo
as redundâncias nos relacionamentos.
As restantes tabelas, são o principal suporte de dados para as funcionalidades principais,
permitindo guardar dados como, moradas, ocorrências, equipamentos, reservas e dados de
cariz financeiro. Consegue-se assim perceber, que tudo gira em torno da entidade Edifício,
pois este representa a estrutura, tanto física como virtual, de ligação entre os condóminos e as
empresas de gestão de condomínios. A entidade Ocorrência tem aqui também, um papel
importantíssimo, na medida que representa as reais motivações para o uso desta plataforma,
constituindo a principal ferramenta de diálogo entre os intervenientes do processo.
21
4.2 Desenho Aplicacional
4.2.1 Visão Geral
Ilustração 5 – Estrutura Aplicacional PHP
A framework CodeIgniter está organizada, no âmbito do deste projeto, como ilustra a imagem
acima. Tem na sua base três diretorias distintas, sendo que o desenvolvimento da aplicação se
foca essencialmente na diretoria Application e Assets. A diretoria System contem todo o
núcleo da framework nomeadamente as suas librarias nativas, os drivers de conexão aos
diferentes motores de base de dados e os helpers, que nada mais são que classes que
simplificam determinadas tarefas no momento do desenvolvimento da aplicação. A diretoria
Assets é aquela que contem todos os imports de ficheiros javascript, css, imagens, assim
como os uploads futuros da aplicação desenvolvida. A diretoria uploads tem a particularidade
22
de ser gerada dinamicamente conforme o número de empresas instanciadas (sites gerados
dinamicamente).
4.2.2 Processo de criação de uma empresa
A diretoria Application compreende todas as classes próprias da aplicação, e é nesta diretoria
que está assente a aplicação efetivamente. Por cada empresa instanciada, isto é, por cada site
gerado, será também gerada uma subdiretoria de Controllers para essa mesma empresa, sendo
essa diretoria gerada com base num conjunto de classes previamente desenvolvidas e que
estão perfeitamente adaptáveis a cada empresa. Aqui é importante explicar o processo de
criação de uma empresa. Este processo pressupõe uma série de passos, desde o preenchimento
do formulário de dados da empresa, por parte do Administrador-Meta, até à criação das
diretorias específicas para cada empresa. Para além dos dados característicos de cada
empresa, existe um campo de preenchimento, à volta do qual se processa todo este
mecanismo. É o campo subdomínio o responsável por identificar a empresa enquanto parte
integrante da estrutura aplicacional. Permite logo à partida, aceder ao website da empresa,
fazendo parte integrante do url, assim como permite caraterizar a diretoria raiz da empresa na
aplicação. Com base neste subdomínio, processa de forma automática, a criação da empresa
na base de dados, assim como a criação da estrutura de pastas na aplicação. Este processo é
comum a todas a empresas criadas, uma vez que consiste em duplicar um conjunto de
diretorias genéricas, previamente criadas, capazes de se adaptar a cada empresa. É em torno
deste estrutura que se processam todos os Controllers, Models e Views, para cada empresa.
(Consultar anexo D.1)
4.2.3 Geração de páginas
A diretoria Views compreende os vários templates necessários para cada estado da aplicação.
Os templates foram concebidos para se adaptarem a cada empresa consoante a sua informação
(título, cores, slogan, logótipo, etc.). Aqui interessa referir o processo de geração das páginas
pela aplicação. Cada Controller tem um atributo de nome html, que nada mais é que um array
23
que será carregado com os dados relativos à empresa. Cada vez que o Controller é
instanciado, através da função function getHTML($subdominio) do Model
Empresa_model, esta função recebe a variável subdomínio que corresponde ao subdomínio
da empresa, que com base nessa variável, devolve um array com os dados da empresa.
Todas as páginas são geradas de forma dinâmica pela classe Genpage. Esta classe é parte
integrante de todos os Controllers, que fazem uso das suas funções para gerar as páginas
HTML.
Esta classe está composta pelas seguintes funções:
public function desenharPaginaMeta($data = "") ;
public function desenharPaginaAdmin($data = "");
public function desenharPaginaUser($data = "");
Cada uma destas funções é responsável por gerar as páginas da área de administração do
Meta-site, da Empresa, e do Utilizador, respetivamente. Estas funções recebem uma variável
data do tipo array onde poderão constar para além dos dados HTML, o caminho para as
views a serem carregadas, assim como os respetivos dados a serem carregados com as views.
function desenharPaginaFrontOfficeEmpresa($data = "",$error="");
Função responsável por gerar a página de frontoffice da empresa. Esta função recebe dois
parâmetros, o parâmetro data, que contém todas as variáveis que serão geradas
dinamicamente no código HTML, e o parâmetro error, que exibirá, caso existam, as
mensagens de erro para cada uma das situações de erro. (Consultar anexo D.2)
4.2.4 Recurso ao AJAX
Chegados a um determinado nível da implementação, concluímos ser necessário atribuir um
nível de dinamismo e interatividade mais elevado, no que à apresentação da informação diz
respeito. Como tal, optou-se por utilizar a função Ajax da framework JQuery. Esta tecnologia
consiste em estabelecer solicitações assíncronas de informação. Assim, o utilizador não
necessita de esperar que a página carregue de cada vez que nova informação é solicitada. Este
conceito reduz consideravelmente os tempos de respostas assim como a fluidez com que se
processam as ações do utilizador.
24
No caso desta plataforma, existem, em todas as áreas de administração, quatro áreas onde são
carregados de forma dinâmica e temporizada, as ocorrências que vão sendo guardadas na base
de dados. O carregamento das ocorrências é feito com base nos edifícios a que o
utilizador/administrador está associado, sendo que são carregadas as últimas quatro
ocorrências de cada tipo.
O pedido é efectuado por ajax às funções function get_oc_administrador($tipo) e
function get_oc_utilizador($tipo) do Controller Ocorrencias, conforme o tipo de
utilizador. A função entretanto recebe um pedido AJAX que passa por POST o tipo de
ocorrência a carregar. Com base no tipo, é evocado o método function
get_oc_by_tipo($ids, $tipo) do Model Ocorrencias_model que recebe como parâmetros
um array com os identificadores dos edifícios a que determinado utilizador está afeto, assim
como o tipo das ocorrências a pesquisar, devolvendo um array com as últimas 4 ocorrências.
De seguida a função gera links para a página de cada uma das ocorrências de forma dinâmica.
O recurso ao AJAX surge também para o carregamento de determinadas Views. Ao aceder às
opções disponíveis no perfil de Utilizador (Adicionar morada, Adicionar contacto, alterar
perfil) são despoletados por meio de jQuery, pedidos aos Controllers Contacto e Utilizador,
que através das funções function add_morada_user(), function add_morada_empresa(
), function add_contacto_user(), function add_morada_empresa() e function
editar_perfil($id_utilizador = ""), processam os dados recebidos por POST através
de AJAX, gerando dinamicamente um formulário de inserção de dados, tornando assim as
páginas muito mais dinâmicas e interativas.
25
4.2.5 Registo Log
Devido ao grande fluxo de dados expetado, concluiu-se ser necessária, a implementação de
um sistema de registo de atividades, mais precisamente, atividades relacionadas com a
manipulação de dados. Numa primeira fase, identificamos três tipos de operações básicas, de
interesse serem registadas. Temos assim, as operações de inserção, alteração e eliminação dos
dados. Sempre que um interveniente no processo, executa uma destas três operações, o
sistema regista numa tabela [log], a ação, tabela e instância afetadas, assim como a hora e
data. Interessa fazer referência à classe responsável por registar todas estas operações.
private function registar_actividade($id_tipo_log, $tabela, $id_registo) {
$data['id_tipo_log'] = $id_tipo_log;
$data['tabela'] = $tabela;
$data['instancia'] = $id_registo;
$data['data_log'] = $this->agora();
return $this->db->insert("log", $data);
}
Esta função está presente em todos os Models que compõem o projeto, e em função dos
métodos evocados, sejam eles relacionados com a inserção, alteração ou eliminação, e insere
na tabela log o devido registo.
27
5 Conclusão
Antes de mais, podemos começar por dizer que, durante o período de desenvolvimento deste
projeto, e mesmo não tendo sido um período significativamente grande, muitos fatores foram
postos à prova, no que às nossas capacidades diz respeito. No início este projeto começou por
ser encarado como uma “incubadora” para um desenvolvimento sólido desde a base, com
vista a uma eventual continuidade da ideia de negócio, tendo no entanto vindo a revelar-se, ao
longo do desenvolvimento do mesmo, que essa não seria a melhor abordagem nessa altura. A
nossa pesquisa foi constatando com uma realidade ligeiramente diferente do que se espectava,
começando a tornar-se clara a necessidade de alterar o rumo anteriormente delineado. Como
equipa, e não descurando o fato de que as diferentes necessidades e perspetivas individuais
são por vezes incompatíveis, optamos por encarar este projeto como um desafio académico e
pessoal, em prol da visão comercial/empresarial imprevisível numa altura de instabilidade
como esta que vivemos.
Relativamente aos pressupostos a que nos propusemos, apenas interessa referir um ou outro
aspeto, que não tendo sido implementados, asseguraram um papel importante em toda a
estruturação desta plataforma. O seu reconhecimento, aquando da análise de requisitos,
valorizam o projeto em estudo, assim como deixam em aberto a possibilidade futura da sua
implementação. Como tal, e referindo os tais aspetos, temos a questão da personalização da
imagem da empresa, que poderá ser um pormenor a ter em conta, disponibilizando um
mecanismo mais automatizado, estilo CMS, valorizando significativamente o produto; assim
como a questão de poder representar entidades físicas/virtuais numa relação 1:1, evitando
assim dados duplicados.
No âmbito académico, este projeto permitiu-nos assimilar e adquirir novas competências, no
que a novas tecnologias diz respeito, assim como consolidar um grande leque de
conhecimento adquirido anteriormente. Numa altura em que o mercado de trabalho se prepara
para nos receber, é importante salientar acima de tudo, a capacidade demonstrada, como
equipa, na resolução de todos os problemas com que nos fomos deparando (e não foram
28
poucos). Por vezes não é fácil encontrar o devido suporte, e o fator tempo não abonou em
nosso favor. Independentemente de todos os obstáculos pelos quais passamos, na nossa
opinião, o resultado revelou-se bastante positivo. Desenvolver uma aplicação em PHP, com
uma estrutura de codificação complexa, assente numa base de dados robusta, de dimensão
considerável (de longe muito superior a qualquer exercício académico), complementada por
três backoffices e dois frontoffices, enche-nos de orgulho, independentemente do real valor do
nosso trabalho. Acima de tudo, permitiu-nos obter uma visão mais perto de uma realidade,
com a qual nos podemos deparar brevemente, mas ao mesmo tempo, conscientes que o real
conhecimentos ainda está para vir.
29
Bibliografia
CodeIgniter User Guide Version 2.1.2. (s.d.). Obtido em 15 de 08 de 2012, de CodeIgniter:
http://codeigniter.com/user_guide/
da Silva, A. R., & Videira, C. E. (2001). UML, Metodologias e Ferramentas CASE. Lisboa: Edições Centro
Atlântico.
http://w3.ualg.pt/~pventura/ep/aulas_tp/t1_g8.pdf. (s.d.). Obtido em 01 de 09 de 2012, de http://w3.ualg.pt:
http://w3.ualg.pt/~pventura/ep/aulas_tp/t1_g8.pdf
Model–view–controller. (s.d.). Obtido em 21 de 08 de 2012, de Wikipedia, the free encyclopedia:
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
4
A.2 Descrição dos Cenários
Caso de Uso: Alocar Utilizador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Alocar Utilizador
Extend Casos de Uso.Listar Frações
Casos de Uso.Criar Perfil
Utilizador
Extend Casos de Uso.Alocar Utilizador
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Alocar Utilizador" e é evocado o
caso de uso "Criar".
Alternativo
Criar perfil tuilizador
Em qualquer altura o actor poderá pressionar o botão "Criar
perfil utilizador" e será evocado o caso de uso "Criar Perfil
Utilizador".
Caso de Uso: Alocar a Fração
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Alocar a Fração
Extend Casos de Uso.Consultar Perfil
Utilizador
5
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Alocar a fração" e o sistema
apresenta um conjunto de caixas de listagem que permitem
escolher a fração em função do edifício escolhido, e alocar o
utilizador seleccionado à fração escolhida.
Restrições: Nome Estado Notas
O administrador apenas pode
alocar utilizadores da sua
empresa a frações dos edifícios
da sua empresa.
Aprovado
Caso de Uso: Alterar Password
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 31-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Alterar Password
Extend Casos de Uso.Consultar Perfil
Utilizador
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Alterar password" e o sistema envia
um e-mail para o utilizador com o link para a página de
recuperação da password. O utilizador nessa página
introduz uma nova password. O sistema altera a password
na base de dados.
Restrições: Nome Estado Notas
O utilizador apenas poderá
alterar a sua prórpia password.
Aprovado
6
Caso de Uso: Alterar Reserva
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Alterar Reserva
Extend Casos de Uso.Consultar Reserva
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Alterar Reserva" e o sistema
apresenta um formulário com os dados da reserva para
edição. O actor altera os dados e pressiona o botão "Gravar
dados". O sistema altera os dados na base de dados.
Restrições: Nome Estado Notas
O administrador apenas poderá
alterar as reservas referentes aos
equipamentos dos edifícios da
sua empresa.
Aprovado
O utilizador apenas poderá
alterar as reservas efetuadas por
si.
Aprovado
Caso de Uso: Anexar Documento
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Anexar Documento
Extend Casos de Uso.Criar Ocorrência
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Anexar documento" e o sistema
apresenta uma janela onde o actor seleciona o documento
que quer anexar. O sistema associa o documento à
7
ocorrência em causa.
Caso de Uso: Arquivar Ocorrência
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 03-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Arquivar
Ocorrência
Extend Casos de Uso.Consultar Ocorrência
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Arquivar Ocorrência" e o sistema
apresenta uma mensagem de confirmação do arquivo da
ocorrência seleccionada. O actor valida o arquivo da
ocorrência. O sistema coloca a ocorrência a arquivada na
base de dados. (deixa de ser possível comentar a
ocorrência).
Restrições: Nome Estado Notas
Apenas o administrador poderá
arquivar de todas as ocorrências
de todos os edifícios da sua
empresa.
Aprovado
Caso de Uso: Arquivar Relato
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 24-08-2012
Notas:
8
Caso de Uso: Avaria
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 23-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Avaria
Generalization Casos de Uso.Criar Ocorrência
Caso de Uso: Comentar Ocorrência
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 03-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Comentar
Ocorrência
Extend Casos de Uso.Consultar Ocorrência
Cenários:
Cenário Principal
Cenário Principal
O actor preenche o formulário existente no fundo de cada
ocorrência com os dados do comentário. O actor pressiona o
botão "Submeter comentário". O sistema insere os dados na
base de dados.
9
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá comentar as
ocorrências dos seus edifícios.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá comentar
todas as ocorrências de todos os
edifícios da sua empresa.
Aprovado
Caso de Uso: Consultar Edificio
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 30-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Consultar Edificio
Extend Casos de Uso.Listar Edificios
Casos de Uso.Listar Frações
Extend Casos de Uso.Consultar Edificio
Casos de Uso.Criar Frações
Extend Casos de Uso.Consultar Edificio
Casos de Uso.Eliminar Edificio
Extend Casos de Uso.Consultar Edificio
Casos de Uso.Editar Edificio
Extend Casos de Uso.Consultar Edificio
Casos de Uso.Listar Utilizadores
Extend Casos de Uso.Consultar Edificio
Casos de Uso.Consultar Edificio
Extend Casos de Uso.Consultar Perfil
Empresa
Casos de Uso.Listar Ocorrências
por Tipo
Extend Casos de Uso.Consultar Edificio
Casos de Uso.Listar
Equipamentos
Extend Casos de Uso.Consultar Edificio
Casos de Uso.Listar Reservas
Extend Casos de Uso.Consultar Edificio
10
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "consultar edificio" e o sistema
apresenta uma tabela com os dados do perfil do edificio,
assim como uma tabela com as frações que ele possui.
Alternativo
Editar edificio
Em qualquer altura o actor poderá pressionar o botão "Editar
Edificio" e será evocado o caso de uso "Editar Edifício".
Alternativo
Eliminar Edifício
Em qualquer altura o actor poderá pressionar o botão "Eliminar
edificio" e será evocado o caso de uso "Eliminar Edifício".
Alternativo
Criar Frações
Em qualquer altura o actor poderá pressionar o botão "Criar
frações" e será evocado o caso de uso "Criar Frações".
Alternativo
Listar Utilizadores
Alternativo
Consultar frações
Em qualquer altura o actor poderá pressionar o botão "Consultar
frações" e será evocado o caso de uso "Consultar Frações".
Alternativo
Listar Equipamentos
Em qualquer altura o actor poderá pressionar o botão "Listar
equipamentos" e será evocado o caso de uso "Listar
Equipamentos".
Alternativo
Listar Ocorrências
Em qualquer altura o actor poderá pressionar os botões "Listar
Ocorrências" por tipo de ocorrência e será evocado o caso
de uso "Listar Ocorrências Por Tipo".
Alternativo
Listar Reservas
Em qualquer altura o actor poderá pressionar o botão "Listar
reservas" e será evocado o caso de uso "Listar Reservas".
11
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá aceder ao perfil
dos edificios aos quais está
afecto, bem como não poderá
aceder à listagem das frações
para esses edificios.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá aceder ao
perfil dos edificios que a sua
empresa possui.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, poderá
aceder ao perfil de todos os
edificios da base de dados.
Aprovado
Caso de Uso: Consultar Equipamento
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 31-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Consultar
Equipamento
Extend Casos de Uso.Listar Equipamentos
Casos de Uso.Reservar
Equipamento
Extend Casos de Uso.Consultar Equipamento
Casos de Uso.Consultar Reserva
Extend Casos de Uso.Consultar Equipamento
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Consultar equipamento" e o sistema
apresenta uma tabela com os dados do equipamento
seleccionado, assim como uma tabela com as reservas
referentes a esse equipamento, se existirem.
Alternativo Em qualquer altura o utilizador poderá pressionar o botão
"Consultar reserva" e será evocado o caso de uso "Consultar
12
Consultar Reserva Reserva".
Alternativo
Reservar equipamento
Em qualquer altura o actor poderá pressionar o botão "Reservar
equipamento" e será evocado o caso de uso "Reservar
Equipamento".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá consultar
equipamentos dos edifícios aos
quais está afecto.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá consultar
equipamentos de todos os
edifícios da sua empresa.
Aprovado
Caso de Uso: Consultar Informação Empresa
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Espectador
UseCaseLink Casos de Uso.Consultar Informação
Empresa
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Sobre Nós" (frontOffice da Empresa)
e o sistema exibe a informação acerca da empresa.
13
Caso de Uso: Consultar Informação Serviço
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Espectador
UseCaseLink Casos de Uso.Consultar Informação
Serviço
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Sobre Nós" (frontOffice do Meta) e o
sistema exibe a informação do serviço prestado pela
plataforma(meta).
Caso de Uso: Consultar Ocorrência
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 30-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Consultar
Ocorrência
Extend Casos de Uso.Listar Ocorrências por
Tipo
Casos de Uso.Comentar
Ocorrência
Extend Casos de Uso.Consultar Ocorrência
Casos de Uso.Arquivar
Ocorrência
Extend Casos de Uso.Consultar Ocorrência
Casos de Uso.Eliminar Ocorrência
Extend Casos de Uso.Consultar Ocorrência
Casos de Uso.Download Extend Casos de Uso.Consultar Ocorrência
14
Documento
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Consultar Ocorrência" e o sistema
apresenta uma tabela com os dados referentes à ocorrência
seleccionada.
Alternativo
Arquivar ocorrência
A qualquer altura o actor poderá pressionar o botão "Arquivar
occorrência" e será evocado o caso de uso "Arquivar
Ocorrência".
Alternativo
Eliminar Ocrorrência
A qualquer altura o actor poderá pressionar o botão "Eliminar
occorrência" e será evocado o caso de uso "Eliminar
Ocorrência".
Alternativo
Comentar Ocorrência
A qualquer altura o actor poderá pressionar o botão "Comentar
occorrência" e será evocado o caso de uso "Comentar
Ocorrência".
Alternativo
Download do Documento
A qualquer altura o actor poderá pressionar o botão "Dowload
documento" e será evocado o caso de uso "Download
Documento".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá consultar
ocorrências referentes aos
edifícios aos quais está afecto.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá visualizar
todas as ocorrências de todos os
edifícios da sua empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, poderá
visualizar todas as ocorrências
de todos os edifícios da base de
dados.
Aprovado
15
Caso de Uso: Consultar Perfil Administrador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 29-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Editar Perfil
Administrador
Extend Casos de Uso.Consultar Perfil
Administrador
Actors.Administrador
UseCaseLink Casos de Uso.Consultar Perfil
Administrador
Casos de Uso.Consultar Perfil
Administrador
Extend Casos de Uso.Listar Administradores
Casos de Uso.Eliminar Perfil
Administrador
Extend Casos de Uso.Consultar Perfil
Administrador
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão visualizar perfil de administrador e o
sistema apresenta uma tabela com os dados do
administrador.
Alternativo
Editar Perfil de Aministrador
Em qualquer altura o actor pode pressionar o botão "Editar
perfil" e é evocado o caso de uso "Editar Perfil
Administrador".
Alternativo
Eliminar Perfil de Administrador
Em qualquer altura o actor pode pressionar o botão "Eliminar
perfil" e é evocado o caso de uso "Eliminar Perfil
Administrador".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como
administrador, pode visualizar o
seu perfil e o perfil dos outros
administradores da sua
Aprovado
16
empresa.
Se estiver autenticado como
administrador-meta, pode
visualizar o perfil de todos os
administradores de todas as
empresas.
Aprovado
Caso de Uso: Consultar Perfil Administrador Meta
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 29-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Editar Perfil
Administrador
Extend Casos de Uso.Consultar Perfil
Administrador Meta
Casos de Uso.Eliminar Perfil
Administrador
Extend Casos de Uso.Consultar Perfil
Administrador Meta
Casos de Uso.Consultar Perfil
Administrador Meta
Extend Casos de Uso.Listar Administradores
Meta
Actors.Administrador Meta
UseCaseLink Casos de Uso.Consultar Perfil
Administrador Meta
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "visualizar perfil de administrador-
meta" e o sistema apresenta uma tabela com os dados do
administrador-meta seleccionado.
Alternativo
Editar Perfil Administrador
Em qualquer altura o actor pode pressionar o botão "Editar
perfil" e é evocado o caso de uso "Editar Perfil
Administrador".
Alternativo
Eliminar Perfil Administrador
Em qualquer altura o actor pode pressionar o botão "Eliminar
perfil" e é evocado o caso de uso "Eliminar Perfil
Admnistrador".
17
Caso de Uso: Consultar Perfil Empresa
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Created: 20-11-2005 Modified: 31-08-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Utilizador
UseCaseLink Casos de Uso.Consultar Perfil
Empresa
Casos de Uso.Editar Perfil
Empresa
Extend Casos de Uso.Consultar Perfil
Empresa
Casos de Uso.Consultar Perfil
Empresa
Extend Casos de Uso.Listar Empresas
Casos de Uso.Eliminar Perfil
Empresa
Extend Casos de Uso.Consultar Perfil
Empresa
Casos de Uso.Listar
Administradores
Extend Casos de Uso.Consultar Perfil
Empresa
Casos de Uso.Listar Utilizadores
Extend Casos de Uso.Consultar Perfil
Empresa
Casos de Uso.Consultar Edificio
Extend Casos de Uso.Consultar Perfil
Empresa
Actors.Administrador
UseCaseLink Casos de Uso.Consultar Perfil
Empresa
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "consultar perfil empresa" e o sistema
apresenta uma tabela com os dados da empresa
seleccionada, assim como uma tabela com uma listagem dos
edifícios pertencentes à empresa.
18
Alternativo
Editar Perfil da Empresa
Em qualquer altura o actor pode pressionar o botão "Editar
perfil" e é evocado o caso de uso "Editar Perfil Empresa".
Alternativo
Eliminar Perfil Empresa
Em qualquer altura o actor pode pressionar o botão "Eliminar
Perfil" e é evocado o caso de uso "Eliminar Pefil Empresa".
Alternativo
Listar Administradores
Em qualquer altura o actor pode pressionar o botão "Listar
administradores" e é evocado o caso de uso "Listar
Administradores".
Alternativo
Listar Utilizadores
Em qualquer altura o actor pode pressionar o botão "Listar
utilizadores" e é evocado o caso de uso "Listar utilizadores".
Alternativo
Consultar Edificio
Em qualquer altura o actor pode pressionar o botão "Ver perfil
edificio" e é evocado o caso de uso "Consultar Edifício".
Restrições: Nome Estado Notas
No caso do utilizador estar
autenticado como utilizador, (na
tabela de edificios) apenas serão
listados os edificios aos quais
ele pertence.
Aprovado
Caso de Uso: Consultar Perfil Utilizador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Utilizador UseCaseLink Casos de Uso.Consultar Perfil
Utilizador
19
Casos de Uso.Editar Perfil
Utilizador
Extend Casos de Uso.Consultar Perfil
Utilizador
Casos de Uso.Consultar Perfil
Utilizador
Extend Casos de Uso.Listar Utilizadores
Casos de Uso.Eliminar Perfil
Utilizador
Extend Casos de Uso.Consultar Perfil
Utilizador
Casos de Uso.Alocar a Fração
Extend Casos de Uso.Consultar Perfil
Utilizador
Casos de Uso.Consultar Perfil
Utilizador
Extend Casos de Uso.Listar Frações
Casos de Uso.Alterar Password
Extend Casos de Uso.Consultar Perfil
Utilizador
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Consultar perfil de utilizador" e o
sistema apresenta uma tabela com os dados do utilizador
seleccionado.
Alternativo
Editar Perfil Utilizador
Em qualquer altura o actor pode pressionar o botão "Editar
perfil" e é evocado o caso de uso "Editar Perfil Utilizador".
Alternativo
Eliminar Perfil
Em qualquer altura o actor pode pressionar o botão "Eliminar
perfil" e é evocado o caso de uso "Eliminar Perfil
Utilizador".
Alternativo
Alocar Fração
Em qualquer altura o actor pode pressionar o botão "Alocar a
fração" e é evocado o caso de uso "Alocar a Fração".
Alternativo
Alterar password
Em qualquer altura o actor pode pressionar o botão "Alterar
passwordl" e é evocado o caso de uso "Alterar Password".
20
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá visualizar o seu
próprio perfil, e o perfil dos
utilizadores afectos aos mesmo
edifícios que ele.
Aprovado
Caso de Uso: Consultar Reserva
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 31-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Consultar Reserva
Extend Casos de Uso.Listar Reservas
Casos de Uso.Alterar Reserva
Extend Casos de Uso.Consultar Reserva
Casos de Uso.Eliminar Reserva
Extend Casos de Uso.Consultar Reserva
Casos de Uso.Consultar Reserva
Extend Casos de Uso.Consultar Equipamento
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Consultar reserva" e o sistema
apresenta uma tabela com os dados referentes à reserva
seleccionada.
Alternativo
Eliminar Reserva
Em qualquer altura o actor poderá pressionar o botão "Eliminar
reserva" e será evocado o caso de uso "Eliminar Reserva".
Alternativo
Alterar Reserva
Em qualquer altura o actor poderá pressionar o botão "Alterar
reserva" e será evocado o caso de uso "Alterar Reserva".
21
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador
apenas poderá visualizar as
reservas referentes aos
equipamentos dos edificios aos
quais está afecto.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá visualizar
as reservas referentes aos
equipamentos de todos os
edifícios da sua empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta não poderá
visualizar reservas de nenhum
equipamento de nenhum
edifício.
Aprovado
Caso de Uso: Criar Edificio
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Criar Edificio
Extend Casos de Uso.Listar Edificios
Actors.Administrador
UseCaseLink Casos de Uso.Criar Edificio
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Criar Edifício" e o sistema apresenta
um formulário de preenchimento dos dados do novo
edifício. O actor pressiona o botão "Gravar dados" e o
sistema insere os novos dados na base de dados.
Restrições: Nome Estado Notas
O administrador apenas poderá
associar novos edifícos à sua
empresa.
Aprovado
22
Caso de Uso: Criar Equipamento
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Criar Equipamento
Extend Casos de Uso.Listar Equipamentos
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Criar Equipamento" e o sistema
apresenta um formulário de preenchimento dos dados do
novo equipamento. O actor preenche os dados e pressiona o
botão "Gravar dados". O sistema insere os dados na base de
dados.
Restrições: Nome Estado Notas
O utilizador apenas poderá
associar novos equipamentos a
edifícios da sua empresa.
Aprovado
Caso de Uso: Criar Frações
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Criar Frações
Extend Casos de Uso.Consultar Edificio
Cenários:
23
Cenário Principal
Cenário Principal
O actor pressiona o botão "Criar frações" o o sistema apresenta
um formulário onde o utilizador insere o número de pisos
do edifício e o número de frações por piso. O actor
pressiona o botão "Gravar dados" e o sistema cria as frações
na base de dados.
Restrições: Nome Estado Notas
O administrador apenas poderá
criar frações em edifícios da sua
empresa.
Aprovado
Caso de Uso: Criar Ocorrência
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Criar Ocorrência
Extend Casos de Uso.Listar Ocorrências por
Tipo
Casos de Uso.Anexar Documento
Extend Casos de Uso.Criar Ocorrência
Casos de Uso.Reclamação
Generalization Casos de Uso.Criar Ocorrência
Casos de Uso.Avaria
Generalization Casos de Uso.Criar Ocorrência
Casos de Uso.Evento
Generalization Casos de Uso.Criar Ocorrência
Casos de Uso.Genérica
Generalization Casos de Uso.Criar Ocorrência
Casos de Uso.Lançamento
Generalization Casos de Uso.Criar Ocorrência
Casos de Uso.Reunião
Generalization Casos de Uso.Criar Ocorrência
Casos de Uso.Relato
Generalization Casos de Uso.Criar Ocorrência
24
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Criar Ocorrência" em função do tipo
de ocorrência
(Avaria/Evento/Genérica/Lançamento/Reclamação/Relato/
Reunião) e o sistema apresenta um formulário de
preenchimento dos dados da ocorrência. O actor pressiona o
botão "Gravar dados" e o sistema insere a ocorrência na
base de dados.
Alternativo
Anexar documento
Em qualquer altura o actor poderá pressionar o botão "Anexar
documento" e será evocado o caso de uso "Anexar
Documento".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá criar ocorrências
dos tipos:
-Avaria;
-Reclamação;
-Evento;
-Genérica;
Aprovado
Se o utilizador estiver
autenticado como
adiministrador, poderá criar
ocorrências de todos os tipos.
Aprovado
Caso de Uso: Criar Perfil Administrador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 31-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Criar Perfil
Administrador
Extend Casos de Uso.Listar Administradores
Casos de Uso.Criar Perfil
Administrador
Extend Casos de Uso.Listar Administradores
Meta
25
Actors.Administrador Meta
UseCaseLink Casos de Uso.Criar Perfil
Administrador
Actors.Administrador
UseCaseLink Casos de Uso.Criar Perfil
Administrador
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Criar administrador" em função do
tipo(Administrador/Administrador-meta) e o sistema
apresenta um formulário de preenchimento dos dados do
novo administrador. O actor preenche os dados e pressiona
o botão "Gravar dados". O sistema insere os dados na base
de dados.
Restrições: Nome Estado Notas
Se utilizador estiver autenticado
como administrador, apenas
poderá criar perfis de
administrador afectos à sua
empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, poderá
criar perfis de administrador (e
administrador-meta) associados
a qualquer empresa.
Aprovado
Caso de Uso: Criar Perfil Empresa
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Criar Perfil
Empresa
Extend Casos de Uso.Listar Empresas
Actors.Administrador Meta
UseCaseLink Casos de Uso.Criar Perfil Empresa
26
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Criar Empresa" e o sistema apresenta
um formulário de preenchimento dos dados da nova
empresa. O actor preenche os dados e pressiona o botão
"Gravar dados". O sistema insere os dados na base de
dados.
Caso de Uso: Criar Perfil Utilizador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Criar Perfil
Utilizador
Extend Casos de Uso.Alocar Utilizador
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Criar Utilizador" e o sistema
apresenta um formulário de preenchimento dos dados do
novo utilizador. O actor preenche os dados e pressiona o
botão "Gravar dados". O sistema insere os dados na base de
dados.
Restrições: Nome Estado Notas
O administrador apenas poderá
criar utilizadores associados à
sua empresa.
Aprovado
Caso de Uso: Download Documento
Estado: Proposed Version: 1.0 Phase: 1.0
27
Autor: Ice Tea Created: 28-08-2012 Modified: 03-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Download
Documento
Extend Casos de Uso.Consultar Ocorrência
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Download documento" e o sistema
envia o ficheiro directamente para o computador do
utilizador.
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá efectuar
download de documentos
anexos às ocorrências dos seus
edifícios.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá efectuar
download de todos os
documentos anexos às
ocorrências de todos os
edifícios da sua empresa.
Aprovado
Caso de Uso: Editar Edificio
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Editar Edificio
Extend Casos de Uso.Consultar Edificio
Cenários:
28
Cenário Principal
Cenário Principal
O actor pressiona o botão "Editar Edifício" e o sistema apresenta
um formulário com os dados do edifício para edição. O
actor altera os dados e pressiona o botão "Gravar dados". O
sistema altera os dados na base de dados.
Restrições: Nome Estado Notas
O administrador apenas poderá
editar os perfis dos edifícios da
sua empresa.
Aprovado
Caso de Uso: Editar Perfil Administrador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 31-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Editar Perfil
Administrador
Extend Casos de Uso.Consultar Perfil
Administrador
Casos de Uso.Editar Perfil
Administrador
Extend Casos de Uso.Consultar Perfil
Administrador Meta
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Editar Perfil" e o sistema apresenta
um formulário com os dados do administrador para edição.
O actor altera os dados e pressiona o botão "Gravar dados".
O sistema altera os dados na base de dados.
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como administrador
apenas poderá editar o seu
perfil ou os perfis dos
administradores da sua
empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, poderá
editar o perfil de qualquer
Aprovado
29
administrador da base dados.
Caso de Uso: Editar Perfil Empresa
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Editar Perfil
Empresa
Extend Casos de Uso.Consultar Perfil
Empresa
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Editar Perfil" e o sistema apresenta
um formulário com os dados da empresa para edição. O
actor altera os dados e pressiona o botão "Gravar dados". O
sistema altera os dados na base de dados.
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como administrador
apenas poderá editar o perfil da
sua empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, poderá
editar o perfil de qualquer
empresa da base dados.
Aprovado
Caso de Uso: Editar Perfil Utilizador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
30
Casos de Uso.Editar Perfil
Utilizador
Extend Casos de Uso.Consultar Perfil
Utilizador
Actors.Utilizador
UseCaseLink Casos de Uso.Editar Perfil Utilizador
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Editar Perfil" e o sistema apresenta
um formulário com os dados do utilizador para edição. O
actor altera os dados e pressiona o botão "Gravar dados". O
sistema altera os dados na base de dados.
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como administrador
apenas poderá editar os perfis
dos utilizadores da sua empresa.
Aprovado
Se o utilizador estiver
autenticado como utilizador
apenas poderá editar o seu
perfil.
Aprovado
Caso de Uso: Eliminar Edificio
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Eliminar Edificio
Extend Casos de Uso.Consultar Edificio
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Eliminar Edifício" e o sistema
apresenta uma mensagem de confirmação da eliminação do
edifício seleccionado. O actor valida a eliminação do
edifício. O sistema coloca o edifício como inactivo na base
de dados. (não elimina os dados).
31
Restrições: Nome Estado Notas
O administrador apenas poderá
eliminar edifícios da sua
empresa.
Aprovado
Caso de Uso: Eliminar Equipamento
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Eliminar
Equipamento
Extend Casos de Uso.Listar Equipamentos
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Eliminar Equipamento" e o sistema
apresenta uma mensagem de confirmação da eliminação do
equipamento seleccionado. O actor valida a eliminação do
equipamento. O sistema coloca o equipamento como
inactivo na base de dados. (não elimina os dados).
Restrições: Nome Estado Notas
O administrador apenas poderá
eliminar equipamentos de
edifícios da sua empresa.
Aprovado
Caso de Uso: Eliminar Ocorrência
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 03-09-2012
Notas:
Ligado a: Origem Relação Destino
32
Casos de Uso.Eliminar Ocorrência
Extend Casos de Uso.Consultar Ocorrência
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Eliminar Ocorrência" e o sistema
apresenta uma mensagem de confirmação da eliminação da
ocorrência seleccionada. O actor valida a eliminação da
ocorrência. O sistema coloca a ocorrência a inactiva na base
de dados. (não elimina os dados).
Restrições: Nome Estado Notas
O administrador poderá
efectuar download de todos os
documentos anexos às
ocorrências de todos os
edifícios da sua empresa.
Aprovado
Caso de Uso: Eliminar Perfil Administrador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Eliminar Perfil
Administrador
Extend Casos de Uso.Consultar Perfil
Administrador
Casos de Uso.Eliminar Perfil
Administrador
Extend Casos de Uso.Consultar Perfil
Administrador Meta
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Eliminar Perfil" e o sistema apresenta
uma mensagem de confirmação da eliminação do perfil do
administrador seleccionado. O actor valida a eliminação do
administrador. O sistema coloca o perfil do administrador a
inactivo na base de dados. (não elimina os dados).
33
Caso de Uso: Eliminar Perfil Empresa
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Eliminar Perfil
Empresa
Extend Casos de Uso.Consultar Perfil
Empresa
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Eliminar Perfil" e o sistema apresenta
uma mensagem de confirmação da eliminação do perfil da
empresa seleccionada. O actor valida a eliminação da
empresa. O sistema coloca o perfil da empresa a inactivo na
base de dados. (não elimina os dados).
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como
administrador-meta, poderá
eliminar o perfil de qualquer
empresa na base dados.
Aprovado
Caso de Uso: Eliminar Perfil Utilizador
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Eliminar Perfil
Utilizador
Extend Casos de Uso.Consultar Perfil
Utilizador
34
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Eliminar Perfil" e o sistema apresenta
uma mensagem de confirmação da eliminação do perfil do
utilizador seleccionado. O actor valida a eliminação do
utilizador. O sistema coloca o perfil do utilizador a inactivo
na base de dados. (não elimina os dados).
Restrições: Nome Estado Notas
O administrador apenas poderá
eliminar perfis de utilizadores
da sua empresa.
Aprovado
Caso de Uso: Eliminar Reserva
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Eliminar Reserva
Extend Casos de Uso.Consultar Reserva
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Eliminar Reserva" e o sistema
apresenta uma mensagem de confirmação da eliminação da
reserva seleccionada. O actor valida a eliminação da
reserva. O sistema coloca a reserva como inactivo na base
de dados. (não elimina os dados).
Restrições: Nome Estado Notas
O administrador apenas poderá
eliminar reservas referentes a
equipamentos de edifícios da
sua empresa.
Aprovado
O utilizador apenas poderá
eliminar as suas próprias
reservas.
Aprovado
35
Caso de Uso: Evento
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 23-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Evento
Generalization Casos de Uso.Criar Ocorrência
Caso de Uso: Genérica
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 23-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Genérica
Generalization Casos de Uso.Criar Ocorrência
Caso de Uso: Lançamento
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 23-08-2012
Notas:
36
Ligado a: Origem Relação Destino
Casos de Uso.Lançamento
Generalization Casos de Uso.Criar Ocorrência
Caso de Uso: Listar Administradores
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 29-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Criar Perfil
Administrador
Extend Casos de Uso.Listar Administradores
Casos de Uso.Consultar Perfil
Administrador
Extend Casos de Uso.Listar Administradores
Actors.Administrador Meta
UseCaseLink Casos de Uso.Listar Administradores
Casos de Uso.Listar
Administradores
Extend Casos de Uso.Consultar Perfil
Empresa
Actors.Administrador
UseCaseLink Casos de Uso.Listar Administradores
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão listar administradores e o sistema
apresenta uma tabela com todos os administradores
disponíveis.
Alternativo
Consultar Perfil Administrador
Em qualquer altura o actor poderá pressionar o botão "Consultar
perfil" e é evocado o caso de uso "Consultar Perfil
Administrador".
37
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como
administrador, pode listar todos
os administradores da sua
empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, pode listar
todos os administradores de
todas as empresas.
Aprovado
Caso de Uso: Listar Administradores Meta
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 29-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Consultar Perfil
Administrador Meta
Extend Casos de Uso.Listar Administradores
Meta
Casos de Uso.Criar Perfil
Administrador
Extend Casos de Uso.Listar Administradores
Meta
Actors.Administrador Meta
UseCaseLink Casos de Uso.Listar Administradores
Meta
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão listar administradores-meta e o
sistema apresenta um tabela com o todos os
administradores-meta disponíveis.
Alternativo
Consultar Perfil Administrador-Meta
Em qualquer altura o actor poderá pressionar o botão "Consultar
perfil" e é evocado o caso de uso "Consultar Perfil
Administrador-Meta".
38
Caso de Uso: Listar Edificios
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 29-08-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Utilizador
UseCaseLink Casos de Uso.Listar Edificios
Casos de Uso.Consultar Edificio
Extend Casos de Uso.Listar Edificios
Casos de Uso.Criar Edificio
Extend Casos de Uso.Listar Edificios
Actors.Administrador
UseCaseLink Casos de Uso.Listar Edificios
Actors.Administrador Meta
UseCaseLink Casos de Uso.Listar Edificios
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão listar edificios e o sistema apresenta
uma tabela com os edifícios disponíveis.
Alternativo
Consultar Edifício
Em qualquer altura o actor poderá pressionar o botão "Consultar
Perfil" e é evocado o caso de uso "Consultar Edificio".
Alternativo
Criar Edifício
Em qualquer altura o actor poderá pressionar o botão "Criar
edifício" e é evocado o caso de uso "Criar Edifício".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
pode listar apenas os edifícios
aos quais está afecto.
Aprovado
Se o utilizador estiver
autenticado como
administrador, pode listar todos
Aprovado
39
os edificios pertencentes à sua
empresa.
Se o utilizador estiver
autenticado como
administrador-meta, pode listar
todos os edificios referentes a
todas as empresas.
Aprovado
Caso de Uso: Listar Empresas
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 24-08-2012 Modified: 29-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Consultar Perfil
Empresa
Extend Casos de Uso.Listar Empresas
Casos de Uso.Criar Perfil
Empresa
Extend Casos de Uso.Listar Empresas
Actors.Administrador Meta
UseCaseLink Casos de Uso.Listar Empresas
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "listar empresas" e o sistema mostra
uma tabela com as empresas disponíveis.
Alternativo
Criar Empresa
Em qualquer altura o actor poderá pressionar o botão "Criar
Perfil" e é evocado o caso de uso "Criar Perfil Empresa".
Alternativo
Consultar Perfil Empresa
Em qualquer altura o actor poderá pressionar o botão "Consultar
Perfil" e é evocado o caso de uso "Consultar Perfil
Empresa".
40
Caso de Uso: Listar Equipamentos
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 31-08-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Utilizador
UseCaseLink Casos de Uso.Listar Equipamentos
Casos de Uso.Consultar
Equipamento
Extend Casos de Uso.Listar Equipamentos
Casos de Uso.Criar Equipamento
Extend Casos de Uso.Listar Equipamentos
Casos de Uso.Eliminar
Equipamento
Extend Casos de Uso.Listar Equipamentos
Actors.Administrador
UseCaseLink Casos de Uso.Listar Equipamentos
Casos de Uso.Listar
Equipamentos
Extend Casos de Uso.Consultar Edificio
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Listar equipamentos" e o sistema
apresenta uma tabela com uma listagem dos equipamentos
disponíveis.
Alternativo
Consultar Equipamento
Em qualquer altura o actor poderá pressionar o botão "Consultar
equipamento" e será evocado o caso de uso "Consultar
Equipamento".
Alternativo
Criar equipamento
Em qualquer altura o actor poderá pressionar o botão "Criar
equipamento" e será evocado o caso de uso "Criar
Equipamento".
41
Alternativo
Eliminar equipamento
Em qualquer altura o actor poderá pressionar o botão "Eliminar
equipamento" e será evocado o caso de uso "Eliminar
Equipamento".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá listar
equipamentos referentes aos
edifícios aos quais está afecto.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá listar
equipamentos de todos os
edifícios da sua empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, não poderá
listar nenhum equipamento de
nenhum edifício da base de
dados.
Aprovado
Caso de Uso: Listar Frações
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 02-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Listar Frações
Extend Casos de Uso.Consultar Edificio
Casos de Uso.Alocar Utilizador
Extend Casos de Uso.Listar Frações
Casos de Uso.Consultar Perfil
Utilizador
Extend Casos de Uso.Listar Frações
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Listar frações" e o sistema apresenta
uma tabela com os dados da frações pertencentes ao edifício
seleccionado.
42
Alternativo
Alocar Utilizador
A qualquer altura o actor poderá pressionar o botão "Alocar
utilizador" e será evocado o caso de uso "Alocar utilizador".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá consultar os
dados das frações às quais está
afecto.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá consultar
os dados de todas as frações de
todos os edifícios da sua
empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, poderá
consultar os dados de todas as
frações de todos os edifícios da
base de dados.
Aprovado
Caso de Uso: Listar Ocorrências por Tipo
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 31-08-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Utilizador
UseCaseLink Casos de Uso.Listar Ocorrências por
Tipo
Casos de Uso.Criar Ocorrência
Extend Casos de Uso.Listar Ocorrências por
Tipo
Casos de Uso.Consultar
Ocorrência
Extend Casos de Uso.Listar Ocorrências por
Tipo
Actors.Administrador
UseCaseLink Casos de Uso.Listar Ocorrências por
Tipo
43
Casos de Uso.Listar Ocorrências
por Tipo
Extend Casos de Uso.Consultar Edificio
Actors.Administrador Meta
UseCaseLink Casos de Uso.Listar Ocorrências por
Tipo
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona os botões "Listar Ocorrências" em função do
tipo de ocorrência, e o sistema apresenta uma tabela com
uma listagem de ocorrências do tipo seleccionado.
Alternativo
Consultar Ocorrencia
Em qualquer altura o actor poderá pressionar o botão "Consultar
ocorrência" e será evocado o caso de uso "Consultar
Ocorrência".
Alternativo
Criar ocorrência
Em qualquer altura o actor poderá pressionar o botão "Criar
ocorrência" e será evocado o caso de uso "Criar
Ocorrência".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador,
apenas poderá visualizar as
ocorrências referentes aos
edifícios aos quais ele está
afecto e de todos os tipos de
ocorrências excepto o tipo
"Relato".
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá consultar
todas as ocorrências de todos os
tipos, para os edifícios da sua
empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, poderá
visualizar todas as ocorrªencias
de todos os tipos de todos os
edifícios.
Aprovado
44
Caso de Uso: Listar Reservas
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 31-08-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Utilizador
UseCaseLink Casos de Uso.Listar Reservas
Casos de Uso.Consultar Reserva
Extend Casos de Uso.Listar Reservas
Actors.Administrador
UseCaseLink Casos de Uso.Listar Reservas
Casos de Uso.Listar Reservas
Extend Casos de Uso.Consultar Edificio
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Listar Reservas" e o sistema
apresenta uma tabela com uma listagem das reservas
disponíveis.
Alternativo
Consultar Reserva
Em qualquer altura o actor poderá pressionar o botão "Consultar
Reserva" e será evocado o caso de uso "Consultar Reserva".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como utilizador
apenas poderá visualizar as
reservas referentes aos
equipamentos dos edificios aos
quais está afecto.
Aprovado
Se o utilizador estiver
autenticado como
administrador, poderá visualizar
as reservas referentes aos
equipamentos de todos os
edifícios da sua empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta não poderá
visualizar reservas de nenhum
equipamento de nenhum
edifício.
Aprovado
45
Caso de Uso: Listar Utilizadores
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 29-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Consultar Perfil
Utilizador
Extend Casos de Uso.Listar Utilizadores
Actors.Administrador
UseCaseLink Casos de Uso.Listar Utilizadores
Actors.Administrador Meta
UseCaseLink Casos de Uso.Listar Utilizadores
Casos de Uso.Listar Utilizadores
Extend Casos de Uso.Consultar Perfil
Empresa
Casos de Uso.Listar Utilizadores
Extend Casos de Uso.Consultar Edificio
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "listar utilizadores" e o sistema
apresenta uma tabela com os utilizadores disponíveis.
Alternativo
Consultar Perfil Utilizador
Em qualquer altura o actor poderá pressionar o botão "Consultar
perfil" e é evocado o caso de uso "Consultar Perfil
Utilizador".
Restrições: Nome Estado Notas
Se o utilizador estiver
autenticado como
administrador, apenas poderá
listar os utilizadores
pertencentes à sua empresa.
Aprovado
Se o utilizador estiver
autenticado como
administrador-meta, poderá
listar todos os utlizadores
Aprovado
46
existentes na base de dados.
Se o utilizador estiver
autenticado como utilizador,
apenas poderá listar utilizadores
que estejam afectos aos
mesmos edifícios que ele.
Aprovado
Caso de Uso: Login
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 30-08-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Espectador
UseCaseLink Casos de Uso.Login
Cenários:
Cenário Principal
Cenário Principal
O espectador preenche os campos do formulário de autenticação
e pressiona o botão "Iniciar Sessão". O espectador muda de
estado para utilizador autenticado.
Alternativo
Erro de autenticação
O processo de autenticação falha e o caso de uso dá-se por
terminado.
Caso de Uso: Logout
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Created: 19-11-2005 Modified: 30-08-2012
Notas:
Ligado a: Origem Relação Destino
47
Actors.Utilizador
UseCaseLink Casos de Uso.Logout
Actors.Administrador
UseCaseLink Casos de Uso.Logout
Actors.Administrador Meta
UseCaseLink Casos de Uso.Logout
Cenários:
Cenário Principal
Cenário Principal
O utilizador pressiona o botão Terminar Sessão e o sistema
termina a sessão de utilização da plataforma para aquele
utilizador.
Caso de Uso: Pedido Informações
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Espectador
UseCaseLink Casos de Uso.Pedido Informações
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Pedido de informações" e o sistema
apresenta um formulário de preenchimento. O actor
preenche os campos do formulário e submete os dados. O
sistema envia um email para o administrador-meta com os
dados do pedido de informação.
48
Caso de Uso: Reclamação
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 23-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Reclamação
Generalization Casos de Uso.Criar Ocorrência
Caso de Uso: Recuperar Password
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Actors.Espectador
UseCaseLink Casos de Uso.Recuperar Password
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão recuperar password e o sistema
apresenta um formulário com preenchimento do userNome
e do email da conta a qual se pretende recuperar a password.
O actor preenche os dados e submete o formulário. O actor
é informado do envio de um email com um link para a
recuperação da password. O actor configura uma nova
password e o sistema altera os dados na base de dados.
Caso de Uso: Relato
49
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 28-08-2012 Modified: 28-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Relato
Generalization Casos de Uso.Criar Ocorrência
Caso de Uso: Reservar Equipamento
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 11-09-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso.Reservar
Equipamento
Extend Casos de Uso.Consultar Equipamento
Cenários:
Cenário Principal
Cenário Principal
O actor pressiona o botão "Reservar Equipamento" e o sistema
apresenta um formulário de preenchimento dos dados da
nova reserva. O actor escolhe um intervalos de datas
disponível, preenche os dados e pressiona o botão "Gravar
dados". O sistema insere os dados na base de dados.
Restrições: Nome Estado Notas
o utilizador apenas poderá
reservar equipamentos dos
edifícios aos quais esta afecto.
Aprovado
50
Caso de Uso: Reunião
Estado: Proposed Version: 1.0 Phase: 1.0
Autor: Ice Tea Created: 23-08-2012 Modified: 23-08-2012
Notas:
Ligado a: Origem Relação Destino
Casos de Uso. Reunião
Generalization Casos de Uso.Criar Ocorrência
59
Anexo D
D – Codificação
D.1 Processo de inserção de uma Empresa
function inserir() {
if (empty($_POST) || !isset($_POST)) {
redirect($this->index());
} else {
if (!file_exists('assets/uploads/' . $this->input-
>post('subdominio'))) {
mkdir('assets/uploads/' . $this->input->post('subdominio'),
0777);
}
if (!file_exists('assets/uploads/' . $this->input-
>post('subdominio') . '/utilizadores')) {
mkdir('assets/uploads/' . $this->input->post('subdominio')
. '/utilizadores', 0777);
}
if (!file_exists('assets/uploads/' . $this->input-
>post('subdominio') . '/edificios')) {
mkdir('assets/uploads/' . $this->input->post('subdominio')
. '/edificios', 0777);
}
if (!file_exists('assets/uploads/' . $this->input-
>post('subdominio') . '/empresa')) {
mkdir('assets/uploads/' . $this->input->post('subdominio')
. '/empresa', 0777);
}
if (!file_exists('assets/uploads/' . $this->input-
>post('subdominio') . '/documentos')) {
mkdir('assets/uploads/' . $this->input->post('subdominio')
. '/documentos', 0777);
}
$zip = new ZipArchive();
$x = $zip->open("application/controllers/base.zip");
60
$zip->extractTo('application/controllers/' . $this->input-
>post('subdominio'));
$zip->close();
if ($_FILES['userfile']['size'] > 0) {
$config['upload_path'] = './assets/uploads/' . $this-
>input->post('subdominio') . '/empresa';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '10000';
$this->upload->initialize($config);
if (!$this->upload->do_upload()) {
$error = array('error' => $this->upload-
>display_errors());
$view['view'] = array('content/meta/inserir_empresa' =>
$error);
$this->genPage->desenharPaginaMeta($view);
}
$upload = $this->upload->data();
$emp_data['logotipo'] = base_url() . 'assets/uploads/' .
$this->input->post('subdominio') . '/empresa/' . $upload['file_name'];
}
//Array com a informação para a tabela empresa
$emp_data['nome_empresa'] = $_POST['nome'];
$emp_data['nif_empresa'] = $_POST['nif'];
$emp_data['descricao_empresa'] = $_POST['desc'];
$emp_data['url'] = $_POST['url'];
$emp_data['subdominio'] = $_POST['subdominio'];
$emp_data['html_titulo'] = $_POST['html_titulo'];
$emp_data['html_copyright'] = $_POST['html_copyright'];
$emp_data['slogan'] = $_POST['slogan'];
//Array com a morada da empresa
$morada_data = array('rua' => $_POST['rua'],
'numero' => $_POST['numero'],
'localidade' => $_POST['localidade'],
'zip_code' => $_POST['cp'],
'tipo_morada' => $_POST['tipo_morada'],
'distrito' => $_POST['distrito']
);
//Array com o contacto da empresa
$contactos_data = array('contacto' => $_POST['contacto'],
'tipo_contacto' => $_POST['tipo_contacto']);
//Array com os ficheiros css da empresa
if (isset($_POST['css']) || !empty($_POST['css'])) {
foreach ($_POST['css'] as $key => $value) {
$css_data[$key] = $value;
}
}
//Array com os ficheiros js da empresa
if (isset($_POST['js']) && !empty($_POST['js'])) {
foreach ($_POST['js'] as $key => $value) {
$js_data[$key] = $value;
61
}
}
$administrador = array(
'id_tipo_utilizador'=>1,
'username'=>'administrador',
'password'=> $this->utilizador->hash("admin"),
'activo'=>1
);
if ($this->empresa->inserir($emp_data, $css_data, $js_data,
$morada_data, $contactos_data)) {
$this->listar_empresas();
}
}
}
//Model Empresa -> inserir
function inserir($emp_data, $css_data, $js_data, $morada_data,
$contatos_data) {
$emp_data['activo'] = 1;
$this->db->insert('empresa', $emp_data);
$emp_id = mysql_insert_id();
$this->registar_actividade(0, $this->tabela_empresa, $emp_id);
$edificio = array(
'tipo_edificio' => "base",
'nome' => "BASE-" . $emp_data['subdominio'],
'rua' => "_",
'lote' => "_",
'localidade' => "-",
'activo'=>1
);
$this->db->insert("edificio", $edificio);
$id_edificio = mysql_insert_id();
$this->registar_actividade(0, $this->tabela_edificio,
$id_edificio);
$fracao = array(
'id_edificio' => $id_edificio,
'tipo_fracao' => "base",
'numero_fracao' => "base",
);
$this->db->insert("fracao", $fracao);
$id_fracao = mysql_insert_id();
$this->registar_actividade(0, $this->tabela_fracao, $id_fracao);
$empresa_edificio = array(
'id_edificio' => $id_edificio,
'id_empresa' => $emp_id,
);
$this->db->insert('empresa_edificio', $empresa_edificio);
$id_emp_edificio = mysql_insert_id();
62
$this->registar_actividade(0, $this->tabela_empresa_edificio,
$id_emp_edificio);
$administrador = array(
'id_tipo_utilizador'=>1,
'username'=>'administrador',
'password'=> $this->utilizador->hash("admin"),
'activo'=>1
);
$this->db->insert('utilizador',$administrador);
$id_admin = mysql_insert_id();
$this->registar_actividade(0, 'utilizador', $id_admin);
$utilizador_fracao = array(
'id_fracao'=>$id_fracao,
'id_utilizador'=>$id_admin
);
$this->db->insert('utilizador_fracao',$utilizador_fracao);
$id_utilizador_fracao = mysql_insert_id();
$this->registar_actividade(0, 'utilizador_fracao',
$id_utilizador_fracao);
$morada_data['data_inicio'] = $this->agora();
$morada_data['id_empresa'] = $emp_id;
$this->db->insert('morada_empresa', $morada_data);
$id_morada = mysql_insert_id();
$this->registar_actividade(0, 'morada_empresa', $id_morada);
$contatos_data['id_empresa'] = $emp_id;
$this->db->insert('contacto_empresa', $contatos_data);
$id_contacto = mysql_insert_id();
$this->registar_actividade(0, 'contacto_empresa', $id_contacto);
if (!$css_data[0] == NULL) {
foreach ($css_data as $key => $value) {
$data_css['css_name'] = $value;
$data_css['id_empresa'] = $emp_id;
$this->db->insert('css_html', $data_css);
$id_css = mysql_insert_id();
$this->registar_actividade(0, 'css_html', $id_css);
}
}
if (!$js_data[0] == NULL) {
foreach ($js_data as $key => $value) {
$data_js['script_name'] = $value;
$data_js['id_empresa'] = $emp_id;
$this->db->insert('java_script', $data_js);
$id_js = mysql_insert_id();
$this->registar_actividade(0, 'java_script', $id_js);
}
}
return TRUE;
63
}
//get html
function getHTML($subdominio) {
$html = $this->db->get_where('empresa', array('subdominio' =>
$subdominio));
if (!$html->num_rows() == 1)
return FALSE;
else {
$data = $html->result();
$id_emp = $data[0]->id_empresa;
$q = $this->db->select('css_name')
->get_where('css_html', array('id_empresa' =>
$id_emp));
if ($q->num_rows() > 0) {
$data['css'] = $q->result();
}
$q = $this->db->select('script_name')
->get_where('java_script', array('id_empresa' =>
$id_emp));
if ($q->num_rows() > 0) {
$data['js'] = $q->result();
}
return $data;
}
}
64
D.2 Classe Genpage
class Genpage {
var $CI;
public function __construct() {
$this->CI = &get_instance();
}
public function desenharPaginaMeta($data = "") {
$this->CI->template->set_template('tpl_meta/main');
$this->CI->template->nome_empresa = "PGC - Gestão de Condominios";
$this->CI->template->html_copyright = "Todos os direitos reservados
à PGC-Condominios";
$this->CI->template->title->add("PGC - Gestão de Condominios");
$this->CI->template->stylesheet->add('/assets/css/estilos.css');
$this->CI->template->stylesheet-
>add('/assets/css/demo_table_jui.css');
$this->CI->template->stylesheet->add('/assets/css/icones-
effects.css');
$this->CI->template->stylesheet->add('/assets/css/colors-
blue.css');
$this->CI->template->javascript->add('/assets/js/jquery-
1.8.0.min.js');
$this->CI->template->javascript->add('/assets/js/template-
main.js');
$this->CI->template->javascript-
>add('/assets/js/jquery.dataTables.js');
$this->CI->template->javascript-
>add('/assets/charts/js/highcharts.js');
$this->CI->template->descricao->add("Meta Portal PGC");
if (isset($data['view']))
foreach ($data['view'] as $key => $value) {
$this->CI->template->content->view($key, $value);
}
$this->CI->template->publish();
}
public function desenharPaginaAdmin($data = "") {
$this->CI->template->set_template('tpl_administrador/main');
$this->CI->template->nome_empresa = $data['0']->nome_empresa;
$this->CI->template->html_copyright = $data['0']->html_copyright;
$this->CI->template->javascript->add('assets/js/jquery-
1.8.0.min.js');
$this->CI->template->javascript->add('assets/js/template-main.js');
$this->CI->template->javascript-
>add('/assets/js/jquery.dataTables.js');
$this->CI->template->javascript-
>add('assets/js/jquery.livequery.js');
$this->CI->template->stylesheet->add('assets/css/estilos.css');
65
$this->CI->template->stylesheet-
>add('assets/css/demo_table_jui.css');
$this->CI->template->stylesheet->add('assets/css/icones-
effects.css');
if(isset($data[0]->logotipo)&&!empty($data[0]->logotipo))
$this->CI->template->logotipo = $data['0']->logotipo;
else
$this->CI->template->logotipo-
>default(base_url().'assets/img/logos/logo-center.png');
if (isset($data[0]->html_titulo))
$this->CI->template->title = $data[0]->html_titulo;
else
$this->CI->template->title->add("Empresa sem titulo");
if (!empty($data['css'])) {
foreach ($data['css'] as $key) {
$this->CI->template->stylesheet->add('/assets/css/' . $key-
>css_name);
}
} else {
$this->CI->template->stylesheet->add('/assets/css/estilo.css');
$this->CI->template->stylesheet->add('/assets/css/icones-
effects.css');
}
if (!empty($data['js'])) {
foreach ($data['js'] as $key) {
$this->CI->template->javascript->add('/assets/js/' . $key-
>script_name);
}
}
if (isset($data[0]->descricao_empresa)) {
$this->CI->template->descricao->add($data[0]-
>descricao_empresa);
} else {
$this->CI->template->descricao->add("Empresa sem descição
definida");
}
if (isset($data['view']))
foreach ($data['view'] as $key => $value) {
$this->CI->template->content->view($key, $value);
}
$this->CI->template->publish();
}
public function desenharPaginaUser($data = "") {
$this->CI->template->set_template('tpl_utilizador/main');
$this->CI->template->nome_empresa = $data['0']->nome_empresa;
$this->CI->template->html_copyright = $data['0']->html_copyright;
$this->CI->template->javascript->add('/assets/js/jquery-
1.8.0.min.js');
$this->CI->template->javascript->add('/assets/js/template-
main.js');
66
$this->CI->template->javascript-
>add('/assets/js/jquery.dataTables.js');
$this->CI->template->javascript-
>add('assets/js/jquery.livequery.js');
$this->CI->template->stylesheet->add('/assets/css/estilos.css');
$this->CI->template->stylesheet-
>add('/assets/css/demo_table_jui.css');
$this->CI->template->stylesheet->add('/assets/css/icones-
effects.css');
if(isset($data[0]->logotipo)&&!empty($data[0]->logotipo))
$this->CI->template->logotipo = $data['0']->logotipo;
else
$this->CI->template->logotipo-
>default(base_url().'assets/img/logos/logo-center.png');
if (isset($data[0]->html_titulo))
$this->CI->template->title = $data[0]->html_titulo;
else
$this->CI->template->title->add("Empresa sem titulo");
if (!empty($data['css'])) {
foreach ($data['css'] as $key) {
$this->CI->template->stylesheet->add('/assets/css/' . $key-
>css_name);
}
} else {
$this->CI->template->stylesheet->add('/assets/css/estilo.css');
$this->CI->template->stylesheet->add('/assets/css/icones-
effects.css');
}
if (!empty($data['js'])) {
foreach ($data['js'] as $key) {
$this->CI->template->javascript->add('/assets/js/' . $key-
>script_name);
}
} else {
$this->CI->template->javascript-
>add('/assets/js/jquery.min.js');
}
if (isset($data[0]->descricao_empresa)) {
$this->CI->template->descricao->add($data[0]-
>descricao_empresa);
} else {
$this->CI->template->descricao->add("Empresa sem descição
definida");
}
if (isset($data['view']))
foreach ($data['view'] as $key => $value) {
$this->CI->template->content->view($key, $value);
}
$this->CI->template->publish();
}
function desenharPaginaFrontOfficeEmpresa($data = "",$error="") {
67
$this->CI->template->set_template('emp_frontoffice/emp-front-
office');
if(isset($error)&&!empty($error))
$this->CI->template->error->add($error);
$this->CI->template->nome_empresa = $data[0]->nome_empresa;
$this->CI->template->html_copyright = $data[0]->html_copyright;
$this->CI->template->title = $data[0]->html_titulo;
$this->CI->template->utf8->add(" <meta http-equiv='Content-Type'
content='text/html; charset=UTF-8'>");
$this->CI->template->stylesheet->add('/assets/css/emp-front-
office.css');
$this->CI->template->stylesheet->add('/assets/css/front-green-
colors.css');
$this->CI->template->javascript->add('/assets/js/jquery-
1.8.0.min.js');
$this->CI->template->javascript->add('/assets/js/emp-front-
office.js');
$this->CI->template->descricao = $data[0]->descricao_empresa;
$this->CI->template->slogan = $data[0]->slogan;
$this->CI->template->logotipo = $data[0]->logotipo;
$this->CI->template->publish();
}
}