Nota: hay cosas que aun no encajan porque no lo he terminado, pero me marca algunos errores que no pense que me marcaría.
Básicamente, como puedo separar los DataAccessObject (DAO)? Porque la aplicacion sobre la que me estoy basando (Salesbuilder) maneja todo con {as} ya que trabaja con SQLite, y lo que yo estoy haciendo es migrarlo a SQLServer con .Net del lado del servidor, utilizando como verán.. WebServices.. lo que no logro entender es como hago para hacer por ejemplo un return desde mi clase DAO si tengo que pasar por 3 funciones para poder consumir el webservice.
Ésto es en mi MXML, es una especie de DashBoard donde se muestran las 10 primeras "Empresas" o "Cuentas":
Código Flex :
[Bindable] private var topCuentas:ArrayCollection;
[Bindable] private var cuentas:ArrayCollection;
private var max:Number = 0;
public function loadData():void
{
var dao:CuentaDAO = new CuentaDAO();
topCuentas = dao.getCuentas();
for (var i:int=0 ; i<topAccounts.length ; i++)
{
var account:Cuenta = topAccounts.getItemAt(i) as Account;
var total:Number = cuenta.currentYearResults + cuenta.lastYearResults;
if (total > max)
{
max = total;
}
}
DataGridBarRenderer.max = max;
cuentas = dao.getCuentas();
}
Mi clase CuentaDAO:
Código ActionScript :
package com.salesbuilder.dao
{
import com.salesbuilder.model.Account;
import mx.collections.ArrayCollection;
//Para llamar a web service desde AS
import mx.rpc.Fault;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.soap.LoadEvent;
import mx.rpc.soap.WebService;
import mx.events.ListEvent;
public class CuentaDAO
{
public function CuentaDAO()
{
//sqlConnection = SQLConnectionManager.getConnection("salesbuilder");
}
/*--------------------------------------------*/
/* WEBSERVICES */
/*--------------------------------------------*/
/* Función: onWSDL() */
/* Descripción: Guarda el usuario registrado en la DB */
/*----------------------------------------------------------------------*/
public var getCuentasTop : WebService = new WebService();
public function getCuentas():void
{
getCuentasTop.wsdl = "http://localhost:3332/net/Cuenta.asmx?WSDL";
getCuentasTop.addEventListener(LoadEvent.LOAD, onCuentaWSL);
getCuentasTop.addEventListener(FaultEvent.FAULT, onWebServiceFault);
getCuentasTop.loadWSDL();
}
//listener que avisa cuando el WSDL se ha cargado
private function onCuentaWSL (event:LoadEvent):void
{
getCuentasTop.getCuenta.addEventListener(ResultEvent.RESULT, onGetCuenta);
getCuentasTop.getCuenta();
}
[Bindable]
private var arrCuentas:ArrayCollection
private function onGetCuenta (event:ResultEvent):void
{
arrCuentas=event.result as ArrayCollection;
var datos:ArrayCollection = new ArrayCollection();
for (var i:String in arrCuentas) {
datos.addItem({data:arrCuentas[i].cuentaId, label:arrCuentas[i].cuenta});
}
return datos;
}
// En caso de que el WebService no puede ser cargado.
public function onWebServiceFault(event:FaultEvent):void
{
var fault: Fault = event.fault;
var message:String = "An error occurred. The details are as follows\ncode: " + fault.faultCode;
message += "\ndetail: " + fault.faultDetail;
trace("Web Service Error :" + message);
}
}
}
Aclaro que no quiero que me hagan el codigo, sino que me guien como encarar el problema jeje.
Saludos
