Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Filial__c fil = new Filial__c();
- fil.name = 'Boston Dynamics';
- fil.Account__c = '001Dn00000LFrLyIAL';
- fil.email__c = 'boston@dynamics.conta1.com.br';
- insert fil;
- //********************************************************
- sObject sObj = new Account();
- Account a = (Account)sObj;
- a.Name = 'Lojas Americanas';
- a.phone = '(19)3334-9876';
- a.accountnumber = '12345678';
- insert a;
- //********************************************************
- for(Account conta:[SELECT Name, billingcity, billingcountry FROM
- Account WHERE billingstate = 'CA']){
- System.debug(conta.id+' - '+conta.Name+' - '+conta.billingcity);
- }
- //**************Exemplo Acima de outra forma**************
- List<Account> contas = [SELECT Name, billingcity, billingcountry FROM
- Account WHERE billingstate = 'CA'];
- for(Account c:contas){
- System.debug(c.id+' - '+c.Name+' - '+c.billingcity);
- }
- //****************Busca-se filhos pelos pais**************
- //***********Exibindo todos os contatos do primeiro pai****************
- List<Account> pais = [SELECT Name, (SELECT Name FROM Contacts)
- FROM Account WHERE Name LIKE 'U%'];
- System.debug(pais);//Exibindo todos os pais em uma única linha
- List<Contact> filhos = pais[0].Contacts;
- System.debug('Filhos: '+filhos);//Exibindo todos os filhos do primeiro pai
- //em uma única linha
- //***********Exibindo todos os contatos de todos os pais***************
- List<Account> pais = [SELECT Name, (SELECT Name FROM Contacts)
- FROM Account WHERE Name LIKE 'U%'];
- //Iterando (percorrendo) todos os pais, e exibindo todos os filhos
- //para cada pai
- for(Account pai:pais){
- System.debug(pai.Contacts);
- }
- //***********Iterando pais e filhos, primeiro mostrando o pai e a cada
- //***********pai, exibindo seus filhos********************************
- List<Account> pais = [SELECT Name, (SELECT Name FROM Contacts)
- FROM Account WHERE Name LIKE 'U%'];
- for(Account pai:pais){
- System.debug(pai.id+' - '+pai.name);
- for(Contact filho: pai.Contacts){
- System.debug(filho.name);
- }
- }
- //Obs.: Quando faço uma subquery para buscar os filhos de seus pais, sendo
- //ambos standard, na subquery, o objeto do qual buscamos os filhos, deve ser
- //escrito no plural.
- /*
- EXERCÍCIO:
- Crie uma classe que contenha um método estático, que retorne um map, em que
- a chave do map deverá ser um objeto pai, e os filhos deverão estar contidos
- numa lista como valor daquela chave que é o pai. Nesse caso o pai será Account
- e os filhos serão Contact.
- Deve-se poder passar como argumento para o método, o billingstate da conta
- para a seleção dos pais que conterão os filhos.
- Resolução do exercício:*/
- //Classe
- public with sharing class BuscaAccountsContactsPorEstado {
- public static Map<Account, List<Contact>> buscaPorEstado(String state){
- List<Account> contas = [SELECT Name, (SELECT Name FROM Contacts) FROM
- Account WHERE billingstate = :state];
- Map<Account, List<Contact>> paisEFilhos = new Map<Account, List<Contact>>();
- for(Account pai:contas){
- List<Contact> filhos = new List<Contact>();
- for(Contact filho:pai.Contacts){
- filhos.add(filho);
- }
- paisEFilhos.put(pai, filhos);
- }
- return paisEFilhos;
- }
- }
- //Anonymous
- Map<Account, List<Contact>> mapa = BuscaAccountsContactsPorEstado.buscaPorEstado('CA');
- for(Account key:mapa.keySet()){
- System.debug('Nome da conta: '+key.Name);
- for(Contact filho:mapa.get(key)){
- System.debug('Contato da '+key.Name+ ': '+filho.Name);
- }
- }
- //OUTRA FORMA DE RESOLUÇÃO
- public with sharing class ClassePaiContatos {
- public static Map<Account, List<Contact>> buscaContasContatos(String estado){
- List<Account> contasContatos = new List<Account>();
- if (Schema.sObjectType.Account.fields.Name.isAccessible() && Schema.sObjectType.Account.fields.Phone.isAccessible()) {
- contasContatos = [SELECT Name, Phone, (SELECT firstname, lastname, email FROM Contacts) FROM Account WHERE BillingState = :estado WITH SECURITY_ENFORCED];
- }else{
- return null;
- }
- // System.debug(contasContatos);
- Map<Account, List<Contact>> mapa = new Map<Account,List<Contact>>();
- for(Account pai:contasContatos){
- mapa.put(pai, pai.Contacts);
- }
- return mapa;
- }
- }
- /*Anonymous
- Map<Account, List<Contact>> listona = ClassePaiContatos.buscaContasContatos('NY');
- for(Account conta:listona.keySet()){
- System.debug('Nome da conta: '+conta.Name);
- Integer contador=1;
- for(Contact contato:listona.get(conta)){
- System.debug('Contato '+contador+' da empresa '+conta.Name+': '+contato.firstname+' - '+contato.email);
- contador++;
- }
- }
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement