Chamar parâmetros a partir de uma classe
Boa tarde,
Desejo chamar os nomes do parâmetros a apartir de uma classe, fiz assim , criei uma camada chamada DataObj (dentro de um projeto) essa camada tem a classe OrderObj e a Ordess que é uma lista da OrderObj. Os dados dela aparece abaixo, desejo chamar essa classe no meu projeto WebService, já adicionei como referência, mas não consigo chamar os dados, portanto, fiz do meio tradicional, conforme código abaixo da classe OrderObj.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DataObj
{
public class Orderss : List<OrderObj>
{
}
public class OrderObj
{
private int _IdOrder;
public int IdOrder
{
get { return _IdOrder; }
set { _IdOrder = value; }
}
private int _UserNum;
public int UserNum
{
get { return _UserNum; }
set { _UserNum = value; }
}
private int _IdD;
public int IdD
{
get { return _IdD; }
set { _IdD = value; }
}
private int _IdI;
public int IdI
{
get { return _IdI; }
set { _IdI = value; }
}
private int _IdProPlan;
public int IdProPlan
{
get { return _IdProPlan; }
set { _IdProPlan = value; }
}
private int _IdNumInvoice;
public int IdNumInvoice
{
get { return _IdNumInvoice; }
set { _IdNumInvoice = value; }
}
private int _Points;
public int Points
{
get { return _Points; }
set { _Points = value; }
}
private decimal _Price;
public decimal Price
{
get { return _Price; }
set { _Price = value; }
}
private decimal _Setup;
public decimal Setup
{
get { return _Setup; }
set { _Setup = value; }
}
private string _DateDue;
public string DateDue
{
get { return _DateDue; }
set { _DateDue = value; }
}
private string _Pay;
public string Pay
{
get { return _Pay; }
set { _Pay = value; }
}
private string _DatePay;
public string DatePay
{
get { return _DatePay; }
set { _DatePay = value; }
}
private string _Identifier;
public string Identifier
{
get { return _Identifier; }
set { _Identifier = value; }
}
private string _License;
public string License
{
get { return _License; }
set { _License = value; }
}
private string _OrderType;
public string OrderType
{
get { return _OrderType; }
set { _OrderType = value; }
}
private string _DateUpdate;
public string DateUpdate
{
get { return _DateUpdate; }
set { _DateUpdate = value; }
}
private string _DateOrder;
public string DateOrder
{
get { return _DateOrder; }
set { _DateOrder = value; }
}
}
}
__________________________________________________________________________________
Código do WebService InsertOrder....
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using DataObj;
using Persistence;
namespace WebService
{
/// <summary>
/// InclusÆo de Order
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class wsInsertOrder : System.Web.Services.WebService
{
[WebMethod]
public DataObj.Orderss InsertOrders(); //Chamei a camada DataObj e a classe Orderss, mas obviamente // não deve ser a assim que se faz, pois quanto instancio abaixo não aparece os parâmetros que eu quero que //são UserNum, IdD, IdI e assim suscessivamente e que vem da classe Orderss .
DataObj.Orderss ordes = new DataObj.Orderss();
Não quero usar os parâmetros dessa forma, quero pegar a partir da classe Orderss, mas tudo que eu tentei não deu certo.
public RetornoWebService InsertOrder(int UserNum, int IdD, int IdI, int IdProPlan, int IdNumInvoice, int Points, decimal Price, decimal Setup, string DateDuo, string Pay, string DatePay, string Identifier, string License, string OrderType, string DateUpdate, DateTime DateOrder)
{
#region Valida‡äes de Campos Obrigat¢rios
if (String.IsNullOrEmpty(Identifier))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo Identifier ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(DateDuo))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo DateDuo ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(Pay))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo Pay ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(DatePay))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo DatePay ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(License))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo License ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(OrderType))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo OrderType ‚ obrigat¢rio.");
#endregion
DBAccess executaProcedure = new DBAccess();
executaProcedure.SetCommandType(CommandType.StoredProcedure);
executaProcedure.CommandText = "SP_INSERT_ORDER";
#region Adiciona parametros
executaProcedure.AddParameter("@UserNum", UserNum); //Eu quero fazer o orders.UserNum vir da DataObj
executaProcedure.AddParameter("@IdD", IdD); //e assim para todos os campos abaixo
executaProcedure.AddParameter("@IdI", IdI);
executaProcedure.AddParameter("@IdProPlan", IdProPlan);
executaProcedure.AddParameter("@IdNumInvoice", IdNumInvoice);
executaProcedure.AddParameter("@Points", Points);
executaProcedure.AddParameter("@Price", Price);
executaProcedure.AddParameter("@Setup", Setup);
executaProcedure.AddParameter("@DateDuo", DateDuo);
executaProcedure.AddParameter("@Pay", Pay);
executaProcedure.AddParameter("@DatePay", DatePay);
executaProcedure.AddParameter("@Identifier", Identifier);
executaProcedure.AddParameter("@License", License);
executaProcedure.AddParameter("@OrderType", OrderType);
executaProcedure.AddParameter("@DateUpdate", DateUpdate);
executaProcedure.AddParameter("@DateOrder", DateOrder);
#endregion
DataSet dsReultado;
//em caso de algum erro inesperado na procedure o sistema informa o erro e mostra a mensagem gerada pela procedure
try
{
dsReultado = executaProcedure.ExecuteDataSet();
}
catch (Exception ex)
{
return new RetornoWebService(TipoRetornoWebService.Erro, String.Format("Ocorreu um erro ao executar o comando de inclusÆo. Mensagem do servidor: ", ex.Message));
}
//se a procedure retornar um resultado usa este resultado senÆo retorna um erro informando que a procedure nÆo retornou resultados
if (dsReultado.Tables.Count > 0 && dsReultado.Tables[0].Rows.Count > 0)
return new RetornoWebService((TipoRetornoWebService)Convert.ToInt32(dsReultado.Tables[0].Rows[0][0]), Convert.ToString(dsReultado.Tables[0].Rows[0][1]));
else
return new RetornoWebService(TipoRetornoWebService.Erro, "A StoredProcedure nÆo retornou resposta de resultado.");
}
}
}
Régis Mello
Curtidas 0
Respostas
Luiz Maia
02/03/2009
Olá Regis,
Para usar as propriedades de uma classe (get e set) em seus métodos, estas devem ser publicas. Depois é so fazer a instancia da classe e chamar a propriedade/atributo.
Segue exemplo abaixo:
CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for Class1
/// </summary>
public class Class1
{
//atributos
private string cod_teste1;
private int cod_teste2;
public Class1()
{
this.cod_teste1 = null;
this.cod_teste2 = 0;
}
public string Cod_Teste1
{
get { return cod_teste1; }
set { cod_teste1 = value; }
}
public int Cod_Teste2
{
get { return cod_teste2; }
set { cod_teste2 = value; }
}
}
WEB FORM DE ONDE CHAMADO OS ATRIBUTOS DA CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Instancia da classe, necessario pois não é STATIC
Class1 classe = new Class1();
string testeChamada1 = classe.Cod_Teste1;
int testeChamada2 = classe.Cod_Teste2;
}
}
Abraços e
GOSTEI 0
Luiz Maia
02/03/2009
Olá Regis,
Para usar as propriedades de uma classe (get e set) em seus métodos, estas devem ser publicas. Depois é so fazer a instancia da classe e chamar a propriedade/atributo.
Segue exemplo abaixo:
CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for Class1
/// </summary>
public class Class1
{
//atributos
private string cod_teste1;
private int cod_teste2;
public Class1()
{
this.cod_teste1 = null;
this.cod_teste2 = 0;
}
public string Cod_Teste1
{
get { return cod_teste1; }
set { cod_teste1 = value; }
}
public int Cod_Teste2
{
get { return cod_teste2; }
set { cod_teste2 = value; }
}
}
WEB FORM DE ONDE CHAMADO OS ATRIBUTOS DA CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Instancia da classe, necessario pois não é STATIC
Class1 classe = new Class1();
string testeChamada1 = classe.Cod_Teste1;
int testeChamada2 = classe.Cod_Teste2;
}
}
Abraços e aguardo s
GOSTEI 0
Luiz Maia
02/03/2009
Olá Regis,
Para usar as propriedades de uma classe (get e set) em seus métodos, estas devem ser publicas. Depois é so fazer a instancia da classe e chamar a propriedade/atributo.
Segue exemplo abaixo:
CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for Class1
/// </summary>
public class Class1
{
//atributos
private string cod_teste1;
private int cod_teste2;
public Class1()
{
this.cod_teste1 = null;
this.cod_teste2 = 0;
}
public string Cod_Teste1
{
get { return cod_teste1; }
set { cod_teste1 = value; }
}
public int Cod_Teste2
{
get { return cod_teste2; }
set { cod_teste2 = value; }
}
}
WEB FORM DE ONDE CHAMADO OS ATRIBUTOS DA CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Instancia da classe, necessario pois não é STATIC
Class1 classe = new Class1();
string testeChamada1 = classe.Cod_Teste1;
int testeChamada2 = classe.Cod_Teste2;
}
}
Abraços e aguardo seu
GOSTEI 0
Luiz Maia
02/03/2009
Olá Regis,
Para usar as propriedades de uma classe (get e set) em seus métodos, estas devem ser publicas. Depois é so fazer a instancia da classe e chamar a propriedade/atributo.
Segue exemplo abaixo:
CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for Class1
/// </summary>
public class Class1
{
//atributos
private string cod_teste1;
private int cod_teste2;
public Class1()
{
this.cod_teste1 = null;
this.cod_teste2 = 0;
}
public string Cod_Teste1
{
get { return cod_teste1; }
set { cod_teste1 = value; }
}
public int Cod_Teste2
{
get { return cod_teste2; }
set { cod_teste2 = value; }
}
}
WEB FORM DE ONDE CHAMADO OS ATRIBUTOS DA CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Instancia da classe, necessario pois não é STATIC
Class1 classe = new Class1();
string testeChamada1 = classe.Cod_Teste1;
int testeChamada2 = classe.Cod_Teste2;
}
}
Abraços e aguardo seu retorno.
Att
Luiz
GOSTEI 0
Luiz Maia
02/03/2009
Olá Regis,
Para usar as propriedades de uma classe (get e set) em seus métodos, estas devem ser publicas. Depois é so fazer a instancia da classe e chamar a propriedade/atributo.
Segue exemplo abaixo:
CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for Class1
/// </summary>
public class Class1
{
//atributos
private string cod_teste1;
private int cod_teste2;
public Class1()
{
this.cod_teste1 = null;
this.cod_teste2 = 0;
}
public string Cod_Teste1
{
get { return cod_teste1; }
set { cod_teste1 = value; }
}
public int Cod_Teste2
{
get { return cod_teste2; }
set { cod_teste2 = value; }
}
}
WEB FORM DE ONDE CHAMADO OS ATRIBUTOS DA CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Instancia da classe, necessario pois não é STATIC
Class1 classe = new Class1();
string testeChamada1 = classe.Cod_Teste1;
int testeChamada2 = classe.Cod_Teste2;
}
}
Abraços e aguardo seu retorno.
Att
Luiz Maia
GOSTEI 0
Luiz Maia
02/03/2009
Olá Regis,
Para usar as propriedades de uma classe (get e set) em seus métodos, estas devem ser publicas. Depois é so fazer a instancia da classe e chamar a propriedade/atributo.
Segue exemplo abaixo:
CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Summary description for Class1
/// </summary>
public class Class1
{
//atributos
private string cod_teste1;
private int cod_teste2;
public Class1()
{
this.cod_teste1 = null;
this.cod_teste2 = 0;
}
public string Cod_Teste1
{
get { return cod_teste1; }
set { cod_teste1 = value; }
}
public int Cod_Teste2
{
get { return cod_teste2; }
set { cod_teste2 = value; }
}
}
WEB FORM DE ONDE CHAMADO OS ATRIBUTOS DA CLASSE:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Instancia da classe, necessario pois não é STATIC
Class1 classe = new Class1();
string testeChamada1 = classe.Cod_Teste1;
int testeChamada2 = classe.Cod_Teste2;
}
}
Abraços e aguardo seu retorno.
Att
Luiz Maia
GOSTEI 0
Régis Mello
02/03/2009
Conforme você pode ver abaixo mesmo chamando a classe com using DataObj;
e fazendo o que vc disse para vc , que alias eu já vinha fazendo, sem sucesso, mesmo assim continua não funcionando
OrderObj classe1 = new OrderObj();
string testeChamada1 = classe1.UserNum; // Ele coloca uma linha ondulada de vermelho embaixo de classe1, o que indica erro.
int testeChamada2 = classe1.IdD;
string testeChamada3 = classe1.License;
GOSTEI 0
Luiz Maia
02/03/2009
Regis,
1. Quando vc coloca o ponto depois do nome da classe, o Intellisense te mostra o nome do método?
- classe1.UserNum
2. Quando vc tenta compilar, dá um erro? Tem como me passar o print screen da tela de erro com a mensagem?
Estou no aguardo.
Abraços
Luiz Maia
GOSTEI 0
Luiz Maia
02/03/2009
Estou no aguardo Regis.
Att,
Luiz Maia
GOSTEI 0
Régis Mello
02/03/2009
Te ntei compilar dá uma mensagem em inglÊS algo como a classe1 não existe no escopo do projeto.
Como eu te envio o arquivo?
Att
Regis
GOSTEI 0
Luiz Maia
02/03/2009
De um printscreen na tela de erro e salva a imagem, depois faça o upload dela aqui.
Abraços
Estou aguardando.
Att
Luiz Maia
Luiz Maia
GOSTEI 0
Devmedia
02/03/2009
Régis,
vc tem a opção "meu disco virtual" na home da consultoria. Caso tenha dificuldades em utilizar existe um video, onde o link do mesmo encontra-se ao lado da opção citada anteriormente.
Lembrando que vc só poderá postar arquivos no formato .rar ou .zip.
No caso de uma imagem, vc pode utilizar o botão "insert image" na própria caixa de texto do chamado.
vc tem a opção "meu disco virtual" na home da consultoria. Caso tenha dificuldades em utilizar existe um video, onde o link do mesmo encontra-se ao lado da opção citada anteriormente.
Lembrando que vc só poderá postar arquivos no formato .rar ou .zip.
No caso de uma imagem, vc pode utilizar o botão "insert image" na própria caixa de texto do chamado.
GOSTEI 0
Régis Mello
02/03/2009
Segue a imagem para visualizar o erro.
GOSTEI 0
Luiz Maia
02/03/2009
Ola Regis,
Repare que para fazer a instancia da classe, a mesma deve estar dentro do seu metodo, veja um exmplo abaixo:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
Class1 cls = new Class1();
public Service () {
//Uncomment the following line if using designed components
//InitializeComponent();
Class1 cls = new Class1();
string teste = cls.Cod_Teste1;
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
}
Fiz um teste aqui e segue os prints das telas, é bem simples, não entendo pq o erro persiste.
Deve ser algum descuido seu na hora de instanciar a classe. Segue os prints da tela do Web service e da classe, repare do Solution Explorer a relação dos arquivos, veja que a classe esta no mesmo projeto, caso contrario, se seu classe for uma Class Library, basta adicionar a referencia para a mesma e fazer seus metodo publicos nela, não tem erro não. Da uma olhada abaixo, tenta fazer uma outra aplicação seguindo os moldes abaixo, se der errado me avise, ok? Aguardo seu retorno para solucionar-mos este problema.
Abraços
Att
Luiz Maia
GOSTEI 0
Régis Mello
02/03/2009
Sim assim funciona, mas dê um olhadinha no meu código para entender o que eu não consigo fazer....
Olha a declaração das variaveis ( parametros ) estão acima do código, pois manualmente é assim que se declara,
// as declarações das variaveis foram feitas aqui....
public RetornoWebService InsertUser(string UserLicense , string Identifier, int UserIdD, string UserName, string Email, string EmailAdditional, string Password, string DocFormat, string DocNumber, string Language, string AddressMail, string Country, string City, string State, string ZipCode, string Sex, string Birth, string AuthEmail, string ReadTerm, string NameFantasy, string FunctionCompany, string WebSite, string AccountBankName, string AccountBankOffice, string AccountBankNum, string AccountBankType)
{
Mas, o código para pegar os parâmetros a partir da classe UserObj só funciona aqui....
Como posso arrumar isso? Entendeu a minha dúvida?
UserObj cls = new UserObj();
string teste = cls.UserLicense;
GOSTEI 0
Luiz Maia
02/03/2009
Régis,
Não tem como declarar variaveis fora do escopo da classe. Faz o seguinte então:
public RetornoWebService InsertUser()
{ UserObj cls = new UserObj();
string teste = cls.UserLicense;
string teste2 = cls.Identifier;
string teste3 = cls.UserIdD;
}
{ UserObj cls = new UserObj();
string teste = cls.UserLicense;
string teste2 = cls.Identifier;
string teste3 = cls.UserIdD;
}
GOSTEI 0
Régis Mello
02/03/2009
Assim não dá certo, fiz o que você indicou, eu acho, mas na hora de testar o WS os parâmetros nao aparecem. Conforme imagens abaixo:
GOSTEI 0
Luiz Maia
02/03/2009
Regis,
Mas do jeito acima, esta dando algum tipo de exceção, ou somente não retorna os parametros?
Luiz Mai
GOSTEI 0
Régis Mello
02/03/2009
Ao compilar não dá nenhum erro, mas não aparece os parametros, portanto, não há como enviar os dados para o WS, e portanto, irá gerar todo o tipo de erro, erro para os campos em branco, erro para os campos que são validados (CPF e CNPJ), enfim sem os parâmetros o WS nao funciona.
GOSTEI 0
Luiz Maia
02/03/2009
Regis,
Veja bem, agora temos outro tipo de erro. A excessão anterior era quanto a instancia da Classe, que agora esta sendo feita corretamente, antes vc não conseguia instanciá-la. Agora vc tem a instancia e as propriedades da mesma, se os dados não estão aparecendo é pq vc ainda não fez a instancia deles na Classe, quando vc faz um new vc esta criando uma classe nova, portanto, zerada.
Me envie qual o processo que vc esta realizando, tipo assim:
Faz a chamada do WS;
Instancia os parametros na classe;
Usa estes parametros sem precisar passar na assinatura do metodo.
Aguardo
Luiz Maia
GOSTEI 0
Régis Mello
02/03/2009
Não entendi.
Segue o código e os comentário do que preciso fazer.... no modelo que vc me ensinou funcionou capturar os parametros, no entanto, ele não aparece no WS quando publicado.
[WebService(Namespace = "http://189.126.109.105/webservice")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class wsInsertUser : System.Web.Services.WebService
{
[WebMethod]
// Esses campos precisam vir da camada de Obj do sistema DataObj da classe UserObj, no entanto, mesmo
// instanciando a classe como já ensinado os parâmetros nao aparecem no WS portanto, não tenho um WS // funcional, ocorre que como está ai abaixo ele é totalmente funcional, mas nao segue a linha de // de
// desenvolvimento que estou tentando apreender que é programar em camadas.
public RetornoWebService InsertUser(string UserLicense, string Identifier, int UserIdD, string UserName, string Email, string EmailAdditional, string Password, string DocFormat, string DocNumber, string Language, string AddressMail, string Country, string City, string State, string ZipCode, string Sex, string Birth, string AuthEmail, string ReadTerm, string NameFantasy, string FunctionCompany, string WebSite, string AccountBankName, string AccountBankOffice, string AccountBankNum, string AccountBankType)
{
#region Valida‡äes de Campos Obrigat¢rios
if (String.IsNullOrEmpty(UserLicense))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo UserLicense ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(Identifier))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo Identifier ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(Email))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo Email ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(Password))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo Password ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(DocFormat))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo DocFormat ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(DocNumber))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo DocNumber ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(AuthEmail))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo AuthEmail ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(ReadTerm))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo ReadTerm ‚ obrigat¢rio.");
#endregion
if (DocFormat.Trim().Equals("C") && ! ValidatorHelper.ValidaCNPJ(DocNumber.Trim()))
//se o tipo de documento for CNPJ e o n£mero do CNPJ for inv lido
{
return new RetornoWebService(TipoRetornoWebService.Erro, "O n£mero do CNPJ ‚ Inv lido.");
}
else
{
if (DocFormat.Trim().Equals("P") && !ValidatorHelper.ValidaCPF(DocNumber.Trim()))
//se o tipo de documento for CPF e o n£mero do CPF for inv lido
{
return new RetornoWebService(TipoRetornoWebService.Erro, "O n£mero do CPF ‚ Inv lido.");
}
}
if (!ValidatorHelper.ValidaEmail(Email) || !ValidatorHelper.ValidaEmail(EmailAdditional))
{
return new RetornoWebService(TipoRetornoWebService.Erro, "O endere‡o de e-mail ‚ inv lido.");
}
DBAccess executaProcedure = new DBAccess();
executaProcedure.SetCommandType(CommandType.StoredProcedure);
executaProcedure.CommandText = "SP_INSERT_USER";
#region Insere Parametros para a Procedure
executaProcedure.AddParameter("@UserLicense", UserLicense);
executaProcedure.AddParameter("@Identifier", Identifier);
executaProcedure.AddParameter("@UserIdD", UserIdD);
executaProcedure.AddParameter("@UserName", UserName);
executaProcedure.AddParameter("@Email", Email);
executaProcedure.AddParameter("@EmailAdditional", EmailAdditional);
executaProcedure.AddParameter("@Password", Criptografia.criptografa( Password));
executaProcedure.AddParameter("@DocFormat", DocFormat);
executaProcedure.AddParameter("@DocNumber", DocNumber);
executaProcedure.AddParameter("@Language", Language);
executaProcedure.AddParameter("@AddressMail", AddressMail);
executaProcedure.AddParameter("@Country", Country);
executaProcedure.AddParameter("@City", City);
executaProcedure.AddParameter("@State", State);
executaProcedure.AddParameter("@ZipCode", ZipCode);
executaProcedure.AddParameter("@Sex", Sex);
executaProcedure.AddParameter("@Birth", Birth);
executaProcedure.AddParameter("@AuthEmail", AuthEmail);
executaProcedure.AddParameter("@ReadTerm", ReadTerm);
executaProcedure.AddParameter("@NameFantasy", NameFantasy);
executaProcedure.AddParameter("@FunctionCompany", FunctionCompany);
executaProcedure.AddParameter("@WebSite", WebSite);
executaProcedure.AddParameter("@AccountBankName", AccountBankName);
executaProcedure.AddParameter("@AccountBankOffice", AccountBankOffice);
executaProcedure.AddParameter("@AccountBankNum", AccountBankNum);
executaProcedure.AddParameter("@AccountBankType", AccountBankType);
#endregion
DataSet dsReultado;
//em caso de algum erro inesperado na procedure o sistema informa o erro e mostra a mensagem gerada pela procedure
try
{
dsReultado = executaProcedure.ExecuteDataSet();
}
catch (Exception ex)
{
return new RetornoWebService(TipoRetornoWebService.Erro, String.Format( "Ocorreu um erro ao executar o comando de inclusÆo. Mensagem do servidor: ", ex.Message));
}
//se a procedure retornar um resultado usa este resultado senÆo retorna um erro informando que a procedure nÆo retornou resultados
if (dsReultado.Tables.Count > 0 && dsReultado.Tables[0].Rows.Count > 0)
return new RetornoWebService((TipoRetornoWebService)Convert.ToInt32(dsReultado.Tables[0].Rows[0][0]), Convert.ToString(dsReultado.Tables[0].Rows[0][1]));
else
return new RetornoWebService(TipoRetornoWebService.Erro, "A StoredProcedure nÆo retornou resposta de resultado.");
}
}
GOSTEI 0
Régis Mello
02/03/2009
Não entendi.
Segue o código e os comentário do que preciso fazer.... no modelo que vc me ensinou funcionou capturar os parametros, no entanto, ele não aparece no WS quando publicado.
[WebService(Namespace = "http://189.126.109.105/webservice")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class wsInsertUser : System.Web.Services.WebService
{
[WebMethod]
// Esses campos precisam vir da camada de Obj do sistema DataObj da classe UserObj, no entanto, mesmo
// instanciando a classe como já ensinado os parâmetros nao aparecem no WS portanto, não tenho um WS // funcional, ocorre que como está ai abaixo ele é totalmente funcional, mas nao segue a linha de // de
// desenvolvimento que estou tentando apreender que é programar em camadas.
public RetornoWebService InsertUser(string UserLicense, string Identifier, int UserIdD, string UserName, string Email, string EmailAdditional, string Password, string DocFormat, string DocNumber, string Language, string AddressMail, string Country, string City, string State, string ZipCode, string Sex, string Birth, string AuthEmail, string ReadTerm, string NameFantasy, string FunctionCompany, string WebSite, string AccountBankName, string AccountBankOffice, string AccountBankNum, string AccountBankType)
{
#region Valida‡äes de Campos Obrigat¢rios
if (String.IsNullOrEmpty(UserLicense))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo UserLicense ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(Identifier))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo Identifier ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(Email))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo Email ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(Password))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo Password ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(DocFormat))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo DocFormat ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(DocNumber))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo DocNumber ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(AuthEmail))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo AuthEmail ‚ obrigat¢rio.");
if (String.IsNullOrEmpty(ReadTerm))
return new RetornoWebService(TipoRetornoWebService.Erro, "O campo ReadTerm ‚ obrigat¢rio.");
#endregion
if (DocFormat.Trim().Equals("C") && ! ValidatorHelper.ValidaCNPJ(DocNumber.Trim()))
//se o tipo de documento for CNPJ e o n£mero do CNPJ for inv lido
{
return new RetornoWebService(TipoRetornoWebService.Erro, "O n£mero do CNPJ ‚ Inv lido.");
}
else
{
if (DocFormat.Trim().Equals("P") && !ValidatorHelper.ValidaCPF(DocNumber.Trim()))
//se o tipo de documento for CPF e o n£mero do CPF for inv lido
{
return new RetornoWebService(TipoRetornoWebService.Erro, "O n£mero do CPF ‚ Inv lido.");
}
}
if (!ValidatorHelper.ValidaEmail(Email) || !ValidatorHelper.ValidaEmail(EmailAdditional))
{
return new RetornoWebService(TipoRetornoWebService.Erro, "O endere‡o de e-mail ‚ inv lido.");
}
DBAccess executaProcedure = new DBAccess();
executaProcedure.SetCommandType(CommandType.StoredProcedure);
executaProcedure.CommandText = "SP_INSERT_USER";
#region Insere Parametros para a Procedure
executaProcedure.AddParameter("@UserLicense", UserLicense);
executaProcedure.AddParameter("@Identifier", Identifier);
executaProcedure.AddParameter("@UserIdD", UserIdD);
executaProcedure.AddParameter("@UserName", UserName);
executaProcedure.AddParameter("@Email", Email);
executaProcedure.AddParameter("@EmailAdditional", EmailAdditional);
executaProcedure.AddParameter("@Password", Criptografia.criptografa( Password));
executaProcedure.AddParameter("@DocFormat", DocFormat);
executaProcedure.AddParameter("@DocNumber", DocNumber);
executaProcedure.AddParameter("@Language", Language);
executaProcedure.AddParameter("@AddressMail", AddressMail);
executaProcedure.AddParameter("@Country", Country);
executaProcedure.AddParameter("@City", City);
executaProcedure.AddParameter("@State", State);
executaProcedure.AddParameter("@ZipCode", ZipCode);
executaProcedure.AddParameter("@Sex", Sex);
executaProcedure.AddParameter("@Birth", Birth);
executaProcedure.AddParameter("@AuthEmail", AuthEmail);
executaProcedure.AddParameter("@ReadTerm", ReadTerm);
executaProcedure.AddParameter("@NameFantasy", NameFantasy);
executaProcedure.AddParameter("@FunctionCompany", FunctionCompany);
executaProcedure.AddParameter("@WebSite", WebSite);
executaProcedure.AddParameter("@AccountBankName", AccountBankName);
executaProcedure.AddParameter("@AccountBankOffice", AccountBankOffice);
executaProcedure.AddParameter("@AccountBankNum", AccountBankNum);
executaProcedure.AddParameter("@AccountBankType", AccountBankType);
#endregion
DataSet dsReultado;
//em caso de algum erro inesperado na procedure o sistema informa o erro e mostra a mensagem gerada pela procedure
try
{
dsReultado = executaProcedure.ExecuteDataSet();
}
catch (Exception ex)
{
return new RetornoWebService(TipoRetornoWebService.Erro, String.Format( "Ocorreu um erro ao executar o comando de inclusÆo. Mensagem do servidor: ", ex.Message));
}
//se a procedure retornar um resultado usa este resultado senÆo retorna um erro informando que a procedure nÆo retornou resultados
if (dsReultado.Tables.Count > 0 && dsReultado.Tables[0].Rows.Count > 0)
return new RetornoWebService((TipoRetornoWebService)Convert.ToInt32(dsReultado.Tables[0].Rows[0][0]), Convert.ToString(dsReultado.Tables[0].Rows[0][1]));
else
return new RetornoWebService(TipoRetornoWebService.Erro, "A StoredProcedure nÆo retornou resposta de resultado.");
}
}
GOSTEI 0
Luiz Maia
02/03/2009
Ola Regis,
Um web service vc não consegue pegar as propriedades de uma classe de esteja fora do escopo do projeto. Os dados de um ws são trafegados via XML (arquivo WSDL), portanto sempre que vc invocar um WS, os parametros tem que ser passados via assinatura do metodo mesmo, não tem outro jeito, a não ser usando Serialização, bem mais complicado.
Sempre que for invocar uma we tem que ser passado os parametros mesmo. Assim como vc fez esta correto.
Para aprender a trabalhar em camadas, vc deve ter em mente as camadas de Interface (suas paginas web), a camada de Bussines (negocios, onde tera uma especie de filtro de entrada) e a camada de Persistencia (acesso a dados). Quando se usa uma classe, como vc esta querendo fazer, não necessariamente esta trabalhando com camadas.
Sugiro vc dar uma olhada no video abaixo, que explica claramente o conceito de camadas(layers). Caso não tenha acesso, me avise que providencio pra vc sem ônus algum. É uma série de 5 video aulas. Vale a pena dar uma olhada.
body { margin: 0 0 0 0; padding:0 0 0 0 }
td,div { font-family:Arial;font-size:8pt;vertical-align:top }
body { margin: 0 0 0 0; padding:0 0 0 0 }
.transcript { background-color:#d2d2d2; }
.messageBlock { margin-left:4px; margin-bottom:3px }
.message { margin-left:100px; word-wrap:break-word; white-space:-moz-pre-wrap; _white-space:pre; }
.messageCont { margin-left:100px; word-wrap:break-word; white-space:-moz-pre-wrap; _white-space:pre;}
.other { color:#39577a;vertical-align:top;font-weight:bold;font-style:normal;float:left; width:95px; }
.myself { color:#da8103;font-style:normal;font-weight:bold;font-style:normal;float:left; width:95px; }
.otherCont { font-size:8px;text-align:right; color:#39577a;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.myselfCont { font-size:8px;text-align:right; color:#da8103;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.system { margin-left:4px; word-wrap:break-word;color:#da8103;font-style:normal;font-weight:normal; white-space:-moz-pre-wrap; _white-space:pre; }
.showTimestamp { margin-right:3px; float:right; color:#999999;font-style:normal;font-weight:normal; }
.other1 { color:#ac2000;vertical-align:top;font-weight:bold;font-style:normal;float:left; width:95px; }
.otherCont1 { font-size:8px;text-align:right; color:#ac2000;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.other2 { color:#3c9fa8;vertical-align:top;font-weight:bold;font-style:normal;float:left; width:95px; }
.otherCont2 { font-size:8px;text-align:right; color:#3c9fa8;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.other3 { color:#e25614;vertical-align:top;font-weight:bold;font-style:normal;float:left; width:95px; }
.otherCont3 { font-size:8px;text-align:right; color:#e25614;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.other4 { color:#0b6ac8;vertical-align:top;font-weight:bold;font-style:normal;float:left; width:95px; }
.otherCont4 { font-size:8px;text-align:right; color:#0b6ac8;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.other5 { color:#b23290;vertical-align:top;font-weight:bold;font-style:normal;float:left; width:95px; }
.otherCont5 { font-size:8px;text-align:right; color:#b23290;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.other6 { color:#02e7c7;vertical-align:top;font-weight:bold;font-style:normal;float:left; width:95px; }
.otherCont6 { font-size:8px;text-align:right; color:#02e7c7;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.other7 { color:#5b3284;vertical-align:top;font-weight:bold;font-style:normal;float:left; width:95px; }
.otherCont7 { font-size:8px;text-align:right; color:#5b3284;font-family:Arial,Lucida Grande;font-style:normal;vertical-align:top;font-weight:bold;float:left; width:95px; }
.tsDisplay { display:block }
https://www.devmedia.com.br/cursos/listcurso.asp?curso=77 ;
Abraços
Att
Luiz Maia
GOSTEI 0
Régis Mello
02/03/2009
Ok, entendi, uma pena, tinha outros planos para as validações... ok.
Quanto ao curso eu fiz , mas no sexto capitulo o Carlos pisou na Bola e fez o final muito rapido ai perdeu muita coisa, mas ele tem uma didatica boa, valeu.
GOSTEI 0
Luiz Maia
02/03/2009
Blz Regis,
Se ficou alguma dúvida nos comunique, ok?
Estamos à sua disposição para qualquer tipo de dúvida.
Um abraço e até mais.
Att
Luiz Maia
GOSTEI 0