Shop
Notas de implementação
[Exercício da Disciplina de ADAV]
http://www.dei.isep.ipp.pt/~jtavares/ADAV/downloads/ADAV_Proj_Rreferencia.pdf
Base de Dados - Sales
1
Interfaces

Códigos de ‘Status’ – Retorno de alguns métodos
//
// Definição dos códigos de ‘status’ que poderão ser retornados
//
public enum ShopStatusEnum
{
OK = 1,
NOT_OK = 0,
INVALID_LOGIN = -1,
INVALID_KEY = -2,
INVALID_CUSTOMER_ID = -3,
INVALID_PRODUCT_ID = -4,
INSUFICIENT_STOCK = -5,
ERROR = -6
}

User
public interface IUser
{
ShopStatusEnum Validate(string user, string pass);
}
2
3

Customer
public interface ICustomer
{
// devolve os dados do cliente com um dado id
DataSet GetByID(string user, string pass, long clientID);
// devolve os dados de todos os clientes cujo nome obedeça ao padrão de pesquisa
DataSet FindByName( string user, string pass, string namePattern);
// Adiciona um novo cliente e retorna o respectivo ID gerado automaticamente na BD
long Add( string user, string pass, string name, string address,string phone, string fax,
string email, out ShopStatusEnum status);
// actualiza os dados do cliente identificado pelo id
ShopStatusEnum Update( string user, string pass, long custumerID, string name,
string address, string phone, string fax, string eMail);
}
4
5
Cliente do componente

Usar DALC Customer
// página .aspx de pesquisa
…
using ShopClassLibrary
…
string user=…;
string pass=…;
ICustomer customer=new Customer();
// chamada ao método GetByID da classe Customer.cs
DataSet ds = customer.GetByID(user, pass, idcustomer);
// método devolve null se não encontrar
If ( ds!=null )
…
6
DAL Classe Customer.cs
public DataSet GetByID(string user, string pass, long clientID)
{
OleDbConnection conn = null;
DataSet ds = null;
try
{
// criar objecto de conexão à base de dados e abrir a conexão
conn = new OleDbConnection(UtilDB.CONN);
conn.Open();
// validar utilizador
ShopStatusEnum status = UtilDB.ValidateUser(conn, null, user, pass);
if (status != ShopStatusEnum.OK)
return null;
// efectuar pesquisa
ds = UtilDB.GetByID(conn, null, "Customers", "CustomerID", clientID);
}
7
Classe Customer.cs - GetByID (cont.)
catch(OleDbException ex)
{
// tratar a excepção!!!!
System.Console.WriteLine("EXCEPÇÃO no método <GetByID> da
classe 'Customer': " + ex.Message);
}
finally
{
// fechar a conexão
if (conn.State == ConnectionState.Open)
conn.Close();
}
return ds;
}
8
Classe UtilDB.cs
static public DataSet GetByID (OleDbConnection conn, OleDbTransaction tx, string
table, string keyName, long key)
{
DataSet ds = null;
try
{
// criar objecto DataSet
ds = new DataSet();
// criar um Datadapter para executar o comando e devolver o dataset
string sSqlCmd = "Select * From "+ table + " Where "+ keyName + " = "+
key.ToString();
OleDbDataAdapter oAdapter = new OleDbDataAdapter(sSqlCmd, conn);
oAdapter.SelectCommand.Transaction = tx;
// executar o comando e preencher um Dataset
oAdapter.Fill(ds, table);
}
catch(OleDbException ex)
{
// tratar a excepção!!!!
System.Console.WriteLine("EXCEPÇÃO no método 'UtilDB.GetByID': " +
ex.Message);
ds = null;
}
return ds;
}
9
Classe Sale
10
public interface IUser
{
ShopStatusEnum Validate(string user, string pass);
}
public class User : IUser
{
…
public ShopStatusEnum Validate(string user, string pass)
{
return UtilDB.ValidateUser(user, pass);
}
…
// validar Login
IUser c = new User();
if (c.Validate(txtUsername.Text, txtPassword.Text) == ShopStatusEnum.OK)
11
Download

public interface IUser