Instituto Politécnico da Guarda Escola Superior de Tecnologia e Gestão. Plataforma de anúncios online, Anuncie aqui já



Documentos relacionados
Manual de Utilizador

A sua empresa é uma Beta-Tester da Imoplataforma. Guia de Utilização

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Programação para Internet Avançada. 4. Web Services. Nuno Miguel Gil Fonseca

Sistema de Gestão de Ciclo de Vida de Farmácias AVP003. Manual de Utilizador Externo - Entregas ao Domicílio e Vendas via Internet

Apresentando o novo modelo de atendimento Centro Marista de Serviços - CMS. Curitiba, Julho de 2014

Aplicativos para Internet Aula 01

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu 2014/2

ÍNDICE MANUAL SITE ADMINISTRÁVEL TV. 1. Introdução 2. Acessando o site administrável/webtv SITE ADMINISTRÁVEL 3. CONFIGURAÇÕES

Manual utilização. Dezembro Instituto Politécnico de Viseu

Manual de Utilizador Documentos de Transporte. TOConline. Suporte. Página - 1

PROJ. Nº LLP NL-ERASMUS-ECUE

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO - TIC 10º C. Planificação de. Curso Profissional de Técnico de Secretariado

WEBSITE DEFIR PRO

MANUAL DO GERENCIADOR ESCOLAR WEB

Escola Superior de Tecnologia de Setúbal. Projecto Final

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania

O aumento da força de vendas da empresa

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Aplicações de Escritório Electrónico

Manual SAGe Versão 1.2 (a partir da versão )

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Manual de Utilizador. Disciplina de Projecto de Sistemas Industriais. Escola Superior de Tecnologia. Instituto Politécnico de Castelo Branco

Rock In Rio - Lisboa

Manual de Utilização. Site Manager. Tecnologia ao serviço do Mundo Rural

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

INSTRUMENTO NORMATIVO 004 IN004

Novo Formato de Logins Manual de Consulta

Documento de Análise e Projeto VideoSystem

iconnect 3.3 Atualizações Pesquisa Dinâmica

Noções de. Microsoft SQL Server. Microsoft SQL Server

Desenvolvimento de uma Aplicação WEB para monitorização de BD Oracle

Construção Páginas de Internet

Apresentação. Sistema de E-Commerce

Sistema de Gestão de Ciclo de Vida de Farmácias & Gestão de Ciclo de Vida de Locais de Venda MNSRM AVP003 Manual de Utilizador Externo - Comunicação

Manual do Painel Administrativo

LinkCities MANUAL GESTOR DE CONTEÚDOS. Cities all together, make a better world. Copyright 2014 Link Think. Todos os direitos reservados.

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

TUTORIAL DO ALUNO. Olá, bem vindo à plataforma de cursos a distância da Uniapae!!!

PLATAFORMA INFORMÁTICA DE REQUISIÇÃO DE POLICIAMENTO DE ESPETÁCULOS DESPORTIVOS (PIRPED)

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

MANUAL DE UTILIZAÇÃO

EAmb V.1 ESPOSENDE AMBIENTE. GestProcessos Online. Manual do Utilizador

Direcção Regional de Educação do Algarve

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

Desenvolvendo para WEB

DESENVOLVIMENTO DE SOFTWARE DE VOTAÇÃO WEB UTILIZANDO TECNOLOGIA TOUCHSCREEN

Curso de Eng. Informática Linguagens de Programação. C Sharp University Data Processing. (C Sharp Universidade de Processamento de Dados) Docente:

A SÈTIMA. O nosso principal objectivo

NewAgent enterprise-brain

PLANIFICAÇÃO ANUAL DA DISCIPLINA DE TECNOLOGIAS DE INFORMAÇÃO E COMUNICAÇÃO ANO LETIVO DE 2013/2014 Curso CEF Tipo 2

1 Sumário O Easy Chat Conceitos Perfil Categoria Instalação O Aplicativo HTML...

4.3 Ferramentas para criar conteúdos/recursos educativos

Manual do Usuário. E-DOC Peticionamento Eletrônico TST

Sumário. Vipexpress Plataforma web para intermediação de vendas online entre usuários

Orientação a Objetos

Manual de utilização do Moodle

DELEGAÇÃO REGIONAL DO ALENTEJO CENTRO DE FORMAÇÃO PROFISSIONAL DE ÉVORA. Reflexão Criação de páginas para a web em hipertexto

Desenvolvendo Websites com PHP

Facebook Instruções de integração com PayPal

Manual de Utilizador de Clínicas.

MANUAL DO UTILIZADOR

O Oficina Integrada é um sistema completo para o controle e gerenciamento de oficinas mecânicas. É o primeiro e único software que controla o fluxo

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

Introdução à Tecnologia Web. Tipos de Sites. Profª MSc. Elizabete Munzlinger

Equipa PTE. Janeiro 2012

Antes de começar tens que saber o que é o hi5. O hi5 é um conjunto de páginas pessoais em que o utilizador se expõe a uma comunidade virtual.

Portal Sindical. Manual Operacional Empresas/Escritórios

Manual de configuração do sistema

Novidades no Q-flow 3.02

XHTML 1.0 DTDs e Validação

Manual de Configuração

MANUAL DO PVP SUMÁRIO

Tutorial: criação de uma Ficha de Voluntário online

MANUAL DE UTILIZADOR/A. mwba.montemor.jeec an.pt mwba.viseu.jeec an.pt

1. Plataforma Sage Primeiro Acesso Configurações Relacionamento Folha de Pagamento esocial...

Manual WebAdmin News

Universidade Federal de Mato Grosso. Secretaria de Tecnologias da Informação e Comunicação. SISCOFRE Sistema de Controle de Frequência MANUAL

SUMÁRIO Acesso ao sistema... 2 Atendente... 3

TRBOnet MDC Console. Manual de Operação

Comunicação de Dados de Autenticação e Credenciais de Acesso para Resposta ao Inquérito

PHC dteamcontrol Externo

SERVICE DESK MANAGER SDM. Manual do Sistema - DPOI

Web Design. Prof. Felippe

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA ETEC PROF. MÁRIO ANTÔNIO VERZA CURSO TÉCNICO EM INFORMÁTICA PARA INTERNET

novo ManageToRefresh

Engenharia de Software Sistemas Distribuídos

Número de pessoas com acesso à internet passa de 120 milhões

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Armazém Sistema de Recebimento SDR 006 LIBERTAÇÃO DO ESTOQUE USUÁRIO MANUAL DE TREINAMENTO. Versão 1.00

Documentação. Programa de Evolução Contínua Versão 1.72

Cenários do CEL. Acessar ao sistema

bit Tecnologia ao Serviço do Mundo Rural

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Manual de Utilização do Zimbra

TOTVS Série 1 Varejo (Simples) - Módulo e-commerce

AQUI VOCÊ ENCONTRA! (67) Salas comerciais, veículos, imóveis, serviços, produtos, ofertas, eventos e muito mais...

Transcrição:

Instituto Politécnico da Guarda Escola Superior de Tecnologia e Gestão Plataforma de anúncios online, Anuncie aqui já Daniel Teixeira Gêgo - N o 1009988 Projeto Aplicado no Curso de Engenharia Informática em contexto de estágio 15 de novembro de 2012

Instituto Politécnico da Guarda Escola Superior de Tecnologia e Gestão Plataforma de anúncios online, Anuncie aqui já Daniel Teixeira Gêgo - N o 1009988 Projeto Aplicado no Curso de Engenharia Informática em contexto de estágio Supervisor: André Filipe Barata - Gerente - DotFlow Solutions, Lda Orientador: Mestre Paulo Jorge Costa Nunes, Professor Adjunto da Unidade Técnico-Cientíca de Informática da ESTG. 15 de novembro de 2012

Agradecimentos O desenvolvimento deste projeto, em contexto de estágio, foi me facilitado devido à ajuda de alguns intervenientes aos quais gostaria de deixar aqui o meu agradecimento. Em primeiro lugar, como não poderia deixar de ser, quero deixar um agradecimento a todos os familiares e amigos que sempre me incentivaram ao longo de todo o projeto. Um agradecimento à Diretora da Escola Superior de Tecnologia e Gestão, Professora Doutora Maria Clara Silveira por todo o seu apoio e disponibilidade. Um agradecimento aos professores da Unidade Curricular do Projeto de Informática, Professor Paulo Nunes (Orientador do projeto), e ao Professor Noel Lopes. Um agradecimento ao supervisor do projeto, Gerente da empresa DotFlow Solutions, Lda, André Filipe Barata, o qual sempre se mostrou disponível para qualquer assunto relacionado com o projeto. Por m, um agradecimento muito especial à minha namorada, pelo apoio e paciência que sempre demonstrou.

Resumo Este documento descreve o trabalho realizado no âmbito da Unidade Curricular Projeto de Informática, na Licenciatura em Engenharia Informática da Escola Superior de Tecnologia e Gestão do Instituto Politécnico da Guarda. Devido à evolução tecnológica e à necessidade de vender ou comprar produtos em segunda mão, cada vez mais as pessoas procuram vários produtos ou serviços na Internet e para isso é necessário criar uma plataforma que facilite a procura ou a publicação dos anúncios a esses utilizadores. O projeto consistiu em desenvolver uma aplicação em que os utilizadores podem inserir anúncios e visualizar os anúncios inseridos por outros utilizadores, sendo estas as principais funcionalidades da aplicação. Foi ainda desenvolvida a parte de gestão da aplicação, onde os moderadores podem, por exemplo, validar os anúncios e responder a mensagens. Os administradores podem, por exemplo, inserir novos funcionários e ver os anúncios conrmados. As ferramentas usadas no desenvolvimento do projeto foi o Microsof Visual Studio e o Microsoft Sql Server Management Studio. As principais tecnologias utilizadas foram: ASP.NET, C# e o SQL SERVER. Palavras Chave Anúncios online, ASP.NET, C#, LINQ to Entities, SQL SERVER

Abstract This document describes the work done under the discipline Projeto de Informática in the graduation in Engenharia Informática from Escola Superior de Tecnologia e Gestão in the Instituto Politécnico da Guarda. Due to technological developments and need to sell or buy second-hand products, increasingly people are looking for various products or services on the Internet and to do it is necessary create a platform that facilitates the search or your advertisements to those users. The project was to develop an application that users can insert advertisements and view inserted advertisements by other users, which are the main features of the application. It was developed too a management application area where moderators may, for example, validate the advertisements and reply to messages. The Administrators can, for example, insert new employees and see the advertisements conrmed. The tools used in the development of the project was Microsof Visual Studio and Microsoft Sql Server Management Studio. The main technologies used were: ASP.NET, C# and SQL SERVER. Key words Online advertisements, ASP.NET, C#, LINQ to Entities, SQL SERVER

Conteúdo 1 Introdução 13 1.1 Instituição de acolhimento........................ 14 1.2 Motivação................................. 14 1.3 Solução.................................. 15 1.4 Contribuição................................ 15 1.5 Estrutura do documento......................... 16 2 Estado da arte 17 2.1 Portugal Anúncios classicados grátis OLX............... 17 2.2 Anúncios grátis Coisas.......................... 19 2.3 Custo Justo Portugal........................... 21 2.4 Imovirtual................................. 23 2.5 Standvirtual................................ 23 2.6 Comparação das aplicações existentes da área............. 23 3 Metodologia e resultados esperados 25 3.1 Metodologia................................ 25 3.2 Descrição das tarefas........................... 26 3.3 Resultados esperados........................... 27 4 Tecnologias utilizadas 28 4.1 Introdução................................. 28 4.2 Tecnologias web.............................. 28 4.2.1 HTML............................... 28 4.2.2 CSS................................ 29 4.2.3 Javascript............................. 30 4.2.4 ASP.NET............................. 30 4.2.5 C#................................. 31 4.2.6 Microsoft SQL SERVER..................... 32 4.2.7 Linq to Entities.......................... 32 4.3 Software utilizado............................. 32 4.3.1 Microsoft Visual Studio 2010................... 32 4.3.2 SQL Server Management Studio................. 33 5 Implementação da solução 34 5.1 Introdução................................. 34 5.2 A importância do login e do logout................... 35 4

5.3 Base de dados Anúncios......................... 35 5.3.1 Modelo Relacional........................ 35 5.3.2 Dicionário de dados........................ 40 5.3.2.1 Anuncios........................ 40 5.3.2.2 Anuncios_Veiculos................... 40 5.3.2.3 Anuncios_Imoveis................... 41 5.3.2.4 Anuncios_Animais................... 41 5.3.2.5 Anuncios_Empregos.................. 42 5.3.2.6 Utilizadores....................... 42 5.3.2.7 Moderadores...................... 43 5.3.2.8 Distritos......................... 43 5.3.2.9 Concelhos........................ 43 5.3.2.10 Freguesias........................ 44 5.3.2.11 SubCategorias..................... 44 5.3.2.12 Categorias........................ 44 5.3.2.13 TiposAnuncio...................... 45 5.3.2.14 CatTip......................... 45 5.3.2.15 Mensagens....................... 45 5.4 Aplicação ASP.NET em três camadas.................. 46 5.5 FrontOce................................ 47 5.5.1 Visitante.............................. 47 5.5.1.1 Mapa do site...................... 47 5.5.1.2 Home Page....................... 48 5.5.1.3 Registo de utilizadores................. 52 5.5.2 Utilizador............................. 54 5.5.2.1 Mapa do site...................... 54 5.5.2.2 Home Page....................... 55 5.5.2.3 Inserir anúncio..................... 57 5.5.2.4 Editar anúncio..................... 62 5.5.2.5 Os meus anúncios.................... 65 5.5.2.6 Editar dados pessoais................. 67 5.5.2.7 Editar password.................... 68 5.5.2.8 Contactar........................ 69 5.6 BackOce................................. 70 5.6.1 Moderadores............................ 70 5.6.1.1 Mapa do site...................... 70 5.6.1.2 Home page....................... 70 5.6.1.3 Validar anúncios.................... 71 5.6.1.4 Retirar/Colocar anúncios em destaque........ 73 5.6.1.5 Mensagens....................... 73 5.6.2 Administradores.......................... 75 5.6.2.1 Mapa do site...................... 75 5.6.2.2 Home page....................... 76 5.6.2.3 Inserir funcionários................... 76 5.6.2.4 Inserir subcategoria.................. 77 5.6.2.5 Anúncios conrmados................. 78

5.7 Colocação e divulgação online...................... 78 5.7.1 IIS (Internet Information Services)............... 78 5.7.2 Registo de domínios....................... 79 5.7.3 Servidor utilizado......................... 79 5.7.4 Divulgação online......................... 79 6 Conclusões e trabalho futuro 80 6.1 Conclusões................................. 80 6.2 Trabalho futuro.............................. 80 A Listagem de programas 85 A.1 Enviar email automaticamente...................... 85 A.2 Inserir imagens na pasta......................... 86 B Carregamento cheiros externos 88 B.1 Ficheiro dos distritos........................... 88 B.2 Ficheiro dos concelhos.......................... 88 B.3 Ficheiro das freguesias.......................... 89

Lista de Figuras 2.1 Página inicial do site de anúncios OLX................. 18 2.2 Página inicial do site de anúncios Coisas................ 20 2.3 Página inicial do site de anúncios Custo Justo............. 22 3.1 Tarefas................................... 26 3.2 Mapa de Gantt.............................. 26 4.1 Interface principal do Microsoft Visual Studio 2010........... 33 4.2 Exemplo de interface do Sql server Management Studio......... 33 5.1 Arquitetura do projeto........................... 34 5.2 Modelo relacional da base de dados.................... 36 5.3 Diagrama ER normalizado........................ 37 5.4 Tabela mensagens............................. 38 5.5 Base de dados criada por omissão..................... 39 5.6 Representação das três camadas de uma aplicação ASP.NET...... 46 5.7 Home page (visitantes).......................... 48 5.8 Icons usados................................ 50 5.9 Categorias e subcategorias de anúncios.................. 50 5.10 Página dos Anúncios por Categoria.................... 51 5.11 Página dos Anúncios por Subcategoria.................. 52 5.12 Formulário de registo para os utilizadores................ 53 5.13 Exemplo de email enviado ao utilizador com os dados.......... 54 5.14 Exemplo de email enviado ao utilizador para conrmação....... 54 5.15 Home page (utilizadores)......................... 56 5.16 Dados relativos à categoria e tipo de anúncio.............. 57 5.17 Dados relativos à localização do anúncio................ 58 5.18 Dados gerais de um anúncio....................... 59 5.19 Dados gerais de um anúncio de emprego................ 59 5.20 Dados especícos para apartamentos.................. 60 5.21 Selecionar anúncio para destaque.................... 60 5.22 Dados para colocar o anúncio em destaque............... 61 5.23 Selecionar imagens para o anúncio.................... 61 5.24 Inserir imagens.............................. 62 5.25 Selecionar anúncio a editar........................ 63 5.26 Editar anúncio selecionado........................ 64 5.27 Editar anúncio selecionado (emprego).................. 65 5.28 Os meus anúncios............................. 66 7

5.29 Detalhes de um anúncio......................... 67 5.30 Editar dados pessoais........................... 68 5.31 Editar password.............................. 69 5.32 Formulário para contactar a administração............... 69 5.33 Home page (moderadores)........................ 71 5.34 Anúncios pendentes............................ 71 5.35 Validar anúncio selecionado....................... 72 5.36 Ver anúncios em destaque e destacar outro............... 73 5.37 Selecionar mensagem a responder.................... 74 5.38 Responder à mensagem selecionada................... 75 5.39 Home page (administradores)...................... 76 5.40 Formulário para inserir funcionários................... 77 5.41 Inserir subcategorias........................... 78 5.42 Anúncio conrmado............................ 78 B.1 Distritos................................... 88 B.2 Concelhos.................................. 89 B.3 Freguesias.................................. 89

Lista de Tabelas 2.1 Comparação entre os vários sites..................... 24 5.1 Estrutura da tabela Anuncios...................... 40 5.2 Estrutura da tabela Anuncios_Veiculos................. 41 5.3 Estrutura da tabela Anuncios_Imoveis................. 41 5.4 Estrutura da tabela Anuncios_Animais................. 42 5.5 Estrutura da tabela Anuncios_Empregos................ 42 5.6 Estrutura da tabela Utilizadores..................... 43 5.7 Estrutura da tabela Moderadores.................... 43 5.8 Estrutura da tabela Distritos...................... 43 5.9 Estrutura da tabela Concelhos...................... 44 5.10 Estrutura da tabela Freguesias...................... 44 5.11 Estrutura da tabela SubCategorias................... 44 5.12 Estrutura da tabela Categorias..................... 45 5.13 Estrutura da tabela TiposAnuncio.................... 45 5.14 Estrutura da tabela CatTip....................... 45 5.15 Estrutura da tabela Mensagens..................... 46 9

Lista de Códigos Fonte 1 Exemplo de código HTML......................... 29 2 Exemplo de código CSS.......................... 29 3 Exemplo de código Javascript....................... 30 4 Exemplo de código ASP.NET...................... 31 5 Exemplo de código C#.......................... 31 6 Exemplo de query, Linq to Entities.................... 32 7 Exemplo para colocar os anúncios em destaque............. 49 8 Exemplo para mostrar os vários icons no destaque........... 49 9 Exemplo para redirecionar para a página de anúncios por categoria.. 51 10 Exemplo para redirecionar para os anúncios por subcategoria..... 52 11 Exemplo para carregar a dropdownlist tipos de anúncio........ 57 12 Query que retorna os tipos de anúncio da uma dada categoria..... 58 13 Exemplo de função que insere na tabela anúncios............ 62 14 Inserir o cargo para um funcionário.................... 77 10

Glossário ASP.NET Active Server Pages é a plataforma da Microsoft para o desenvolvimento de aplicações Web e é o sucessor da tecnologia ASP. Base de dados Conjunto de dados estruturados e relacionados entre si. CSS Cascading Style Sheets é uma linguagem de estilo utilizada para denir a apresentação de documentos escritos numa linguagem de marcação, como HTML. C# É uma linguagem de programação orientada a objetos, desenvolvida pela Microsoft como parte da plataforma.net. EDMX Modelo que permite aceder à base de dados, SQL SERVER, usando Linq to Entities. FCCN Fundação para a Computação Cientíca Nacional é a entidade responsável pela gestão, registo e manutenção de domínios em Portugal. FK Foreign Key é a chave estrangeira de uma tabela da base de dados, ou seja, é chave primária noutra tabela. HTML Hyper Text Markup Language, é uma linguagem de marcação para produção de páginas Web. HTTP Hipertext Transfer Protocol (Protocolo de Transferência de Hipertexto) é um protocolo de comunicação. IP Internet Protocol (Protocolo de internet). ISS Internet Information Services, é um servidor web criado pela Microsoft, para ser usado com os seus sistemas operativos. JavaScript É uma linguagem de script e atualmente é a principal linguagem para programação do lado do cliente em navegadores web. LINQ Language Integrated Query, é um componente.net que adiciona funcionalidades de consulta nalgumas linguagens de programação. Linq to Entities É uma implementação especíca do LINQ e ajuda no acesso e na manipulação de uma base de dados relacional. PK Primary Key é a chave primária de uma tabela da base de dados. Servidor Web Um programa de computador responsável por aceitar pedidos HTTP de clientes, geralmente os navegadores, e servi-los com respostas HTTP, incluindo opcionalmente dados, que geralmente são páginas web, tais como documentos HTML com objetos embutidos. 11

12 Site Um website ou site é um conjunto de páginas web, isto é, de hipertextos acessíveis geralmente pelo protocolo HTTP na internet. SQL SERVER É um SGBD (Sistema de Gestão de Base de Dados) criado pela Microsoft e Sysbase que permite interação com os dados através da linguagem SQL. Unicode Padrão que permite aos computadores representar e manipular, de forma consistente, texto de qualquer sistema de escrita existente. WWW World Wide Web é um sistema de documentação em todos os formatos (textos, imagens, vídeos) que são interligados e executados na internet. W3C World Wide Web Consortium é um consórcio internacional que visa desenvolver padrões para a criação e interpretação de conteúdos para a Web.

Capítulo 1 Introdução O presente relatório descreve o projeto em contexto de estágio desenvolvido pelo aluno Daniel Teixeira Gêgo, na empresa DotFlow Solutions, Lda, no âmbito da Unidade Curricular Projeto de Informática, na Licenciatura em Engenharia Informática da Escola Superior de Tecnologia e Gestão do Instituto Politécnico da Guarda. O conceito de Internet surgiu na década de 1960 e desde então, até aos dias de hoje, esteve sempre em constante evolução. Em 1969 ocorreu a transmissão de dados, o que pode ser considerado o primeiro E-mail da história a ser enviado e recebido (apesar de o texto não ter chegado todo ao destinatário) [20]. A partir do ano de 2000, até agora, pode dizer-se que a Internet passou a ser conhecida como um mercado, ou seja, cada vez mais passou a ser usada para fazer várias ações que anteriormente teriam que ser feitas em locais especícos. Diversas tecnologias inovadoras contribuíram para os interesses das empresas, que atuavam, ou passaram então a atuar nesse mercado [10]. O marketing e a publicidade online também têm vindo a mudar muito. Hoje em dia a empresa já não deve comunicar, deve sim aprender a interagir. A publicidade deixou de ser feita apenas num sentido, onde a empresa emitia uma mensagem que o consumidor devia receber. Como a Internet é constituída pelas pessoas, a publicidade passou a ser feita de forma a que as pessoas da empresa se relacionem com os consumidores [25]. O projeto consistiu em desenvolver uma aplicação web (ASP.NET/C#) para anúncios, denominada Anuncie Aqui Já. A aplicação destina-se às pessoas que pretendam comprar ou vender produtos. Cada utilizador registado pode inserir os seus anúncios e procurar outros anúncios pelas várias categorias ou subcategorias presentes no site. O projeto enquadra-se no âmbito e complexidade adequada às competências adquiridas no curso: Autonomia e capacidade de denir objetivos; Capacidade de modelação de problemas; Saber elaborar relatórios de análise, desenho e implementação de soluções; 13

CAPÍTULO 1. INTRODUÇÃO 14 Gestão de tempo e cumprimento de prazos. O projeto realizado teve que ter em conta as seguintes regras: Ter um orientador docente da Unidade Técnico-Cientíca de Informática da Escola Superior de Tecnologia e Gestão do Instituto Politécnico da Guarda, assim como um supervisor na empresa; Ter um plano de desenvolvimento aprovado pelo diretor do curso; O tempo necessário para a realização do projeto foi exível, dependendo apenas das datas denidas pelos professores da Unidade Curricular Projeto de Informática. Sendo assim, o projeto acabou por ter uma duração de vários meses, devido ao facto de o aluno ter outras Unidades Curriculares para fazer e assim foi necessário fazer várias interrupções. O projeto teve início no mês de Março e foi nalizado no mês de Novembro. 1.1 Instituição de acolhimento A empresa DotFlow Solutions, Lda situada no Largo Alberto Sampaio N o 3 A, em Linda-a-Velha tem como missão a prestação de serviços de desenvolvimento de soluções de tecnologias de informação e a prestação de serviços em consultoria em soluções de tecnologias de informação. 1.2 Motivação A principal motivação para o desenvolvimento deste projeto foi o facto de ter a oportunidade de aprendizagem de competências prossionais num contexto real de trabalho, podendo ter assim uma primeira impressão, mesmo que pequena ainda, sobre o que é trabalhar numa empresa. O facto de se poder trabalhar com novas tecnologias, que ainda não se tinham usado, principalmente o Linq to Entities, o Entity Framework e o EDM (Entity Data Model) é também muito importante, já que assim aprendem-se coisas novas. Neste momento, devido à crise económica e às perspetivas de recuperação económica muito sombrias, a procura e venda de produtos em segunda mão tem sido cada vez maior. Prevendo-se um grande aumento neste tipo de negócio, a empresa vê aqui uma grande oportunidade. A empresa, pretende ainda, concorrer com outros portais de serviços semelhantes, apostando fortemente em estratégias de marketing que se apoiam nas redes sociais. Ao longo do projeto surgiram outras motivações, tais como, em trabalho futuro, a pesquisa de anúncios noutros sites e lucrar com a publicidade.

CAPÍTULO 1. INTRODUÇÃO 15 1.3 Solução A solução proposta consiste em desenvolver uma plataforma web de anúncios, onde a aplicação é composta pelo FrontOce e pelo BackOce. Para os utilizadores não registados não há muitas funcionalidades disponíveis, podendo apenas visualizar os anúncios inseridos por utilizadores registados, pesquisar anúncios pelas várias categorias e subcategorias, e enviar mensagens para os funcionários do site para pedir informações. A aplicação tem outras funcionalidades para os utilizadores registados, tais como: pesquisa de anúncios pelas várias categorias e subcategorias, editar anúncios já inseridos, ver todos os anúncios inseridos por si e qual o estado de cada um desses anúncio no momento, entre outras. As funcionalidades para os moderadores são as seguintes: validar anúncios, retirar/colocar anúncios em destaque, responder a mensagens recebidas, entre outras. Para o administrador as funcionalidades são as seguintes: inserir novos funcionários, inserir novas subcategorias para as categorias, visualizar os anúncios pendentes, conrmados e cancelados, sendo que para estes últimos dois casos consegue ver qual o moderador que fez a ação. Por m, cada um dos utilizadores registados pode ainda ver e editar os seus dados pessoais. Para realizar o projeto será necessário resolver alguns problemas, enumerados de seguida: Como registar e autenticar os utilizadores; Que sistema de gestão de base de dados utilizar para armazenar os dados dos anúncios, nomeadamente as imagens; Como usar o Linq to Entities para poder comunicar com a base de dados, usando o modelo EDMX; Como retirar/colocar um anúncio em destaque; Como responder às mensagens enviadas pelos utilizadores. 1.4 Contribuição A contribuição principal deste trabalho foi o desenvolvimento, implementação e teste de uma plataforma web de anúncios online, na plataforma ASP.NET/C# com armazenamento de dados em bases de dados SQL SERVER e acesso hierárquico aos dados, através da tecnologia LINQ to Entities.

CAPÍTULO 1. INTRODUÇÃO 16 1.5 Estrutura do documento Este documento compreende cinco capítulos para além do presente capítulo, e está organizado da seguinte forma: No segundo capítulo é descrito o Estado da arte - são apresentados alguns sites que já existem relacionados com anúncios; No terceiro capítulo é descrita a Metodologia e resultados esperados - apresentação das metodologias usadas no projeto, a sua calendarização e os resultados esperados; No quarto capítulo são descritas as Tecnologias utilizadas - descrição das tecnologias usadas ao longo do projeto, detalhadamente; No quinto capítulo é descrita a Implementação da solução - descrição detalhada do trabalho realizado ao longo de todo o projeto; No sexto capítulo são descritas as Conclusões e trabalho futuro - considerações nais sobre o trabalho realizado e trabalho a realizar no futuro para completar o projeto;

Capítulo 2 Estado da arte No âmbito dos anúncios já existem várias aplicações web em funcionamento com muito sucesso. Nestas aplicações, pode dizer-se que o preço dos anúncios é um pouco elevado. No projeto desenvolvido não foi implementada a parte dos pagamentos, mas em trabalho futuro poderá ser implementada e conseguir ter melhores preços é um fator aliciante. Também o facto de pesquisar anúncios noutros sites e reuni-los no mesmo site é outro dos fatores que poderia ser relevante porque os existentes não têm esta funcionalidade. 2.1 Portugal Anúncios classicados grátis OLX No site OLX podemos encontrar várias vantagens, tais como publicar anúncios grátis, mas estes apenas podem estar online durante uma semana. Para colocar anúncios em destaque e por mais algum tempo terá que ser efetuado um pagamento. O site tem também uma parte onde podem ser vistas as mensagens trocadas entre o utilizador e os interessados nos seus anúncios. Podem ser efetuadas pesquisas de anuncio de produtos por distrito/concelho categoria/subcategoria. Alguns dos preços para os serviços, são os seguintes: Anúncio em destaque na página inicial têm um custo de 15 e/semana; Anúncio sobressaído terá um custo de 3 e/semana; Anúncio de topo têm um custo de 7 e/semana. Na gura 2.1 podemos ver a página inicial do OLX. O endereço para aceder a esta página é o seguinte: http://www.olx.pt/. 17

CAPÍTULO 2. ESTADO DA ARTE 18 Figura 2.1: Página inicial do site de anúncios OLX

CAPÍTULO 2. ESTADO DA ARTE 19 2.2 Anúncios grátis Coisas As principais funcionalidades do Coisas é a possibilidade de inserir anúncios grátis, podendo também inserir anúncios pagos, e há também uma secção para a troca de mensagens entre utilizadores. Podem ser efetuadas pesquisas de anuncio de produtos por distrito/concelho categoria/subcategoria. Este site tem 3 pacotes, um deles grátis e dois pagos, sendo estes: Grátis - duração de 4 semanas; Standard - preço: 10 e, duração de 5 semanas, aprovação prioritária, o anúncio é sobressaído durante 1 semana e está no topo durante 1 semana; Premium - preço: 25 e, duração de 5 semanas, aprovação prioritária, o anúncio é sobressaído durante 1 semana, está no topo durante 1 semana e o anúncio está em destaque na primeira página durante 1 semana, sendo esta a diferença para o pacote anterior. Na gura 2.2 podemos ver a página inicial do Coisas. O endereço para aceder a esta página é o seguinte: http://www.coisas.com/.

CAPÍTULO 2. ESTADO DA ARTE 20 Figura 2.2: Página inicial do site de anúncios Coisas

CAPÍTULO 2. ESTADO DA ARTE 21 2.3 Custo Justo Portugal Aqui podem ser pesquisados os anúncios por distrito e há ainda vários serviços pagos no site. Podem ainda ser inseridos anúncios grátis e anúncios pagos. Alguns dos serviços pagos deste site e as suas características são: Subir - permite a colocação imediata do seu anúncio no topo da lista como se tivesse sido publicado de novo e tem um custo de 2 e; Subir x8 - permite a colocação imediata do seu anúncio no topo da lista, sendo que, a cada 7 dias o seu anúncio voltará ao topo da lista, durante 8 semanas consecutivas, com um custo de 6 e; Montra - proporciona maior destaque e visibilidade ao anúncio, tendo um custo de 10 e para 7 dias e de 30 e para 30 dias; Modicar - permite alterar o anúncio sem ter de o eliminar, com um custo de 2 e; Urgente - permite destacar o anúncio indicando tratar-se de uma venda urgente, com um logótipo especico, sendo que, durante 3 dias, a cada 24 horas o anúncio é colocado no topo da lista com um custo de 3 e. Na gura 2.3 podemos ver a página inicial do Custo Justo. O endereço para aceder a esta página é o seguinte: http://www.custojusto.pt/.

CAPÍTULO 2. ESTADO DA ARTE 22 Figura 2.3: Página inicial do site de anúncios Custo Justo

CAPÍTULO 2. ESTADO DA ARTE 23 2.4 Imovirtual Neste site, podem ser encontrados e publicados anúncios sobre imóveis, pelo que, este site não pode ser relacionado com o projeto já que, apesar de ser um site de anúncios apenas possui anúncios de imóveis. Este site pode ser visto em http: //www.imovirtual.com/. 2.5 Standvirtual Neste site, apenas podem ser encontrados e publicados anúncios sobre automóveis, ou seja, é uma plataforma de anúncios para automóveis, pelo que não pode ser relacionado diretamente com o projeto, apesar de também ser um site de anúncios. Este site pode ser visto em http://www.standvirtual.com/. 2.6 Comparação das aplicações existentes da área Tal como já foi referido anteriormente, todos estes sites possuem funcionalidades muito semelhantes. Nos vários sites os preços dos serviços pagos, normalmente, variam com o tempo que se pretende usar um determinado serviço, sendo que, quanto mais tempo se quiser usar esse serviço mais elevado será o preço. Todos os sites referidos possuem várias formas para pesquisar os anúncios pretendidos. Na tabela 2.1 podemos ver algumas comparações entre os sites. Todos os dados são relativos ao site português, já que alguns destes sites têm também sites no estrangeiro.

CAPÍTULO 2. ESTADO DA ARTE 24 OLX Coisas Custo Justo Número de anúncios Cerca de 676.540 Cerca de 711.660 Cerca de 856.465 Anúncios grátis? Sim Sim Sim Preços dos serviços 3 ou 7 ou 15 10 ou 25 2, 3, 6 ou 10 pagos (e) Formas de pagamenttão Multibanco, Visa, Multibanco, Visa, Multibanco e car- de crédito MasterCard, Payshop e Pay- Pal MasterCard, Payshop e Pay- Pal Pesquisa de anúncios Não Sim, mas a um site Não noutros sites? da mesma empresa Pesquisa por localidade? Sim Sim Sim Pesquisa por categoria? Sim Sim Sim Sistema de mensagens? Sim Sim Sim Utilizadores registados? Sim Sim Sim Site no estrangeiro? Sim Não Sim Ranking em Portugal 13 [3] 46 [1] 22 [2] Reputação 1714 [3] 283 [1] 429 [2] Gostos no facebook 303.033 [17] 158.828 [15] 100.005 [16] Tabela 2.1: Comparação entre os vários sites Os valores referentes ao facebook são muito relativos, já que, normalmente sobem a todo o instante. Quanto aos valores retirados do site http://www.alexa.com/, são estatísticas recolhidas pelo motor de busca e pela tollbar dos próprios, mas como têm uma boa amostra, supõe-se que a margem de erro não seja muito elevada. Todos os dados da tabela acima que não têm referência foram retirados da respetiva página.

Capítulo 3 Metodologia e resultados esperados 3.1 Metodologia Para o desenvolvimento deste projeto foi utilizada uma metodologia ágil, que consistiu em ter, de quando em quando, uma nova versão para apresentar à empresa, e apenas no nal documentar tudo. Assim sendo, a metodologia para desenvolver, implementar e testar a aplicação web, é a seguinte: 1. Análise dos requisitos do projeto; 2. CSS para as folhas de estilo a usar; 3. Javascript no slide, que já vinha com o template e para vericar quando as sessões expiram; 4. ASP.NET para criação dinâmica das páginas HTML; 5. Utilizar o C# para programar as ações dos objetos das páginas; 6. Utilizar o SQL SERVER para fazer a base de dados; 7. Utilizar o LINQ to Entities para aceder à base de dados; 8. Realização de testes e análise da eciência e abilidade da aplicação, colocando o site online; 9. Visual Studio 2010 para a realização do projeto em si; 10. SQL Server Management Studio para carregar dados externos e criar a base de dados a partir do modelo; 11. Utilizar o latex para produzir um relatório pata documentar o projeto. De forma a facilitar o acompanhamento do projeto, do supervisor da empresa, foram apresentadas as várias partes do projeto conforme iam sendo realizadas, para que no nal o trabalho correspondesse ao que foi pedido pela empresa. 25

CAPÍTULO 3. METODOLOGIA E RESULTADOS ESPERADOS 26 3.2 Descrição das tarefas As principais tarefas foram: Tarefa 1 Análise dos requisitos da aplicação web; Tarefa 2 Estudo da arte; Tarefa 3 Estudo das tecnologias a utilizar; Tarefa 4 Criar a base de dados, no SQL SERVER; Tarefa 5 Denir os estilos (CSS) para as várias páginas; Tarefa 6 Criação das páginas HTML, com o ASP.NET e o C#; Tarefa 7 Testes da aplicação; Tarefa 8 Elaboração do relatório; Tarefa 9 Colocação e divulgação online da aplicação web. O agendamento das tarefas é apresentado na gura 3.1. Figura 3.1: Tarefas O respetivo Mapa de Gantt é apresentado na gura 3.2. Figura 3.2: Mapa de Gantt

CAPÍTULO 3. METODOLOGIA E RESULTADOS ESPERADOS 27 3.3 Resultados esperados No nal do projeto espera-se que a aplicação web, a nível dos utilizadores, seja capaz de: Permitir aos utilizadores registados inserir e editar anúncios; Permitir a inserção de dados especícos para os anúncios, dependendo da subcategoria; Permitir a listagem dos anúncios, por categoria ou subcategoria; Permitir a visualização dos detalhes de cada anúncio; Permitir o registo de utilizadores; Permitir a pesquisa de anúncios. Ao nível da administração, espera-se que a aplicação seja capaz de: Permitir a colocação de anúncios em destaque; Permitir a inserção de novas subcategorias para uma determinada categoria; Permitir o registo de novos funcionários; Consultar os anúncios pendentes; Consultar os anúncios conrmados e cancelados, e vericar qual o moderador que efetuou essa ação.

Capítulo 4 Tecnologias utilizadas 4.1 Introdução Neste capítulo vão ser referidas, com algum detalhe, as tecnologias utilizadas ao longo do projeto. Para desenvolver aplicações para a web é usado o consórcio W3C (Consórcio World Wide Web), sendo que é um consórcio internacional no qual organizações liadas, trabalham em tempo integral e com ajuda do público para desenvolver padrões para a Web. Este consórcio tem como principal objetivo atingir todo o seu potencial desenvolvendo protocolos e diretrizes que garantam o seu crescimento a longo prazo 4.2 Tecnologias web 4.2.1 HTML O HTML (em inglês Hypertext Markup Language e em português Linguagem de Marcação de Hipertexto) é uma das linguagens que utilizamos para desenvolver web sites, podendo ser considerada a linguagem base da Internet. Existem outras linguagens mais avançadas para desenvolver sites, porém dicilmente conseguimos encontrar um site que não utilize HTML, e o mais comum é encontrar sites que utilizam somente HTML [6]. Na listagem 1 podemos ver um pequeno exemplo de código html. Esta tecnologia foi usada em todas as páginas do projeto. 28

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 29 Listagem 1 Exemplo de código HTML. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" %"http://www.w3.org/tr/html4/strict.dtd"> <html> <head> <title>teste de HTML</title> </head> <body> <h1> Olá Mundo</h1> <br /> <b>exemplo Tabela</b> <table> <tr> <td> </td> <td> Coluna 1 </td> </tr> <tr> <td> Linha 1 </td> <td> Olá </td> </tr> </table> </body> </html> 4.2.2 CSS O CSS (Cascading Style Sheets) é uma "folha de estilo"utilizada para denir a apresentação (aparência) nas páginas da Internet que optam por usar linguagens de marcação, como HTML, para o seu desenvolvimento. O CSS dene como vão ser exibidos os elementos contidos no código de uma página, tendo como maior vantagem separar o formato e o conteúdo de um documento, ou seja, é feito um documento à parte só para o css, sendo que depois é chamado onde o queremos usar [18]. Na listagem 2 podemos ver um pequeno exemplo de código css. Esta tecnologia foi usada para elaborar as folhas de estilo para o projeto. Listagem 2 Exemplo de código CSS. #todoform th { background:#000000; /* a cor preta para o fundo do título */ padding:3px; /* um afastamento de 3px */ font: bold 15px arial, verdana, helvetica, sans-serif; /* letras em negrito com 15px e familia arial, verd...*/ border-bottom:1px solid #ff9900; /* uma borda inferior solida de 1px na cor laranja */ }

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 30 4.2.3 Javascript Javascript é uma linguagem de programação utilizada para criar pequenos programas encarregados de realizar ações dentro de uma página web, do lado do cliente, já que é o navegador que suporta a carga de processamento. Já que é compatível com a maioria dos navegadores, é a linguagem de programação, do lado do cliente, mais utilizada. É uma linguagem com várias potencialidades, entre elas: podemos criar efeitos especiais nas páginas e denir interatividades com o usuário [4]. Na listagem 3 podemos ver um pequeno exemplo de código javascript. Esta tecnologia foi usada, por exemplo no slide dos anúncios em destaque, que já vinha incluído no template. Listagem 3 Exemplo de código Javascript. <script> window.open("http://www.google.com","","width=550,height=420, menubar=no") </script> 4.2.4 ASP.NET O ASP.NET (Active Server Pages) é um ambiente de desenvolvimento onde são desenvolvidos aplicativos para a Web, sendo uma tecnologia da Microsoft que é uma evolução do ASP. Os aplicativos feitos neste ambiente rodam no servidor Web especicamente dentro da Internet Information Services (IIS) e necessitam do.net Framework, onde as páginas do aplicativo, vão car disponíveis para poderem ser acedidas por qualquer sistema operacional e navegador. Vão agora ser mostradas algumas características do ASP.NET: é orientada a objetos, faz parte do.net Framework podendo utilizar as classes do mesmo, as páginas ASP.NET são compiladas antes da serem executadas, ganhando assim velocidade, segurança, estabilidade e interoperabilidade. As páginas ASP.NET são desenvolvidas por diversos controlos de Interface, Validação, Data, HTML, entre outros. Para completar o ASP.NET, deve ser escolhida, no Microssoft Visual Studio, uma das seguintes linguagens: C#, Visual Basic e J# [7]. Na listagem 4 podemos ver um pequeno exemplo de código ASP.NET. Esta tecnologia foi usada em todas as páginas do projeto, já que é a tecnologia sobre a qual o projeto foi elaborado.

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 31 Listagem 4 Exemplo de código ASP.NET <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:label ID="Label1" runat="server" Text="Olá Mundo!"> </asp:label> <asp:textbox ID="TextBox1" runat="server"></asp:textbox> </div> </form> </body> </html> 4.2.5 C# C# (CSharp) é uma linguagem de programação orientada a objetos criada pela Microsoft, fazendo parte da sua plataforma.net. A linguagem C# baseou-se no C++ e no Java. Foi criada junto com a arquitetura.net, embora existam várias outras linguagens que suportam essa tecnologia (como VB.NET, C++, J#). É considerada a linguagem símbolo do.net, por várias razões: foi criada de novo para funcionar logo na plataforma, o compilador da linguagem foi o primeiro a ser desenvolvido e a maior parte das classes do.net Framework foram desenvolvidas na mesma linguagem [5]. Na listagem 5 podemos ver um pequeno exemplo de código C#. Esta tecnologia foi usada em todas as páginas do projeto, já que é uma das tecnologias principais. Listagem 5 Exemplo de código C#. public class ClasseExemplo { public static void Main() { System.Console.WriteLine("Olá mundo!"); calcula_media(); } } private double calcula_media() { int j; double media, soma; soma = 0; for (j = 0; j < i; j++) { soma = soma + E[j].Velocidade; } return (media = soma / j); }

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 32 4.2.6 Microsoft SQL SERVER O SQL (Structured Query Language ou Linguagem de Consulta Estruturada), é uma linguagem de pesquisa declarativa para base de dados relacionais. [23] O Microsoft SQL SERVER foi o SGBD (Sistema de Gestão de Base de dados) usado no projeto, já que é uma base de dados robusta que vem incluída no Microsoft Visual Studio (software usado na elaboração do projeto) [14]. Esta tecnologia foi usada para o desenvolvimento da base de dados. 4.2.7 Linq to Entities O Linq to Entities foi usado no projeto principalmente pelo facto de poder usar herança entre tabelas. O linq to Entities pode ser usado com qualquer base de dados relacional, ao contrário do linq to sql, que apenas pode ser usado com o SQL SERVER. O LINQ to SQL é mapeado diretamente para as tabelas da base de dados e o LINQ to Entities permite criar um modelo de objetos baseados nas tabelas de qualquer base de dados [12]. Na listagem 6 podemos ver um pequeno exemplo de um query, linq to entities. Esta tecnologia foi usada para aceder à base de dados. Listagem 6 Exemplo de query, Linq to Entities. public static IQueryable mostrafreguesiasconsel(int idconcelho) { ModelBDClassificadosContainer classificadosbd = new ModelBDClassificadosContainer(); var query = from freguesias in classificadosbd.freguesias where freguesias.id_concelho == idconcelho orderby freguesias.freguesia select freguesias; return query; } 4.3 Software utilizado 4.3.1 Microsoft Visual Studio 2010 O Microsoft Visual Studio é um pacote de programas da Microsoft para desenvolvimento de software especialmente dedicado ao.net Framework e às linguagens Visual Basic (VB), C, C++, C# (C Sharp) e J# (J Sharp). É também um grande produto de desenvolvimento na área web, usando a plataforma do ASP.NET. As linguagens usadas nesta plataforma são: VB.NET (Visual Basic.Net) e o C# (C Sharp) [22]. O interface principal do Microsoft Visual Studio 2010 é apresentado na gura 4.1. Pode dizer-se que todo o projeto foi desenvolvido sobre esta plataforma.

CAPÍTULO 4. TECNOLOGIAS UTILIZADAS 33 Figura 4.1: Interface principal do Microsoft Visual Studio 2010. 4.3.2 SQL Server Management Studio O SQL Server Management Studio (SSMS) é uma aplicação de software lançado pela primeira vez com o Microsoft SQL SERVER 2005, que é usado para congurar, gerir e administrar todos os componentes do Microsoft SQL SERVER. A ferramenta inclui ferramentas grácas que trabalham com objetos e recursos do servidor. Este software pode ser usado, por exemplo, para carregar cheiros externos a partir de um cheiro do excel [24]. Um exemplo de interface do Sql Server Management Studio é apresentado na gura 4.2. Figura 4.2: Exemplo de interface do Sql server Management Studio.

Capítulo 5 Implementação da solução 5.1 Introdução A solução foi desenvolvida na plataforma ASP.NET, com recurso a várias tecnologias, tais como: HTML, CSS, SQL SERVER e JavaScript. O projeto foi desenvolvido com a arquitetura da gura 5.1. Figura 5.1: Arquitetura do projeto. 34

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 35 5.2 A importância do login e do logout Para efetuar algumas ações, depois de efetuado o registo, o utilizador terá que efetuar o login. Quando esse login é usado em locais públicos podem surgir algumas questões relacionadas com segurança. Por exemplo, alguns utilizadores não efetuam o logout, pensando que o facto de fecharem as páginas é suciente. Hoje em dia, alguns browsers, ao reabrirem as páginas, onde não foi efetuado o logout, vão abrir as páginas com o login efetuado e caso isso aconteça em locais públicos pode estar alguém a ter acesso à página de outra pessoa e até fazer-se passar por ela. Para resolver esta questão, as pessoas nunca se devem esquecer de fazer o logout, principalmente em locais públicos. [11] 5.3 Base de dados Anúncios A base de dados foi criada com recurso ao SQL SERVER. 5.3.1 Modelo Relacional Para criar a base de dados, inicialmente foi desenhado o modelo ER da aplicação, usando o modelo EDMX (ADO.NET Entity Data Model), tal como podemos ver na gura 5.2.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 36 Figura 5.2: Modelo relacional da base de dados.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 37 O modelo foi criado para poder ser usada a herança entre tabelas, já que o SQL SERVER não suporta diretamente essa opção. O modelo permitiu também que fosse usado o Linq to Entities para aceder à base de dados (desta forma foi possível elaborar a aplicação em três camadas, tal como já foi referido). Depois de criado o modelo foi criado o script que posteriormente vai criar a base de dados no SQL SERVER. Com o uso da ferramenta Sql Server Management Studio, vai ser corrido o script criado anteriormente e desta forma será criada a base de dados, tal como podemos ver na gura 5.3. Figura 5.3: Diagrama ER normalizado Para além do diagrama anterior, a base de dados é ainda composta pela tabela da gura 5.4.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 38 Figura 5.4: Tabela mensagens. Para além da base de dados anterior, quando criamos os utilizadores, privilégios e roles (grupos), por defeito, a plataforma ASP.NET recorre a uma base de dados SQL SERVER para guardar tudo isso, como podemos ver na gura 5.5.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 39 Figura 5.5: Base de dados criada por omissão.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 40 Ainda com a mesma ferramenta, foram carregadas algumas tabelas a partir do Microsoft Excel, usando a importação de dados, sendo as tabelas as seguintes: Distritos, Concelhos e Freguesias. Nos anexos do documento poderemos ver os prints dos cheiros do Microsof excel. 5.3.2 Dicionário de dados 5.3.2.1 Anuncios Na tabela 5.1 apresentam-se as várias características dos campos relativos aos anúncios. Campo Tipo Tamanho Obrigatório Descrição Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada anúncio Id_utilizador (FK) Inteiro 4 Sim / automático Número que identica o utilizador a quem pertence o anúncio Id_tipo_anuncio (FK) Inteiro 4 Sim Número que identica o tipo de anúncio Id_sub_categoria (FK) Inteiro 4 Sim Número que identica a subcategoria do anúncio Data_publicacao Data - Sim / automática Data/hora da publicação do anúncio Localizacao Texto MAX Sim Localização especíca do anúncio Id_freguesia (FK) Inteiro 4 Sim Número que identica a freguesia relativa ao anúncio Titulo Texto MAX Sim Título do anúncio Descricao Texto MAX Sim Descrição do anúncio Id_moderador (FK) Inteiro 4 Não / automático Número que identica o moderador que valida o anúncio Estado Texto MAX Sim Estado do anúncio Preco Texto 10 Não Preço que aparece no anúncio Tipo_contrato Texto 49 Não Tipo de contrato do emprego Para_destaque Booleano - Sim Indica se o anúncio é para destaque ou não Destaque Texto 50 Não Indica o estado do destaque do anúncio Titulo_destaque Texto 15 Não Título do anúncio em destaque Sub_titulo_destaque Texto 22 Não Subtítulo do anúncio em destaque Descricao_destaque Texto MAX Não Descrição do anúncio em destaque Imagem1 Texto MAX Não Caminho da imagem 1 Imagem2 Texto MAX Não Caminho da imagem 2 Tabela 5.1: Estrutura da tabela Anuncios 5.3.2.2 Anuncios_Veiculos Na tabela 5.2 apresentam-se as várias características dos campos relativos aos anúncios de veículos, ou seja, esta é uma tabela que herda os atributos da tabela Anuncios.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 41 Campo Tipo Tamanho Obrigatório Descrição Marca Texto MAX Não Marca do veículo Modelo Texto MAX Não Modelo do veículo Primeiro_registo Inteiro 4 Não Primeiro registo do veículo Condicao Texto MAX Não Condição do veículo (novo, usado) Tipo_carro Texto MAX Não Tipo de carro a que se refere o anúncio Quilometros Inteiro 7 Não Número de quilómetros que o veículo possui Combustivel Texto MAX Não Tipo de combustível do veículo Potencia Texto MAX Não Potencia do veiculo Tonalidade Texto MAX Não Cor predominante do veículo Extras Texto MAX Não Extras que fazem parte do veículo Cilindrada Texto MAX Não Indica a cilindrada do veículo Tipo_barco Texto MAX Não Indica o tipo de barco Comprimento Texto MAX Não Comprimento do barco Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca o anúncio a que o veículo se refere Tabela 5.2: Estrutura da tabela Anuncios_Veiculos 5.3.2.3 Anuncios_Imoveis Na tabela 5.3 apresentam-se as várias características dos campos relativos aos anúncios de imóveis, ou seja, esta é uma tabela que herda os atributos da tabela Anuncios. Campo Tipo Tamanho Obrigatório Descrição Condicao Texto MAX Não Condição do imóvel Tipologia Texto MAX Não Tipologia do imóvel (T1, T2) Area_util Inteiro 7 Não Área útil do imóvel Casas_banho Texto MAX Não Número de casas de banho Area_bruta Inteiro 7 Não Área bruta do imóvel, toda a área que lhe pertence Ano_construcao Inteiro 4 Não Ano de construção do imóvel Caracteristicas Texto MAX Não Principais características (garagem, aquecimento central) Area_Terreno Inteiro 4 Não Área do terreno em causa Tipo_Terreno Texto MAX Não Tipo de terreno em causa (Industrial, urbano) Finalidade Texto MAX Não Finalidade a que se destina o terreno Licença_const Texto MAX Não Indica se já tem licença de construção e qual o seu estado Declive Texto MAX Não Declive do terreno em causa Divisoes Inteiro 2 Não Número de divisões do imóvel em causa Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca o anúncio a que o imóvel se refere Tabela 5.3: Estrutura da tabela Anuncios_Imoveis 5.3.2.4 Anuncios_Animais Na tabela 5.4 apresentam-se as várias características dos campos relativos aos anúncios de animais, ou seja, esta é uma tabela que herda os atributos da tabela Anuncios.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 42 Campo Tipo Tamanho Obrigatório Descrição Genero Texto MAX Não Género do animal Raca Texto MAX Não Raça do animal em causa Tipo_peixe Texto MAX Não Tipo de peixe, no caso da subcategoria ser essa Animal Texto MAX Não Indica o animal em causa Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca o anúncio a que o animal se refere Tabela 5.4: Estrutura da tabela Anuncios_Animais 5.3.2.5 Anuncios_Empregos Na tabela 5.5 apresentam-se as várias características dos campos relativos aos anúncios de empregos, ou seja, esta é uma tabela que herda os atributos da tabela Anuncios. Campo Tipo Tamanho Obrigatório Descrição Empresa Texto MAX Não Empresa a que o emprego se refere Funcao Texto MAX Não Função no emprego Perl Texto MAX Não Perl pretendido Ofertas_benecios Texto MAX Não Ofertas ou benefícios dados pela empresa Tipo_trabalho Texto MAX Não Tipo de trabalho pretendido Experiencia_prof Texto MAX Não Experiência prossional pretendida Habilitacoes Texto MAX Não Habilitações pretendidas Linguas Texto MAX Não Conhecimentos nas várias línguas Mensagem_intro Texto MAX Não Mensagem introdutória para o emprego Disponibilidade Texto MAX Não Disponibilidade pretendida Id_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca o anúncio a que o emprego se refere Tabela 5.5: Estrutura da tabela Anuncios_Empregos 5.3.2.6 Utilizadores Na tabela 5.6 apresentam-se as várias características dos campos relativos aos utilizadores.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 43 Campo Tipo Tamanho Obrigatório Descrição Id_utilizador (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada utilizador Nome Texto MAX Sim Nome completo do utilizador E_mail Texto MAX Sim Email do utilizador Telefone Texto 9 Sim Número de telefone do utilizador Morada Texto MAX Sim Indica a morada do utilizador Data_registo Data - Sim / automático Data e hora do registo do utilizador Username Texto MAX Sim Nome de utilizador que o identica de forma única 5.3.2.7 Moderadores Tabela 5.6: Estrutura da tabela Utilizadores Na tabela 5.7 apresentam-se as várias características dos campos relativos aos moderadores. Campo Tipo Tamanho Obrigatório Descrição Id_moderador (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada moderador Nome Texto MAX Sim Nome completo do moderador E_mail Texto MAX Sim Email do moderador Telefone Texto 9 Sim Número de telefone do moderador Cargo Texto 50 Sim Indica o cargo do moderador Username Texto 50 Sim Nome do moderador que o identica de forma única Tabela 5.7: Estrutura da tabela Moderadores 5.3.2.8 Distritos Na tabela 5.8 apresentam-se as várias características dos campos relativos aos distritos. Campo Tipo Tamanho Obrigatório Descrição Id_distrito (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada distrito Distrito Texto MAX Sim Nome do distrito Tabela 5.8: Estrutura da tabela Distritos 5.3.2.9 Concelhos Na tabela 5.9 apresentam-se as várias características dos campos relativos aos concelhos.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 44 Campo Tipo Tamanho Obrigatório Descrição Id_concelho (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada concelho Concelho Texto MAX Sim Nome do concelho Id_distrito (FK) Inteiro 4 Sim Número que identica o distrito do anúncio 5.3.2.10 Freguesias Tabela 5.9: Estrutura da tabela Concelhos Na tabela 5.10 apresentam-se as várias características dos campos relativos às freguesias. Campo Tipo Tamanho Obrigatório Descrição Id_freguesia (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada freguesia Freguesia Texto MAX Sim Nome da freguesia Id_concelho (FK) Inteiro 4 Sim Número que identica o concelho do anúncio Tabela 5.10: Estrutura da tabela Freguesias 5.3.2.11 SubCategorias Na tabela 5.11 apresentam-se as várias características dos campos relativos às subcategorias dos anúncios. Campo Tipo Tamanho Obrigatório Descrição Id_sub_categoria (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada subcategoria Nome Texto MAX Sim Nome da subcategoria Id_categoria (FK) Inteiro 4 Sim Número que identica a categoria do anúncio Tabela 5.11: Estrutura da tabela SubCategorias 5.3.2.12 Categorias Na tabela 5.12 apresentam-se as várias características dos campos relativos às categorias dos anúncios.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 45 Campo Tipo Tamanho Obrigatório Descrição Id_categoria (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada categoria Nome Texto MAX Sim Nome da categoria 5.3.2.13 TiposAnuncio Tabela 5.12: Estrutura da tabela Categorias Na tabela 5.13 apresentam-se as várias características dos campos relativos aos tipos de anúncio de cada anúncio. Campo Tipo Tamanho Obrigatório Descrição Id_tipo_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada tipo de anúncio Nome Texto MAX Sim Nome do tipo de anúncio Tabela 5.13: Estrutura da tabela TiposAnuncio 5.3.2.14 CatTip A tabela 5.14 é uma tabela intermédia, onde a cada categoria são atribuídos os tipos de anúncio que esta pode ter. Vamos obter uma tabela com uma chave primária concatenada. Campo Tipo Tamanho Obrigatório Descrição Id_categoria (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca cada categoria Id_tipo_anuncio (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca cada tipo de anúncio Tabela 5.14: Estrutura da tabela CatTip 5.3.2.15 Mensagens Na tabela 5.15 apresentam-se as várias características dos campos relativos às mensagens.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 46 Campo Tipo Tamanho Obrigatório Descrição Id_mensagem (PK) Inteiro 4 Sim / automático Número sequencial que identi- ca univocamente cada mensagem Nome Texto 50 Sim Nome de quem envia a mensagem Email Texto 50 Sim Email de quem envia a mensagem Assunto Texto 70 Sim Assunto da mensagem Mensagem Texto MAX Sim Mensagem enviada pelo utilizador Data Data - Sim / automática Data e hora de envio da mensagem Estado Booleano - Sim Indica se a mensagem já foi respondida ou não Tabela 5.15: Estrutura da tabela Mensagens 5.4 Aplicação ASP.NET em três camadas A arquitetura em três camadas é uma arquitetura cliente servidor na qual o interface do utilizador, processos de negócios e armazenamento de dados são desenvolvidos e mantidos em módulos independentes, ou em plataforma separadas. A gura 5.6 procura mostrar de forma resumida as três camadas identicando cada uma delas. Figura 5.6: Representação das três camadas de uma aplicação ASP.NET. As três camadas referidas são as seguintes: Camada de apresentação - User Interface (Presentation Tier) Camada de Negócios - Business Logic Layer (Business Logic Tier)

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 47 Camada de Acesso a dados - Data Access Layer (Data Tier) Cada camada pode ser desenvolvida e testada separadamente. A camada de apresentação contém os elementos da interface do utilizador do site e inclui ainda toda a lógica de interação entre o utilizador e as regras de negócio. (ASP.NET Web Forms, Users Controls e Master Pages). A camada de negócio recebe a requisição da camada de apresentação e retorna o resultado dependendo da lógica de negócio. (Classes C#). A camada de acesso a dados contém as classes que acedem à base de dados e retornam o resultado para a camada de negócio.(classes C#) [13]. 5.5 FrontOce Neste capítulo vão ser mostradas as páginas que podem ser visíveis para todos os utilizadores e algumas das suas principais funcionalidades. 5.5.1 Visitante Os visitantes são os utilizadores do site que ainda não efetuaram o seu login. Algumas das principais funcionalidades destes utilizadores são: efetuar o seu registo, contactar a administração do site, visualizar os anúncios, entre outras. 5.5.1.1 Mapa do site Home (Default/Default.aspx) Detalhes do anúncio (Default/DetalhesAnuncio.aspx) Anúncios por categoria (Default/AnunciosCat.aspx) Detalhes do anúncio (Default/DetalhesAnuncio.aspx) Anúncios por subcategoria (Default/AnunciosSubCat.aspx) Detalhes do anúncio (Default/DetalhesAnuncio.aspx) Missão (Default/Missao.aspx) Anúncios (Default/SelecionarCatSub.aspx) Anúncios por categoria (Default/AnunciosCat.aspx) Detalhes do anúncio (Default/DetalhesAnuncio.aspx) Anúncios por subcategoria (Default/AnunciosSubCat.aspx) Detalhes do anúncio (Default/DetalhesAnuncio.aspx) Registo (Default/Register.aspx) Log In (Default/Login.aspx) Contactar (Default/Mensagens.aspx)

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 48 5.5.1.2 Home Page A home page dos visitantes é a página principal do web site, ou seja, é a página que aparece quando entramos na plataforma web de anúncios. Na gura 5.7 podemos ver essa página. Figura 5.7: Home page (visitantes) Nesta página é onde podemos ver os anúncios em destaque. Tal como podemos ver, apenas podem estar quatro anúncios de cada vez em destaque. Um pequeno exemplo do código que permite visualizar no slide os anúncios que estão em destaque, está na listagem 7, sendo que aqui podemos ver como colocar um anúncio em destaque (para os outros três anúncios o código é semelhante). Quanto aos destaques há ainda a salientar o icon que aparece, já que esse icon depende da categoria ou da subcategoria a que o anúncio, que está em destaque, pertence. Na listagem 8 podemos ver um pequeno exemplo do código da função que coloca no destaque o respetivo icon.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 49 Listagem 7 Exemplo para colocar os anúncios em destaque. foreach (Anuncios anuncio in ClassQueries.anunciosDestaque()) { if (aux == 0) { mostraicons(aux, anuncio); aux1 = anuncio.id_anuncio; desc1.innertext = anuncio.descicao_destaque.tostring(); titulo1.innertext = anuncio.titulo_destaque.tostring(); subtitulo1.innertext = anuncio.sub_titulo_destaque.tostring(); img1.src = anuncio.imagem1; aux = 1; } } Listagem 8 Exemplo para mostrar os vários icons no destaque. private void mostraicons(int aux, Anuncios anuncio) { if (anuncio.subcategorias.nome.equals("carros")) { if (aux == 0) { imagem1.src = "img/icons/carro.png"; } else if (aux == 1) { imagem2.src = "img/icons/carro.png"; } else if (aux == 2) { imagem3.src = "img/icons/carro.png"; } else if (aux == 3) { imagem4.src = "img/icons/carro.png"; } } }

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 50 Os icons que foram usadas estão na gura 5.8. Figura 5.8: Icons usados No slide, há ainda um botão "Mais detalhes", sendo que este botão é um LinkButton que nos manda para a página dos detalhes do anúncio que está em destaque. Na parte nal da página estão as várias categorias e subcategorias dos anúncios, tal como podemos ver na gura 5.9. Figura 5.9: Categorias e subcategorias de anúncios. Quando se clica em cima de um nome, dependendo se é uma categoria ou subcategoria há um reencaminhamento para as páginas de anúncios por categoria ou subcategoria, respetivamente. Na listagem 9 podemos ver um pequeno exemplo do código usado no evento Click de um LinkButton para chegar à página de anúncios por categoria (gura 5.10).

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 51 Listagem 9 Exemplo para redirecionar para a página de anúncios por categoria. foreach (Categorias categoria in ClassQueries.mostraCategoria(LinkButtonVeiculos)) { { Session["id_cat"] = categoria.id_categoria; } } Response.Redirect("AnunciosCat.aspx"); Figura 5.10: Página dos Anúncios por Categoria.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 52 Na listagem 10 podemos ver um pequeno exemplo do código usado no evento SelectedIndexChanged de um DataList para chegar à pagina de anúncios por subcategoria (gura 5.11). Listagem 10 Exemplo para redirecionar para os anúncios por subcategoria. Session["id_sub"] = DataListAnimais.SelectedValue; Response.Redirect("AnunciosSubCat.aspx"); Figura 5.11: Página dos Anúncios por Subcategoria. 5.5.1.3 Registo de utilizadores Nesta página os visitantes podem efetuar o seu registo, para desta forma passarem a utilizadores registados. Para efetuarem o registo é necessário preencher um formulário, em que todos os campos são de preenchimento obrigatório. Os campos têm ainda outras validações, sendo estas: o telefone terá que ter nove dígitos, o username não pode ser repetido, terá que ser introduzido um email válido e a password terá que ter no mínimo seis carateres. É ainda usado o captacha para que não possam ser inseridos utilizadores através de um programa para o efeito. O formulário descrito é o da gura 5.12.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 53 Figura 5.12: Formulário de registo para os utilizadores. Depois de submetido o formulário, o utilizador irá receber dois emails automaticamente, num deles serão enviados os dados do utilizador (gura 5.13), para que este os verique e no outro o utilizador deverá validar o seu email (gura 5.14) [9]. Em anexo pode ser consultado o código usado para enviar o email dos dados.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 54 Figura 5.13: Exemplo de email enviado ao utilizador com os dados. Figura 5.14: Exemplo de email enviado ao utilizador para conrmação. 5.5.2 Utilizador Aqui vamos ver algumas das principais funcionalidades dos utilizadores que já efetuaram o login, sendo estas: inserir e editar anúncios, visualizar os vários anúncios presentes, contactar a administração do site, visualizar os seus próprios anúncios, entre outras. 5.5.2.1 Mapa do site Home (Utilizador/DefaultUtilizador.aspx) Detalhes do anúncio (Utilizador/DetalhesAnuncio.aspx) Anúncios por categoria (Utilizador/AnunciosCat.aspx)

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 55 Detalhes do anúncio (Utilizador/DetalhesAnuncio.aspx) Anúncios por subcategoria (Utilizador/AnunciosSubCat.aspx) Detalhes do anúncio (Utilizador/DetalhesAnuncio.aspx) Missão (Utilizador/Missao.aspx) Os meus anúncios (Utilizador/MeusAnuncios.aspx) Detalhes do anúncio (Utilizador/DetalhesAnuncio.aspx) Dados pessoais (Utilizador/Dados.aspx) Editar dados (Utilizador/EditarDados.aspx) Editar password (Utilizador/AlterarPassword.aspx) Contactar (Utilizador/Mensagens.aspx) Inserir anúncio (Utilizador/InserirAnuncio.aspx) Editar anúncio (Utilizador/EditarAnuncioSelecionar.aspx) Selecionar anúncio a editar (Utilizador/EditarAnuncioSelecionar.aspx) 5.5.2.2 Home Page Editar anúncio selecionado (Utilizador/EditarAnuncio.aspx) A home page dos utilizadores é a página para onde é reencaminhado um utilizador que acabou de efetuar o seu login. Na gura 5.15 podemos ver essa página.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 56 Figura 5.15: Home page (utilizadores)

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 57 Esta página é semelhante à home page dos visitantes, possuindo as mesmas funcionalidades, apesar de ter ainda outras, que apenas são possíveis para utilizadores registados, tais como: inserir anúncio, editar anúncios, editar os seus dados e ver os anúncios inseridos por si. 5.5.2.3 Inserir anúncio Nesta página é onde os utilizadores podem inserir os seus anúncios. Agora vai ser explicado passo a passo o formulário que é necessário preencher para inserir um anúncio. Todos os campos obrigatórios têm * e possuem validações para tal. No início do formulário o utilizador tem que preencher os dados relativos à categoria e ao tipo de anúncio, tal como podemos ver na gura 5.16. Figura 5.16: Dados relativos à categoria e tipo de anúncio Em primeiro lugar terá que ser selecionada a categoria do anúncio e só depois a subcategoria e o tipo de anúncio, já que estes campos dependem do primeiro. A drop down list das subcategorias apenas carrega os dados relativos à categoria selecionada. Quanto ao tipo de anúncio, é usada a tabela CatTip, onde cada categoria tem os respetivos tipos de anúncios. Na listagem 11 podemos ver um exemplo de como é efetuado o carregamento da drop down list tipos de anúncio, neste caso para os imóveis. O query "mostratiposanuncio"vai buscar os tipos de anúncio relativos aos imóveis. Listagem 11 Exemplo para carregar a dropdownlist tipos de anúncio. if (DropDownListCategoria.SelectedItem.Text.Equals("Imóveis")) { DropDownListTipoAnuncio.DataSource = ClassQueries.mostraTiposAnuncio(3); DropDownListTipoAnuncio.DataBind(); DropDownListTipoAnuncio.Items.Insert(0, new ListItem("Selecione o tipo de anúncio", "")); } O query "mostratiposanuncio"vai buscar os tipos de anúncio relativos a uma categoria passada por parâmetro, tal como podemos ver na listagem 12.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 58 Listagem 12 Query que retorna os tipos de anúncio da uma dada categoria. public static IQueryable mostratiposanuncio(int idcategoria) { ModelBDClassificadosContainer classificadosbd = new ModelBDClassificadosContainer(); var query = from tiposanun in classificadosbd.tiposanuncio join categoriastiposanuncio in classificadosbd.cattip on tiposanun.id_tipo_anuncio equals categoriastiposanuncio.id_tipo_anuncio join categorias in classificadosbd.categorias on categoriastiposanuncio.id_categoria equals categorias.id_categoria where categoriastiposanuncio.id_categoria == idcategoria orderby tiposanun.nome select tiposanun; return query; } Na gura 5.17 podemos ver a parte do formulário onde são inseridos os dados relativos à localização do anúncio. Figura 5.17: Dados relativos à localização do anúncio Para selecionar dados nesta parte do formulário, é necessário seguir a ordem, ou seja, primeiro é necessário selecionar o distrito, depois o concelho e por m a freguesia, já que há uma interligação entre esses dados. As drop down list são carregadas usando as tabelas Distritos, Concelhos e Freguesias, onde foi usado o carregamento externo de dados para efetuar o seu preenchimento. Na gura 5.18 podemos ver a parte do formulário onde são inseridos os dados gerais para o anúncio e para a maior parte das categorias dos anúncios. Neste caso, temos que inserir o preço para o anúncio.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 59 Figura 5.18: Dados gerais de um anúncio Quando a categoria do anúncio é emprego, os dados gerais do anúncio são diferentes, tal como podemos ver na gura 5.19. Neste caso já não é necessário inserir o preço, mas sim o tipo de contrato. Figura 5.19: Dados gerais de um anúncio de emprego Ao nível dos dados para um anúncio, há ainda a salientar que, dependendo da subcategoria, há dados especícos que podem ser inseridos pelos utilizadores. Na gura 5.20 podemos ver, um exemplo, onde neste caso, temos os dados que podem ser inseridos para um anúncio de apartamentos.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 60 Figura 5.20: Dados especícos para apartamentos Na parte seguinte do formulário o utilizador poderá escolher se quer colocar o anúncio em destaque, selecionando a check box, tal como podemos ver na gura 5.21. Figura 5.21: Selecionar anúncio para destaque Caso o anúncio seja para destaque, o utilizador terá que preencher mais alguns dados, tal como podemos ver na gura 5.22.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 61 Figura 5.22: Dados para colocar o anúncio em destaque Para terminar o formulário, o utilizador poderá escolher se quer inserir imagens para o anúncio, selecionando a check box, tal como podemos ver na gura 5.23. Figura 5.23: Selecionar imagens para o anúncio Caso o utilizador deseje inserir imagens para o anúncio, terá que selecionar o cheiro a partir do seu computador, tal como podemos ver na gura 5.24. Apenas são aceites cheiros png e jpg, com um determinado tamanho. Em anexo poderá ser consultado um exemplo do código que guarda as imagens numa pasta do sistema de cheiros e o caminho dessas imagens na base de dados. Já que a pasta onde as imagens cam é sempre a mesma, para que não haja problemas com imagens que tenham o mesmo nome, foi adicionado o dia, mês, ano, horas, minutos, segundos e milissegundos, para resolver esse problema. O tempo é encriptado usando o algoritmo MD5Hash.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 62 Figura 5.24: Inserir imagens Por m vamos ver um exemplo de uma função que insere um anúncio na tabela anúncios, na listagem 13. Listagem 13 Exemplo de função que insere na tabela anúncios. public static void inseriranuncio(int subcategoria, int tipoanuncio, int freguesia, string textboxlocalizacao, string titulo, string descricao, string preco, bool destaque, int id_utilizador, string titulodest, string subdest, string descdest, string cam1, string cam2, string tipocontrato) { } ModelBDClassificadosContainer classificadosbd = new ModelBDClassificadosContainer(); Anuncios a = new Anuncios() { Id_sub_categoria = subcategoria, Id_tipo_anuncio = tipoanuncio, Id_freguesia = freguesia, Localizacao = textboxlocalizacao, Titulo = titulo, Descricao = descricao, Preco = preco, Id_utilizador = id_utilizador, Data_publicacao = DateTime.Now, Estado = "Pendente", Para_destaque = destaque, Destaque = "Pendente", Titulo_destaque = titulodest, Sub_titulo_destaque = subdest, Descicao_destaque = descdest, Imagem1 = cam1, Imagem2 = cam2, Tipo_contrato = tipocontrato }; classificadosbd.addtoanuncios(a); classificadosbd.savechanges(); Alguns dos dados referidos nesta página possuem validações especícas, como por exemplo apenas podem inserir números. 5.5.2.4 Editar anúncio Nesta página os utilizadores podem editar os dados gerais dos anúncios já inseridos, sendo que para tal, em primeiro lugar, é necessário escolher o anúncio do qual querem editar os dados. Apenas os anúncios que não estão em destaque, no momento, podem ser editados. Esta seleção é feita na página que podemos ver na gura 5.25

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 63 Figura 5.25: Selecionar anúncio a editar Depois de selecionado o anúncio, podem ser editados alguns dados, tal como podemos ver na gura 5.26.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 64 Figura 5.26: Editar anúncio selecionado Caso a categoria do anúncio selecionado seja emprego o formulário terá uma pequena alteração, em vez do preço terá o tipo de contrato, tal como podemos ver na gura 5.27.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 65 5.5.2.5 Os meus anúncios Figura 5.27: Editar anúncio selecionado (emprego) Nesta página os utilizadores podem ver todos os anúncios que já foram inseridos por si. Tal como podemos ver na gura 5.28 os utilizadores podem ainda ver qual o estado do seu anúncio, pendente ou conrmado.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 66 Figura 5.28: Os meus anúncios

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 67 Caso o utilizador clique no botão "Detalhes", este poderá ainda ver como aparece o seu anúncio aos restantes utilizadores, ou seja, qual a ordem dos vários detalhes. Na gura 5.29 podemos ver um exemplo com os vários detalhes de um anúncio. Figura 5.29: Detalhes de um anúncio 5.5.2.6 Editar dados pessoais Nesta página os utilizadores podem editar os seus dados pessoais, tal como podemos ver na gura 5.30. Uma página semelhante a esta está também disponível para os moderadores e para os administradores.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 68 5.5.2.7 Editar password Figura 5.30: Editar dados pessoais Nesta página os utilizadores podem editar a sua password, tal como podemos ver na gura 5.31. Os moderadores e os administradores têm também esta possibilidade.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 69 5.5.2.8 Contactar Figura 5.31: Editar password Nesta página os utilizadores podem contactar a administração, preenchendo o formulário da gura 5.32. A mensagem enviada ca guardada na tabela Mensagens, com o estado a False e deverá ser respondida pelos moderadores o mais rápido possível. Figura 5.32: Formulário para contactar a administração

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 70 5.6 BackOce Neste capítulo vão ser mostradas as páginas que podem ser visíveis para os administradores e para os moderadores, ou seja toda a parte de gestão do site. 5.6.1 Moderadores Vamos agora ver algumas das principais funcionalidades dos moderadores, sendo estas: validar anúncios, retirar/colocar anúncios em destaque e responder a mensagens dos utilizadores. 5.6.1.1 Mapa do site Home (Moderador/DefaultModerador.aspx) Anúncio (Moderador/ConrmarAnunciosSelecionar.aspx) Destaque (Moderador/DestaquesApagar.aspx) Mensagem (Moderador/Mensagens.aspx) Anúncio (Moderador/ConrmarAnunciosSelecionar.aspx) Anúncios pendentes Validar anúncio Destaque (Moderador/DestaquesApagar.aspx) Anúncio a tirar de destaque (Moderador/DestaquesApagar.aspx) Destacar um anúncio (Moderador/DestaquesInserir.aspx) Mensagem (Moderador/Mensagens.aspx) Selecionar a mensagem a responder (Moderador/Mensagens.aspx) Responder à mensagem (Moderador/ResponderMensagens.aspx) Dados pessoais (Moderador/Dados.aspx) Editar dados (Moderador/EditarDados.aspx) Editar password (Moderador/AlterarPassword.aspx) 5.6.1.2 Home page A home page dos moderadores é a página para onde é reencaminhado um moderador que acabou de efetuar o seu login. Na gura 5.33 podemos ver essa página.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 71 Figura 5.33: Home page (moderadores) Nesta página os moderadores podem ver se têm algum anúncio, destaque ou mensagem pendente, para que desta forma vejam logo o que têm de fazer. Tal como nos utilizadores podem ainda alterar os seus dados. 5.6.1.3 Validar anúncios Nesta página os moderadores validam todos os anúncios inseridos. Em primeiro lugar é necessário selecionar um anúncio a validar, tal como podemos ver na gura 5.34. Figura 5.34: Anúncios pendentes Em seguida o moderador deverá vericar se os dados inseridos pelo utilizador não contêm palavras que não podem ser mostradas nos anúncios (gura 5.35). Por m deverá selecionar o estado do anúncio, que pode ser Conrmado ou Cancelado.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 72 Figura 5.35: Validar anúncio selecionado

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 73 5.6.1.4 Retirar/Colocar anúncios em destaque Nesta página são colocados e retirados os anúncios de destaque. De cada vez apenas podem e devem estar quatro anúncios em destaque, ou seja, quando queremos colocar um anúncio em destaque em primeiro lugar é necessário nalizar, ou seja, retirar de destaque, um dos anúncios. Na gura 5.36 podemos ver que apenas estão três anúncios em destaque, pelo que devemos colocar mais um anúncio em destaque. Figura 5.36: Ver anúncios em destaque e destacar outro 5.6.1.5 Mensagens Nesta página os moderadores respondem ás varias mensagens enviadas pelos utilizadores. Em primeiro lugar o moderador seleciona a mensagem a responder, que deverá ser a mais antiga, tal como podemos ver na gura 5.37.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 74 Figura 5.37: Selecionar mensagem a responder Por m, o moderador deverá responder à mensagem selecionada, tal como podemos ver na gura 5.38. A resposta será enviada para o email inserido pelo utilizador no momento em que enviou a mensagem e o estado da mensagem, na tabela, será também alterado para True.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 75 5.6.2 Administradores Figura 5.38: Responder à mensagem selecionada Quanto aos administradores, estes têm outras funcionalidades, tais como: inserir funcionários, visualizar os anúncio pelos vários estados (pendentes, conrmados e cancelados) e ver ainda qual o moderador que conrmou ou cancelou cada anúncio. 5.6.2.1 Mapa do site Home (Administrador/DefaultAdministrador.aspx) Anúncio (Administrador/SelecionarAnunciosEstado.aspx) Anúncios pendentes (Administrador/AnunciosPendentes.aspx) Anúncios conrmados (Administrador/AnunciosConrmados.aspx) Anúncios cancelados (Administrador/AnunciosCancelados.aspx) Categoria (Administrador/InserirSubCategorias.aspx) Inserir subcategorias (Administrador/InserirSubCategorias.aspx) Funcionário (Administrador/RegistoFuncionário.aspx) Dados pessoais (Administrador/Dados.aspx)

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 76 Editar dados (Administrador/EditarDados.aspx) Editar password (Administrador/AlterarPassword.aspx) 5.6.2.2 Home page A home page dos administradores é a página para onde é reencaminhado um administrador que acabou de efetuar o seu login. Na gura 5.39 podemos ver essa página. Figura 5.39: Home page (administradores) Nesta página os administradores podem aceder a todas as funcionalidades que têm, sendo estas: inserir novos funcionários, inserir subcategorias para uma categoria e ver um histórico de anúncios por estado (pendentes, conrmados e cancelados). 5.6.2.3 Inserir funcionários Nesta página, os administradores podem inserir novos funcionários, sendo que para tal é necessário preencher o formulário da gura 5.40.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 77 Figura 5.40: Formulário para inserir funcionários Dependendo do cargo selecionado, os administradores podem inserir novos moderadores ou administradores, tal como podemos ver na listagem 14. Aqui vai ser inserido na tabela o role pretendido para o funcionário. Listagem 14 Inserir o cargo para um funcionário. if (cargo.equals("administrador")) { Roles.AddUserToRole(username, "Administradores"); } else { Roles.AddUserToRole(username, "Moderadores"); } Depois de efetuado o registo, é enviado um email ao funcionário que acabou de ser inserido, com os seus dados pessoais. O email é semelhante ao que é enviado quando é efetuado o registo de um utilizador, com apenas a diferença de que o funcionário deverá alterar o mais rápido possível a sua password, já que a password por defeito é sempre a mesma. 5.6.2.4 Inserir subcategoria Nesta página, os administradores podem inserir novas subcategorias para a categoria selecionada, tal como podemos ver na gura 5.41.

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 78 5.6.2.5 Anúncios conrmados Figura 5.41: Inserir subcategorias Nesta página, os administradores podem ver os anúncios conrmados e saber qual o moderador que efetuou essa ação. Na gura 5.42 podemos ver um exemplo de um anúncio conrmado e o moderador que o conrmou. Figura 5.42: Anúncio conrmado 5.7 Colocação e divulgação online Para colocar a aplicação web online, é necessário efetuar uma série de passos. Inicialmente foi instalado o IIS e o SQL SERVER 2008 no servidor que irá alojar o site e de seguida foi necessário efetuar o registo de um domínio. Por m, foram criadas as duas base de dados no servidor e foram transferidos todos os cheiros relativos à aplicação web (páginas, imagens, css) para o servidor de alojamento. 5.7.1 IIS (Internet Information Services) O IIS é um servidor web criado pela Microsoft, para ser usado com os seus sistemas operativos, para os servidores. A primeira versão foi introduzida com o Windows

CAPÍTULO 5. IMPLEMENTAÇÃO DA SOLUÇÃO 79 NT (família dos sistemas operativos do Windows) Server versão 4, e passou por várias atualizações. A versão mais recente é o IIS 7.5, que apenas está disponível no Windows Server 2008 R2 e Windows 7. Uma das características do IIS é a geração de páginas HTML dinâmicas, o que difere dos outros servidores web. É usada tecnologia proprietária, o ASP (Active Server Pages), apesar de também poder usar outras tecnologias.[21] 5.7.2 Registo de domínios Domínio é o nome que serve para localizar e identicar alguns computadores na Internet e foi feito com o objetivo de guardar, de forma mais fácil, os endereços dos vários computadores na Internet. Sem ele, seria necessário memorizar uma sequência grande de números. Segundo as regras atuais, para que o registo de um domínio seja aceite, são necessários, pelo menos, dois servidores DNS (Servidor de nomes) conectados à Internet e congurados para o domínio que está sendo solicitado.[19] O registo de domínios em Portugal é feito pela FCCN, Fundação para a Computação Cientíca Nacional. A FCCN é responsável pela gestão, registo e manutenção de domínios sobre o.pt, domínio de topo correspondente a Portugal.[8] 5.7.3 Servidor utilizado A empresa disponibilizou um servidor para poder alojar o web site. Nesse servidor foi instalado o IIS (Internet Informations Service) e o SQL SERVER 2008, para que o web site pudesse ser alojado sem problemas. 5.7.4 Divulgação online Para efetuar a divulgação do web site pelo maior número de pessoas, podiam ser usados vários mecanismos, como por exemplo: utilização das redes sociais para efetuar essa divulgação (já que estas são usadas cada vez mais e não haveria custos adicionais) e a utilização de alguns mecanismos de publicidade, ou seja, divulgação do site noutros web sites.

Capítulo 6 Conclusões e trabalho futuro 6.1 Conclusões Ao longo da elaboração do projeto, em contexto de estágio, tive a oportunidade de trabalhar com algumas tecnologias com as quais já tinha trabalhado ao longo da licenciatura e desta forma aprofundar algumas das potencialidades destas tecnologias, que não são abordadas nas restantes unidades curriculares. Quanto às várias funcionalidades previstas no início do projeto, basicamente, foram todas realizadas, à exceção de alguns pormenores (como por exemplo, a inserção de mais campos especícos para as várias subcategorias) que acabam por não ter grande relevância para o projeto. A implementação destes pormenores seria semelhante a coisas já realizadas. Foram surgindo vários inconvenientes, ao longo da realização do projeto, como por exemplo: a inserção de imagens para um determinado anúncio, a utilização de uma nova tecnologia, linq to entities, para aceder à base de dados usando o modelo. Este foi um dos principais desaos que me foi proposto pela empresa, sendo que no início não foi fácil, mas depois de começar a perceber encontrei várias vantagens, tais como: o mesmo query pode ser usado várias vezes e como os queries não são feitos automaticamente, apenas serão usadas as tabelas necessárias. Com a ajuda deste mecanismo, foi me permitido, de forma mais simples, elaborar a aplicação ASP.NET em três camadas. Para concluir, pode dizer-se que este trabalho acabou por enriquecer a aprendizagem na licenciatura e obter uma primeira impressão do que é estar a fazer um projeto para uma empresa, apesar de pequena ainda. O projeto acabou por ser muito importante na aprendizagem nal, na licenciatura. 6.2 Trabalho futuro Em geral, pode dizer-se que todas as principais funcionalidades pensadas inicialmente foram implementadas, mas ao longo do projeto foram surgindo novas ideias, sobre novas funcionalidades, que poderiam ser implementadas no futuro, tais como: 80

CAPÍTULO 6. CONCLUSÕES E TRABALHO FUTURO 81 Implementar um método de pagamento para os anúncios, onde pode haver outras vantagens; Mostrar anúncios que estão em destaque noutros sites de anúncios; Implementar a troca de mensagens entre os utilizadores; Colocar mais campos especícos para as subcategorias, usando uma DDL ou uma tabela única, com ajuda de uma tabela sombra; Colocar e retirar os anúncios do destaque de forma automática, usando uma linha temporal; Enviar um email ao utilizador quando o anúncio é validado e se for caso disso, quando é colocado em destaque também; Possibilitar a inserção de mais imagens para cada anúncio; Mostrar aos utilizadores as condições e termos da plataforma de anúncios; Possibilitar a recuperação da password aos utilizadores. Como podemos ver podem ainda ser implementadas mais algumas funcionalidades na aplicação, para a completar.

Bibliograa [1] The Web Information Company Alexa. Coisas.com site info. http://www. alexa.com/siteinfo/coisas.com#, Novembro 2012. [2] The Web Information Company Alexa. Custojusto.pt site info. http://www. alexa.com/siteinfo/custojusto.pt#, Novembro 2012. [3] The Web Information Company Alexa. Olx.pt site info. http://www.alexa. com/siteinfo/olx.pt#, Novembro 2012. [4] Miguel Angel Alvarez. O que é javascript? http://www.criarweb.com/ artigos/184.php, Setembro 2004. [5] Redaçao Ocina da Net. C# (csharp) o que é esta linguagem? http://www.oficinadanet.com.br/artigo/526/c_sharp_csharp_o_que_e_ esta_linguagem, Setembro 2007. [6] Diego Eis. O que é html? http://tableless.com.br/o-que-html-basico/, Janeiro 2011. [7] Erysson. O que é asp.net? http://www.erysson.com.br/post/2011/01/25/ O-que-e-ASPNET.aspx, Janeiro 2011. [8] FCCN. Dns.pt. http://www.fccn.pt/pt/servicos/dominios-internet-pt/ dns-pt/, Outubro 2012. [9] Jonatas Freitas. Como enviar e-mail com asp.net e c#. http://thecodebr. blogspot.pt/2010/05/como-enviar-e-mail-com-aspnet-e-c.html, Maio 2010. [10] Infonova. A evolução da internet. http://www.infonova.com.br/artigos/ a-evolucao-da-internet.html, Fevereiro 2011. [11] Jonny Ken. A importância do logout. http://www.infopod.com.br/artigos/ a-importancia-do-logout/, Junho 2007. [12] José Carlos Macoratti. Apresentando linq to entities. http://www.macoratti. net/08/09/lnq_ent1.htm, Outubro 2012. [13] José Carlos Macoratti. C# - criando uma aplicacao asp.net em 3 camadas. http://www.macoratti.net/11/05/c_aspn3c.htm, Outubro 2012. 82

BIBLIOGRAFIA 83 [14] Microsot. Microsoft sql server. http://technet.microsoft.com/en-us/ library/bb545450.aspx, Outubro 2012. [15] Coisas no facebook. Coisas.com. https://www.facebook.com/coisas, Novembro 2012. [16] Custo Justo no facebook. Custojusto. http://www.facebook.com/ CustoJusto, Novembro 2012. [17] OLX no facebook. Olx portugal. https://www.facebook.com/ olxclassificados, Novembro 2012. [18] Ana Paula Pereira. O que é css? http://www.tecmundo.com.br/ programacao/2705-o-que-e-css-.htm, Setembro 2009. [19] Wikipédia. Domínio. http://pt.wikipedia.org/wiki/dom%c3%adnio, Outubro 2012. [20] Wikipédia. História da internet. http://pt.wikipedia.org/wiki/hist%c3% B3ria_da_Internet, Outubro 2012. [21] Wikipédia. Internet information services. http://pt.wikipedia.org/wiki/ Internet_Information_Services, Junho 2012. [22] Wikipédia. Microsoft visual studio. http://pt.wikipedia.org/wiki/ Microsoft_Visual_Studio, Outubro 2012. [23] Wikipédia. Sql. http://pt.wikipedia.org/wiki/sql, Outubro 2012. [24] Wikipédia. Sql server management studio. http://en.wikipedia.org/wiki/ SQL_Server_Management_Studio, Outubro 2012. [25] Wikipédia. Web 2.0. http://pt.wikipedia.org/wiki/web_2.0, Outubro 2012.

Anexos 84

Anexo A Listagem de programas A.1 Enviar email automaticamente string remetenteemail = "anuncieaquija@gmail.com"; //O e-mail do remetente //Cria objeto string builder StringBuilder sbbody = new StringBuilder(); //Adiciona estrutura HTML do E-Mail sbbody.append("<html xmlns='http://www.w3.org/1999/xhtml'>"); sbbody.append("<head><title>untitled Document</title>"); sbbody.append("<style type='text/css'> body {margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; background-color: #E1E0F2;}"); sbbody.append("body,td,th {font-family: Verdana, Geneva, sans-serif; font-size: 12px;}</style></head><body>"); sbbody.append("<strong><h3>.::registo EFETUADO COM SUCESSO</h3></strong><br />"); sbbody.append("<b>exmo(a) Senhor(a) <i>" + nome + "</i>,</b><br />"); sbbody.append("<b>muito obrigado por ter efetuado o seu registo na nossa plataforma de anúncios online, Anuncie aqui já!</b><br /><br />"); sbbody.append("<b>por favor confirme os seus dados, e finalize o seu registo num outro email que irá receber.</b><br /><br />"); sbbody.append("<b>nome completo</b><br />"); //Adiciona texto sbbody.append(nome); sbbody.append("<br /><br />"); sbbody.append("<b>morada</b><br />"); //Adiciona texto sbbody.append(morada); sbbody.append("<br /><br />"); sbbody.append("<b>telefone</b><br />"); //Adiciona texto sbbody.append(telefone); sbbody.append("<br /><br />"); sbbody.append("<b>email</b><br />"); //Adiciona texto sbbody.append(email); sbbody.append("<br /><br />"); sbbody.append("<b>username</b><br />"); //Adiciona texto sbbody.append(username); sbbody.append("<br /><br />"); sbbody.append("<b>password</b><br />"); //Adiciona texto sbbody.append("******"); sbbody.append("<br /><br /><br />"); 85

ANEXO A. LISTAGEM DE PROGRAMAS 86 sbbody.append("<b><i>atenciosamente</b></i>,<br />"); sbbody.append("<i>anuncie aqui já</i><br />"); sbbody.append("<br /><br />"); sbbody.append("<br /></body></html>"); //Cria novo objeto MailMessage MailMessage mailmessage = new MailMessage(); //Define o remetente mailmessage.from = new MailAddress(remetenteEmail, "Anuncie aqui já!", System.Text.Encoding.UTF8); //Define primeiro destinatário mailmessage.to.add(email); //Define segundo destinatário, note que podemos adicionar infinitos destinatários //mailmessage.to.add("e-mail DO DESTINATÁRIO"); //Define assunto do e-mail mailmessage.subject = "Bem vindo à nossa equipa, anuncie aqui já!"; //Seta propriedade para enviar email em html como true(verdadeiro) mailmessage.isbodyhtml = true; //Seta o corpo do e-mail com a estrutura HTML gravada na stringbuilder sbbody mailmessage.body = sbbody.tostring(); mailmessage.bodyencoding = System.Text.Encoding.UTF8; mailmessage.priority = MailPriority.High; //Prioridade do E-Mail //Cria novo SmtpCliente e seta o endereço SmtpClient smtpclient = new SmtpClient(); smtpclient.port = 587; // Esta porta é a utilizada pelo Gmail para envio smtpclient.host = "smtp.gmail.com"; //Definindo o provedor que irá disparar o e-mail smtpclient.enablessl = true; //Gmail trabalha com Server Secured Layer //Credencial para envio por SMTP Seguro (APENAS QUANDO O SERVIDOR EXIGE AUTENTICAÃÃO) smtpclient.credentials = new NetworkCredential(remetenteEmail, "anuncieaquija"); // Envia a mensagem smtpclient.send(mailmessage); A.2 Inserir imagens na pasta if (FileUploadImagens.PostedFile.ContentLength < 4000000 && FileUploadImagens0.PostedFile.ContentLength < 4000000) //tamanho máximo para as fotos é de 4 MB { int p = FileUploadImagens.FileName.LastIndexOf("."); string nome = FileUploadImagens.FileName.Substring(0, p); string extensao = FileUploadImagens.FileName.Substring(p); int p1 = FileUploadImagens0.FileName.LastIndexOf("."); string nome1 = FileUploadImagens0.FileName.Substring(0, p1); string extensao1 = FileUploadImagens0.FileName.Substring(p1); if ((extensao.equals(".jpg") extensao.equals(".png")) && (extensao1.equals(".jpg") extensao1.equals(".png"))) { string tempo = CalculateMD5Hash(Convert.ToString(DateTime.Now) + Convert.ToString(DateTime.Now.Millisecond)); FileUploadImagens.SaveAs(caminhoImagensAnuncios + "\\" + nome + tempo + extensao);

ANEXO A. LISTAGEM DE PROGRAMAS 87 FileUploadImagens0.SaveAs(caminhoImagensAnuncios + "\\" + nome1 + tempo + extensao1); string cam = ("../ImagensAnuncios/" + nome + tempo + extensao); string cam1 = ("../ImagensAnuncios/" + nome1 + tempo + extensao1); } aux = true; } else { LabelImagem.Text = "Tipo de ficheiro inválido"; }

Anexo B Carregamento cheiros externos B.1 Ficheiro dos distritos Na gura B.1 podemos ver o cheiro que foi usado para o carregamento da tabela Distritos, da base de dados. Figura B.1: Distritos. B.2 Ficheiro dos concelhos Na gura B.2 podemos ver o cheiro que foi usado para o carregamento da tabela Concelhos, da base de dados. 88