angularjs - Fazer uma única lista pegando dados em mais de uma classe


(Itacolomy Mariano) #1

Srs., bom dia!

Estou tentando criar uma lista para ser exibida numa view, para preencher a lista parte das informações eu pego em uma determinada classe(Escalacao) e outras informações eu deveria pegar em outras classes, por exemplo(PeopleObject).

O Motivo é ... na classe Escalcao eu tenho os id's das entidades e vários outros dados, já na classe PeopleObject eu tenho o nome destas entidades.

Para montar a lista, eu preciso exibir o nome que encontra-se na classe PeopleObject e os dados referente a este nome, que encontram-se na classe Escalcao.

O que fiz até agora foi o seguinte, no meu controller, eu consumo um service que retorna os dados da escalacao, daí eu passo os dados retornados do service para variáveis e depois gravo em um objeto, porém eu preciso também gravar os nomes associados aos id's da classe escalacao, qual a forma de fazer isso?


//CONTROLE

example.controller('equipecontrol', ['EquipeService','PessoasService','$scope','$q', function(EquipeService,PessoasService,$scope,$q) {

Parse.initialize('APPLICATION_ID', 'JAVASCRIPT_KEY');
Parse.serverURL = 'https://parseapi.back4app.com';

var $scope.equipes = {};

EquipeService.getEscalacao().then(function(escalacao) {

  for (var i = escalacao.length - 1; i >= 0; i--) {

    var objescalcao = escalacao[i];

    ngolsjogador  = objescalcao.attributes['Gols'];               //Quantidade de Gols do Jogador
    nfltajogador  = objescalcao.attributes['faltas'];             //Quantidade de Faltas do Jogador
    ncrtamarelos  = objescalcao.attributes['cartao_amarelo'];     //Quantidade de Cartões Amarelos
    ncrtvermelhos = objescalcao.attributes['cartao_vermelho'];    //Quantidade de Cartões Vermelhos
    nptoscraque   = objescalcao.attributes['PontuacaoCraque'];    //Quantidade de Pontos para eleição do Craque
    nptosdestaque = objescalcao.attributes['PontuacaoDestaque'];  //Quantidade de Pontos para eleição Destaque
    nptosmaster   = objescalcao.attributes['PontuacaoMaster'];    //Quantidade de Pontos para eleição Master
    nptosgoleiro  = objescalcao.attributes['pontuacaogoleiro'];   //Quantidade de Pontos para eleição Goleiro

    idjogador     = objescalcao.attributes['jogador'].id;         //id do jogador
    idtime        = objescalcao.attributes['time'].id;            //id do time/equipe
    idjogoude     = objescalcao.attributes['jogoude'].id;         //id da posição que jogador atuou
    idpelada      = objescalcao.attributes['pelada'].id;          //id da pelada

    nomepessoa = nomedojogador(idjogador);            <--- qual a sugestão para fazer isso?
    nomeposicaooriginal = nomedaposicao(idjogador);   <--- qual a sugestão para fazer isso?
    nomedotimequejogou = nomedotime(idtime);          <--- qual a sugestão para fazer isso?
    posicaoquejogou = nomedaposicao(idjogoude);       <--- qual a sugestão para fazer isso?
    nomedapelada = nomedapelada(idpelada);            <--- qual a sugestão para fazer isso?
      
    $scope.equipes =  { "jogador": nomepessoa,
                        "posicaoriginal":nomeposicaooriginal,
                        "time": nomedotimequejogou,
                        "nomepelada": nomedapelada,
                        "funcao": posicaoquejogou,
                        "gols": ngolsjogador,
                        "faltas": nfltajogador,
                        "cartoesamarelo": ncrtamarelos,
                        "cartoesvermelho": ncrtvermelhos,
                        "pontoscraque": nptoscraque,
                        "pontosdestaque": nptosdestaque,
                        "pontosmaster": nptosmaster, 
                        "pontosgoleiro": nptosgoleiro
                      };
  }
}, 
  function(error){
    console.log('Error MinhaPelada-Controller-EquipeService: '+error)
  }

);
}]);

//SERVICE

(function() {
'use strict';

var example = angular.module('starter')

example.service('EquipeService', ['$q', function($q) {

var aDadosEscalacao = {};

this.getEscalacao = function(params) {

  Parse.initialize('USiqtSJIIvfWQwbmDyNsoXsrbTMWmCglaUcKHLmn', 'IaIq7yPZU8vgrCwS1Q7Vee4vdL4ky5tNd2nqZfXw'); 
  Parse.serverURL = 'https://parseapi.back4app.com';

  var deferred = $q.defer();

  var EscalacaoObject = Parse.Object.extend("Escalacao");
  var Escalacaoquery = new Parse.Query(EscalacaoObject);

  if(params !== undefined) {
    if(params.idPeople !== undefined) {
      Escalacaoquery.equalTo("jogador", params.idPeople);
    }        

    if(params.idPosicao !== undefined) {
      Escalacaoquery.equalTo("jogoude", params.idPosicao);
    }        

    if(params.idEquipe !== undefined) {
      Escalacaoquery.equalTo("time", params.idEquipe);
    }        

    if(params.idEvento !== undefined) {
      Escalacaoquery.equalTo("pelada", params.idEvento);
    }        
  }

  return Escalacaoquery.find({
    success: function(results) {
      deferred.resolve();
      },
        error: function(error) {
          console.log("Error da Query Escalcao: " + error.code + " " + error.message);
          deferred.reject(error);
        }
  })
    return deferred.promise
}

}])
}).call(this);