multi-enterprise condominium management system...

118
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

Upload: nguyenxuyen

Post on 27-Jul-2018

241 views

Category:

Documents


0 download

TRANSCRIPT

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

vi

vii

Dedicatória

A nós, por todo o percurso académico consagrado com grande louvor.

viii

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.

x

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.

xii

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.

xiv

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

xvii

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

xix

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.

2

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.

26

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

1

Anexo A

A – Casos de UsoErro! Auto-referência de

marcador inválida.

A.1 Diagramas

2

A.1.1 Diagrama Geral

3

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

51

Anexo B

52

B – Diagrama Entidade-Relacionamento

Casos de UsoErro! Auto-referência de marcador inválida.

53

54

Anexo C

C – Templates das Páginas

55

C.1 Frontoffice do Meta-Site

56

C.2 Backoffice do Meta-Site

57

C.3 Frontoffice da Empresa

58

C.4 Backoffice da Empresa

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();

}

}

68

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