Desenvolvimento - ASP. NET
Aplicações Móveis no .NET
As aplicações desenvolvidas para telefones celulares ganharam um espaço grande no mundo sem fio, como bancos, mercado financeiro, notícias, índices, área médica, entre outras.
por Renato HaddadAs aplicações desenvolvidas para telefones celulares ganharam um espaço grande no mundo sem fio, como bancos, mercado financeiro, notícias, índices, área médica, entre outras. No entanto, antes do Mobile .NET você desenvolvia basicamente utilizando WML (Wireless Markup Language) e caso precisasse de páginas dinâmicas, incrementava o ASP (Active Server Pages), entre outras tecnologias. Com o Visual Studio .NET é possível criar uma aplicação para executar em telefones celulares ou diretamente em um navegador. Para isso, você precisa instalar o Mobile internet Toolkit 1.0 (veja em downloads www.microsoft.com/mobile), que é um SDK para desenvolvimento.
Para simular uma aplicação dentro do Visual Studio .NET você pode instalar o Microsoft Mobile Emulator 3.0 ou qualquer outro dispositivo que suporte o Framework. Outros simuladores podem ser conseguidos nos fabricantes como Nokia e Ericson, fato que cresce a cada dia o número de dispositivos criados para essa finalidade.
Neste artigo vamos criar uma simples aplicação com alguns formulários e controles para consultas de Saldos, Extratos e Contas diretamente no telefone celular. A facilidade que o ambiente RAD (Rapid Application Development) proporciona dentro do Visual Studio .NET, permite um desenvolvimento sem traumas, usando todos os recursos das classes que o Framework dispõe. Quando você instala o SDK irá perceber que a Toolbox de controles chamada Mobile Web Forms contém uma quantidade de componentes que uma aplicação móvel suporta, e a IDéia é exibir os mais utilizados.
Uma aplicação móvel é considerada uma aplicação ASP.NET porque será armazenada em um servidor de aplicações na WEB rodando sob o internet information Server. Crie um novo projeto chamado VSPJ do tipo Mobile Web Application. No Solution Explorer, adicione um novo item chamado BancoVirtual.aspx do tipo Mobile Web Form. No formulário atual, altere o ID para frmMain e o Title para Banco Virtual .NET e adicione os seguintes controles: três TextBox nomeados Agencia, Conta e Senha respectivamente; para o controle Senha altere a propriedade Password para True; Adicione um Command (botão de comando) com o Text = Entrar; Adicione um Label chamado ResultadoSenha. Esse formulário fará a autenticação do usuário da conta, se for inválido o menu de opções não será exibido. Vale dizer que todos os controles derivam da classe System.Web.Ui.MobileControls.MobilePage.
Figura 1: Formulário de Autenticação
Veja a estrutura das tabelas e o relacionamento existente.
Figura 2: Banco de dados
Como o banco de dados é o SQL Server, então vá até a janela de código (F7) e insira na primeira linha a referência para a classe para acessar o ADO.NET.
Imports System.Data.SqlClient
Como a conexão será usada em diversas partes do código, insira a seguinte linha antes do evento Page_Load para que fique disponível em qualquer parte do aplicativo.
Dim conn As New SqlConnection("initial Catalog=Bancos;Data Source=wind;User ID=sa")
Digite o código no botão de comando Entrar que identifica o correntista. isso pode ser feito dando um duplo clique no respectivo botão na janela de Design.
Private Sub Command1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command1.Click Dim agencia As integer = Me.Agencia.Text Dim conta As integer = Me.Conta.Text Dim senha As String = Me.Senha.Text Dim sql As String sql = "SELECT IDConta, email FROM Correntistas WHERE Agencia=" _& agencia & " AND conta=" & conta & " AND senha="" & senha & """ Dim cmd As New SqlCommand(sql, conn) Dim dr As SqlDataReader Try conn.Open() dr = cmd.ExecuteReader() if Not dr.Read() Then ResultadoSenha.Text = "Dados incorretos !!!" dr.Close() Else Session("IDConta") = dr("IDConta") Session("email") = dr("email") dr.Close() ActiveForm = frmMenu End if Finally conn.Close() End Try End Sub
Se o correntista for válido, é preciso exibir o formulário com as opções de menu. Para isso, adicione um objeto Form (formulário) com o ID = frmMenu contendo um componente List. Altere as seguintes propriedades do List: Decoration = Numbered; para adicionar os itens selecione a propriedade items, clique no construtor (...) e digite as opções (item Text) com os respectivos valores (Value): Saldo Atual - 1; Extrato Conta - 2; Pagar Contas - 3. Desta forma você já tem as opções de menu.
Figura 3: Formulário com as opções do menu
Para cada opção existirá um formulário específico para tal finalidade com controles distintos, a fim de explorar os recursos da aplicação. insira mais três formulários com os seguintes controles e propriedades:
Formulário de Saldo Bancário
- ID: frmSaldo
- Label: ID = Saldo
- Command: Text = voltar
Formulário de Extrato Conta Corrente
- ID: frmExtrato
- TextView: ID = extrato
- Command: Text = Enviar e-mail
- Command: Text = voltar
Figura 4 - Formulários de Saldo e Extrato.
Figura 4: Formulários de Saldo e Extrato
Formulário de Contas
- ID: frmContas
- List: SelectType = CheckBox
- Command: Text = Selecionar
- TextView: ID = contas
- Command: Text = Efetuar Pagto
- Label: ID = ResultadoContas
- Command: Text = voltar
Figura 5: Formulários de Contas
Salve o projeto, compile e execute no navegador ou no simulador. Caso você tenha instalado o MME 3.0, selecione o menu View/Mobile Explorer Browser / Show Browser. O endereço da URL é http://localhost/VSPJ/BancoVirtual.aspx. Digite os dados e clique no botão Entrar.
Figura 6: Execução do aplicativo para um usuário válido
Para ativar os formulários é preciso identificar qual opção o usuário selecionou e preencher os respectivos dados, portanto no frmMenu dê um duplo clique no List e digite o seguinte código de acordo com a opção:
Private Sub List1_itemCommand (ByVal sender As System.Object, ByVal e As System.Web.Ui.MobileControls.ListCommandEventArgs) Handles List1.itemCommand Select Case Cint(e.Listitem.Value) Case 1 ActiveForm = frmSaldo Saldo.Text = "R$ " & FormatNumber(VerificaSaldo(), 2) … End Sub
Se a opção selecionada for Saldo, é invocada uma rotina que ativa o formulário frmSaldo e preenche o controle Saldo com o conteúdo da função VerificaSaldo formatado com duas casas decimais. Digite a função que lê o valor do saldo na tabela. Esta função pesquisa o campo Saldo na tabela Correntistas de acordo com a Identificação da conta contida na Session("IDConta"), que é a variável de sessão criada quando da autenticação no aplicativo. Em seguida são definidos o Command, o DataReader, a abertura da conexão e a execução do DataReader.
Figura 7: Pesquisa o saldo na conta
Continuando o código do List1_itemCommand, veja como fica a segunda opção para consulta de extrato bancário que exibe o formulário frmExtrato.
Case 2 ActiveForm = frmExtrato VerificaExtrato()
Note que é preciso digitar a rotina VerificaExtrato que exibe a movimentação dos últimos 5 dias. Essa rotina pode ser digitada após o End Sub do List1_itemCommand.
Case 2 ActiveForm = frmExtrato VerificaExtrato() Note que é preciso digitar a rotina VerificaExtrato que exibe a movimentação dos últimos 5 dias. Essa rotina pode ser digitada após o End Sub do List1_itemCommand. Sub VerificaExtrato() Dim saldoAtual As Double = VerificaSaldo() Dim sql As String = "SELECT Data, Tipo, Valor FROM Movimentacao WHERE IDConta=" _& Session("IDConta") & " AND Data>= getDate()-5" Dim cmd As New SqlCommand(sql, conn) Dim dr As SqlDataReader Try conn.Open() dr = cmd.ExecuteReader() With extrato .Text = "Saldo: " & FormatNumber(saldoAtual, 2) & "<br>" Do While dr.Read() .Text += Day(dr("Data")) & "/" & Month(dr("Data")) & " " if dr("Tipo") = "c" Then .Text += "+ " saldoAtual += dr("Valor") Else .Text += "- " saldoAtual -= dr("Valor") End if .Text += FormatNumber(dr("Valor"), 2) & "<br>" Loop .Text += " Saldo Atual: " & FormatNumber(saldoAtual, 2) End With Finally dr.Close() conn.Close() End Try End Sub
Figura 8: Extrato da conta no celular
Caso você queira enviar o extrato para a sua conta de e-mail cadastrada no banco, clique no botão e-mail. A classe utilizada é a imports System.Web.Mail que deve ser digitada no início das linhas dos códigos. Veja o código para enviar o e-mail no formato HTML cujo corpo do e-mail estará armazenado na variável msg.
Private Sub Command2_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command2.Click Dim email As New MailMessage() Dim saldoAtual As Double = VerificaSaldo() Dim sql As String = "SELECT Data, Tipo, Valor FROM Movimentacao WHERE IDConta=" _& Session("IDConta") & " AND Data >= getDate()-2" Dim cmd As New SqlCommand(sql, conn) Dim dr As SqlDataReader Dim msg As String Try conn.Open() dr = cmd.ExecuteReader() msg = "<HTML><BODY>Confira o extrato<br>" msg += "<font color=blue size=7><b>Saldo: " _& FormatNumber(saldoAtual, 2) & "</b></font><br>" msg += "<font color=black size=4>" Do While dr.Read() msg += Day(dr("Data")) & "/" & Month(dr("Data")) & " " if dr("Tipo") = "c" Then msg += "+ " saldoAtual += dr("Valor") Else msg += "- " saldoAtual -= dr("Valor") End if msg += FormatNumber(dr("Valor"), 2) & "<br>" Loop msg += "</font><br>Saldo Atual: " & FormatNumber(saldoAtual, 2) msg += "</BODY></HTML>" Finally dr.Close() conn.Close() End Try With email .From = "banco@banco.com.br" .To = Session("email") .Subject = "Extrato bancário" .Body = msg .BodyFormat = MailFormat.Html End With SmtpMail.Send(email) End Sub
Para explorarmos os recursos de alguns controles, vamos inserir um conjunto de contas que você pode autorizar o débito automático pelo telefone celular. No entanto, não iremos desenvolver a rotina de débito, e sim, mostrar como manipular o controle. Como isso refere-se a terceira opção do menu, veja o restante do código referente ao List1_itemCommand.
Case 3 ActiveForm = frmContas Dim arrayContas As New ArrayList() With arrayContas .Add("Telefone") .Add("Celular") .Add("Mercado") .Add("Aluguel") .Add("Carro") .Add("Luz") .Add("Agua") .Add("Academia") End With Me.lstContas.DataSource = arrayContas Me.lstContas.DataBind() lstContas.Visible = True Command8.Visible = False Command9.Visible = True contas.Text = "" End Select End Sub
Note que o formulário frmContas é ativado, é montado um array com as opções de contas e o controle lstContas é carregado com o array. É interessante notar que a propriedade DataSource define a origem dos dados e o método DataBind preenche o controle, dispensando assim, ter que montar um looping e adicionar cada linha do array.
Figura 9
Private Sub Command9_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command9.Click Dim objitem As MobileControls.MobileListitem contas.Text = "" lstContas.Visible = False For Each objitem in Me.lstContas.items if objitem.Selected Then contas.Text &= objitem.Text & " - " End if Next Command9.Visible = False Command8.Visible = True End Sub
Para autorizar o pagamento crie o código para o botão Efetuar Pagto que poderia conter uma rotina para realmente efetivar o débito na conta corrente. Aqui só estamos exibindo um texto para verificação.
Private Sub Command8_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Command8.Click ResultadoContas.Text = "Suas contas serão debitadas automaticamente na sua conta" End Sub
Este artigo serviu para você explorar alguns controles disponíveis para celulares, acessar um banco de dados via ADO.NET, e verificar o funcionamento da aplicação.
Desenvolver aplicativos para telefones celulares deixou de ser um mercado fechado a poucos desenvolvedores. O Mobile internet Toolkit nos proporciona através do Visual Studio .NET integrar as aplicações existentes que rodam na internet ou Windows Application com o telefone celular, aumentando a abrangência da sua aplicação.
Bem vindos ao mundo móvel. "No stress, think .NET".