You need to sign in to do that
Don't have an account?
Javier Esquivel
need help with a test class don get the coverage
hi, can you help me. im trying to get the coverage of a class but im only have 68% and i cant get more.
public without sharing class TTRelacionados {
public List<Case> ttPadres{get;set;}
public List<FieldWrap> campos{get;set;}
public Case TTPadre{get;set;}
public List<CasoRelacionado> casosRelacionados{get;set;}
public List<CaseComment> comentarios{get;set;}
public List<SectionWrap> secciones{get;set;}
public String newCIDS{get;set;}
public List<CIDWrap> agregarCIDSResultado{get;set;}
public List<CaseUpdateWrap> actualizarResultado{get;set;}
public String previousSortField {get; set;}
public TTRelacionados(){
}
public TTRelacionados(ApexPages.StandardController controller){
}
public void initTTPadres(){
this.ttPadres = new List<Case>();
for(Case record:[select Id, CaseNumber, Subject, Status, Fecha_y_Hora_de_Inicio__c, Fecha_y_Hora_de_Fin__c, RecordTypeId, RecordType.Name from Case where TT_Padre__c = true and Status != 'Cerrado']){
this.ttPadres.add(record);
}
//superSort.sortList(this.ttPadres,'CaseNumber','desc');
}
public void doSortByNumber(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'CaseNumber'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'CaseNumber';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'CaseNumber',order);
}
public void doSortByStatus(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'Status'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'Status';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'Status',order);
}
public void initPageLayout(){
String qid = ApexPages.currentPage().getParameters().get('id');
//this.TTPadre = [select id, dany__c from Case where id= :qid];
//Consultamos el tipo de registro del caso padre
Case tiporegistrocaso = [select RecordTypeId, RecordType.Name from Case where Id = :qid];
System.debug('tiporegistrocaso:'+tiporegistrocaso);
this.campos = new List<FieldWrap>();
this.secciones = new List<SectionWrap>();
Map<String, Schema.SobjectField> fields = Schema.SobjectType.Case.fields.getMap();
System.debug('fields:'+fields);
String fieldstr = '';
System.debug('tipo registro:'+tiporegistrocaso.RecordType.Name);
//Validacion de existencia de secciones especificas para este tipo de registro, o en su defecto usar una default
List<Seccion_TTRelacionados__c> seccionesdisponibles = new List<Seccion_TTRelacionados__c>();
seccionesdisponibles = [select Id from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrocaso.RecordType.Name];
String tiporegistrostr;
if(seccionesdisponibles.size()>0){
tiporegistrostr = tiporegistrocaso.RecordType.Name;
}else{
tiporegistrostr = 'Ventana de Mantenimiento';
}
//Aqui vamos a consultar los campos asignados para ese tipo de registro
for(Seccion_TTRelacionados__c record:[select Id,Name,(select Nombre_API__c,Read_Only__c from Campos_TTRelacionados__r Order by Orden__c) from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrostr Order by Orden__c]){
System.debug('seccion:'+record);
System.debug('record.Campos_TTRelacionados__r:'+record.Campos_TTRelacionados__r);
//Hacemos una instancia de SectionWrap
SectionWrap section = new SectionWrap();
section.sectionName = record.Name;
this.secciones.add(section);
for(Campo_TTRelacionados__c field:record.Campos_TTRelacionados__r){
System.debug('field:'+field.Nombre_API__c);
if(fields.containsKey(field.Nombre_API__c)){
if (fields.get(field.Nombre_API__c).getDescribe().isAccessible() && field.Nombre_API__c != 'id'){
fieldstr += field.Nombre_API__c + ',';
System.debug('fieldstr:'+fieldstr);
FieldWrap fw = new FieldWrap();
fw.campo = field.Nombre_API__c;
if(field.Read_Only__c){
fw.readonly = true;
}
this.campos.add(fw);
section.campos.add(fw);
}
}
}
}
fieldstr += 'Id';
System.debug('query:'+'select ' + fieldstr + ' from Case where Id = \''+ qid + '\'');
this.TTPadre = database.query('select ' + fieldstr + ' from Case where Id = \''+ qid+'\'');
//Buscamos los comentarios relacionados con el caso
this.comentarios = new List<CaseComment>();
for(CaseComment record:[select CommentBody, IsPublished, CreatedDate from CaseComment where ParentId = :this.TTPadre.Id order by CreatedDate DESC]){
this.comentarios.add(record);
}
try{
System.debug('this.TTPadre.CaseNumber:'+this.TTPadre.CaseNumber);
//return;
//Buscamos los casos relacionados con este TTPAdre
this.casosRelacionados = new List<CasoRelacionado>();
for(Case record:[select Id, CaseNumber, Circuit_ID__c, AssetId, Status, Account.Name, Asset.Name from Case where Relacionado_con_el_TT__c = :this.TTPadre.CaseNumber and Status != 'Cerrado']){
System.debug('casorel:'+record);
CasoRelacionado casorel = new CasoRelacionado();
casorel.caso = record;
casorel.isSelected = true;
this.casosRelacionados.add(casorel);
}
}catch(Exception e){
}
}
public PageReference Actualizar(){
this.actualizarResultado = new List<CaseUpdateWrap>();
PageReference sigpag = null;
//Inicializamos los campos por actualizar
List<String> camposporactualizar = new List<String>();
String camposporactualizarstr = 'Id';
//Corremos por los campos seleccionados para actualizar
for(FieldWrap record:campos){
if(record.selected == true){
camposporactualizar.add(record.campo);
camposporactualizarstr += ',' + record.campo;
System.debug('campo elegido:'+ record.campo + ' valor:' + TTPadre.get(record.campo));
}
}
//Validams que existan campos seleccionados para actualizar
if(camposporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun campo por actualizar, debe de selecionarlo usando las casillas junto a los campos que desea actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Inicializamos los casos por actualizar
List<Case> casosporactualizar = new List<Case>();
//Corremos por los casos seleccionados para actualizar
for(CasoRelacionado record:this.casosRelacionados){
if(record.isSelected == true){
casosporactualizar.add(record.caso);
}
}
//Validmos que existan casos relacionados por actulizar
if(casosporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun caso relacionado por actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Cargamos una vez mas el caso padre pero solo con los campos elegidos para actualizar
System.debug('queryTTPAdre:'+'select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
Case ttpadreoriginal = database.query('select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
//Agregamos el caso padre a los casos por actualizar
casosporactualizar.add(ttpadreoriginal);
//Corremos por los casos y por los campos asignando el nuevo valor
for(Case record:casosporactualizar){
for(String campo:camposporactualizar){
record.put(campo,this.TTPadre.get(campo));
}
}
//Hacemso la actualizacion
try{
List<Database.SaveResult> resultados = Database.update(casosporactualizar,false);
//Iniciamos un contador
Integer a = 0;
//Corremos por los resultados
for(Database.SaveResult result:resultados){
Case caso = casosporactualizar[a];
CaseUpdateWrap cuw = new CaseUpdateWrap();
cuw.caso = caso;
if(result.isSuccess()){
cuw.isSuccess = true;
cuw.msg = 'El caso fue actualizado correctamente';
}else{
cuw.isSuccess = false;
cuw.msg = 'El caso no pudo ser actualizado';
}
this.actualizarResultado.add(cuw);
a++;
}
}catch(Exception e){
}
sigpag = Page.TTRelacionados3;
return sigpag;
}
public PageReference AgregarCIDS(){
return Page.TTRelacionados4;
}
public PageReference Agregar(){
/*
Por hacer
* Copiar los comentarios de caso original a todos los casos hijo
* Envio del email de notificacion, que el usaurio pueda seleccionar entre las plantillas disponibles para tal efecto
*/
//Buscamos el recordtype correspondiente a ventana de mantenimiento
RecordType vmrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Ventana de Mantenimiento' limit 1];
//Buscamos el recordtype correspondiente a problema operativo
RecordType ttrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Trouble ticket' limit 1];
PageReference sigpag = null;
if(this.newCIDS == null || this.newCIDS == ''){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se ingreso ninguna lista de CIDS.');
ApexPages.addMessage(myMsg);
return sigpag;
}
List<String> lines = this.newCIDS.split('\n');
//Inicializamos una lista de CIDS
Set<String> cids = new Set<String>();
//Inicializamos un mapa para poder reportar sobre el exito de un particular CID
Map<String,CIDWrap> cidsmap = new Map<String,CIDWrap>();
for(String line:lines){
System.debug('line:'+line);
//Recopilamos los numeros de CID en una lista
System.debug('cid:'+line.split('_')[0].trim());
cids.add(line.split('_')[0].trim());
CIDWrap cidw = new CIDWrap();
cidw.CID = line.split('_')[0].trim();
cidsmap.put(line.split('_')[0].trim(),cidw);
}
System.debug('cidsmap:'+cidsmap);
System.debug('cids:'+cids);
//Inicializamos una lista de assets encintrados por su cid
Map<String,Asset> servicios = new Map<String,Asset>();
//Traemos los CDIS que se estan buscando
for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and ((Status = 'Activo' or Status = 'Backlog') or (Account.Segmento_de_Cuenta__c = 'PYMES Cablecom' and (Status = 'Activo' or Status = 'Backlog' or Status = 'Cancelado')))]){
//for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and (Status = 'Activo' or Status = 'Backlog')]){
System.debug('servicio:'+record);
servicios.put(record.Circuit_ID__c,record);
}
//Primera validacion, debemos de tener al menos un servicio localizado
if(servicios.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se localizo ningún servicio con los identificadores provistos.');
ApexPages.addMessage(myMsg);
return sigpag;
}
public without sharing class TTRelacionados {
public List<Case> ttPadres{get;set;}
public List<FieldWrap> campos{get;set;}
public Case TTPadre{get;set;}
public List<CasoRelacionado> casosRelacionados{get;set;}
public List<CaseComment> comentarios{get;set;}
public List<SectionWrap> secciones{get;set;}
public String newCIDS{get;set;}
public List<CIDWrap> agregarCIDSResultado{get;set;}
public List<CaseUpdateWrap> actualizarResultado{get;set;}
public String previousSortField {get; set;}
public TTRelacionados(){
}
public TTRelacionados(ApexPages.StandardController controller){
}
public void initTTPadres(){
this.ttPadres = new List<Case>();
for(Case record:[select Id, CaseNumber, Subject, Status, Fecha_y_Hora_de_Inicio__c, Fecha_y_Hora_de_Fin__c, RecordTypeId, RecordType.Name from Case where TT_Padre__c = true and Status != 'Cerrado']){
this.ttPadres.add(record);
}
//superSort.sortList(this.ttPadres,'CaseNumber','desc');
}
public void doSortByNumber(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'CaseNumber'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'CaseNumber';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'CaseNumber',order);
}
public void doSortByStatus(){
String order = 'asc';
/*This checks to see if the same header was click two times in a row, if so
it switches the order.*/
if(this.previousSortField == 'Status'){
order = 'desc';
this.previousSortField = null;
}else{
this.previousSortField = 'Status';
}
//To sort the table we simply need to use this one line, nice!
superSort.sortList(this.ttPadres,'Status',order);
}
public void initPageLayout(){
String qid = ApexPages.currentPage().getParameters().get('id');
//this.TTPadre = [select id, dany__c from Case where id= :qid];
//Consultamos el tipo de registro del caso padre
Case tiporegistrocaso = [select RecordTypeId, RecordType.Name from Case where Id = :qid];
System.debug('tiporegistrocaso:'+tiporegistrocaso);
this.campos = new List<FieldWrap>();
this.secciones = new List<SectionWrap>();
Map<String, Schema.SobjectField> fields = Schema.SobjectType.Case.fields.getMap();
System.debug('fields:'+fields);
String fieldstr = '';
System.debug('tipo registro:'+tiporegistrocaso.RecordType.Name);
//Validacion de existencia de secciones especificas para este tipo de registro, o en su defecto usar una default
List<Seccion_TTRelacionados__c> seccionesdisponibles = new List<Seccion_TTRelacionados__c>();
seccionesdisponibles = [select Id from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrocaso.RecordType.Name];
String tiporegistrostr;
if(seccionesdisponibles.size()>0){
tiporegistrostr = tiporegistrocaso.RecordType.Name;
}else{
tiporegistrostr = 'Ventana de Mantenimiento';
}
//Aqui vamos a consultar los campos asignados para ese tipo de registro
for(Seccion_TTRelacionados__c record:[select Id,Name,(select Nombre_API__c,Read_Only__c from Campos_TTRelacionados__r Order by Orden__c) from Seccion_TTRelacionados__c where Tipo_de_registro__c = :tiporegistrostr Order by Orden__c]){
System.debug('seccion:'+record);
System.debug('record.Campos_TTRelacionados__r:'+record.Campos_TTRelacionados__r);
//Hacemos una instancia de SectionWrap
SectionWrap section = new SectionWrap();
section.sectionName = record.Name;
this.secciones.add(section);
for(Campo_TTRelacionados__c field:record.Campos_TTRelacionados__r){
System.debug('field:'+field.Nombre_API__c);
if(fields.containsKey(field.Nombre_API__c)){
if (fields.get(field.Nombre_API__c).getDescribe().isAccessible() && field.Nombre_API__c != 'id'){
fieldstr += field.Nombre_API__c + ',';
System.debug('fieldstr:'+fieldstr);
FieldWrap fw = new FieldWrap();
fw.campo = field.Nombre_API__c;
if(field.Read_Only__c){
fw.readonly = true;
}
this.campos.add(fw);
section.campos.add(fw);
}
}
}
}
fieldstr += 'Id';
System.debug('query:'+'select ' + fieldstr + ' from Case where Id = \''+ qid + '\'');
this.TTPadre = database.query('select ' + fieldstr + ' from Case where Id = \''+ qid+'\'');
//Buscamos los comentarios relacionados con el caso
this.comentarios = new List<CaseComment>();
for(CaseComment record:[select CommentBody, IsPublished, CreatedDate from CaseComment where ParentId = :this.TTPadre.Id order by CreatedDate DESC]){
this.comentarios.add(record);
}
try{
System.debug('this.TTPadre.CaseNumber:'+this.TTPadre.CaseNumber);
//return;
//Buscamos los casos relacionados con este TTPAdre
this.casosRelacionados = new List<CasoRelacionado>();
for(Case record:[select Id, CaseNumber, Circuit_ID__c, AssetId, Status, Account.Name, Asset.Name from Case where Relacionado_con_el_TT__c = :this.TTPadre.CaseNumber and Status != 'Cerrado']){
System.debug('casorel:'+record);
CasoRelacionado casorel = new CasoRelacionado();
casorel.caso = record;
casorel.isSelected = true;
this.casosRelacionados.add(casorel);
}
}catch(Exception e){
}
}
public PageReference Actualizar(){
this.actualizarResultado = new List<CaseUpdateWrap>();
PageReference sigpag = null;
//Inicializamos los campos por actualizar
List<String> camposporactualizar = new List<String>();
String camposporactualizarstr = 'Id';
//Corremos por los campos seleccionados para actualizar
for(FieldWrap record:campos){
if(record.selected == true){
camposporactualizar.add(record.campo);
camposporactualizarstr += ',' + record.campo;
System.debug('campo elegido:'+ record.campo + ' valor:' + TTPadre.get(record.campo));
}
}
//Validams que existan campos seleccionados para actualizar
if(camposporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun campo por actualizar, debe de selecionarlo usando las casillas junto a los campos que desea actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Inicializamos los casos por actualizar
List<Case> casosporactualizar = new List<Case>();
//Corremos por los casos seleccionados para actualizar
for(CasoRelacionado record:this.casosRelacionados){
if(record.isSelected == true){
casosporactualizar.add(record.caso);
}
}
//Validmos que existan casos relacionados por actulizar
if(casosporactualizar.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se selecciono ningun caso relacionado por actualizar.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//Cargamos una vez mas el caso padre pero solo con los campos elegidos para actualizar
System.debug('queryTTPAdre:'+'select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
Case ttpadreoriginal = database.query('select '+ camposporactualizarstr + ' from Case where Id = \'' + this.TTPadre.Id + '\'');
//Agregamos el caso padre a los casos por actualizar
casosporactualizar.add(ttpadreoriginal);
//Corremos por los casos y por los campos asignando el nuevo valor
for(Case record:casosporactualizar){
for(String campo:camposporactualizar){
record.put(campo,this.TTPadre.get(campo));
}
}
//Hacemso la actualizacion
try{
List<Database.SaveResult> resultados = Database.update(casosporactualizar,false);
//Iniciamos un contador
Integer a = 0;
//Corremos por los resultados
for(Database.SaveResult result:resultados){
Case caso = casosporactualizar[a];
CaseUpdateWrap cuw = new CaseUpdateWrap();
cuw.caso = caso;
if(result.isSuccess()){
cuw.isSuccess = true;
cuw.msg = 'El caso fue actualizado correctamente';
}else{
cuw.isSuccess = false;
cuw.msg = 'El caso no pudo ser actualizado';
}
this.actualizarResultado.add(cuw);
a++;
}
}catch(Exception e){
}
sigpag = Page.TTRelacionados3;
return sigpag;
}
public PageReference AgregarCIDS(){
return Page.TTRelacionados4;
}
public PageReference Agregar(){
/*
Por hacer
* Copiar los comentarios de caso original a todos los casos hijo
* Envio del email de notificacion, que el usaurio pueda seleccionar entre las plantillas disponibles para tal efecto
*/
//Buscamos el recordtype correspondiente a ventana de mantenimiento
RecordType vmrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Ventana de Mantenimiento' limit 1];
//Buscamos el recordtype correspondiente a problema operativo
RecordType ttrecordtype = [select Id from RecordType where SobjectType = 'Case' and Name = 'Trouble ticket' limit 1];
PageReference sigpag = null;
if(this.newCIDS == null || this.newCIDS == ''){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se ingreso ninguna lista de CIDS.');
ApexPages.addMessage(myMsg);
return sigpag;
}
List<String> lines = this.newCIDS.split('\n');
//Inicializamos una lista de CIDS
Set<String> cids = new Set<String>();
//Inicializamos un mapa para poder reportar sobre el exito de un particular CID
Map<String,CIDWrap> cidsmap = new Map<String,CIDWrap>();
for(String line:lines){
System.debug('line:'+line);
//Recopilamos los numeros de CID en una lista
System.debug('cid:'+line.split('_')[0].trim());
cids.add(line.split('_')[0].trim());
CIDWrap cidw = new CIDWrap();
cidw.CID = line.split('_')[0].trim();
cidsmap.put(line.split('_')[0].trim(),cidw);
}
System.debug('cidsmap:'+cidsmap);
System.debug('cids:'+cids);
//Inicializamos una lista de assets encintrados por su cid
Map<String,Asset> servicios = new Map<String,Asset>();
//Traemos los CDIS que se estan buscando
for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and ((Status = 'Activo' or Status = 'Backlog') or (Account.Segmento_de_Cuenta__c = 'PYMES Cablecom' and (Status = 'Activo' or Status = 'Backlog' or Status = 'Cancelado')))]){
//for(Asset record:[select Id, AccountId, ContactId, Name, Status, Circuit_ID__c from Asset where Circuit_ID__c IN :cids and (Status = 'Activo' or Status = 'Backlog')]){
System.debug('servicio:'+record);
servicios.put(record.Circuit_ID__c,record);
}
//Primera validacion, debemos de tener al menos un servicio localizado
if(servicios.size()<=0){
ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No se localizo ningún servicio con los identificadores provistos.');
ApexPages.addMessage(myMsg);
return sigpag;
}
//inicializamos un set de ids de cuentas
Set<Id> accids = new Set<Id>();
//Corremos por los servicios localizados coleccionado el id de la cuenta a la que pertenecen
for(Asset record:servicios.values()){
accids.add(record.AccountId);
}
//Inicializamos un mapa de cuentas
//Consultamos los contactos de todas las cuentas
Map<Id,Account> mapaccounts = new Map<Id,Account>([select Id,(select Id, FirstName, LastName, Email, Problema_operativo__c, Ventana_mantenimiento__c, Nivel_de_Escalamiento__c, Name from Contacts) from Account where Id IN :accids]);
//Inicializamos una lista de casos por crear
List<Case> casosporcrear = new List<Case>();
System.debug('cidsmap.keySet:'+cidsmap.keySet());
System.debug('servicios:'+servicios);
//Corremos por los servicos enviados originalmente
for(String record:cidsmap.keySet()){
//Buscamos el servisio en el mapa de servicios
if(!servicios.containsKey(record)){
cidsmap.get(record).msg = 'No se localizo nigun servicio con ese identificador.';
continue;
}
//Obtenemos el servicio
Asset servicio = servicios.get(record);
//Verificamos si no esta activo o en backlog
/*if(servicio.Status != 'Activo' && servicio.Status != 'Backlog'){
cidsmap.get(record).msg = 'El servicio no esta activo o en backlog.';
continue;
}*/
cidsmap.get(record).servicio = servicio;
//Obtenemos la cuenta y los contactos asociados a este servicio
Account cuenta = mapaccounts.get(servicio.AccountId);
if(cuenta.Contacts.size()<=0){
cidsmap.get(record).msg = 'No se localizo ningun contacto relacionado con la cuenta, el caso no fue creado.';
continue;
}
//Inicializamos la variable del contacto adecuado
Contact contactoadecuado;
//Aqui la logica para localizar al conatcto adecuado
//Si es ventana de mantenimiento
if(this.TTPadre.RecordTypeId == vmrecordtype.Id){
//Buscamos en primera instancia al contacto de ventanas de mantenimiento
//Loopeamos por los contactos de la cuenta
for(Contact cont:cuenta.Contacts){
if(cont.Ventana_mantenimiento__c == true){
contactoadecuado = cont;
break;
}
}
//Si aun no encontramos al contacto adecuado buscamos al de primer nivel de escalamiento
for(Contact cont:cuenta.Contacts){
if(cont.Nivel_de_Escalamiento__c == '1er Nivel Escalamiento'){
contactoadecuado = cont;
break;
}
}
//Si es problema operativo
}else if(this.TTPadre.RecordTypeId == ttrecordtype.Id){
//Buscamos en primera instancia al contacto de problemas operativos
for(Contact cont:cuenta.Contacts){
if(cont.Problema_operativo__c == true){
contactoadecuado = cont;
break;
}
}
//Si aun no tenemos al contacto adecuado buscamos al de primer nivel de escalamiento
for(Contact cont:cuenta.Contacts){
if(cont.Nivel_de_Escalamiento__c == '1er Nivel Escalamiento'){
contactoadecuado = cont;
break;
}
}
//Si no es ventana de mantenimiento ni problea operativo buscamos al contacto de primer nivel de escalamiento
}else{
for(Contact cont:cuenta.Contacts){
if(cont.Nivel_de_Escalamiento__c == '1er Nivel Escalamiento'){
contactoadecuado = cont;
break;
}
}
}
//Si no tenemos contacto adecuado
if(contactoadecuado == null){
cidsmap.get(record).msg = 'No se localizo ningun contacto adecuado para este servicio, el caso no fue creado.';
continue;
}
cidsmap.get(record).contacto = contactoadecuado;
//Clonamos el caso original
Case tthijo = this.TTPadre.clone(false,true,false,false);
//Cambiamos las referencias de contacto, asset y CID
tthijo.ContactId = contactoadecuado.Id;
tthijo.AssetId = servicio.Id;
tthijo.Circuit_ID__c = servicio.Circuit_ID__c;
tthijo.Relacionado_con_el_TT__c = this.TTPadre.CaseNumber;
//Agregsmos el caso clonado a una lista de casos por crear
casosporcrear.add(tthijo);
}
if(casosporcrear.size()<=0){
this.agregarCIDSResultado = cidsmap.values();
sigpag = Page.TTRelacionados5;
return sigpag;
}
//Creamos los casos
List<Database.Saveresult> resultados = Database.insert(casosporcrear,false);
//Iniciamos un contador para saber en que posicion del array de casos por crear localizar el objeto que se estaba tratando de crear
Integer a = 0;
//Corremos por los resultados
for(Database.Saveresult resultado:resultados){
Case tthijo = casosporcrear[a];
if(resultado.isSuccess()){
cidsmap.get(tthijo.Circuit_ID__c).msg = 'El caso fue creado con exito.';
cidsmap.get(tthijo.Circuit_ID__c).isSucces = true;
cidsmap.get(tthijo.Circuit_ID__c).caso = tthijo;
}else{
String errormsg = '';
for(Database.Error error:resultado.getErrors()){
errormsg += error.getMessage();
}
cidsmap.get(tthijo.Circuit_ID__c).msg = 'El caso no pudo ser creado. ' + errormsg;
}
a++;
}
System.debug('cidsmap:'+cidsmap);
this.agregarCIDSResultado = cidsmap.values();
sigpag = Page.TTRelacionados5;
return sigpag;
}
public PageReference RegresarTTPadre(){
PageReference sigpag = Page.TTRelacionados2;
sigpag.getParameters().put('id',this.TTPadre.Id);
return sigpag;
}
public class FieldWrap{
//public Schema.SobjectField campo;
public String campo{get;set;}
public Boolean selected{get;set;}
public Boolean readonly{get;set;}
public FieldWrap(){
this.readonly = false;
}
}
public class SectionWrap{
public String sectionName{get;set;}
public List<FieldWrap> campos{get;set;}
public SectionWrap(){
this.campos = new List<FieldWrap>();
}
}
public class CasoRelacionado{
public Case caso{get;set;}
public Boolean isSelected{get;set;}
}
public class CIDWrap{
public String CID{get;set;}
public Boolean isSucces{get;set;}
public Asset servicio{get;set;}
public Contact contacto{get;set;}
public String msg{get;set;}
public Case caso{get;set;}
public CIDWrap(){
this.isSucces = false;
}
}
public class CaseUpdateWrap{
public Case caso{get;set;}
public Boolean isSuccess{get;set;}
public String msg{get;set;}
}
static testMethod void TTRelacionadosTest(){
RecordType recordtyperec = [select Id,Name from RecordType where SobjectType = 'Case' and Name = 'Ventana de Mantenimiento' limit 1];
RecordType recordtyperec1 = [select Id,Name from RecordType where SobjectType = 'Case' limit 1];
Seccion_TTRelacionados__c section = new Seccion_TTRelacionados__c();
section.Tipo_de_registro__c = recordtyperec.Name;
section.Name = 'Test';
insert section;
Campo_TTRelacionados__c campo = new Campo_TTRelacionados__c();
campo.Seccion__c = section.Id;
campo.Name = 'Test';
campo.Nombre_API__c = 'Subject1';
insert campo;
Account acc = new Account();
acc.Name = 'TestAcc';
acc.Ejecutivo_Backup__c = 'Jesus Portilla';
acc.Ejecutivo_de_Servicio_a_Cliente__c = 'Jesus Portilla';
insert acc;
Contact cont = new Contact();
cont.AccountId = acc.Id;
cont.Ventana_mantenimiento__c = true;
cont.FirstName = 'test';
cont.LastName = 'test';
insert cont;
Asset asset = new Asset();
asset.AccountId = acc.Id;
asset.Circuit_ID__c = 'TEST-123';
asset.Name = 'Internet Test';
asset.Status = 'Activo';
insert asset;
Case caso = new Case();
caso.Subject = 'Test';
caso.AccountId = acc.Id;
caso.RecordTypeId = recordtyperec.Id;
caso.TT_Padre__c = true;
caso.Reason= 'SR MOV';
caso.Circuit_ID__c= '8626-ETH-039';
insert caso;
CaseComment comentario = new CaseComment();
comentario.CommentBody = 'test';
comentario.ParentId = caso.Id;
insert comentario;
Case casorel = new Case();
casorel.Subject = 'Test';
casorel.AccountId = acc.Id;
casorel.RecordTypeId = recordtyperec.Id;
casorel.Relacionado_con_el_TT__c = caso.CaseNumber;
insert casorel;
casorel.status= 'closed';
update casorel;
TTRelacionados TTR = new TTRelacionados();
TTR.initTTPadres();
PageReference pageRef = Page.TTRelacionados2;
Test.setCurrentPage(pageRef);
ApexPages.currentPage().getParameters().put('id',caso.Id);
TTR.initPageLayout();
PageReference pag = TTR.Actualizar();
PageReference pag2 = TTR.AgregarCIDS();
TTR.newCIDS = 'TEST-123_Prueba';
PageReference pag3 = TTR.Agregar();
PageReference pag4 = TTR.RegresarTTPadre();
ttr.doSortByNumber();
ttr.doSortByStatus();
ttr.initTTPadres();
TTRelacionados TTR1 = new TTRelacionados();
TTR1.initTTPadres();
PageReference pageRef1 = Page.TTRelacionados2;
Test.setCurrentPage(pageRef1);
ApexPages.currentPage().getParameters().put('id',caso.Id);
TTR1.initPageLayout();
PageReference pag1 = TTR1.Actualizar();
PageReference pag5 = TTR1.AgregarCIDS();
TTR.newCIDS = null;
PageReference pag6 = TTR1.Agregar();
PageReference pag7 = TTR1.RegresarTTPadre();
}
}