Commit d759b3487b537f1172a92bca1ae6d00c11ce2006

Authored by luis.camargo
1 parent fdf75265
Exists in master

redmine #4545 Correções na gravação do anexo com mesmo número de identificação;

cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/ContratoController.js
@@ -32,10 +32,10 @@ citApp.controller('ContratoController', ['$scope', '$filter', 'FileUploader', 'C @@ -32,10 +32,10 @@ citApp.controller('ContratoController', ['$scope', '$filter', 'FileUploader', 'C
32 $scope.contratoValorPagamentoUnicoTemp = {}; 32 $scope.contratoValorPagamentoUnicoTemp = {};
33 33
34 $scope.uploader = new FileUploader({ 34 $scope.uploader = new FileUploader({
35 - autoUpload: false,  
36 - queueLimit: 1,  
37 - url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='  
38 - }); 35 + autoUpload: false,
  36 + queueLimit: 99,
  37 + url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
  38 + });
39 39
40 $scope.templates = [{ name: 'contratoPg1.html', url: '/cit-contratos-web/html/contrato/contratoPg1.html', show: true}, 40 $scope.templates = [{ name: 'contratoPg1.html', url: '/cit-contratos-web/html/contrato/contratoPg1.html', show: true},
41 { name: 'contratoPg2.html', url: '/cit-contratos-web/html/contrato/contratoPg2.html', show: false}, 41 { name: 'contratoPg2.html', url: '/cit-contratos-web/html/contrato/contratoPg2.html', show: false},
@@ -309,9 +309,10 @@ citApp.controller('ContratoController', ['$scope', '$filter', 'FileUploader', 'C @@ -309,9 +309,10 @@ citApp.controller('ContratoController', ['$scope', '$filter', 'FileUploader', 'C
309 // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento 309 // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
310 angular.forEach($scope.contrato.documentos, function(documento, key) { 310 angular.forEach($scope.contrato.documentos, function(documento, key) {
311 if (documento.uploadsDocumento) { 311 if (documento.uploadsDocumento) {
  312 + documento.uuid = getUuid();
312 $scope.contratoTemp.documentos.push({ 313 $scope.contratoTemp.documentos.push({
313 - uploadsDocumento: clone(documento.uploadsDocumento),  
314 - numero: clone(documento.numero) 314 + file: documento.uploadsDocumento[0],
  315 + uuid: clone(documento.uuid)
315 }); 316 });
316 // deleta esse atributo por causa de um erro de ciclo no json 317 // deleta esse atributo por causa de um erro de ciclo no json
317 delete documento.uploadsDocumento; 318 delete documento.uploadsDocumento;
@@ -460,39 +461,31 @@ citApp.controller('ContratoController', ['$scope', '$filter', 'FileUploader', 'C @@ -460,39 +461,31 @@ citApp.controller('ContratoController', ['$scope', '$filter', 'FileUploader', 'C
460 } 461 }
461 462
462 // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento 463 // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento
463 - var salvarListaDocumentos = function(contratoTemp) {  
464 -  
465 - angular.forEach($scope.contrato.documentos, function(documentoSalvo, key) {  
466 - // verifica se a entidade documento foi salva  
467 - if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {  
468 - // percorre todos os documentos temporarios para verificacao do numero do documento  
469 - angular.forEach(contratoTemp.documentos, function(documentoTransient, key) {  
470 - // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado  
471 - if (documentoSalvo.numero === documentoTransient.numero) {  
472 - //salva o anexo ao documento que tiver o mesmo numero do documento transient  
473 - salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento);  
474 - }  
475 -  
476 - });  
477 -  
478 - }  
479 - });  
480 -  
481 - };  
482 -  
483 - // metodo responsavel para salvar os anexos do contrato depois de ter salvo o contrato, utilizando a referencia do id contrato.documento.id  
484 - var salvarUpload = function(documento, uploadsDocumento) {  
485 - $scope.uploader.queue = uploadsDocumento;  
486 - // percorre a lista de uploads a serem enviados  
487 - angular.forEach($scope.uploader.queue, function(item, key) {  
488 - item.url = item.url + documento.id;  
489 - });  
490 - if ($scope.uploader.queue && $scope.uploader.queue.length > 0) {  
491 - // realiza o upload se existir no minimo um arquivo para upload  
492 - $scope.uploader.uploadAll();  
493 - }  
494 - };  
495 - 464 + var salvarListaDocumentos = function(contratoTemp) {
  465 + $scope.uploader.queue = [];
  466 +
  467 + angular.forEach($scope.contrato.documentos, function(documentoSalvo, key) {
  468 + // verifica se a entidade documento foi salva
  469 + if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {
  470 + // percorre todos os documentos temporarios para verificacao do numero do documento
  471 + angular.forEach(contratoTemp.documentos, function(documentoTransient, key) {
  472 + // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
  473 + if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) {
  474 + //salva o anexo ao documento que tiver o mesmo numero do documento transient
  475 +
  476 + documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id;
  477 + $scope.uploader.queue.push(documentoTransient.file);
  478 + }
  479 + });
  480 + }
  481 + });
  482 +
  483 + if($scope.uploader.queue.length > 0){
  484 + $scope.uploader.uploadAll();
  485 + }
  486 + delete $scope.contratoTemp;
  487 + };
  488 +
496 // watch para calcular valor total empenhado 489 // watch para calcular valor total empenhado
497 $scope.$watchCollection('contrato.ctrtEmpenhos', function() { 490 $scope.$watchCollection('contrato.ctrtEmpenhos', function() {
498 if (!$scope.contrato.id && $scope.edit){ 491 if (!$scope.contrato.id && $scope.edit){
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/CronogramaExecucaoController.js
@@ -204,8 +204,8 @@ citApp.controller('CronogramaExecucaoController', ['$scope', '$translate', '$tim @@ -204,8 +204,8 @@ citApp.controller('CronogramaExecucaoController', ['$scope', '$translate', '$tim
204 if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) { 204 if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) {
205 //salva o anexo ao documento que tiver o mesmo numero do documento transient 205 //salva o anexo ao documento que tiver o mesmo numero do documento transient
206 206
207 - documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id  
208 - $scope.uploader.queue.push(documentoTransient.file) 207 + documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id;
  208 + $scope.uploader.queue.push(documentoTransient.file);
209 } 209 }
210 }); 210 });
211 } 211 }
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/EncerramentoContratoController.js
@@ -13,7 +13,7 @@ citApp.controller('EncerramentoContratoController', ['$scope', 'EncerramentoCont @@ -13,7 +13,7 @@ citApp.controller('EncerramentoContratoController', ['$scope', 'EncerramentoCont
13 13
14 $scope.uploader = new FileUploader({ 14 $scope.uploader = new FileUploader({
15 autoUpload: false, 15 autoUpload: false,
16 - queueLimit: 1, 16 + queueLimit: 99,
17 url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento=' 17 url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
18 }); 18 });
19 19
@@ -109,16 +109,17 @@ citApp.controller('EncerramentoContratoController', ['$scope', 'EncerramentoCont @@ -109,16 +109,17 @@ citApp.controller('EncerramentoContratoController', ['$scope', 'EncerramentoCont
109 }; 109 };
110 110
111 // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento 111 // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
112 - angular.forEach($scope.encerramentoContrato.documentos, function(documento, key) {  
113 - if (documento.uploadsDocumento) {  
114 - encerramentoContratoTemp.documentos.push({  
115 - uploadsDocumento: clone(documento.uploadsDocumento),  
116 - numero: clone(documento.numero)  
117 - });  
118 - // deleta esse atributo por causa de um erro de ciclo no json  
119 - delete documento.uploadsDocumento;  
120 - }  
121 - }); 112 + angular.forEach($scope.encerramentoContrato.documentos, function(documento, key) {
  113 + if (documento.uploadsDocumento) {
  114 + documento.uuid = getUuid();
  115 + encerramentoContratoTemp.documentos.push({
  116 + file: documento.uploadsDocumento[0],
  117 + uuid: clone(documento.uuid)
  118 + });
  119 + // deleta esse atributo por causa de um erro de ciclo no json
  120 + delete documento.uploadsDocumento;
  121 + }
  122 + });
122 123
123 EncerramentoContratoRepository.save($scope.encerramentoContrato).then(function(result) { 124 EncerramentoContratoRepository.save($scope.encerramentoContrato).then(function(result) {
124 125
@@ -142,36 +143,28 @@ citApp.controller('EncerramentoContratoController', ['$scope', 'EncerramentoCont @@ -142,36 +143,28 @@ citApp.controller('EncerramentoContratoController', ['$scope', 'EncerramentoCont
142 143
143 // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento 144 // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento
144 var salvarListaDocumentos = function(encerramentoContratoTemp) { 145 var salvarListaDocumentos = function(encerramentoContratoTemp) {
145 - 146 + $scope.uploader.queue = [];
  147 +
146 angular.forEach($scope.encerramentoContrato.documentos, function(documentoSalvo, key) { 148 angular.forEach($scope.encerramentoContrato.documentos, function(documentoSalvo, key) {
147 // verifica se a entidade documento foi salva 149 // verifica se a entidade documento foi salva
148 if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) { 150 if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {
149 // percorre todos os documentos temporarios para verificacao do numero do documento 151 // percorre todos os documentos temporarios para verificacao do numero do documento
150 angular.forEach(encerramentoContratoTemp.documentos, function(documentoTransient, key) { 152 angular.forEach(encerramentoContratoTemp.documentos, function(documentoTransient, key) {
151 // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado 153 // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
152 - if (documentoSalvo.numero === documentoTransient.numero) { 154 + if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) {
153 //salva o anexo ao documento que tiver o mesmo numero do documento transient 155 //salva o anexo ao documento que tiver o mesmo numero do documento transient
154 - salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento); 156 +
  157 + documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id;
  158 + $scope.uploader.queue.push(documentoTransient.file);
155 } 159 }
156 -  
157 }); 160 });
158 -  
159 } 161 }
160 }); 162 });
161 -  
162 - };  
163 -  
164 - // metodo responsavel para salvar os anexos da baixa depois de ter salvo a baixa, utilizando a referencia do id baixa.documento.id  
165 - var salvarUpload = function(documento, uploadsDocumento) {  
166 - $scope.uploader.queue = uploadsDocumento;  
167 - // percorre a lista de uploads a serem enviados  
168 - angular.forEach($scope.uploader.queue, function(item, key) {  
169 - item.url = item.url + documento.id;  
170 - });  
171 - if ($scope.uploader.queue && $scope.uploader.queue.length > 0) {  
172 - // realiza o upload se existir no minimo um arquivo para upload  
173 - $scope.uploader.uploadAll(); 163 +
  164 + if($scope.uploader.queue.length > 0){
  165 + $scope.uploader.uploadAll();
174 } 166 }
  167 + delete $scope.encerramentoContratoTemp;
175 }; 168 };
176 169
177 // ########################################### 170 // ###########################################
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/EstudoTecnicoController.js
@@ -11,29 +11,29 @@ citApp.controller('EstudoTecnicoController', ['$scope', 'EstudoTecnicoRepository @@ -11,29 +11,29 @@ citApp.controller('EstudoTecnicoController', ['$scope', 'EstudoTecnicoRepository
11 EstudoTecnicoBemServicoSolucaoRepository, EstudoTecnicoAcaoContingenciaRepository, FileUploader, $filter, 11 EstudoTecnicoBemServicoSolucaoRepository, EstudoTecnicoAcaoContingenciaRepository, FileUploader, $filter,
12 EstudoTecnicoRecursoMaterialRepository, EstudoTecnicoRecursoHumanoRepository, EstudoTecnicoBeneficioEsperadoRepository, FuncaoRepository) { 12 EstudoTecnicoRecursoMaterialRepository, EstudoTecnicoRecursoHumanoRepository, EstudoTecnicoBeneficioEsperadoRepository, FuncaoRepository) {
13 13
14 - $scope.edit = true;  
15 - $scope.estudoTecnico = {  
16 - etRecursosMateriais : [],  
17 - etRecursosHumanos : []  
18 - };  
19 - $scope.reqNegocio = {};  
20 - $scope.beneficioEsperado = {};  
21 - $scope.estudoTecnicoRecursoMaterialTemp = {};  
22 - $scope.estudoTecnicoRecursoHumanoTemp = {};  
23 - $scope.listaRequisitoTecSelecao = [];  
24 - $scope.listaAlternativa = [];  
25 - $scope.listaServicoSolucao = [];  
26 - $scope.listaBeneficio = [];  
27 - $scope.listaRecursoMateriais = [];  
28 - $scope.listaRecursoHumanos = [];  
29 - $scope.listaAcoesContigencia = [];  
30 -  
31 - $scope.uploader = new FileUploader({  
32 - autoUpload: false,  
33 - queueLimit: 1,  
34 - url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='  
35 - });  
36 - 14 + $scope.edit = true;
  15 + $scope.estudoTecnico = {
  16 + etRecursosMateriais : [],
  17 + etRecursosHumanos : []
  18 + };
  19 + $scope.reqNegocio = {};
  20 + $scope.beneficioEsperado = {};
  21 + $scope.estudoTecnicoRecursoMaterialTemp = {};
  22 + $scope.estudoTecnicoRecursoHumanoTemp = {};
  23 + $scope.listaRequisitoTecSelecao = [];
  24 + $scope.listaAlternativa = [];
  25 + $scope.listaServicoSolucao = [];
  26 + $scope.listaBeneficio = [];
  27 + $scope.listaRecursoMateriais = [];
  28 + $scope.listaRecursoHumanos = [];
  29 + $scope.listaAcoesContigencia = [];
  30 +
  31 + $scope.uploader = new FileUploader({
  32 + autoUpload: false,
  33 + queueLimit: 99,
  34 + url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
  35 + });
  36 +
37 $scope.setRascunho = function(rascunho){ 37 $scope.setRascunho = function(rascunho){
38 38
39 if (rascunho) { 39 if (rascunho) {
@@ -45,1221 +45,1214 @@ citApp.controller('EstudoTecnicoController', ['$scope', 'EstudoTecnicoRepository @@ -45,1221 +45,1214 @@ citApp.controller('EstudoTecnicoController', ['$scope', 'EstudoTecnicoRepository
45 $scope.setLoading(false); 45 $scope.setLoading(false);
46 }; 46 };
47 47
48 - $scope.findIntegrante = function(value) {  
49 - return PessoaRepository.findColaboradorPorNomeAndOrganizacao(value, $scope.usuarioLogado.organizacao.id).then(function(result) {  
50 - return result;  
51 - });  
52 - }; 48 + $scope.findIntegrante = function(value) {
  49 + return PessoaRepository.findColaboradorPorNomeAndOrganizacao(value, $scope.usuarioLogado.organizacao.id).then(function(result) {
  50 + return result;
  51 + });
  52 + };
53 53
54 - $scope.findOrgaoExterno = function(value) {  
55 - return ParceiroRepository.findParceiros('tipoParceiro', ['ORGAO_EXTERNO'] , value).then(function(result) {  
56 - return result;  
57 - });  
58 - }; 54 + $scope.findOrgaoExterno = function(value) {
  55 + return ParceiroRepository.findParceiros('tipoParceiro', ['ORGAO_EXTERNO'] , value).then(function(result) {
  56 + return result;
  57 + });
  58 + };
59 59
60 - $scope.findFornecedor = function(value) {  
61 - return ParceiroRepository.findParceiros('tipoParceiro', ['FORNECEDOR'], value).then(function(result) {  
62 - return result;  
63 - });  
64 - }; 60 + $scope.findFornecedor = function(value) {
  61 + return ParceiroRepository.findParceiros('tipoParceiro', ['FORNECEDOR'], value).then(function(result) {
  62 + return result;
  63 + });
  64 + };
65 65
66 - $scope.findResponsavel = function(value) {  
67 - return FuncaoRepository.findFuncaoPorOrganizacao(value, $scope.usuarioLogado.organizacao.id).then(function(result) {  
68 - return result;  
69 - });  
70 - };  
71 -  
72 - QuestionarioRepository.findAllByDominioTipoQuestionario({codigo : 2}).then(function(result) {  
73 - if (result.length > 0) {  
74 - $scope.questionarioTemplate = result[0].originalElement;  
75 - }  
76 - if (!$scope.questionarioTemplate) {  
77 - QuestionarioRepository.createQuestionarioPadrao().then(function(resultCreate) {  
78 - $scope.questionarioTemplate = resultCreate;  
79 - $scope.preparaQuestTemplate();  
80 - });  
81 - } else {  
82 - $scope.preparaQuestTemplate();  
83 - }  
84 - });  
85 -  
86 - $scope.preparaQuestTemplate = function() {  
87 - var questoes = [];  
88 - for (var i = 0; i < $scope.questionarioTemplate.questoes.length; i++) {  
89 - var questao = {  
90 - questao : $scope.questionarioTemplate.questoes[i].questao,  
91 - dominioTipoResposta : {id : $scope.questionarioTemplate.questoes[i].dominioTipoResposta.id},  
92 - respostasEscolha : []  
93 - };  
94 -  
95 - for (var j = 0; j < $scope.questionarioTemplate.questoes[i].respostasEscolha.length; j++) {  
96 - questao.respostasEscolha.push({resposta : $scope.questionarioTemplate.questoes[i].respostasEscolha[j].resposta});  
97 - }  
98 - questoes.push(questao);  
99 - }  
100 - $scope.questionarioTemplate.questoes = questoes; 66 + $scope.findResponsavel = function(value) {
  67 + return FuncaoRepository.findFuncaoPorOrganizacao(value, $scope.usuarioLogado.organizacao.id).then(function(result) {
  68 + return result;
  69 + });
  70 + };
101 71
102 - $scope.questaoTemplate = angular.copy($scope.questionarioTemplate.questoes[0]);  
103 - delete $scope.questaoTemplate.questao; 72 + QuestionarioRepository.findAllByDominioTipoQuestionario({codigo : 2}).then(function(result) {
  73 + if (result.length > 0) {
  74 + $scope.questionarioTemplate = result[0].originalElement;
  75 + }
  76 + if (!$scope.questionarioTemplate) {
  77 + QuestionarioRepository.createQuestionarioPadrao().then(function(resultCreate) {
  78 + $scope.questionarioTemplate = resultCreate;
  79 + $scope.preparaQuestTemplate();
  80 + });
  81 + } else {
  82 + $scope.preparaQuestTemplate();
  83 + }
  84 + });
  85 +
  86 + $scope.preparaQuestTemplate = function() {
  87 + var questoes = [];
  88 + for (var i = 0; i < $scope.questionarioTemplate.questoes.length; i++) {
  89 + var questao = {
  90 + questao : $scope.questionarioTemplate.questoes[i].questao,
  91 + dominioTipoResposta : {id : $scope.questionarioTemplate.questoes[i].dominioTipoResposta.id},
  92 + respostasEscolha : []
  93 + };
104 94
105 - $scope.qntDefaultQuest = angular.copy(questoes.length);  
106 - }; 95 + for (var j = 0; j < $scope.questionarioTemplate.questoes[i].respostasEscolha.length; j++) {
  96 + questao.respostasEscolha.push({resposta : $scope.questionarioTemplate.questoes[i].respostasEscolha[j].resposta});
  97 + }
  98 + questoes.push(questao);
  99 + }
  100 + $scope.questionarioTemplate.questoes = questoes;
  101 +
  102 + $scope.questaoTemplate = angular.copy($scope.questionarioTemplate.questoes[0]);
  103 + delete $scope.questaoTemplate.questao;
  104 +
  105 + $scope.qntDefaultQuest = angular.copy(questoes.length);
  106 + };
  107 +
  108 + // limpa o formulario
  109 + $scope.resetForm = function() {
  110 + $scope.edit = true;
  111 + $scope.estudoTecnico = {
  112 + etRecursosMateriais : [],
  113 + etRecursosHumanos : []
  114 + };
  115 + $scope.reqNegocio = {};
  116 + $scope.beneficioEsperado = {};
  117 + $scope.estudoTecnicoRecursoMaterialTemp = {};
  118 + $scope.estudoTecnicoRecursoHumanoTemp = {};
  119 + $scope.acaoEmMassaRecursosMateriais = false;
  120 + $scope.acaoEmMassaRecursosHumanos = false;
  121 + $scope.setCurrentStep(0);
  122 + $scope.atualizarListaSizeSelectReqNegocio();
  123 + $scope.atualizarListaSizeSelectSolucao();
  124 + $scope.atualizarListaSizeSelectServicoSolucao();
  125 + $scope.atualizarListaSizeSelectBeneficio();
  126 + $scope.atualizarListaSizeSelectRecursoMaterial();
  127 + $scope.atualizarListaSizeSelectRecursoHumano();
  128 + $scope.atualizarListaSizeSelectAcaoContigencia();
107 129
108 - // limpa o formulario  
109 - $scope.resetForm = function() {  
110 - $scope.edit = true;  
111 - $scope.estudoTecnico = {  
112 - etRecursosMateriais : [],  
113 - etRecursosHumanos : []  
114 - };  
115 - $scope.reqNegocio = {};  
116 - $scope.beneficioEsperado = {};  
117 - $scope.estudoTecnicoRecursoMaterialTemp = {};  
118 - $scope.estudoTecnicoRecursoHumanoTemp = {};  
119 - $scope.acaoEmMassaRecursosMateriais = false;  
120 - $scope.acaoEmMassaRecursosHumanos = false;  
121 - $scope.setCurrentStep(0);  
122 - $scope.atualizarListaSizeSelectReqNegocio();  
123 - $scope.atualizarListaSizeSelectSolucao();  
124 - $scope.atualizarListaSizeSelectServicoSolucao();  
125 - $scope.atualizarListaSizeSelectBeneficio();  
126 - $scope.atualizarListaSizeSelectRecursoMaterial();  
127 - $scope.atualizarListaSizeSelectRecursoHumano();  
128 - $scope.atualizarListaSizeSelectAcaoContigencia();  
129 -  
130 $scope.workspace.objetoScope = $scope.estudoTecnico; 130 $scope.workspace.objetoScope = $scope.estudoTecnico;
131 $scope.startTimerIntervalSaveDraft($scope.workspace, null, true); 131 $scope.startTimerIntervalSaveDraft($scope.workspace, null, true);
132 -  
133 - $timeout(function() {  
134 - $scope.estudoTecnicoForm.planejamentoContratacaoForm.$submitted = false;  
135 - $scope.estudoTecnicoForm.definicaoRequisitosForm.$submitted = false;  
136 - $scope.estudoTecnicoForm.levantamentoAlternativasForm.$submitted = false;  
137 - $scope.estudoTecnicoForm.levantamentoAlternativasForm.$submitted = false;  
138 - $scope.estudoTecnicoForm.beneficiosNecessidadesForm.$submitted = false;  
139 - $scope.estudoTecnicoForm.planejamentoContratacaoForm.$setPristine();  
140 - $scope.estudoTecnicoForm.definicaoRequisitosForm.$setPristine();  
141 - $scope.estudoTecnicoForm.levantamentoAlternativasForm.$setPristine();  
142 - $scope.estudoTecnicoForm.levantamentoAlternativasForm.$setPristine();  
143 - $scope.estudoTecnicoForm.beneficiosNecessidadesForm.$setPristine();  
144 - });  
145 - };  
146 -  
147 - $scope.visualizarEditar = function(idEstudoTecnico, edit) {  
148 - $scope.resetForm();  
149 - $scope.setLoadingGet(true);  
150 132
151 - EstudoTecnicoRepository.get(idEstudoTecnico).then(function(result) { 133 + $timeout(function() {
  134 + $scope.estudoTecnicoForm.planejamentoContratacaoForm.$submitted = false;
  135 + $scope.estudoTecnicoForm.definicaoRequisitosForm.$submitted = false;
  136 + $scope.estudoTecnicoForm.levantamentoAlternativasForm.$submitted = false;
  137 + $scope.estudoTecnicoForm.levantamentoAlternativasForm.$submitted = false;
  138 + $scope.estudoTecnicoForm.beneficiosNecessidadesForm.$submitted = false;
  139 + $scope.estudoTecnicoForm.planejamentoContratacaoForm.$setPristine();
  140 + $scope.estudoTecnicoForm.definicaoRequisitosForm.$setPristine();
  141 + $scope.estudoTecnicoForm.levantamentoAlternativasForm.$setPristine();
  142 + $scope.estudoTecnicoForm.levantamentoAlternativasForm.$setPristine();
  143 + $scope.estudoTecnicoForm.beneficiosNecessidadesForm.$setPristine();
  144 + });
  145 + };
152 146
153 - $scope.estudoTecnico = result.originalElement; 147 + $scope.visualizarEditar = function(idEstudoTecnico, edit) {
  148 + $scope.resetForm();
  149 + $scope.setLoadingGet(true);
154 150
155 - $scope.edit = edit; 151 + EstudoTecnicoRepository.get(idEstudoTecnico).then(function(result) {
156 152
157 - $scope.atualizarListaSizeSelectReqNegocio();  
158 - $scope.atualizarListaSizeSelectSolucao();  
159 - $scope.atualizarListaSizeSelectServicoSolucao();  
160 - $scope.atualizarListaSizeSelectBeneficio();  
161 - $scope.atualizarListaSizeSelectRecursoMaterial();  
162 - $scope.atualizarListaSizeSelectRecursoHumano();  
163 - $scope.atualizarListaSizeSelectAcaoContigencia(); 153 + $scope.estudoTecnico = result.originalElement;
164 154
165 - $scope.setCurrentStep(0);  
166 - $scope.stopTimerIntervalDraft($scope.workspace);  
167 - $scope.setLoading(false);  
168 - });  
169 - };  
170 -  
171 - //INICIO DE METODOS REFERENTES AOS RELATORIOS 155 + $scope.edit = edit;
172 156
173 - $scope.gerarRelatorioEstudoTecnico = function() {  
174 - $scope.url = '/cit-contratos-web/rest/estudoTecnico/gerarEstudoTecnico?idEstudoTecnico='+ $scope.estudoTecnico.id;  
175 - $scope.visualizarRelatorio($scope.url, $translate.instant("LABEL.TITULO_ESTUDO_TECNICO"));  
176 - }; 157 + $scope.atualizarListaSizeSelectReqNegocio();
  158 + $scope.atualizarListaSizeSelectSolucao();
  159 + $scope.atualizarListaSizeSelectServicoSolucao();
  160 + $scope.atualizarListaSizeSelectBeneficio();
  161 + $scope.atualizarListaSizeSelectRecursoMaterial();
  162 + $scope.atualizarListaSizeSelectRecursoHumano();
  163 + $scope.atualizarListaSizeSelectAcaoContigencia();
  164 +
  165 + $scope.setCurrentStep(0);
  166 + $scope.stopTimerIntervalDraft($scope.workspace);
  167 + $scope.setLoading(false);
  168 + });
  169 + };
  170 +
  171 + //INICIO DE METODOS REFERENTES AOS RELATORIOS
  172 +
  173 + $scope.gerarRelatorioEstudoTecnico = function() {
  174 + $scope.url = '/cit-contratos-web/rest/estudoTecnico/gerarEstudoTecnico?idEstudoTecnico='+ $scope.estudoTecnico.id;
  175 + $scope.visualizarRelatorio($scope.url, $translate.instant("LABEL.TITULO_ESTUDO_TECNICO"));
  176 + };
  177 +
  178 + //Salva o estudo técnico
  179 + $scope.saveOrUpdate = function() {
  180 + // atributo para visualizar os itens obrigatorios na tela
  181 + $scope.estudoTecnicoForm.planejamentoContratacaoForm.$submitted = true;
  182 + $scope.estudoTecnicoForm.definicaoRequisitosForm.$submitted = true;
  183 + $scope.estudoTecnicoForm.levantamentoAlternativasForm.$submitted = true;
  184 + $scope.estudoTecnicoForm.beneficiosNecessidadesForm.$submitted = true;
  185 + $scope.estudoTecnicoForm.recursosNecessariosForm.$submitted = true;
  186 + $scope.estudoTecnicoForm.estrategiaContratualForm.$submitted = true;
  187 + $scope.estudoTecnicoForm.anexosObservacoesForm.$submitted = true;
  188 +
  189 + // verifica formulario valido
  190 + if ($scope.estudoTecnicoForm.$valid) {
  191 +
  192 + $scope.setLoadingSalva(true);
  193 +
  194 + var estudoTecnicoTemp = {
  195 + documentos: []
  196 + };
  197 +
  198 + // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
  199 + angular.forEach($scope.estudoTecnico.documentos, function(documento, key) {
  200 + if (documento.uploadsDocumento) {
  201 + documento.uuid = getUuid();
  202 + estudoTecnicoTemp.documentos.push({
  203 + file: documento.uploadsDocumento[0],
  204 + uuid: clone(documento.uuid)
  205 + });
  206 + // deleta esse atributo por causa de um erro de ciclo no json
  207 + delete documento.uploadsDocumento;
  208 + }
  209 + });
  210 +
  211 + $scope.estudoTecnico.rascunho = $scope.workspace.rascunho ? $scope.workspace.rascunho.id : null;
  212 + EstudoTecnicoRepository.save($scope.estudoTecnico).then(function(result) {
  213 +
  214 + $scope.estudoTecnico = result.originalElement;
  215 +
  216 + $scope.setLoading(false);
  217 +
  218 + $scope.showAlert("success", $translate.instant("MSG.SUCESSO_ESTUDO_TECNICO"));
  219 +
  220 + // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir
  221 + salvarListaDocumentos(estudoTecnicoTemp);
177 222
178 - //Salva o estudo técnico  
179 - $scope.saveOrUpdate = function() {  
180 - // atributo para visualizar os itens obrigatorios na tela  
181 - $scope.estudoTecnicoForm.planejamentoContratacaoForm.$submitted = true;  
182 - $scope.estudoTecnicoForm.definicaoRequisitosForm.$submitted = true;  
183 - $scope.estudoTecnicoForm.levantamentoAlternativasForm.$submitted = true;  
184 - $scope.estudoTecnicoForm.beneficiosNecessidadesForm.$submitted = true;  
185 - $scope.estudoTecnicoForm.recursosNecessariosForm.$submitted = true;  
186 - $scope.estudoTecnicoForm.estrategiaContratualForm.$submitted = true;  
187 - $scope.estudoTecnicoForm.anexosObservacoesForm.$submitted = true;  
188 -  
189 - // verifica formulario valido  
190 - if ($scope.estudoTecnicoForm.$valid) {  
191 -  
192 - $scope.setLoadingSalva(true);  
193 -  
194 - var estudoTecnicoTemp = {  
195 - documentos: []  
196 - };  
197 -  
198 - // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento  
199 - angular.forEach($scope.estudoTecnico.documentos, function(documento, key) {  
200 - if (documento.uploadsDocumento) {  
201 - estudoTecnicoTemp.documentos.push({  
202 - uploadsDocumento: clone(documento.uploadsDocumento),  
203 - numero: clone(documento.numero)  
204 - });  
205 - // deleta esse atributo por causa de um erro de ciclo no json  
206 - delete documento.uploadsDocumento;  
207 - }  
208 - });  
209 -  
210 - $scope.estudoTecnico.rascunho = $scope.workspace.rascunho ? $scope.workspace.rascunho.id : null;  
211 - EstudoTecnicoRepository.save($scope.estudoTecnico).then(function(result) {  
212 -  
213 - $scope.estudoTecnico = result.originalElement;  
214 -  
215 - $scope.setLoading(false);  
216 -  
217 - $scope.showAlert("success", $translate.instant("MSG.SUCESSO_ESTUDO_TECNICO"));  
218 -  
219 - // depois de salvar a baixa ja tendo uma referencia do id da baixa, esse metodo ira salvar os documentos se existir  
220 - salvarListaDocumentos(estudoTecnicoTemp);  
221 -  
222 $timeout(function() { 223 $timeout(function() {
223 $scope.$showPageSearchWorkspace($scope.workspace); 224 $scope.$showPageSearchWorkspace($scope.workspace);
224 $scope.atualizaPaginaPesquisa(); 225 $scope.atualizaPaginaPesquisa();
225 }); 226 });
226 -  
227 - });  
228 - } else {  
229 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'));  
230 - }  
231 - };  
232 - 227 +
  228 + });
  229 + } else {
  230 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'));
  231 + }
  232 + };
  233 +
233 // Atualiza pagina de pesquisa 234 // Atualiza pagina de pesquisa
234 $scope.atualizaPaginaPesquisa = function () { 235 $scope.atualizaPaginaPesquisa = function () {
235 angular.element('#EstudoTecnicoListControllerId').scope().fetchResult(); 236 angular.element('#EstudoTecnicoListControllerId').scope().fetchResult();
236 }; 237 };
237 238
238 - // realiza a exclusão da EstudoTecnico  
239 - $scope.excluirEstudoTecnico = function(){  
240 - var workspace = this.item;  
241 - $scope.$modalConfirmInstance.dismiss('cancel');  
242 - EstudoTecnicoRepository.remove($scope.estudoTecnico).then(function(result) {  
243 - $scope.uploader.clearQueue();  
244 - $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
245 - $scope.$showPageSearchWorkspace(workspace);  
246 - $scope.atualizarLista('EstudoTecnicoListControllerId');  
247 - });  
248 - }; 239 + // realiza a exclusão da EstudoTecnico
  240 + $scope.excluirEstudoTecnico = function(){
  241 + var workspace = this.item;
  242 + $scope.$modalConfirmInstance.dismiss('cancel');
  243 + EstudoTecnicoRepository.remove($scope.estudoTecnico).then(function(result) {
  244 + $scope.uploader.clearQueue();
  245 + $scope.showAlert('success', $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  246 + $scope.$showPageSearchWorkspace(workspace);
  247 + $scope.atualizarLista('EstudoTecnicoListControllerId');
  248 + });
  249 + };
249 250
250 - // prepara a exclusao do estudo técnico abrindo o modal de confirmacao  
251 - $scope.remove = function(workspace) {  
252 - $scope.$openModalConfirm({message: $translate.instant('MSG.EXCLUIR_ESTUDO_TECNICO'), callback: $scope.excluirEstudoTecnico, item: workspace});  
253 - }; 251 + // prepara a exclusao do estudo técnico abrindo o modal de confirmacao
  252 + $scope.remove = function(workspace) {
  253 + $scope.$openModalConfirm({message: $translate.instant('MSG.EXCLUIR_ESTUDO_TECNICO'), callback: $scope.excluirEstudoTecnico, item: workspace});
  254 + };
254 255
255 - // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento 256 + // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento
256 var salvarListaDocumentos = function(estudoTecnicoTemp) { 257 var salvarListaDocumentos = function(estudoTecnicoTemp) {
257 - 258 + $scope.uploader.queue = [];
  259 +
258 angular.forEach($scope.estudoTecnico.documentos, function(documentoSalvo, key) { 260 angular.forEach($scope.estudoTecnico.documentos, function(documentoSalvo, key) {
259 // verifica se a entidade documento foi salva 261 // verifica se a entidade documento foi salva
260 if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) { 262 if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {
261 // percorre todos os documentos temporarios para verificacao do numero do documento 263 // percorre todos os documentos temporarios para verificacao do numero do documento
262 angular.forEach(estudoTecnicoTemp.documentos, function(documentoTransient, key) { 264 angular.forEach(estudoTecnicoTemp.documentos, function(documentoTransient, key) {
263 // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado 265 // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
264 - if (documentoSalvo.numero === documentoTransient.numero) { 266 + if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) {
265 //salva o anexo ao documento que tiver o mesmo numero do documento transient 267 //salva o anexo ao documento que tiver o mesmo numero do documento transient
266 - salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento); 268 +
  269 + documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id;
  270 + $scope.uploader.queue.push(documentoTransient.file);
267 } 271 }
268 -  
269 }); 272 });
270 -  
271 } 273 }
272 }); 274 });
273 -  
274 - };  
275 -  
276 - // metodo responsavel para salvar os anexos da baixa depois de ter salvo a baixa, utilizando a referencia do id baixa.documento.id  
277 - var salvarUpload = function(documento, uploadsDocumento) {  
278 - $scope.uploader.queue = uploadsDocumento;  
279 - // percorre a lista de uploads a serem enviados  
280 - angular.forEach($scope.uploader.queue, function(item, key) {  
281 - item.url = item.url + documento.id;  
282 - });  
283 - if ($scope.uploader.queue && $scope.uploader.queue.length > 0) {  
284 - // realiza o upload se existir no minimo um arquivo para upload  
285 - $scope.uploader.uploadAll(); 275 +
  276 + if($scope.uploader.queue.length > 0){
  277 + $scope.uploader.uploadAll();
286 } 278 }
  279 + delete $scope.estudoTecnicoTemp;
287 }; 280 };
288 281
289 - // Seleciona todos os requisitos de negocio na lista  
290 - $scope.checkAllReqNegocio = function(value) {  
291 - $scope.listaRequisitoTecSelecao = [];  
292 - angular.forEach($scope.estudoTecnico.etRequisitosNegocio, function (item) {  
293 - item.$checked = value;  
294 - $scope.listaRequisitoTecSelecao.push(item);  
295 - }); 282 + // Seleciona todos os requisitos de negocio na lista
  283 + $scope.checkAllReqNegocio = function(value) {
  284 + $scope.listaRequisitoTecSelecao = [];
  285 + angular.forEach($scope.estudoTecnico.etRequisitosNegocio, function (item) {
  286 + item.$checked = value;
  287 + $scope.listaRequisitoTecSelecao.push(item);
  288 + });
296 if(!value){ 289 if(!value){
297 $scope.listaRequisitoTecSelecao = []; 290 $scope.listaRequisitoTecSelecao = [];
298 } 291 }
299 $scope.atualizarListaSizeSelectReqNegocio(); 292 $scope.atualizarListaSizeSelectReqNegocio();
300 }; 293 };
301 294
302 - $scope.checkReqNegocio = function(item){  
303 - if(item.$checked){  
304 - $scope.listaRequisitoTecSelecao.push(item);  
305 - }else{  
306 - $scope.listaRequisitoTecSelecao.splice($scope.listaRequisitoTecSelecao.indexOf(item), 1);  
307 - } 295 + $scope.checkReqNegocio = function(item){
  296 + if(item.$checked){
  297 + $scope.listaRequisitoTecSelecao.push(item);
  298 + }else{
  299 + $scope.listaRequisitoTecSelecao.splice($scope.listaRequisitoTecSelecao.indexOf(item), 1);
  300 + }
308 301
309 - }; 302 + };
310 303
311 - // Seleciona todas as alternativas na lista de solução  
312 - $scope.checkAllAlternativa = function(value) {  
313 - $scope.listaAlternativa = [];  
314 - angular.forEach($scope.estudoTecnico.etLevantamentoAlternativas, function (item) {  
315 - item.$checked = value;  
316 - $scope.listaAlternativa.push(item);  
317 - }); 304 + // Seleciona todas as alternativas na lista de solução
  305 + $scope.checkAllAlternativa = function(value) {
  306 + $scope.listaAlternativa = [];
  307 + angular.forEach($scope.estudoTecnico.etLevantamentoAlternativas, function (item) {
  308 + item.$checked = value;
  309 + $scope.listaAlternativa.push(item);
  310 + });
318 if(!value){ 311 if(!value){
319 $scope.listaAlternativa = []; 312 $scope.listaAlternativa = [];
320 } 313 }
321 $scope.atualizarListaSizeSelectSolucao(); 314 $scope.atualizarListaSizeSelectSolucao();
322 }; 315 };
323 316
324 - $scope.checkAlternativa = function(item){  
325 - if(item.$checked){  
326 - $scope.listaAlternativa.push(item);  
327 - }else{  
328 - $scope.listaAlternativa.splice($scope.listaAlternativa.indexOf(item), 1);  
329 - } 317 + $scope.checkAlternativa = function(item){
  318 + if(item.$checked){
  319 + $scope.listaAlternativa.push(item);
  320 + }else{
  321 + $scope.listaAlternativa.splice($scope.listaAlternativa.indexOf(item), 1);
  322 + }
330 323
331 - }; 324 + };
332 325
333 - $scope.checkAllBensServicos = function(value) {  
334 - $scope.listaServicoSolucao = [];  
335 - angular.forEach($scope.estudoTecnico.etBensServicosSolucoes, function (item) {  
336 - item.$checked = value;  
337 - $scope.listaServicoSolucao.push(item);  
338 - });  
339 - if(!value){  
340 - $scope.listaServicoSolucao = [];  
341 - }  
342 - $scope.atualizarListaSizeSelectServicoSolucao();  
343 - }; 326 + $scope.checkAllBensServicos = function(value) {
  327 + $scope.listaServicoSolucao = [];
  328 + angular.forEach($scope.estudoTecnico.etBensServicosSolucoes, function (item) {
  329 + item.$checked = value;
  330 + $scope.listaServicoSolucao.push(item);
  331 + });
  332 + if(!value){
  333 + $scope.listaServicoSolucao = [];
  334 + }
  335 + $scope.atualizarListaSizeSelectServicoSolucao();
  336 + };
344 337
345 - $scope.checkBemServico = function(item){  
346 - if(item.$checked){  
347 - $scope.listaServicoSolucao.push(item);  
348 - }else{  
349 - $scope.listaServicoSolucao.splice($scope.listaServicoSolucao.indexOf(item), 1);  
350 - }  
351 - };  
352 -  
353 - // marca benefício esperado  
354 - $scope.checkAllBeneficios = function(value) {  
355 - $scope.listaBeneficio = [];  
356 - angular.forEach($scope.estudoTecnico.etBeneficiosEsperados, function (item) {  
357 - item.$checked = value;  
358 - $scope.listaBeneficio.push(item);  
359 - });  
360 - if(!value){  
361 - $scope.listaBeneficio = [];  
362 - }  
363 - $scope.atualizarListaSizeSelectBeneficio();  
364 - }; 338 + $scope.checkBemServico = function(item){
  339 + if(item.$checked){
  340 + $scope.listaServicoSolucao.push(item);
  341 + }else{
  342 + $scope.listaServicoSolucao.splice($scope.listaServicoSolucao.indexOf(item), 1);
  343 + }
  344 + };
365 345
366 - $scope.checkBeneficio = function(item){  
367 - if(item.$checked){  
368 - $scope.listaBeneficio.push(item);  
369 - }else{  
370 - $scope.listaBeneficio.splice($scope.listaBeneficio.indexOf(item), 1);  
371 - }  
372 - };  
373 -  
374 - // responsavel por definir se as acoes em massa estaram disponiveis  
375 - $scope.checkAllRecursosMateriais = function (value){  
376 - $scope.listaRecursoMateriais = [];  
377 - angular.forEach($scope.estudoTecnico.etRecursosMateriais, function (item) {  
378 - item.$checked = value;  
379 - $scope.listaRecursoMateriais.push(item);  
380 - });  
381 - if(!value){  
382 - $scope.listaRecursoMateriais = [];  
383 - }  
384 - $scope.atualizarListaSizeSelectRecursoMaterial();  
385 - }; 346 + // marca benefício esperado
  347 + $scope.checkAllBeneficios = function(value) {
  348 + $scope.listaBeneficio = [];
  349 + angular.forEach($scope.estudoTecnico.etBeneficiosEsperados, function (item) {
  350 + item.$checked = value;
  351 + $scope.listaBeneficio.push(item);
  352 + });
  353 + if(!value){
  354 + $scope.listaBeneficio = [];
  355 + }
  356 + $scope.atualizarListaSizeSelectBeneficio();
  357 + };
386 358
387 - $scope.checkRecursoMaterial = function(item){  
388 - if(item.$checked){  
389 - $scope.listaRecursoMateriais.push(item);  
390 - }else{  
391 - $scope.listaRecursoMateriais.splice($scope.listaRecursoMateriais.indexOf(item), 1);  
392 - }  
393 - };  
394 -  
395 - // responsavel por definir se as acoes em massa estaram disponiveis  
396 - $scope.checkAllRecursosHumanos = function (value){  
397 - $scope.listaRecursoHumanos = [];  
398 - angular.forEach($scope.estudoTecnico.etRecursosHumanos, function (item) {  
399 - item.$checked = value;  
400 - $scope.listaRecursoHumanos.push(item);  
401 - });  
402 - if(!value){  
403 - $scope.listaRecursoHumanos = [];  
404 - }  
405 - $scope.atualizarListaSizeSelectRecursoHumano();  
406 - }; 359 + $scope.checkBeneficio = function(item){
  360 + if(item.$checked){
  361 + $scope.listaBeneficio.push(item);
  362 + }else{
  363 + $scope.listaBeneficio.splice($scope.listaBeneficio.indexOf(item), 1);
  364 + }
  365 + };
407 366
408 - $scope.checkRecursoHumano = function(item){  
409 - if(item.$checked){  
410 - $scope.listaRecursoHumanos.push(item);  
411 - }else{  
412 - $scope.listaRecursoHumanos.splice($scope.listaRecursoHumanos.indexOf(item), 1);  
413 - }  
414 - };  
415 -  
416 - $scope.checkAllAcoes = function(value) {  
417 - $scope.listaAcoesContigencia = [];  
418 - angular.forEach($scope.estudoTecnico.etAcoesContingencia, function (item) {  
419 - item.$checked = value;  
420 - $scope.listaAcoesContigencia.push(item);  
421 - });  
422 - if(!value){  
423 - $scope.listaAcoesContigencia = [];  
424 - }  
425 - $scope.atualizarListaSizeSelectAcaoContigencia();  
426 - }; 367 + // responsavel por definir se as acoes em massa estaram disponiveis
  368 + $scope.checkAllRecursosMateriais = function (value){
  369 + $scope.listaRecursoMateriais = [];
  370 + angular.forEach($scope.estudoTecnico.etRecursosMateriais, function (item) {
  371 + item.$checked = value;
  372 + $scope.listaRecursoMateriais.push(item);
  373 + });
  374 + if(!value){
  375 + $scope.listaRecursoMateriais = [];
  376 + }
  377 + $scope.atualizarListaSizeSelectRecursoMaterial();
  378 + };
427 379
428 - $scope.checkAcaoContigencia = function(item){  
429 - if(item.$checked){  
430 - $scope.listaAcoesContigencia.push(item);  
431 - }else{  
432 - $scope.listaAcoesContigencia.splice($scope.listaAcoesContigencia.indexOf(item), 1);  
433 - }  
434 - };  
435 -  
436 - // recupera requisito de negocio selecionado  
437 - $scope.getReqNegocioChecked = function() {  
438 - var reqNegocioChecked = [];  
439 -  
440 - if ($scope.estudoTecnico.etRequisitosNegocio) {  
441 - for (var i = 0; i < $scope.estudoTecnico.etRequisitosNegocio.length; i++) {  
442 - if ($scope.estudoTecnico.etRequisitosNegocio[i].$checked) {  
443 - reqNegocioChecked.push(angular.copy($scope.estudoTecnico.etRequisitosNegocio[i]));  
444 - }  
445 - }  
446 - } 380 + $scope.checkRecursoMaterial = function(item){
  381 + if(item.$checked){
  382 + $scope.listaRecursoMateriais.push(item);
  383 + }else{
  384 + $scope.listaRecursoMateriais.splice($scope.listaRecursoMateriais.indexOf(item), 1);
  385 + }
  386 + };
447 387
448 - return reqNegocioChecked;  
449 - }; 388 + // responsavel por definir se as acoes em massa estaram disponiveis
  389 + $scope.checkAllRecursosHumanos = function (value){
  390 + $scope.listaRecursoHumanos = [];
  391 + angular.forEach($scope.estudoTecnico.etRecursosHumanos, function (item) {
  392 + item.$checked = value;
  393 + $scope.listaRecursoHumanos.push(item);
  394 + });
  395 + if(!value){
  396 + $scope.listaRecursoHumanos = [];
  397 + }
  398 + $scope.atualizarListaSizeSelectRecursoHumano();
  399 + };
450 400
451 - // recupera solucao selecionada  
452 - $scope.getSolucaoChecked = function() {  
453 - var solucaoChecked = []; 401 + $scope.checkRecursoHumano = function(item){
  402 + if(item.$checked){
  403 + $scope.listaRecursoHumanos.push(item);
  404 + }else{
  405 + $scope.listaRecursoHumanos.splice($scope.listaRecursoHumanos.indexOf(item), 1);
  406 + }
  407 + };
454 408
455 - if ($scope.estudoTecnico.etLevantamentoAlternativas) {  
456 - for (var i = 0; i < $scope.estudoTecnico.etLevantamentoAlternativas.length; i++) {  
457 - if ($scope.estudoTecnico.etLevantamentoAlternativas[i].$checked) {  
458 - solucaoChecked.push(angular.copy($scope.estudoTecnico.etLevantamentoAlternativas[i]));  
459 - }  
460 - }  
461 - } 409 + $scope.checkAllAcoes = function(value) {
  410 + $scope.listaAcoesContigencia = [];
  411 + angular.forEach($scope.estudoTecnico.etAcoesContingencia, function (item) {
  412 + item.$checked = value;
  413 + $scope.listaAcoesContigencia.push(item);
  414 + });
  415 + if(!value){
  416 + $scope.listaAcoesContigencia = [];
  417 + }
  418 + $scope.atualizarListaSizeSelectAcaoContigencia();
  419 + };
462 420
463 - return solucaoChecked;  
464 - }; 421 + $scope.checkAcaoContigencia = function(item){
  422 + if(item.$checked){
  423 + $scope.listaAcoesContigencia.push(item);
  424 + }else{
  425 + $scope.listaAcoesContigencia.splice($scope.listaAcoesContigencia.indexOf(item), 1);
  426 + }
  427 + };
465 428
466 - // recupera bem servico selecionado  
467 - $scope.getBemServicoChecked = function() {  
468 - var bemServicoChecked = []; 429 + // recupera requisito de negocio selecionado
  430 + $scope.getReqNegocioChecked = function() {
  431 + var reqNegocioChecked = [];
469 432
470 - if ($scope.estudoTecnico.etBensServicosSolucoes) {  
471 - for (var i = 0; i < $scope.estudoTecnico.etBensServicosSolucoes.length; i++) {  
472 - if ($scope.estudoTecnico.etBensServicosSolucoes[i].$checked) {  
473 - bemServicoChecked.push(angular.copy($scope.estudoTecnico.etBensServicosSolucoes[i]));  
474 - }  
475 - }  
476 - } 433 + if ($scope.estudoTecnico.etRequisitosNegocio) {
  434 + for (var i = 0; i < $scope.estudoTecnico.etRequisitosNegocio.length; i++) {
  435 + if ($scope.estudoTecnico.etRequisitosNegocio[i].$checked) {
  436 + reqNegocioChecked.push(angular.copy($scope.estudoTecnico.etRequisitosNegocio[i]));
  437 + }
  438 + }
  439 + }
477 440
478 - return bemServicoChecked;  
479 - }; 441 + return reqNegocioChecked;
  442 + };
480 443
481 - // recupera beneficio esperado selecionado  
482 - $scope.getBeneficioEsperadoChecked = function() {  
483 - var beneficioEsperadoChecked = []; 444 + // recupera solucao selecionada
  445 + $scope.getSolucaoChecked = function() {
  446 + var solucaoChecked = [];
484 447
485 - if ($scope.estudoTecnico.etBeneficiosEsperados) {  
486 - for (var i = 0; i < $scope.estudoTecnico.etBeneficiosEsperados.length; i++) {  
487 - if ($scope.estudoTecnico.etBeneficiosEsperados[i].$checked) {  
488 - beneficioEsperadoChecked.push(angular.copy($scope.estudoTecnico.etBeneficiosEsperados[i]));  
489 - }  
490 - }  
491 - } 448 + if ($scope.estudoTecnico.etLevantamentoAlternativas) {
  449 + for (var i = 0; i < $scope.estudoTecnico.etLevantamentoAlternativas.length; i++) {
  450 + if ($scope.estudoTecnico.etLevantamentoAlternativas[i].$checked) {
  451 + solucaoChecked.push(angular.copy($scope.estudoTecnico.etLevantamentoAlternativas[i]));
  452 + }
  453 + }
  454 + }
492 455
493 - return beneficioEsperadoChecked;  
494 - }; 456 + return solucaoChecked;
  457 + };
495 458
496 - // Responsavel por retornar o recurso material selecionado  
497 - $scope.getRecursoMaterialChecked = function() { 459 + // recupera bem servico selecionado
  460 + $scope.getBemServicoChecked = function() {
  461 + var bemServicoChecked = [];
498 462
499 - var recursoMaterialChecked = []; 463 + if ($scope.estudoTecnico.etBensServicosSolucoes) {
  464 + for (var i = 0; i < $scope.estudoTecnico.etBensServicosSolucoes.length; i++) {
  465 + if ($scope.estudoTecnico.etBensServicosSolucoes[i].$checked) {
  466 + bemServicoChecked.push(angular.copy($scope.estudoTecnico.etBensServicosSolucoes[i]));
  467 + }
  468 + }
  469 + }
500 470
501 - if ($scope.estudoTecnico.etRecursosMateriais) {  
502 - for (var i = 0; i < $scope.estudoTecnico.etRecursosMateriais.length; i++) {  
503 - if ($scope.estudoTecnico.etRecursosMateriais[i].$checked) {  
504 - recursoMaterialChecked.push(angular.copy($scope.estudoTecnico.etRecursosMateriais[i]));  
505 - }  
506 - }  
507 - }  
508 - return recursoMaterialChecked;  
509 - }; 471 + return bemServicoChecked;
  472 + };
510 473
511 - // Responsavel por retornar o recurso humano selecionado  
512 - $scope.getRecursoHumanoChecked = function() { 474 + // recupera beneficio esperado selecionado
  475 + $scope.getBeneficioEsperadoChecked = function() {
  476 + var beneficioEsperadoChecked = [];
513 477
514 - var recursoHumanoChecked = []; 478 + if ($scope.estudoTecnico.etBeneficiosEsperados) {
  479 + for (var i = 0; i < $scope.estudoTecnico.etBeneficiosEsperados.length; i++) {
  480 + if ($scope.estudoTecnico.etBeneficiosEsperados[i].$checked) {
  481 + beneficioEsperadoChecked.push(angular.copy($scope.estudoTecnico.etBeneficiosEsperados[i]));
  482 + }
  483 + }
  484 + }
515 485
516 - if ($scope.estudoTecnico.etRecursosHumanos) {  
517 - for (var i = 0; i < $scope.estudoTecnico.etRecursosHumanos.length; i++) {  
518 - if ($scope.estudoTecnico.etRecursosHumanos[i].$checked) {  
519 - recursoHumanoChecked.push(angular.copy($scope.estudoTecnico.etRecursosHumanos[i]));  
520 - }  
521 - }  
522 - } 486 + return beneficioEsperadoChecked;
  487 + };
523 488
524 - return recursoHumanoChecked;  
525 - }; 489 + // Responsavel por retornar o recurso material selecionado
  490 + $scope.getRecursoMaterialChecked = function() {
526 491
527 - // recupera a ação de contingencia selecionada  
528 - $scope.getAcaoContChecked = function() {  
529 - var acaoContChecked = []; 492 + var recursoMaterialChecked = [];
530 493
531 - if ($scope.estudoTecnico.etAcoesContingencia) {  
532 - for (var i = 0; i < $scope.estudoTecnico.etAcoesContingencia.length; i++) {  
533 - if ($scope.estudoTecnico.etAcoesContingencia[i].$checked) {  
534 - acaoContChecked.push(angular.copy($scope.estudoTecnico.etAcoesContingencia[i]));  
535 - }  
536 - }  
537 - } 494 + if ($scope.estudoTecnico.etRecursosMateriais) {
  495 + for (var i = 0; i < $scope.estudoTecnico.etRecursosMateriais.length; i++) {
  496 + if ($scope.estudoTecnico.etRecursosMateriais[i].$checked) {
  497 + recursoMaterialChecked.push(angular.copy($scope.estudoTecnico.etRecursosMateriais[i]));
  498 + }
  499 + }
  500 + }
  501 + return recursoMaterialChecked;
  502 + };
538 503
539 - return acaoContChecked;  
540 - }; 504 + // Responsavel por retornar o recurso humano selecionado
  505 + $scope.getRecursoHumanoChecked = function() {
541 506
542 - $scope.openModalRequisitoNegocio = function() { 507 + var recursoHumanoChecked = [];
543 508
544 - ObjetivoEstrategicoRepository.findAllByOrganizacao().then(function(result) {  
545 - $scope.objetivosEstrategicos = result;  
546 - }); 509 + if ($scope.estudoTecnico.etRecursosHumanos) {
  510 + for (var i = 0; i < $scope.estudoTecnico.etRecursosHumanos.length; i++) {
  511 + if ($scope.estudoTecnico.etRecursosHumanos[i].$checked) {
  512 + recursoHumanoChecked.push(angular.copy($scope.estudoTecnico.etRecursosHumanos[i]));
  513 + }
  514 + }
  515 + }
547 516
548 - $scope.editRequisitoNegocio = true; 517 + return recursoHumanoChecked;
  518 + };
549 519
550 - $scope.reqNegocio = {}; 520 + // recupera a ação de contingencia selecionada
  521 + $scope.getAcaoContChecked = function() {
  522 + var acaoContChecked = [];
551 523
552 - $timeout(function() {  
553 - $scope.$openModal('modal-requisito-negocio.html', 'lg');  
554 - });  
555 - };  
556 -  
557 - function resetModalSolucao(){  
558 - $scope.solucao = {  
559 - etlaQuestionario : {}  
560 - };  
561 -  
562 - $scope.solucao.etlaQuestionario.etQuestionarioRespostas = [];  
563 -  
564 - for (var i = 0; i < $scope.qntDefaultQuest; i++) {  
565 - var questPergunta = {  
566 - questionarioPergunta : $scope.questionarioTemplate.questoes[i],  
567 - index : i+1  
568 - };  
569 - $scope.solucao.etlaQuestionario.etQuestionarioRespostas.push(questPergunta);  
570 - } 524 + if ($scope.estudoTecnico.etAcoesContingencia) {
  525 + for (var i = 0; i < $scope.estudoTecnico.etAcoesContingencia.length; i++) {
  526 + if ($scope.estudoTecnico.etAcoesContingencia[i].$checked) {
  527 + acaoContChecked.push(angular.copy($scope.estudoTecnico.etAcoesContingencia[i]));
  528 + }
  529 + }
  530 + }
571 531
572 - $scope.solucao.etlaQuestionario.etQuestionario = {  
573 - nome : $scope.questionarioTemplate.nome  
574 - };  
575 - } 532 + return acaoContChecked;
  533 + };
576 534
577 - $scope.openModalSolucao = function() {  
578 - $scope.editSolucao = true; 535 + $scope.openModalRequisitoNegocio = function() {
579 536
580 - resetModalSolucao(); 537 + ObjetivoEstrategicoRepository.findAllByOrganizacao().then(function(result) {
  538 + $scope.objetivosEstrategicos = result;
  539 + });
581 540
582 - $timeout(function() {  
583 - $scope.$openModal('modal-solucao.html', 'lg');  
584 - });  
585 - }; 541 + $scope.editRequisitoNegocio = true;
586 542
587 - $scope.openModalBensServico = function() {  
588 - $scope.editBemServico = true; 543 + $scope.reqNegocio = {};
589 544
590 - $scope.bemServico = {}; 545 + $timeout(function() {
  546 + $scope.$openModal('modal-requisito-negocio.html', 'lg');
  547 + });
  548 + };
591 549
592 - $timeout(function() {  
593 - $scope.$openModal('modal-bem-servico.html', 'lg');  
594 - });  
595 - }; 550 + function resetModalSolucao(){
  551 + $scope.solucao = {
  552 + etlaQuestionario : {}
  553 + };
596 554
597 - $scope.openModalBeneficioEsperado = function() { 555 + $scope.solucao.etlaQuestionario.etQuestionarioRespostas = [];
598 556
599 - $scope.editBeneficioEsperado = true; 557 + for (var i = 0; i < $scope.qntDefaultQuest; i++) {
  558 + var questPergunta = {
  559 + questionarioPergunta : $scope.questionarioTemplate.questoes[i],
  560 + index : i+1
  561 + };
  562 + $scope.solucao.etlaQuestionario.etQuestionarioRespostas.push(questPergunta);
  563 + }
600 564
601 - $scope.beneficioEsperado = {}; 565 + $scope.solucao.etlaQuestionario.etQuestionario = {
  566 + nome : $scope.questionarioTemplate.nome
  567 + };
  568 + }
602 569
603 - $timeout(function() {  
604 - $scope.$openModal('modal-beneficio-esperado.html', 'lg');  
605 - });  
606 - }; 570 + $scope.openModalSolucao = function() {
  571 + $scope.editSolucao = true;
607 572
608 - // responsavel por abrir modal de adicao de um recurso material  
609 - $scope.openModalRecursoMaterial = function() { 573 + resetModalSolucao();
610 574
611 - $scope.estudoTecnicoRecursoMaterialTemp = {  
612 - disponivel : true  
613 - }; 575 + $timeout(function() {
  576 + $scope.$openModal('modal-solucao.html', 'lg');
  577 + });
  578 + };
614 579
615 - $scope.editRecursoMaterial = true;  
616 - $scope.$openModal('modal-recurso-material.html', 'lg');  
617 - }; 580 + $scope.openModalBensServico = function() {
  581 + $scope.editBemServico = true;
618 582
619 - // Responsavel por abrir modal de adicao de um recurso humano  
620 - $scope.openModalRecursoHumano = function() { 583 + $scope.bemServico = {};
621 584
622 - $scope.estudoTecnicoRecursoHumanoTemp = {};  
623 - $scope.editRecursoHumano = true;  
624 - $scope.$openModal('modal-recurso-humano.html', 'lg');  
625 - }; 585 + $timeout(function() {
  586 + $scope.$openModal('modal-bem-servico.html', 'lg');
  587 + });
  588 + };
626 589
627 - $scope.openModalAcaoContingencia = function() {  
628 - $scope.editAcaoCont = true; 590 + $scope.openModalBeneficioEsperado = function() {
629 591
630 - $scope.acaoCont = {}; 592 + $scope.editBeneficioEsperado = true;
631 593
632 - $timeout(function() {  
633 - $scope.$openModal('modal-acao-contingencia.html', 'lg');  
634 - });  
635 - }; 594 + $scope.beneficioEsperado = {};
636 595
637 - $scope.abrirRequisitoNegocio = function(edit) { 596 + $timeout(function() {
  597 + $scope.$openModal('modal-beneficio-esperado.html', 'lg');
  598 + });
  599 + };
638 600
639 - ObjetivoEstrategicoRepository.findAllByOrganizacao().then(function(result) {  
640 - $scope.objetivosEstrategicos = result;  
641 - }); 601 + // responsavel por abrir modal de adicao de um recurso material
  602 + $scope.openModalRecursoMaterial = function() {
642 603
643 - $scope.editRequisitoNegocio = edit; 604 + $scope.estudoTecnicoRecursoMaterialTemp = {
  605 + disponivel : true
  606 + };
644 607
645 - $scope.reqNegocio = null;  
646 - // recupera a EstudoTecnico selecionada  
647 - var requisitosSelecionados = $scope.getReqNegocioChecked(); 608 + $scope.editRecursoMaterial = true;
  609 + $scope.$openModal('modal-recurso-material.html', 'lg');
  610 + };
648 611
649 - if (requisitosSelecionados.length > 1) {  
650 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));  
651 - return;  
652 - } 612 + // Responsavel por abrir modal de adicao de um recurso humano
  613 + $scope.openModalRecursoHumano = function() {
653 614
654 - if(requisitosSelecionados.length === 0) {  
655 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
656 - return;  
657 - } 615 + $scope.estudoTecnicoRecursoHumanoTemp = {};
  616 + $scope.editRecursoHumano = true;
  617 + $scope.$openModal('modal-recurso-humano.html', 'lg');
  618 + };
658 619
659 - $scope.reqNegocio = requisitosSelecionados[0]; 620 + $scope.openModalAcaoContingencia = function() {
  621 + $scope.editAcaoCont = true;
660 622
661 - $scope.reqNegocio.objetivoEstrategico = angular.copy($scope.reqNegocio.objetivoEstrategicoNecessidade.objetivoEstrategico); 623 + $scope.acaoCont = {};
662 624
663 - $timeout(function() {  
664 - $scope.$openModal('modal-requisito-negocio.html', 'lg');  
665 - });  
666 - }; 625 + $timeout(function() {
  626 + $scope.$openModal('modal-acao-contingencia.html', 'lg');
  627 + });
  628 + };
667 629
668 - $scope.abrirSolucao = function(edit) { 630 + $scope.abrirRequisitoNegocio = function(edit) {
669 631
670 - $scope.editSolucao = edit; 632 + ObjetivoEstrategicoRepository.findAllByOrganizacao().then(function(result) {
  633 + $scope.objetivosEstrategicos = result;
  634 + });
671 635
672 - $scope.solucao = null; 636 + $scope.editRequisitoNegocio = edit;
673 637
674 - var solucoesSelecionadas = $scope.getSolucaoChecked(); 638 + $scope.reqNegocio = null;
  639 + // recupera a EstudoTecnico selecionada
  640 + var requisitosSelecionados = $scope.getReqNegocioChecked();
675 641
676 - if (solucoesSelecionadas.length > 1) {  
677 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));  
678 - return;  
679 - } 642 + if (requisitosSelecionados.length > 1) {
  643 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));
  644 + return;
  645 + }
680 646
681 - if(solucoesSelecionadas.length === 0) {  
682 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
683 - return;  
684 - } 647 + if(requisitosSelecionados.length === 0) {
  648 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  649 + return;
  650 + }
685 651
686 - $scope.solucao = solucoesSelecionadas[0]; 652 + $scope.reqNegocio = requisitosSelecionados[0];
687 653
688 - if ($scope.solucao.fornecedor) {  
689 - $scope.solucao.fornecedor['pessoa.nome'] = $scope.solucao.fornecedor.pessoa.nome;  
690 - } 654 + $scope.reqNegocio.objetivoEstrategico = angular.copy($scope.reqNegocio.objetivoEstrategicoNecessidade.objetivoEstrategico);
691 655
692 - for (var i = 0; i < $scope.solucao.etlaQuestionario.etQuestionarioRespostas.length; i++) {  
693 - $scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index = i + 1;  
694 - } 656 + $timeout(function() {
  657 + $scope.$openModal('modal-requisito-negocio.html', 'lg');
  658 + });
  659 + };
695 660
696 - $timeout(function() {  
697 - $scope.$openModal('modal-solucao.html', 'lg');  
698 - });  
699 - }; 661 + $scope.abrirSolucao = function(edit) {
700 662
701 - $scope.abrirBensServico = function(edit) { 663 + $scope.editSolucao = edit;
702 664
703 - $scope.editBemServico = edit; 665 + $scope.solucao = null;
704 666
705 - $scope.bemServico = null; 667 + var solucoesSelecionadas = $scope.getSolucaoChecked();
706 668
707 - var bensServicosSelecionados = $scope.getBemServicoChecked(); 669 + if (solucoesSelecionadas.length > 1) {
  670 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));
  671 + return;
  672 + }
708 673
709 - if (bensServicosSelecionados.length > 1) {  
710 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));  
711 - return;  
712 - } 674 + if(solucoesSelecionadas.length === 0) {
  675 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  676 + return;
  677 + }
713 678
714 - if(bensServicosSelecionados.length === 0) {  
715 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
716 - return;  
717 - } 679 + $scope.solucao = solucoesSelecionadas[0];
718 680
719 - $scope.bemServico = bensServicosSelecionados[0]; 681 + if ($scope.solucao.fornecedor) {
  682 + $scope.solucao.fornecedor['pessoa.nome'] = $scope.solucao.fornecedor.pessoa.nome;
  683 + }
720 684
721 - $timeout(function() {  
722 - $scope.$openModal('modal-bem-servico.html', 'lg');  
723 - });  
724 - }; 685 + for (var i = 0; i < $scope.solucao.etlaQuestionario.etQuestionarioRespostas.length; i++) {
  686 + $scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index = i + 1;
  687 + }
725 688
726 - $scope.abrirBeneficioEsperado = function(edit) { 689 + $timeout(function() {
  690 + $scope.$openModal('modal-solucao.html', 'lg');
  691 + });
  692 + };
727 693
728 - $scope.editBeneficioEsperado = edit; 694 + $scope.abrirBensServico = function(edit) {
729 695
730 - $scope.beneficioEsperado = null; 696 + $scope.editBemServico = edit;
731 697
732 - var beneficiosSelecionados = $scope.getBeneficioEsperadoChecked(); 698 + $scope.bemServico = null;
733 699
734 - if (beneficiosSelecionados.length > 1) {  
735 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));  
736 - return;  
737 - } 700 + var bensServicosSelecionados = $scope.getBemServicoChecked();
738 701
739 - if(beneficiosSelecionados.length === 0) {  
740 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
741 - return;  
742 - } 702 + if (bensServicosSelecionados.length > 1) {
  703 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));
  704 + return;
  705 + }
743 706
744 - $scope.beneficioEsperado = beneficiosSelecionados[0]; 707 + if(bensServicosSelecionados.length === 0) {
  708 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  709 + return;
  710 + }
745 711
746 - $timeout(function() {  
747 - $scope.$openModal('modal-beneficio-esperado.html', 'lg');  
748 - });  
749 - }; 712 + $scope.bemServico = bensServicosSelecionados[0];
750 713
751 - // Responsavel por abrir modal de recurso material para edicao ou visualizacao do item selecionado  
752 - $scope.abrirRecursoMaterial = function(edit) { 714 + $timeout(function() {
  715 + $scope.$openModal('modal-bem-servico.html', 'lg');
  716 + });
  717 + };
753 718
754 - $scope.editRecursoMaterial = edit; 719 + $scope.abrirBeneficioEsperado = function(edit) {
755 720
756 - $scope.estudoTecnicoRecursoMaterialTemp = null; 721 + $scope.editBeneficioEsperado = edit;
757 722
758 - var recursosMateriaisSelecionados = $scope.getRecursoMaterialChecked(); 723 + $scope.beneficioEsperado = null;
759 724
760 - if (recursosMateriaisSelecionados.length > 1) {  
761 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));  
762 - return;  
763 - } 725 + var beneficiosSelecionados = $scope.getBeneficioEsperadoChecked();
764 726
765 - if(recursosMateriaisSelecionados.length === 0) {  
766 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
767 - return;  
768 - } 727 + if (beneficiosSelecionados.length > 1) {
  728 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));
  729 + return;
  730 + }
769 731
770 - $scope.estudoTecnicoRecursoMaterialTemp = recursosMateriaisSelecionados[0]; 732 + if(beneficiosSelecionados.length === 0) {
  733 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  734 + return;
  735 + }
771 736
772 - $timeout(function() {  
773 - $scope.$openModal('modal-recurso-material.html', 'lg');  
774 - });  
775 - }; 737 + $scope.beneficioEsperado = beneficiosSelecionados[0];
776 738
777 - // Responsavel por abrir modal de recurso humano para edicao ou visualizacao do item selecionado  
778 - $scope.abrirRecursoHumano = function(edit) { 739 + $timeout(function() {
  740 + $scope.$openModal('modal-beneficio-esperado.html', 'lg');
  741 + });
  742 + };
779 743
780 - $scope.editRecursoHumano = edit; 744 + // Responsavel por abrir modal de recurso material para edicao ou visualizacao do item selecionado
  745 + $scope.abrirRecursoMaterial = function(edit) {
781 746
782 - $scope.estudoTecnicoRecursoHumanoTemp = null; 747 + $scope.editRecursoMaterial = edit;
783 748
784 - var recursosHumanosSelecionados = $scope.getRecursoHumanoChecked(); 749 + $scope.estudoTecnicoRecursoMaterialTemp = null;
785 750
786 - if (recursosHumanosSelecionados.length > 1) {  
787 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));  
788 - return;  
789 - } 751 + var recursosMateriaisSelecionados = $scope.getRecursoMaterialChecked();
790 752
791 - if(recursosHumanosSelecionados.length === 0) {  
792 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
793 - return;  
794 - } 753 + if (recursosMateriaisSelecionados.length > 1) {
  754 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));
  755 + return;
  756 + }
795 757
796 - $scope.estudoTecnicoRecursoHumanoTemp = recursosHumanosSelecionados[0]; 758 + if(recursosMateriaisSelecionados.length === 0) {
  759 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  760 + return;
  761 + }
797 762
798 - $timeout(function() {  
799 - $scope.$openModal('modal-recurso-humano.html', 'lg');  
800 - });  
801 - }; 763 + $scope.estudoTecnicoRecursoMaterialTemp = recursosMateriaisSelecionados[0];
802 764
803 - $scope.abrirAcaoContingencia = function(edit) { 765 + $timeout(function() {
  766 + $scope.$openModal('modal-recurso-material.html', 'lg');
  767 + });
  768 + };
804 769
805 - $scope.editAcaoCont = edit; 770 + // Responsavel por abrir modal de recurso humano para edicao ou visualizacao do item selecionado
  771 + $scope.abrirRecursoHumano = function(edit) {
806 772
807 - $scope.acaoCont = null; 773 + $scope.editRecursoHumano = edit;
808 774
809 - var acoesSelecionadas = $scope.getAcaoContChecked(); 775 + $scope.estudoTecnicoRecursoHumanoTemp = null;
810 776
811 - if (acoesSelecionadas.length > 1) {  
812 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));  
813 - return;  
814 - } 777 + var recursosHumanosSelecionados = $scope.getRecursoHumanoChecked();
815 778
816 - if(acoesSelecionadas.length === 0) {  
817 - $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
818 - return;  
819 - } 779 + if (recursosHumanosSelecionados.length > 1) {
  780 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));
  781 + return;
  782 + }
820 783
821 - $scope.acaoCont = acoesSelecionadas[0]; 784 + if(recursosHumanosSelecionados.length === 0) {
  785 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  786 + return;
  787 + }
822 788
823 - $timeout(function() {  
824 - $scope.$openModal('modal-acao-contingencia.html', 'lg');  
825 - });  
826 - }; 789 + $scope.estudoTecnicoRecursoHumanoTemp = recursosHumanosSelecionados[0];
827 790
828 - $scope.removerRequisitoNegocio = function() {  
829 - // recupera a EstudoTecnico selecionada  
830 - var requisitosSelecionados = $scope.getReqNegocioChecked(); 791 + $timeout(function() {
  792 + $scope.$openModal('modal-recurso-humano.html', 'lg');
  793 + });
  794 + };
831 795
832 - if (requisitosSelecionados.length > 0) {  
833 - $scope.$openModalConfirm({  
834 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
835 - callback: function() { 796 + $scope.abrirAcaoContingencia = function(edit) {
836 797
837 - $scope.$modalConfirmInstance.dismiss('cancel'); 798 + $scope.editAcaoCont = edit;
838 799
839 - for (var i = 0; i < requisitosSelecionados.length; i++) {  
840 - if (requisitosSelecionados[i].id) {  
841 - EstudoTecnicoRequisitoNegocioRepository.remove(requisitosSelecionados[i]).then(function(result) {  
842 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
843 - });  
844 - }  
845 - }  
846 - var requisitos = [];  
847 - for (var i = 0; i < $scope.estudoTecnico.etRequisitosNegocio.length; i++) {  
848 - if (!$scope.estudoTecnico.etRequisitosNegocio[i].$checked) {  
849 - requisitos.push($scope.estudoTecnico.etRequisitosNegocio[i]);  
850 - }  
851 - }  
852 - $scope.listaRequisitoTecSelecao = [];  
853 - $scope.estudoTecnico.etRequisitosNegocio = requisitos;  
854 - $scope.atualizarListaSizeSelectReqNegocio();  
855 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
856 - }  
857 - });  
858 - } else {  
859 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));  
860 - }  
861 - }; 800 + $scope.acaoCont = null;
  801 +
  802 + var acoesSelecionadas = $scope.getAcaoContChecked();
  803 +
  804 + if (acoesSelecionadas.length > 1) {
  805 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_APENAS_UM_ITEM_PARA_VISUALIZACAO'));
  806 + return;
  807 + }
  808 +
  809 + if(acoesSelecionadas.length === 0) {
  810 + $scope.showAlert('warning', edit? $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO') : $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  811 + return;
  812 + }
  813 +
  814 + $scope.acaoCont = acoesSelecionadas[0];
  815 +
  816 + $timeout(function() {
  817 + $scope.$openModal('modal-acao-contingencia.html', 'lg');
  818 + });
  819 + };
  820 +
  821 + $scope.removerRequisitoNegocio = function() {
  822 + // recupera a EstudoTecnico selecionada
  823 + var requisitosSelecionados = $scope.getReqNegocioChecked();
  824 +
  825 + if (requisitosSelecionados.length > 0) {
  826 + $scope.$openModalConfirm({
  827 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  828 + callback: function() {
  829 +
  830 + $scope.$modalConfirmInstance.dismiss('cancel');
  831 +
  832 + for (var i = 0; i < requisitosSelecionados.length; i++) {
  833 + if (requisitosSelecionados[i].id) {
  834 + EstudoTecnicoRequisitoNegocioRepository.remove(requisitosSelecionados[i]).then(function(result) {
  835 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  836 + });
  837 + }
  838 + }
  839 + var requisitos = [];
  840 + for (var i = 0; i < $scope.estudoTecnico.etRequisitosNegocio.length; i++) {
  841 + if (!$scope.estudoTecnico.etRequisitosNegocio[i].$checked) {
  842 + requisitos.push($scope.estudoTecnico.etRequisitosNegocio[i]);
  843 + }
  844 + }
  845 + $scope.listaRequisitoTecSelecao = [];
  846 + $scope.estudoTecnico.etRequisitosNegocio = requisitos;
  847 + $scope.atualizarListaSizeSelectReqNegocio();
  848 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  849 + }
  850 + });
  851 + } else {
  852 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));
  853 + }
  854 + };
  855 +
  856 + $scope.removerSolucao = function() {
  857 + var solucoesSelecionadas = $scope.getSolucaoChecked();
  858 +
  859 + if (solucoesSelecionadas.length > 0) {
  860 + $scope.$openModalConfirm({
  861 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  862 + callback: function() {
  863 +
  864 + $scope.$modalConfirmInstance.dismiss('cancel');
  865 +
  866 + for (var i = 0; i < solucoesSelecionadas.length; i++) {
  867 + if (solucoesSelecionadas[i].id) {
  868 + EstudoTecnicoLevantamentoAlternativasRepository.remove(solucoesSelecionadas[i]).then(function(result) {
  869 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  870 + });
  871 + }
  872 + }
  873 + var solucoes = [];
  874 + for (var i = 0; i < $scope.estudoTecnico.etLevantamentoAlternativas.length; i++) {
  875 + if (!$scope.estudoTecnico.etLevantamentoAlternativas[i].$checked) {
  876 + solucoes.push($scope.estudoTecnico.etLevantamentoAlternativas[i]);
  877 + }
  878 + }
  879 + $scope.listaAlternativa = [];
  880 + $scope.estudoTecnico.etLevantamentoAlternativas = solucoes;
  881 + $scope.atualizarListaSizeSelectSolucao();
  882 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  883 + }
  884 + });
  885 + } else {
  886 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));
  887 + }
  888 + };
  889 +
  890 + $scope.removerBensServico = function() {
  891 + var bensServicosSelecionados = $scope.getBemServicoChecked();
  892 +
  893 + if (bensServicosSelecionados.length > 0) {
  894 + $scope.$openModalConfirm({
  895 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  896 + callback: function() {
  897 + $scope.$modalConfirmInstance.dismiss('cancel');
  898 +
  899 + for (var i = 0; i < bensServicosSelecionados.length; i++) {
  900 + if (bensServicosSelecionados[i].id) {
  901 + EstudoTecnicoBemServicoSolucaoRepository.remove(bensServicosSelecionados[i]).then(function(result) {
  902 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  903 + });
  904 + }
  905 + }
  906 + var bensServicos = [];
  907 + for (var i = 0; i < $scope.estudoTecnico.etBensServicosSolucoes.length; i++) {
  908 + if (!$scope.estudoTecnico.etBensServicosSolucoes[i].$checked) {
  909 + bensServicos.push($scope.estudoTecnico.etBensServicosSolucoes[i]);
  910 + }
  911 + }
  912 + $scope.estudoTecnico.etBensServicosSolucoes = bensServicos;
  913 + $scope.atualizarListaSizeSelectServicoSolucao();
  914 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  915 + }
  916 + });
  917 + } else {
  918 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));
  919 + }
  920 + };
862 921
863 - $scope.removerSolucao = function() {  
864 - var solucoesSelecionadas = $scope.getSolucaoChecked(); 922 + $scope.removerBeneficioEsperado = function() {
865 923
866 - if (solucoesSelecionadas.length > 0) {  
867 - $scope.$openModalConfirm({  
868 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
869 - callback: function() { 924 + var beneficiosSelecionados = $scope.getBeneficioEsperadoChecked();
870 925
871 - $scope.$modalConfirmInstance.dismiss('cancel'); 926 + if (beneficiosSelecionados.length > 0) {
  927 + $scope.$openModalConfirm({
  928 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  929 + callback: function() {
  930 + $scope.$modalConfirmInstance.dismiss('cancel');
872 931
873 - for (var i = 0; i < solucoesSelecionadas.length; i++) {  
874 - if (solucoesSelecionadas[i].id) {  
875 - EstudoTecnicoLevantamentoAlternativasRepository.remove(solucoesSelecionadas[i]).then(function(result) {  
876 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
877 - });  
878 - }  
879 - }  
880 - var solucoes = [];  
881 - for (var i = 0; i < $scope.estudoTecnico.etLevantamentoAlternativas.length; i++) {  
882 - if (!$scope.estudoTecnico.etLevantamentoAlternativas[i].$checked) {  
883 - solucoes.push($scope.estudoTecnico.etLevantamentoAlternativas[i]);  
884 - }  
885 - }  
886 - $scope.listaAlternativa = [];  
887 - $scope.estudoTecnico.etLevantamentoAlternativas = solucoes;  
888 - $scope.atualizarListaSizeSelectSolucao();  
889 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
890 - }  
891 - });  
892 - } else {  
893 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));  
894 - }  
895 - }; 932 + for (var i = 0; i < beneficiosSelecionados.length; i++) {
  933 + if (beneficiosSelecionados[i].id) {
  934 + EstudoTecnicoBeneficioEsperadoRepository.remove(beneficiosSelecionados[i]).then(function(result) {
  935 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  936 + });
  937 + }
  938 + }
  939 + var beneficios = [];
  940 + for (var i = 0; i < $scope.estudoTecnico.etBeneficiosEsperados.length; i++) {
  941 + if (!$scope.estudoTecnico.etBeneficiosEsperados[i].$checked) {
  942 + beneficios.push($scope.estudoTecnico.etBeneficiosEsperados[i]);
  943 + }
  944 + }
  945 + $scope.listaBeneficio = [];
  946 + $scope.estudoTecnico.etBeneficiosEsperados = beneficios;
  947 + $scope.atualizarListaSizeSelectBeneficio();
  948 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  949 + }
  950 + });
  951 + } else {
  952 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));
  953 + }
  954 + };
896 955
897 - $scope.removerBensServico = function() {  
898 - var bensServicosSelecionados = $scope.getBemServicoChecked();  
899 -  
900 - if (bensServicosSelecionados.length > 0) {  
901 - $scope.$openModalConfirm({  
902 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
903 - callback: function() {  
904 - $scope.$modalConfirmInstance.dismiss('cancel');  
905 -  
906 - for (var i = 0; i < bensServicosSelecionados.length; i++) {  
907 - if (bensServicosSelecionados[i].id) {  
908 - EstudoTecnicoBemServicoSolucaoRepository.remove(bensServicosSelecionados[i]).then(function(result) {  
909 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
910 - });  
911 - }  
912 - }  
913 - var bensServicos = [];  
914 - for (var i = 0; i < $scope.estudoTecnico.etBensServicosSolucoes.length; i++) {  
915 - if (!$scope.estudoTecnico.etBensServicosSolucoes[i].$checked) {  
916 - bensServicos.push($scope.estudoTecnico.etBensServicosSolucoes[i]);  
917 - }  
918 - }  
919 - $scope.estudoTecnico.etBensServicosSolucoes = bensServicos;  
920 - $scope.atualizarListaSizeSelectServicoSolucao();  
921 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
922 - }  
923 - });  
924 - } else {  
925 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));  
926 - }  
927 - }; 956 + //responsavel por remover um/ou mais recurs(o)s materiais do estudo tecnico
  957 + $scope.removerRecursoMaterial = function (){
928 958
929 - $scope.removerBeneficioEsperado = function() { 959 + var recursosMateriaisSelecionados = $scope.getRecursoMaterialChecked();
930 960
931 - var beneficiosSelecionados = $scope.getBeneficioEsperadoChecked(); 961 + if (recursosMateriaisSelecionados.length > 0) {
  962 + $scope.$openModalConfirm({
  963 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  964 + callback: function() {
  965 + $scope.$modalConfirmInstance.dismiss('cancel');
932 966
933 - if (beneficiosSelecionados.length > 0) {  
934 - $scope.$openModalConfirm({  
935 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
936 - callback: function() {  
937 - $scope.$modalConfirmInstance.dismiss('cancel'); 967 + for (var i = 0; i < recursosMateriaisSelecionados.length; i++) {
  968 + if (recursosMateriaisSelecionados[i].id) {
  969 + EstudoTecnicoRecursoMaterialRepository.remove(recursosMateriaisSelecionados[i]).then(function(result) {
  970 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  971 + });
  972 + }
  973 + }
  974 + var recursosMateriais = [];
  975 + for (var i = 0; i < $scope.estudoTecnico.etRecursosMateriais.length; i++) {
  976 + if (!$scope.estudoTecnico.etRecursosMateriais[i].$checked) {
  977 + recursosMateriais.push($scope.estudoTecnico.etRecursosMateriais[i]);
  978 + }
  979 + }
  980 + $scope.listaRecursoMateriais = [];
  981 + $scope.estudoTecnico.etRecursosMateriais = recursosMateriais;
  982 + $scope.atualizarListaSizeSelectRecursoMaterial();
  983 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  984 + }
  985 + });
  986 + } else {
  987 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));
  988 + }
  989 + };
938 990
939 - for (var i = 0; i < beneficiosSelecionados.length; i++) {  
940 - if (beneficiosSelecionados[i].id) {  
941 - EstudoTecnicoBeneficioEsperadoRepository.remove(beneficiosSelecionados[i]).then(function(result) {  
942 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
943 - });  
944 - }  
945 - }  
946 - var beneficios = [];  
947 - for (var i = 0; i < $scope.estudoTecnico.etBeneficiosEsperados.length; i++) {  
948 - if (!$scope.estudoTecnico.etBeneficiosEsperados[i].$checked) {  
949 - beneficios.push($scope.estudoTecnico.etBeneficiosEsperados[i]);  
950 - }  
951 - }  
952 - $scope.listaBeneficio = [];  
953 - $scope.estudoTecnico.etBeneficiosEsperados = beneficios;  
954 - $scope.atualizarListaSizeSelectBeneficio();  
955 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
956 - }  
957 - });  
958 - } else {  
959 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));  
960 - }  
961 - }; 991 + //responsavel por remover um/ou mais recurs(o)s humanos do estudo tecnico
  992 + $scope.removerRecursoHumano = function (){
962 993
963 - //responsavel por remover um/ou mais recurs(o)s materiais do estudo tecnico  
964 - $scope.removerRecursoMaterial = function (){ 994 + var recursosHumanosSelecionados = $scope.getRecursoHumanoChecked();
965 995
966 - var recursosMateriaisSelecionados = $scope.getRecursoMaterialChecked(); 996 + if (recursosHumanosSelecionados.length > 0) {
  997 + $scope.$openModalConfirm({
  998 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  999 + callback: function() {
  1000 + $scope.$modalConfirmInstance.dismiss('cancel');
967 1001
968 - if (recursosMateriaisSelecionados.length > 0) {  
969 - $scope.$openModalConfirm({  
970 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
971 - callback: function() {  
972 - $scope.$modalConfirmInstance.dismiss('cancel'); 1002 + for (var i = 0; i < recursosHumanosSelecionados.length; i++) {
  1003 + if (recursosHumanosSelecionados[i].id) {
  1004 + EstudoTecnicoRecursoHumanoRepository.remove(recursosHumanosSelecionados[i]).then(function(result) {
  1005 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  1006 + });
  1007 + }
  1008 + }
  1009 + var recursosHumanos = [];
  1010 + for (var i = 0; i < $scope.estudoTecnico.etRecursosHumanos.length; i++) {
  1011 + if (!$scope.estudoTecnico.etRecursosHumanos[i].$checked) {
  1012 + recursosHumanos.push($scope.estudoTecnico.etRecursosHumanos[i]);
  1013 + }
  1014 + }
  1015 + $scope.estudoTecnico.etRecursosHumanos = recursosHumanos;
  1016 + $scope.listaRecursoHumanos = [];
  1017 + $scope.atualizarListaSizeSelectRecursoHumano();
  1018 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  1019 + }
  1020 + });
  1021 + } else {
  1022 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));
  1023 + }
  1024 + };
973 1025
974 - for (var i = 0; i < recursosMateriaisSelecionados.length; i++) {  
975 - if (recursosMateriaisSelecionados[i].id) {  
976 - EstudoTecnicoRecursoMaterialRepository.remove(recursosMateriaisSelecionados[i]).then(function(result) {  
977 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
978 - });  
979 - }  
980 - }  
981 - var recursosMateriais = [];  
982 - for (var i = 0; i < $scope.estudoTecnico.etRecursosMateriais.length; i++) {  
983 - if (!$scope.estudoTecnico.etRecursosMateriais[i].$checked) {  
984 - recursosMateriais.push($scope.estudoTecnico.etRecursosMateriais[i]);  
985 - }  
986 - }  
987 - $scope.listaRecursoMateriais = [];  
988 - $scope.estudoTecnico.etRecursosMateriais = recursosMateriais;  
989 - $scope.atualizarListaSizeSelectRecursoMaterial();  
990 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
991 - }  
992 - });  
993 - } else {  
994 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));  
995 - }  
996 - }; 1026 + $scope.removerAcaoContingencia = function() {
997 1027
998 - //responsavel por remover um/ou mais recurs(o)s humanos do estudo tecnico  
999 - $scope.removerRecursoHumano = function (){ 1028 + var acoesSelecionadas = $scope.getAcaoContChecked();
1000 1029
1001 - var recursosHumanosSelecionados = $scope.getRecursoHumanoChecked(); 1030 + if (acoesSelecionadas.length > 0) {
  1031 + $scope.$openModalConfirm({
  1032 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  1033 + callback: function() {
  1034 + $scope.$modalConfirmInstance.dismiss('cancel');
1002 1035
1003 - if (recursosHumanosSelecionados.length > 0) {  
1004 - $scope.$openModalConfirm({  
1005 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
1006 - callback: function() {  
1007 - $scope.$modalConfirmInstance.dismiss('cancel'); 1036 + for (var i = 0; i < acoesSelecionadas.length; i++) {
  1037 + if (acoesSelecionadas[i].id) {
  1038 + EstudoTecnicoAcaoContingenciaRepository.remove(acoesSelecionadas[i]).then(function(result) {
  1039 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  1040 + });
  1041 + }
  1042 + }
  1043 + var acoes = [];
  1044 + for (var i = 0; i < $scope.estudoTecnico.etAcoesContingencia.length; i++) {
  1045 + if (!$scope.estudoTecnico.etAcoesContingencia[i].$checked) {
  1046 + acoes.push($scope.estudoTecnico.etAcoesContingencia[i]);
  1047 + }
  1048 + }
  1049 + $scope.estudoTecnico.etAcoesContingencia = acoes;
  1050 + $scope.listaAcoesContigencia = [];
  1051 + $scope.atualizarListaSizeSelectAcaoContigencia();
  1052 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  1053 + }
  1054 + });
  1055 + } else {
  1056 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));
  1057 + }
  1058 + };
1008 1059
1009 - for (var i = 0; i < recursosHumanosSelecionados.length; i++) {  
1010 - if (recursosHumanosSelecionados[i].id) {  
1011 - EstudoTecnicoRecursoHumanoRepository.remove(recursosHumanosSelecionados[i]).then(function(result) {  
1012 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
1013 - });  
1014 - }  
1015 - }  
1016 - var recursosHumanos = [];  
1017 - for (var i = 0; i < $scope.estudoTecnico.etRecursosHumanos.length; i++) {  
1018 - if (!$scope.estudoTecnico.etRecursosHumanos[i].$checked) {  
1019 - recursosHumanos.push($scope.estudoTecnico.etRecursosHumanos[i]);  
1020 - }  
1021 - }  
1022 - $scope.estudoTecnico.etRecursosHumanos = recursosHumanos;  
1023 - $scope.listaRecursoHumanos = [];  
1024 - $scope.atualizarListaSizeSelectRecursoHumano();  
1025 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
1026 - }  
1027 - });  
1028 - } else {  
1029 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));  
1030 - }  
1031 - }; 1060 + // recupera solucao selecionada
  1061 + $scope.getQuestaoChecked = function() {
  1062 + var questaoChecked = null;
  1063 + if ($scope.solucao.etlaQuestionario.etQuestionarioRespostas) {
  1064 + for (var i = 0; i < $scope.solucao.etlaQuestionario.etQuestionarioRespostas.length; i++) {
  1065 + if ($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].$checked) {
  1066 + questaoChecked = $scope.solucao.etlaQuestionario.etQuestionarioRespostas[i];
  1067 + }
  1068 + }
  1069 + }
  1070 + return questaoChecked;
  1071 + };
1032 1072
1033 - $scope.removerAcaoContingencia = function() { 1073 + $scope.addQuestao = function() {
  1074 + $scope.solucao.etlaQuestionario.etQuestionarioRespostas.push({
  1075 + questionarioPergunta : angular.copy($scope.questaoTemplate),
  1076 + index : angular.copy($scope.solucao.etlaQuestionario.etQuestionarioRespostas.length) + 1,
  1077 + edit : true
  1078 + });
  1079 + };
1034 1080
1035 - var acoesSelecionadas = $scope.getAcaoContChecked(); 1081 + $scope.editQuestao = function() {
  1082 + var questao = $scope.getQuestaoChecked();
1036 1083
1037 - if (acoesSelecionadas.length > 0) {  
1038 - $scope.$openModalConfirm({  
1039 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
1040 - callback: function() {  
1041 - $scope.$modalConfirmInstance.dismiss('cancel'); 1084 + if(!questao) {
  1085 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));
  1086 + return;
  1087 + }
1042 1088
1043 - for (var i = 0; i < acoesSelecionadas.length; i++) {  
1044 - if (acoesSelecionadas[i].id) {  
1045 - EstudoTecnicoAcaoContingenciaRepository.remove(acoesSelecionadas[i]).then(function(result) {  
1046 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
1047 - });  
1048 - }  
1049 - }  
1050 - var acoes = [];  
1051 - for (var i = 0; i < $scope.estudoTecnico.etAcoesContingencia.length; i++) {  
1052 - if (!$scope.estudoTecnico.etAcoesContingencia[i].$checked) {  
1053 - acoes.push($scope.estudoTecnico.etAcoesContingencia[i]);  
1054 - }  
1055 - }  
1056 - $scope.estudoTecnico.etAcoesContingencia = acoes;  
1057 - $scope.listaAcoesContigencia = [];  
1058 - $scope.atualizarListaSizeSelectAcaoContigencia();  
1059 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
1060 - }  
1061 - });  
1062 - } else {  
1063 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_AO_MENOS_UM_ITEM_PARA_SER_REMOVIDO'));  
1064 - }  
1065 - }; 1089 + questao.edit = true;
  1090 + };
1066 1091
1067 - // recupera solucao selecionada  
1068 - $scope.getQuestaoChecked = function() {  
1069 - var questaoChecked = null;  
1070 - if ($scope.solucao.etlaQuestionario.etQuestionarioRespostas) {  
1071 - for (var i = 0; i < $scope.solucao.etlaQuestionario.etQuestionarioRespostas.length; i++) {  
1072 - if ($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].$checked) {  
1073 - questaoChecked = $scope.solucao.etlaQuestionario.etQuestionarioRespostas[i];  
1074 - }  
1075 - }  
1076 - }  
1077 - return questaoChecked;  
1078 - }; 1092 + $scope.removerQuestao = function() {
  1093 + var questao = $scope.getQuestaoChecked();
1079 1094
1080 - $scope.addQuestao = function() {  
1081 - $scope.solucao.etlaQuestionario.etQuestionarioRespostas.push({  
1082 - questionarioPergunta : angular.copy($scope.questaoTemplate),  
1083 - index : angular.copy($scope.solucao.etlaQuestionario.etQuestionarioRespostas.length) + 1,  
1084 - edit : true  
1085 - });  
1086 - }; 1095 + if(!questao) {
  1096 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_ITEM_EXCLUIR'));
  1097 + return;
  1098 + }
  1099 + $scope.cancelarQuestao(questao);
  1100 + };
1087 1101
1088 - $scope.editQuestao = function() {  
1089 - var questao = $scope.getQuestaoChecked(); 1102 + $scope.salvarQuestao = function(questao) {
  1103 + if (questao.questionarioPergunta.questao) {
  1104 + questao.edit = !questao.edit;
  1105 + } else {
  1106 + $scope.showAlert('warning', $translate.instant('MSG.QUESTAO_VAZIA'));
  1107 + }
  1108 + };
1090 1109
1091 - if(!questao) {  
1092 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));  
1093 - return;  
1094 - } 1110 + $scope.cancelarQuestao = function(questao) {
  1111 + var questTemp = [];
  1112 + for (var i = 0; i < $scope.solucao.etlaQuestionario.etQuestionarioRespostas.length; i++) {
  1113 + if ($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index < questao.index) {
  1114 + questTemp.push($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i]);
  1115 + }
  1116 + if ($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index > questao.index) {
  1117 + $scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index--;
  1118 + questTemp.push($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i]);
  1119 + }
  1120 + if (($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index === questao.index) && $scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].id) {
  1121 + $scope.removerRespostaPergunta($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i]);
  1122 + }
  1123 + }
  1124 + $scope.solucao.etlaQuestionario.etQuestionarioRespostas = questTemp;
  1125 + };
1095 1126
1096 - questao.edit = true;  
1097 - }; 1127 + $scope.removerRespostaPergunta = function(resposta) {
  1128 + if (resposta) {
  1129 + var pergunta = resposta.questionarioPergunta;
  1130 + $scope.$openModalConfirm({
  1131 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  1132 + callback: function() {
  1133 + $scope.$modalConfirmInstance.dismiss('cancel');
  1134 + if ($scope.resposta.id) {
  1135 + EstudoTecnicoQuestionarioRespostaRepository.remove(resposta).then(function(result) {
  1136 + $scope.removerPergunta(pergunta);
  1137 + });
  1138 + } else {
  1139 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  1140 + }
  1141 + }
  1142 + });
  1143 + } else {
  1144 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));
  1145 + }
  1146 + };
1098 1147
1099 - $scope.removerQuestao = function() {  
1100 - var questao = $scope.getQuestaoChecked(); 1148 + $scope.removerPergunta = function(pergunta) {
  1149 + if (pergunta) {
  1150 + QuestionarioPerguntaRepository.remove(pergunta).then(function(result) {
  1151 + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));
  1152 + });
  1153 + } else {
  1154 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));
  1155 + }
  1156 + };
1101 1157
1102 - if(!questao) {  
1103 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_ITEM_EXCLUIR'));  
1104 - return;  
1105 - }  
1106 - $scope.cancelarQuestao(questao);  
1107 - }; 1158 + // ADICIONAR Requisito de negócio
  1159 + $scope.salvaRequisitoNegocio = function(formDialogRequisitoNegocio, continuarEditando) {
1108 1160
1109 - $scope.salvarQuestao = function(questao) {  
1110 - if (questao.questionarioPergunta.questao) {  
1111 - questao.edit = !questao.edit;  
1112 - } else {  
1113 - $scope.showAlert('warning', $translate.instant('MSG.QUESTAO_VAZIA'));  
1114 - }  
1115 - }; 1161 + formDialogRequisitoNegocio.$submitted = true;
1116 1162
1117 - $scope.cancelarQuestao = function(questao) {  
1118 - var questTemp = [];  
1119 - for (var i = 0; i < $scope.solucao.etlaQuestionario.etQuestionarioRespostas.length; i++) {  
1120 - if ($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index < questao.index) {  
1121 - questTemp.push($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i]);  
1122 - }  
1123 - if ($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index > questao.index) {  
1124 - $scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index--;  
1125 - questTemp.push($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i]);  
1126 - }  
1127 - if (($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].index === questao.index) && $scope.solucao.etlaQuestionario.etQuestionarioRespostas[i].id) {  
1128 - $scope.removerRespostaPergunta($scope.solucao.etlaQuestionario.etQuestionarioRespostas[i]);  
1129 - }  
1130 - }  
1131 - $scope.solucao.etlaQuestionario.etQuestionarioRespostas = questTemp;  
1132 - }; 1163 + //verifica se o formulario está valido para salvar
  1164 + if (formDialogRequisitoNegocio.$invalid) {
  1165 + //Mensagem de erro de campos obrigatorios não preenchidos
  1166 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1167 + return;
  1168 + }
  1169 + $scope.reqNegocioTemp = angular.copy($scope.reqNegocio);
  1170 + if ($scope.reqNegocioTemp.objetivoEstrategicoNecessidade.originalElement) {
  1171 + $scope.reqNegocioTemp.objetivoEstrategicoNecessidade = $scope.reqNegocio.objetivoEstrategicoNecessidade.originalElement;
  1172 + } else {
  1173 + $scope.reqNegocioTemp.objetivoEstrategicoNecessidade = $scope.reqNegocio.objetivoEstrategicoNecessidade;
  1174 + }
  1175 + delete $scope.reqNegocioTemp.objetivoEstrategico;
  1176 + if ($scope.estudoTecnico.etRequisitosNegocio) {
  1177 + if ($scope.reqNegocio.$checked) {
  1178 + for (var i = 0; i < $scope.estudoTecnico.etRequisitosNegocio.length; i++) {
  1179 + if ($scope.estudoTecnico.etRequisitosNegocio[i].$checked) {
  1180 + $scope.estudoTecnico.etRequisitosNegocio[i] = $scope.reqNegocioTemp;
  1181 + }
  1182 + }
  1183 + } else {
  1184 + $scope.estudoTecnico.etRequisitosNegocio.push($scope.reqNegocioTemp);
  1185 + }
  1186 + } else {
  1187 + $scope.estudoTecnico.etRequisitosNegocio = [$scope.reqNegocioTemp];
  1188 + }
1133 1189
1134 - $scope.removerRespostaPergunta = function(resposta) {  
1135 - if (resposta) {  
1136 - var pergunta = resposta.questionarioPergunta;  
1137 - $scope.$openModalConfirm({  
1138 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
1139 - callback: function() {  
1140 - $scope.$modalConfirmInstance.dismiss('cancel');  
1141 - if ($scope.resposta.id) {  
1142 - EstudoTecnicoQuestionarioRespostaRepository.remove(resposta).then(function(result) {  
1143 - $scope.removerPergunta(pergunta);  
1144 - });  
1145 - } else {  
1146 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
1147 - }  
1148 - }  
1149 - });  
1150 - } else {  
1151 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));  
1152 - }  
1153 - }; 1190 + if(continuarEditando){
  1191 + formDialogRequisitoNegocio.$submitted = false;
  1192 + formDialogRequisitoNegocio.$setPristine();
  1193 + $scope.reqNegocioTemp = null;
  1194 + $scope.reqNegocio = {};
  1195 + return;
  1196 + }
  1197 + $scope.atualizarListaSizeSelectReqNegocio();
  1198 + $scope.$modalInstance.dismiss('cancel');
  1199 + };
1154 1200
1155 - $scope.removerPergunta = function(pergunta) {  
1156 - if (pergunta) {  
1157 - QuestionarioPerguntaRepository.remove(pergunta).then(function(result) {  
1158 - $scope.showAlert("success", $translate.instant('MSG.REGISTRO_EXCLUIDO'));  
1159 - });  
1160 - } else {  
1161 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));  
1162 - }  
1163 - }; 1201 + // ADICIONAR Solucao
  1202 + $scope.salvaSolucao = function(formDialogSolucao, continuarEditando) {
1164 1203
1165 - // ADICIONAR Requisito de negócio  
1166 - $scope.salvaRequisitoNegocio = function(formDialogRequisitoNegocio, continuarEditando) {  
1167 -  
1168 - formDialogRequisitoNegocio.$submitted = true;  
1169 -  
1170 - //verifica se o formulario está valido para salvar  
1171 - if (formDialogRequisitoNegocio.$invalid) {  
1172 - //Mensagem de erro de campos obrigatorios não preenchidos  
1173 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);  
1174 - return;  
1175 - }  
1176 - $scope.reqNegocioTemp = angular.copy($scope.reqNegocio);  
1177 - if ($scope.reqNegocioTemp.objetivoEstrategicoNecessidade.originalElement) {  
1178 - $scope.reqNegocioTemp.objetivoEstrategicoNecessidade = $scope.reqNegocio.objetivoEstrategicoNecessidade.originalElement;  
1179 - } else {  
1180 - $scope.reqNegocioTemp.objetivoEstrategicoNecessidade = $scope.reqNegocio.objetivoEstrategicoNecessidade;  
1181 - }  
1182 - delete $scope.reqNegocioTemp.objetivoEstrategico;  
1183 - if ($scope.estudoTecnico.etRequisitosNegocio) {  
1184 - if ($scope.reqNegocio.$checked) {  
1185 - for (var i = 0; i < $scope.estudoTecnico.etRequisitosNegocio.length; i++) {  
1186 - if ($scope.estudoTecnico.etRequisitosNegocio[i].$checked) {  
1187 - $scope.estudoTecnico.etRequisitosNegocio[i] = $scope.reqNegocioTemp;  
1188 - }  
1189 - }  
1190 - } else {  
1191 - $scope.estudoTecnico.etRequisitosNegocio.push($scope.reqNegocioTemp);  
1192 - }  
1193 - } else {  
1194 - $scope.estudoTecnico.etRequisitosNegocio = [$scope.reqNegocioTemp];  
1195 - }  
1196 -  
1197 - if(continuarEditando){  
1198 - formDialogRequisitoNegocio.$submitted = false;  
1199 - formDialogRequisitoNegocio.$setPristine();  
1200 - $scope.reqNegocioTemp = null;  
1201 - $scope.reqNegocio = {};  
1202 - return;  
1203 - }  
1204 - $scope.atualizarListaSizeSelectReqNegocio();  
1205 - $scope.$modalInstance.dismiss('cancel');  
1206 - }; 1204 + formDialogSolucao.$submitted = true;
1207 1205
1208 - // ADICIONAR Solucao  
1209 - $scope.salvaSolucao = function(formDialogSolucao, continuarEditando) {  
1210 -  
1211 - formDialogSolucao.$submitted = true;  
1212 -  
1213 - //verifica se o formulario está valido para salvar  
1214 - if (formDialogSolucao.$invalid) {  
1215 - //Mensagem de erro de campos obrigatorios não preenchidos  
1216 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);  
1217 - return;  
1218 - }  
1219 -  
1220 - if ($scope.estudoTecnico.etLevantamentoAlternativas) {  
1221 - if ($scope.solucao.$checked) {  
1222 - for (var i = 0; i < $scope.estudoTecnico.etLevantamentoAlternativas.length; i++) {  
1223 - if ($scope.estudoTecnico.etLevantamentoAlternativas[i].$checked) {  
1224 - $scope.estudoTecnico.etLevantamentoAlternativas[i] = $scope.solucao;  
1225 - }  
1226 - }  
1227 - } else {  
1228 - $scope.estudoTecnico.etLevantamentoAlternativas.push($scope.solucao);  
1229 - }  
1230 - } else {  
1231 - $scope.estudoTecnico.etLevantamentoAlternativas = [$scope.solucao];  
1232 - }  
1233 -  
1234 - if(continuarEditando){  
1235 - formDialogSolucao.$submitted = false;  
1236 - formDialogSolucao.$setPristine();  
1237 - resetModalSolucao();  
1238 - }else{  
1239 - $scope.$modalInstance.dismiss('cancel');  
1240 - }  
1241 - $scope.atualizarListaSizeSelectSolucao();  
1242 - }; 1206 + //verifica se o formulario está valido para salvar
  1207 + if (formDialogSolucao.$invalid) {
  1208 + //Mensagem de erro de campos obrigatorios não preenchidos
  1209 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1210 + return;
  1211 + }
  1212 +
  1213 + if ($scope.estudoTecnico.etLevantamentoAlternativas) {
  1214 + if ($scope.solucao.$checked) {
  1215 + for (var i = 0; i < $scope.estudoTecnico.etLevantamentoAlternativas.length; i++) {
  1216 + if ($scope.estudoTecnico.etLevantamentoAlternativas[i].$checked) {
  1217 + $scope.estudoTecnico.etLevantamentoAlternativas[i] = $scope.solucao;
  1218 + }
  1219 + }
  1220 + } else {
  1221 + $scope.estudoTecnico.etLevantamentoAlternativas.push($scope.solucao);
  1222 + }
  1223 + } else {
  1224 + $scope.estudoTecnico.etLevantamentoAlternativas = [$scope.solucao];
  1225 + }
  1226 +
  1227 + if(continuarEditando){
  1228 + formDialogSolucao.$submitted = false;
  1229 + formDialogSolucao.$setPristine();
  1230 + resetModalSolucao();
  1231 + }else{
  1232 + $scope.$modalInstance.dismiss('cancel');
  1233 + }
  1234 + $scope.atualizarListaSizeSelectSolucao();
  1235 + };
1243 1236
1244 - // ADICIONAR Solucao  
1245 - $scope.salvaBemServico = function(formDialogBensServico, continuarEditando) { 1237 + // ADICIONAR Solucao
  1238 + $scope.salvaBemServico = function(formDialogBensServico, continuarEditando) {
1246 1239
1247 formDialogBensServico.$submitted = true; 1240 formDialogBensServico.$submitted = true;
1248 - 1241 +
1249 //verifica se o formulario está valido para salvar 1242 //verifica se o formulario está valido para salvar
1250 if (formDialogBensServico.$invalid) { 1243 if (formDialogBensServico.$invalid) {
1251 //Mensagem de erro de campos obrigatorios não preenchidos 1244 //Mensagem de erro de campos obrigatorios não preenchidos
1252 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); 1245 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
1253 return; 1246 return;
1254 } 1247 }
1255 - 1248 +
1256 if ($scope.estudoTecnico.etBensServicosSolucoes) { 1249 if ($scope.estudoTecnico.etBensServicosSolucoes) {
1257 if ($scope.bemServico.$checked) { 1250 if ($scope.bemServico.$checked) {
1258 for (var i = 0; i < $scope.estudoTecnico.etBensServicosSolucoes.length; i++) { 1251 for (var i = 0; i < $scope.estudoTecnico.etBensServicosSolucoes.length; i++) {
1259 - if ($scope.estudoTecnico.etBensServicosSolucoes[i].$checked) {  
1260 - $scope.estudoTecnico.etBensServicosSolucoes[i] = $scope.bemServico; 1252 + if ($scope.estudoTecnico.etBensServicosSolucoes[i].$checked) {
  1253 + $scope.estudoTecnico.etBensServicosSolucoes[i] = $scope.bemServico;
  1254 + }
1261 } 1255 }
1262 - }  
1263 } else { 1256 } else {
1264 $scope.bemServico.$index = $scope.estudoTecnico.etBensServicosSolucoes.length + 1; 1257 $scope.bemServico.$index = $scope.estudoTecnico.etBensServicosSolucoes.length + 1;
1265 $scope.estudoTecnico.etBensServicosSolucoes.push($scope.bemServico); 1258 $scope.estudoTecnico.etBensServicosSolucoes.push($scope.bemServico);
@@ -1268,7 +1261,7 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository @@ -1268,7 +1261,7 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository
1268 $scope.bemServico.$index = 1; 1261 $scope.bemServico.$index = 1;
1269 $scope.estudoTecnico.etBensServicosSolucoes = [$scope.bemServico]; 1262 $scope.estudoTecnico.etBensServicosSolucoes = [$scope.bemServico];
1270 } 1263 }
1271 - 1264 +
1272 if(continuarEditando){ 1265 if(continuarEditando){
1273 formDialogBensServico.$submitted = false; 1266 formDialogBensServico.$submitted = false;
1274 formDialogBensServico.$setPristine(); 1267 formDialogBensServico.$setPristine();
@@ -1277,93 +1270,93 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository @@ -1277,93 +1270,93 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository
1277 $scope.$modalInstance.dismiss('cancel'); 1270 $scope.$modalInstance.dismiss('cancel');
1278 } 1271 }
1279 $scope.atualizarListaSizeSelectServicoSolucao(); 1272 $scope.atualizarListaSizeSelectServicoSolucao();
1280 - }; 1273 + };
1281 1274
1282 - // ADICIONAR BENEFÍCIO ESPERADO  
1283 - $scope.salvaBeneficioEsperado = function(formDialogBeneficioEsperado, continuarEditando) { 1275 + // ADICIONAR BENEFÍCIO ESPERADO
  1276 + $scope.salvaBeneficioEsperado = function(formDialogBeneficioEsperado, continuarEditando) {
1284 1277
1285 - formDialogBeneficioEsperado.$submitted = true; 1278 + formDialogBeneficioEsperado.$submitted = true;
  1279 +
  1280 + //verifica se o formulario está valido para salvar
  1281 + if (formDialogBeneficioEsperado.$invalid) {
  1282 + //Mensagem de erro de campos obrigatorios não preenchidos
  1283 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1284 + return;
  1285 + }
1286 1286
1287 - //verifica se o formulario está valido para salvar  
1288 - if (formDialogBeneficioEsperado.$invalid) {  
1289 - //Mensagem de erro de campos obrigatorios não preenchidos  
1290 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);  
1291 - return;  
1292 - }  
1293 -  
1294 if ($scope.estudoTecnico.etBeneficiosEsperados) { 1287 if ($scope.estudoTecnico.etBeneficiosEsperados) {
1295 - if ($scope.beneficioEsperado.$checked) {  
1296 - for (var i = 0; i < $scope.estudoTecnico.etBeneficiosEsperados.length; i++) {  
1297 - if ($scope.estudoTecnico.etBeneficiosEsperados[i].$checked) {  
1298 - $scope.estudoTecnico.etBeneficiosEsperados[i] = $scope.beneficioEsperado;  
1299 - }  
1300 - }  
1301 - } else {  
1302 - $scope.estudoTecnico.etBeneficiosEsperados.push($scope.beneficioEsperado);  
1303 - } 1288 + if ($scope.beneficioEsperado.$checked) {
  1289 + for (var i = 0; i < $scope.estudoTecnico.etBeneficiosEsperados.length; i++) {
  1290 + if ($scope.estudoTecnico.etBeneficiosEsperados[i].$checked) {
  1291 + $scope.estudoTecnico.etBeneficiosEsperados[i] = $scope.beneficioEsperado;
  1292 + }
  1293 + }
  1294 + } else {
  1295 + $scope.estudoTecnico.etBeneficiosEsperados.push($scope.beneficioEsperado);
  1296 + }
1304 } else { 1297 } else {
1305 - $scope.estudoTecnico.etBeneficiosEsperados = [$scope.beneficioEsperado]; 1298 + $scope.estudoTecnico.etBeneficiosEsperados = [$scope.beneficioEsperado];
1306 } 1299 }
1307 - 1300 +
1308 if(continuarEditando){ 1301 if(continuarEditando){
1309 formDialogBeneficioEsperado.$submitted = false; 1302 formDialogBeneficioEsperado.$submitted = false;
1310 formDialogBeneficioEsperado.$setPristine(); 1303 formDialogBeneficioEsperado.$setPristine();
1311 $scope.beneficioEsperado = {}; 1304 $scope.beneficioEsperado = {};
1312 - } else {  
1313 - $scope.$modalInstance.dismiss('cancel');  
1314 - } 1305 + } else {
  1306 + $scope.$modalInstance.dismiss('cancel');
  1307 + }
1315 $scope.atualizarListaSizeSelectBeneficio(); 1308 $scope.atualizarListaSizeSelectBeneficio();
1316 - }; 1309 + };
1317 1310
1318 - // responsavel por adicionar um recurso tecnico ao estudo tecnico  
1319 - $scope.salvaRecursoMaterial = function (formDialogRecursoMaterial, continuarEditando){ 1311 + // responsavel por adicionar um recurso tecnico ao estudo tecnico
  1312 + $scope.salvaRecursoMaterial = function (formDialogRecursoMaterial, continuarEditando){
1320 1313
1321 - formDialogRecursoMaterial.$submitted = true; 1314 + formDialogRecursoMaterial.$submitted = true;
1322 1315
1323 if (formDialogRecursoMaterial.$invalid) { 1316 if (formDialogRecursoMaterial.$invalid) {
1324 //Mensagem de erro de campos obrigatorios não preenchidos 1317 //Mensagem de erro de campos obrigatorios não preenchidos
1325 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); 1318 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
1326 return; 1319 return;
1327 } 1320 }
1328 - 1321 +
1329 if ($scope.estudoTecnico.etRecursosMateriais){ 1322 if ($scope.estudoTecnico.etRecursosMateriais){
1330 - if ($scope.estudoTecnicoRecursoMaterialTemp.$checked){  
1331 - for (var i = 0; i < $scope.estudoTecnico.etRecursosMateriais.length; i++) {  
1332 - if ($scope.estudoTecnico.etRecursosMateriais[i].$checked) {  
1333 - $scope.estudoTecnico.etRecursosMateriais[i] = $scope.estudoTecnicoRecursoMaterialTemp;  
1334 - }  
1335 - }  
1336 - } else {  
1337 - $scope.estudoTecnico.etRecursosMateriais.push($scope.estudoTecnicoRecursoMaterialTemp);  
1338 - } 1323 + if ($scope.estudoTecnicoRecursoMaterialTemp.$checked){
  1324 + for (var i = 0; i < $scope.estudoTecnico.etRecursosMateriais.length; i++) {
  1325 + if ($scope.estudoTecnico.etRecursosMateriais[i].$checked) {
  1326 + $scope.estudoTecnico.etRecursosMateriais[i] = $scope.estudoTecnicoRecursoMaterialTemp;
  1327 + }
  1328 + }
  1329 + } else {
  1330 + $scope.estudoTecnico.etRecursosMateriais.push($scope.estudoTecnicoRecursoMaterialTemp);
  1331 + }
1339 } else { 1332 } else {
1340 $scope.estudoTecnico.etRecursosMateriais = [$scope.estudoTecnicoRecursoMaterialTemp]; 1333 $scope.estudoTecnico.etRecursosMateriais = [$scope.estudoTecnicoRecursoMaterialTemp];
1341 } 1334 }
1342 - 1335 +
1343 if(continuarEditando){ 1336 if(continuarEditando){
1344 formDialogRecursoMaterial.$submitted = false; 1337 formDialogRecursoMaterial.$submitted = false;
1345 formDialogRecursoMaterial.$setPristine(); 1338 formDialogRecursoMaterial.$setPristine();
1346 $scope.estudoTecnicoRecursoMaterialTemp = { 1339 $scope.estudoTecnicoRecursoMaterialTemp = {
1347 - disponivel : true 1340 + disponivel : true
1348 }; 1341 };
1349 }else{ 1342 }else{
1350 $scope.estudoTecnicoRecursoMaterialTemp = {}; 1343 $scope.estudoTecnicoRecursoMaterialTemp = {};
1351 $scope.$modalInstance.dismiss('cancel'); 1344 $scope.$modalInstance.dismiss('cancel');
1352 } 1345 }
1353 $scope.atualizarListaSizeSelectRecursoMaterial(); 1346 $scope.atualizarListaSizeSelectRecursoMaterial();
1354 - }; 1347 + };
1355 1348
1356 - // Responsavel por adicionar um recurso humano ao estudo tecnico  
1357 - $scope.salvaRecursoHumano = function (formDialogRecursoHumano, continuarEditando){ 1349 + // Responsavel por adicionar um recurso humano ao estudo tecnico
  1350 + $scope.salvaRecursoHumano = function (formDialogRecursoHumano, continuarEditando){
1358 1351
1359 - formDialogRecursoHumano.$submitted = true; 1352 + formDialogRecursoHumano.$submitted = true;
1360 1353
1361 if (formDialogRecursoHumano.$invalid) { 1354 if (formDialogRecursoHumano.$invalid) {
1362 //Mensagem de erro de campos obrigatorios não preenchidos 1355 //Mensagem de erro de campos obrigatorios não preenchidos
1363 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); 1356 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
1364 return; 1357 return;
1365 } 1358 }
1366 - 1359 +
1367 if ($scope.estudoTecnico.etRecursosHumanos){ 1360 if ($scope.estudoTecnico.etRecursosHumanos){
1368 if ($scope.estudoTecnicoRecursoHumanoTemp.$checked){ 1361 if ($scope.estudoTecnicoRecursoHumanoTemp.$checked){
1369 for (var i = 0; i < $scope.estudoTecnico.etRecursosHumanos.length; i++) { 1362 for (var i = 0; i < $scope.estudoTecnico.etRecursosHumanos.length; i++) {
@@ -1378,26 +1371,26 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository @@ -1378,26 +1371,26 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository
1378 $scope.estudoTecnico.etRecursosHumanos = [$scope.estudoTecnicoRecursoHumanoTemp]; 1371 $scope.estudoTecnico.etRecursosHumanos = [$scope.estudoTecnicoRecursoHumanoTemp];
1379 } 1372 }
1380 $scope.estudoTecnicoRecursoHumanoTemp = {}; 1373 $scope.estudoTecnicoRecursoHumanoTemp = {};
1381 - 1374 +
1382 if(continuarEditando){ 1375 if(continuarEditando){
1383 formDialogRecursoHumano.$submitted = false; 1376 formDialogRecursoHumano.$submitted = false;
1384 formDialogRecursoHumano.$setPristine(); 1377 formDialogRecursoHumano.$setPristine();
1385 }else{ 1378 }else{
1386 $scope.$modalInstance.dismiss('cancel'); 1379 $scope.$modalInstance.dismiss('cancel');
1387 } 1380 }
1388 - $scope.atualizarListaSizeSelectRecursoHumano();  
1389 - }; 1381 + $scope.atualizarListaSizeSelectRecursoHumano();
  1382 + };
1390 1383
1391 - $scope.salvaAcaoCont = function(formDialogAcaoContingencia, continuarEditando) {  
1392 - formDialogAcaoContingencia.$submitted = true; 1384 + $scope.salvaAcaoCont = function(formDialogAcaoContingencia, continuarEditando) {
  1385 + formDialogAcaoContingencia.$submitted = true;
  1386 +
  1387 + //verifica se o formulario está valido para salvar
  1388 + if (formDialogAcaoContingencia.$invalid) {
  1389 + //Mensagem de erro de campos obrigatorios não preenchidos
  1390 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1391 + return;
  1392 + }
1393 1393
1394 - //verifica se o formulario está valido para salvar  
1395 - if (formDialogAcaoContingencia.$invalid) {  
1396 - //Mensagem de erro de campos obrigatorios não preenchidos  
1397 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);  
1398 - return;  
1399 - }  
1400 -  
1401 if ($scope.estudoTecnico.etAcoesContingencia) { 1394 if ($scope.estudoTecnico.etAcoesContingencia) {
1402 if ($scope.acaoCont.$checked) { 1395 if ($scope.acaoCont.$checked) {
1403 for (var i = 0; i < $scope.estudoTecnico.etAcoesContingencia.length; i++) { 1396 for (var i = 0; i < $scope.estudoTecnico.etAcoesContingencia.length; i++) {
@@ -1413,7 +1406,7 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository @@ -1413,7 +1406,7 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository
1413 $scope.acaoCont.$index = 1; 1406 $scope.acaoCont.$index = 1;
1414 $scope.estudoTecnico.etAcoesContingencia = [$scope.acaoCont]; 1407 $scope.estudoTecnico.etAcoesContingencia = [$scope.acaoCont];
1415 } 1408 }
1416 - 1409 +
1417 $scope.acaoCont = {}; 1410 $scope.acaoCont = {};
1418 if(continuarEditando){ 1411 if(continuarEditando){
1419 formDialogAcaoContingencia.$submitted = false; 1412 formDialogAcaoContingencia.$submitted = false;
@@ -1422,225 +1415,225 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository @@ -1422,225 +1415,225 @@ citApp.controller(&#39;EstudoTecnicoController&#39;, [&#39;$scope&#39;, &#39;EstudoTecnicoRepository
1422 $scope.$modalInstance.dismiss('cancel'); 1415 $scope.$modalInstance.dismiss('cancel');
1423 } 1416 }
1424 $scope.atualizarListaSizeSelectAcaoContigencia(); 1417 $scope.atualizarListaSizeSelectAcaoContigencia();
1425 - }; 1418 + };
1426 1419
1427 - //Watch para calcular valor unitario  
1428 - $scope.$watch('reqNegocio.objetivoEstrategico', function() {  
1429 - if ($scope.reqNegocio.objetivoEstrategico && ($scope.reqNegocio.objetivoEstrategico.id)) {  
1430 - ObjetivoEstrategicoNecessidadeRepository.findAllByObjetivoEstrategico($scope.reqNegocio.objetivoEstrategico).then(function(result) {  
1431 - $scope.reqNegocio.objetivoEstrategico.necessidadesElencadas = result;  
1432 - });  
1433 - }  
1434 - });  
1435 -  
1436 - // ###########################################  
1437 - // ########################################### DAQUI PARA BAIXO SAO TODOS OS METODOS RELACIONADOS AO WIZARD  
1438 - // ###########################################  
1439 -  
1440 - $scope.templates = [{ name: 'estudoTecnicoPg1.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg1.html', show: true},  
1441 - { name: 'estudoTecnicoPg2.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg2.html', show: false},  
1442 - { name: 'estudoTecnicoPg3.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg3.html', show: false},  
1443 - { name: 'estudoTecnicoPg4.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg4.html', show: false},  
1444 - { name: 'estudoTecnicoPg5.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg5.html', show: false},  
1445 - { name: 'estudoTecnicoPg6.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg6.html', show: false},  
1446 - { name: 'estudoTecnicoPg7.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg7.html', show: false} ];  
1447 -  
1448 - $scope.steps = ['one', 'two', 'three', 'four', 'five', 'six', 'seven'];  
1449 - $scope.step = 0;  
1450 -  
1451 - // Verifica se o passo é o primeiro passo do wizard  
1452 - $scope.isFirstStep = function() {  
1453 - return $scope.step === 0;  
1454 - }; 1420 + //Watch para calcular valor unitario
  1421 + $scope.$watch('reqNegocio.objetivoEstrategico', function() {
  1422 + if ($scope.reqNegocio.objetivoEstrategico && ($scope.reqNegocio.objetivoEstrategico.id)) {
  1423 + ObjetivoEstrategicoNecessidadeRepository.findAllByObjetivoEstrategico($scope.reqNegocio.objetivoEstrategico).then(function(result) {
  1424 + $scope.reqNegocio.objetivoEstrategico.necessidadesElencadas = result;
  1425 + });
  1426 + }
  1427 + });
  1428 +
  1429 + // ###########################################
  1430 + // ########################################### DAQUI PARA BAIXO SAO TODOS OS METODOS RELACIONADOS AO WIZARD
  1431 + // ###########################################
  1432 +
  1433 + $scope.templates = [{ name: 'estudoTecnicoPg1.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg1.html', show: true},
  1434 + { name: 'estudoTecnicoPg2.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg2.html', show: false},
  1435 + { name: 'estudoTecnicoPg3.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg3.html', show: false},
  1436 + { name: 'estudoTecnicoPg4.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg4.html', show: false},
  1437 + { name: 'estudoTecnicoPg5.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg5.html', show: false},
  1438 + { name: 'estudoTecnicoPg6.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg6.html', show: false},
  1439 + { name: 'estudoTecnicoPg7.html', url: '/cit-contratos-web/html/estudoTecnico/estudoTecnicoPg7.html', show: false} ];
  1440 +
  1441 + $scope.steps = ['one', 'two', 'three', 'four', 'five', 'six', 'seven'];
  1442 + $scope.step = 0;
  1443 +
  1444 + // Verifica se o passo é o primeiro passo do wizard
  1445 + $scope.isFirstStep = function() {
  1446 + return $scope.step === 0;
  1447 + };
1455 1448
1456 - // Verifica se o passo é o ultimo passo do wizard  
1457 - $scope.isLastStep = function() {  
1458 - return $scope.step === ($scope.steps.length - 1);  
1459 - }; 1449 + // Verifica se o passo é o ultimo passo do wizard
  1450 + $scope.isLastStep = function() {
  1451 + return $scope.step === ($scope.steps.length - 1);
  1452 + };
1460 1453
1461 - // Verifica se o passo é o passo atual do wizard  
1462 - $scope.isCurrentStep = function(step) {  
1463 - return $scope.step === step;  
1464 - }; 1454 + // Verifica se o passo é o passo atual do wizard
  1455 + $scope.isCurrentStep = function(step) {
  1456 + return $scope.step === step;
  1457 + };
1465 1458
1466 - // Utilizado pelo wizard para mudar para o passo desejado  
1467 - $scope.setCurrentStep = function(step) { 1459 + // Utilizado pelo wizard para mudar para o passo desejado
  1460 + $scope.setCurrentStep = function(step) {
1468 1461
1469 - $scope.setLoadingGet(true); 1462 + $scope.setLoadingGet(true);
1470 1463
1471 - if (step <= ($scope.step - 1)) {  
1472 - $scope.templates[$scope.step].show = false;  
1473 - $scope.step = step;  
1474 - $scope.templates[step].show = true;  
1475 - } else {  
1476 - if (!$scope.edit) {  
1477 - $scope.permitidoAvancar = true;  
1478 - } else {  
1479 - permiteAvancoFluxo();  
1480 - } 1464 + if (step <= ($scope.step - 1)) {
  1465 + $scope.templates[$scope.step].show = false;
  1466 + $scope.step = step;
  1467 + $scope.templates[step].show = true;
  1468 + } else {
  1469 + if (!$scope.edit) {
  1470 + $scope.permitidoAvancar = true;
  1471 + } else {
  1472 + permiteAvancoFluxo();
  1473 + }
1481 1474
1482 - if ($scope.permitidoAvancar) {  
1483 - $scope.templates[$scope.step].show = false;  
1484 - $scope.step = step;  
1485 - $scope.templates[step].show = true;  
1486 - }  
1487 - } 1475 + if ($scope.permitidoAvancar) {
  1476 + $scope.templates[$scope.step].show = false;
  1477 + $scope.step = step;
  1478 + $scope.templates[step].show = true;
  1479 + }
  1480 + }
1488 1481
1489 - $scope.setLoading(false);  
1490 - }; 1482 + $scope.setLoading(false);
  1483 + };
1491 1484
1492 - // Controla se o usuario pode avancar o fluxo no wizard, validando os itens obrigatórios  
1493 - function permiteAvancoFluxo() { 1485 + // Controla se o usuario pode avancar o fluxo no wizard, validando os itens obrigatórios
  1486 + function permiteAvancoFluxo() {
1494 1487
1495 - $scope.permitidoAvancar = true; 1488 + $scope.permitidoAvancar = true;
1496 1489
1497 - if ($scope.step === 0) {  
1498 - if (!validStepPlanejamentoContratacao() && $scope.permitidoAvancar) {  
1499 - $scope.estudoTecnicoForm.planejamentoContratacaoForm.$submitted = true;  
1500 - }  
1501 - } else if ($scope.step === 1) {  
1502 - if (!validStepRequisitos() && $scope.permitidoAvancar) {  
1503 - $scope.estudoTecnicoForm.definicaoRequisitosForm.$submitted = true;  
1504 - }  
1505 - } else if ($scope.step === 2) {  
1506 - if(!validStepLevantamentoAlternativas() && $scope.permitidoAvancar){  
1507 - $scope.estudoTecnicoForm.levantamentoAlternativasForm.$submitted = true;  
1508 - }  
1509 - } else if ($scope.step === 3) {  
1510 - if (!validStepBeneficiosNecessidades() && $scope.permitidoAvancar) {  
1511 - $scope.estudoTecnicoForm.beneficiosNecessidadesForm.$submitted = true;  
1512 - }  
1513 - } else if ($scope.step === 4 && !validStepRecursosNecessarios()) {  
1514 - $scope.recursosNecessariosForm.$submitted = true;  
1515 - $scope.permitidoAvancar = false;  
1516 - } else if ($scope.step === 5 && !validStepEstrategiaContratual()) {  
1517 - $scope.estudoTecnicoForm.estrategiaContratualForm.$submitted = true;  
1518 - } else if ($scope.step === 6) {  
1519 - $scope.observacoesEntradaForm.$submitted = true;  
1520 - } 1490 + if ($scope.step === 0) {
  1491 + if (!validStepPlanejamentoContratacao() && $scope.permitidoAvancar) {
  1492 + $scope.estudoTecnicoForm.planejamentoContratacaoForm.$submitted = true;
  1493 + }
  1494 + } else if ($scope.step === 1) {
  1495 + if (!validStepRequisitos() && $scope.permitidoAvancar) {
  1496 + $scope.estudoTecnicoForm.definicaoRequisitosForm.$submitted = true;
  1497 + }
  1498 + } else if ($scope.step === 2) {
  1499 + if(!validStepLevantamentoAlternativas() && $scope.permitidoAvancar){
  1500 + $scope.estudoTecnicoForm.levantamentoAlternativasForm.$submitted = true;
  1501 + }
  1502 + } else if ($scope.step === 3) {
  1503 + if (!validStepBeneficiosNecessidades() && $scope.permitidoAvancar) {
  1504 + $scope.estudoTecnicoForm.beneficiosNecessidadesForm.$submitted = true;
  1505 + }
  1506 + } else if ($scope.step === 4 && !validStepRecursosNecessarios()) {
  1507 + $scope.recursosNecessariosForm.$submitted = true;
  1508 + $scope.permitidoAvancar = false;
  1509 + } else if ($scope.step === 5 && !validStepEstrategiaContratual()) {
  1510 + $scope.estudoTecnicoForm.estrategiaContratualForm.$submitted = true;
  1511 + } else if ($scope.step === 6) {
  1512 + $scope.observacoesEntradaForm.$submitted = true;
  1513 + }
1521 1514
1522 - if (!$scope.permitidoAvancar && !$scope.stepValid) {  
1523 - //Mensagem de erro de campos obrigatorios nao preenchidos  
1524 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);  
1525 - }  
1526 - }; 1515 + if (!$scope.permitidoAvancar && !$scope.stepValid) {
  1516 + //Mensagem de erro de campos obrigatorios nao preenchidos
  1517 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1518 + }
  1519 + };
1527 1520
1528 - // Recupera o passo atual do wizard  
1529 - $scope.getCurrentStep = function() {  
1530 - return $scope.steps[$scope.step];  
1531 - }; 1521 + // Recupera o passo atual do wizard
  1522 + $scope.getCurrentStep = function() {
  1523 + return $scope.steps[$scope.step];
  1524 + };
1532 1525
1533 - // Faz com o que o wizard retroceda um passo  
1534 - $scope.handlePrevious = function() { 1526 + // Faz com o que o wizard retroceda um passo
  1527 + $scope.handlePrevious = function() {
1535 1528
1536 - $scope.setLoadingGet(true); 1529 + $scope.setLoadingGet(true);
1537 1530
1538 - $scope.templates[$scope.step].show = false;  
1539 - $scope.step -= ($scope.isFirstStep()) ? 0 : 1;  
1540 - $scope.templates[$scope.step].show = true; 1531 + $scope.templates[$scope.step].show = false;
  1532 + $scope.step -= ($scope.isFirstStep()) ? 0 : 1;
  1533 + $scope.templates[$scope.step].show = true;
1541 1534
1542 - $scope.setLoading(false); 1535 + $scope.setLoading(false);
1543 1536
1544 - }; 1537 + };
1545 1538
1546 - // Faz com o que o wizard avance um passo  
1547 - $scope.handleNext = function () {  
1548 - $scope.setLoadingGet(true); 1539 + // Faz com o que o wizard avance um passo
  1540 + $scope.handleNext = function () {
  1541 + $scope.setLoadingGet(true);
1549 1542
1550 - if(!$scope.edit){  
1551 - $scope.permitidoAvancar = true;  
1552 - } else {  
1553 - permiteAvancoFluxo();  
1554 - } 1543 + if(!$scope.edit){
  1544 + $scope.permitidoAvancar = true;
  1545 + } else {
  1546 + permiteAvancoFluxo();
  1547 + }
1555 1548
1556 - if ($scope.permitidoAvancar){  
1557 - $scope.templates[$scope.step].show = false;  
1558 - $scope.step += 1;  
1559 - $scope.templates[$scope.step].show = true;  
1560 - } 1549 + if ($scope.permitidoAvancar){
  1550 + $scope.templates[$scope.step].show = false;
  1551 + $scope.step += 1;
  1552 + $scope.templates[$scope.step].show = true;
  1553 + }
1561 1554
1562 - $scope.setLoading(false);  
1563 - }; 1555 + $scope.setLoading(false);
  1556 + };
1564 1557
1565 - // Funcao especifica que retorna se o formulario de dados da entrada esta valido  
1566 - function validStepPlanejamentoContratacao() {  
1567 - $scope.stepValid = true; 1558 + // Funcao especifica que retorna se o formulario de dados da entrada esta valido
  1559 + function validStepPlanejamentoContratacao() {
  1560 + $scope.stepValid = true;
1568 1561
1569 - if ($scope.estudoTecnicoForm.planejamentoContratacaoForm.$invalid) {  
1570 - $scope.stepValid = false;  
1571 - } 1562 + if ($scope.estudoTecnicoForm.planejamentoContratacaoForm.$invalid) {
  1563 + $scope.stepValid = false;
  1564 + }
1572 1565
1573 - return $scope.stepValid;  
1574 - }; 1566 + return $scope.stepValid;
  1567 + };
1575 1568
1576 - // Funcao especifica que retorna se o formulario de requisitos esta valido  
1577 - function validStepRequisitos() {  
1578 - $scope.stepValid = true; 1569 + // Funcao especifica que retorna se o formulario de requisitos esta valido
  1570 + function validStepRequisitos() {
  1571 + $scope.stepValid = true;
1579 1572
1580 - if ($scope.estudoTecnicoForm.definicaoRequisitosForm.$invalid || (!$scope.estudoTecnico.etRequisitosNegocio || $scope.estudoTecnico.etRequisitosNegocio.length < 1)) {  
1581 - $scope.stepValid = false;  
1582 - } 1573 + if ($scope.estudoTecnicoForm.definicaoRequisitosForm.$invalid || (!$scope.estudoTecnico.etRequisitosNegocio || $scope.estudoTecnico.etRequisitosNegocio.length < 1)) {
  1574 + $scope.stepValid = false;
  1575 + }
1583 1576
1584 - return $scope.stepValid;  
1585 - }; 1577 + return $scope.stepValid;
  1578 + };
1586 1579
1587 - // Funcao especifica que retorna se o formulario de levantamento de alternativas esta valido  
1588 - function validStepLevantamentoAlternativas() {  
1589 - $scope.stepValid = true; 1580 + // Funcao especifica que retorna se o formulario de levantamento de alternativas esta valido
  1581 + function validStepLevantamentoAlternativas() {
  1582 + $scope.stepValid = true;
1590 1583
1591 - if ($scope.estudoTecnicoForm.levantamentoAlternativasForm.$invalid || (!$scope.estudoTecnico.etLevantamentoAlternativas || $scope.estudoTecnico.etLevantamentoAlternativas.length < 1)  
1592 - || (!$scope.estudoTecnico.etBensServicosSolucoes || $scope.estudoTecnico.etBensServicosSolucoes.length < 1)) {  
1593 - $scope.stepValid = false;  
1594 - } 1584 + if ($scope.estudoTecnicoForm.levantamentoAlternativasForm.$invalid || (!$scope.estudoTecnico.etLevantamentoAlternativas || $scope.estudoTecnico.etLevantamentoAlternativas.length < 1)
  1585 + || (!$scope.estudoTecnico.etBensServicosSolucoes || $scope.estudoTecnico.etBensServicosSolucoes.length < 1)) {
  1586 + $scope.stepValid = false;
  1587 + }
1595 1588
1596 - return $scope.stepValid;  
1597 - }; 1589 + return $scope.stepValid;
  1590 + };
1598 1591
1599 - // Funcao especifica que retorna se o formulario de beneficios e necessidades está valido  
1600 - function validStepBeneficiosNecessidades() {  
1601 - $scope.stepValid = true; 1592 + // Funcao especifica que retorna se o formulario de beneficios e necessidades está valido
  1593 + function validStepBeneficiosNecessidades() {
  1594 + $scope.stepValid = true;
1602 1595
1603 - if ($scope.estudoTecnicoForm.beneficiosNecessidadesForm.$invalid || (!$scope.estudoTecnico.etBeneficiosEsperados || $scope.estudoTecnico.etBeneficiosEsperados.length < 1)) {  
1604 - $scope.stepValid = false;  
1605 - } 1596 + if ($scope.estudoTecnicoForm.beneficiosNecessidadesForm.$invalid || (!$scope.estudoTecnico.etBeneficiosEsperados || $scope.estudoTecnico.etBeneficiosEsperados.length < 1)) {
  1597 + $scope.stepValid = false;
  1598 + }
1606 1599
1607 - return $scope.stepValid;  
1608 - }; 1600 + return $scope.stepValid;
  1601 + };
1609 1602
1610 - // Funcao especifica que retorna se o formulario de recursos necessarios ao estudo está valido  
1611 - function validStepRecursosNecessarios() { 1603 + // Funcao especifica que retorna se o formulario de recursos necessarios ao estudo está valido
  1604 + function validStepRecursosNecessarios() {
1612 1605
1613 - $scope.stepValid = true; 1606 + $scope.stepValid = true;
1614 1607
1615 - if ($scope.estudoTecnicoForm.recursosNecessariosForm.$invalid) {  
1616 - $scope.stepValid = false;  
1617 - } 1608 + if ($scope.estudoTecnicoForm.recursosNecessariosForm.$invalid) {
  1609 + $scope.stepValid = false;
  1610 + }
1618 1611
1619 - return $scope.stepValid;  
1620 - }; 1612 + return $scope.stepValid;
  1613 + };
1621 1614
1622 1615
1623 - // Funcao especifica que retorna se o formulario de observacoes da entrada esta valido  
1624 - function validStepObservacoesEntrada() {  
1625 - $scope.stepValid = true; 1616 + // Funcao especifica que retorna se o formulario de observacoes da entrada esta valido
  1617 + function validStepObservacoesEntrada() {
  1618 + $scope.stepValid = true;
1626 1619
1627 - if ($scope.estudoTecnicoForm.anexosObservacoesForm.$invalid) {  
1628 - $scope.stepValid = false;  
1629 - } 1620 + if ($scope.estudoTecnicoForm.anexosObservacoesForm.$invalid) {
  1621 + $scope.stepValid = false;
  1622 + }
1630 1623
1631 - return $scope.stepValid;  
1632 - }; 1624 + return $scope.stepValid;
  1625 + };
1633 1626
1634 - // Funcao especifica que retorna se o formulario de estrategia contratual esta valido  
1635 - function validStepEstrategiaContratual() {  
1636 - $scope.stepValid = true; 1627 + // Funcao especifica que retorna se o formulario de estrategia contratual esta valido
  1628 + function validStepEstrategiaContratual() {
  1629 + $scope.stepValid = true;
1637 1630
1638 - if ($scope.estudoTecnicoForm.estrategiaContratualForm.$invalid || (!$scope.estudoTecnico.etAcoesContingencia || $scope.estudoTecnico.etAcoesContingencia.length < 1)) {  
1639 - $scope.stepValid = false;  
1640 - } 1631 + if ($scope.estudoTecnicoForm.estrategiaContratualForm.$invalid || (!$scope.estudoTecnico.etAcoesContingencia || $scope.estudoTecnico.etAcoesContingencia.length < 1)) {
  1632 + $scope.stepValid = false;
  1633 + }
1641 1634
1642 - return $scope.stepValid;  
1643 - }; 1635 + return $scope.stepValid;
  1636 + };
1644 1637
1645 $scope.atualizarListaSizeSelectReqNegocio = function() { 1638 $scope.atualizarListaSizeSelectReqNegocio = function() {
1646 if(!$scope.listaSize){ 1639 if(!$scope.listaSize){
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/NotificacaoContratoController.js
@@ -5,10 +5,10 @@ citApp.controller(&#39;NotificacaoContratoController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$ti @@ -5,10 +5,10 @@ citApp.controller(&#39;NotificacaoContratoController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$ti
5 NotificacaoContratoRepository, ContratoRepository, RegistroOcorrenciaRepository, FileUploader, $filter, NotificacaoContratoOcorrenciaRepository) { 5 NotificacaoContratoRepository, ContratoRepository, RegistroOcorrenciaRepository, FileUploader, $filter, NotificacaoContratoOcorrenciaRepository) {
6 6
7 $scope.uploader = new FileUploader({ 7 $scope.uploader = new FileUploader({
8 - autoUpload: false,  
9 - queueLimit: 1,  
10 - url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='  
11 - }); 8 + autoUpload: false,
  9 + queueLimit: 99,
  10 + url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
  11 + });
12 12
13 $scope.atualizaPaginaPesquisa = function () { 13 $scope.atualizaPaginaPesquisa = function () {
14 angular.element('#searchNotificacaoContrato').scope().fetchResult(); 14 angular.element('#searchNotificacaoContrato').scope().fetchResult();
@@ -57,10 +57,12 @@ citApp.controller(&#39;NotificacaoContratoController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$ti @@ -57,10 +57,12 @@ citApp.controller(&#39;NotificacaoContratoController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$ti
57 }; 57 };
58 angular.forEach($scope.notificacao.documentos, function(documento, key) { 58 angular.forEach($scope.notificacao.documentos, function(documento, key) {
59 if (documento.uploadsDocumento) { 59 if (documento.uploadsDocumento) {
  60 + documento.uuid = getUuid();
60 $scope.notificaoTemp.documentos.push({ 61 $scope.notificaoTemp.documentos.push({
61 - uploadsDocumento: clone(documento.uploadsDocumento),  
62 - numero: clone(documento.numero) 62 + file: documento.uploadsDocumento[0],
  63 + uuid: clone(documento.uuid)
63 }); 64 });
  65 + // deleta esse atributo por causa de um erro de ciclo no json
64 delete documento.uploadsDocumento; 66 delete documento.uploadsDocumento;
65 } 67 }
66 }); 68 });
@@ -98,16 +100,30 @@ citApp.controller(&#39;NotificacaoContratoController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$ti @@ -98,16 +100,30 @@ citApp.controller(&#39;NotificacaoContratoController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$ti
98 } 100 }
99 }); 101 });
100 }; 102 };
101 -  
102 - var salvarUpload = function(documento, uploadsDocumento) {  
103 - $scope.uploader.queue = uploadsDocumento;  
104 - angular.forEach($scope.uploader.queue, function(item, key) {  
105 - item.url = item.url + documento.id;  
106 - });  
107 - if ($scope.uploader.queue && $scope.uploader.queue.length > 0) {  
108 - $scope.uploader.uploadAll();  
109 - }  
110 - }; 103 + var salvarListaDocumentos = function(notificaoTemp) {
  104 + $scope.uploader.queue = [];
  105 +
  106 + angular.forEach($scope.notificacao.documentos, function(documentoSalvo, key) {
  107 + // verifica se a entidade documento foi salva
  108 + if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {
  109 + // percorre todos os documentos temporarios para verificacao do numero do documento
  110 + angular.forEach(notificaoTemp.documentos, function(documentoTransient, key) {
  111 + // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
  112 + if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) {
  113 + //salva o anexo ao documento que tiver o mesmo numero do documento transient
  114 +
  115 + documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id;
  116 + $scope.uploader.queue.push(documentoTransient.file);
  117 + }
  118 + });
  119 + }
  120 + });
  121 +
  122 + if($scope.uploader.queue.length > 0){
  123 + $scope.uploader.uploadAll();
  124 + }
  125 + delete $scope.notificaoTemp;
  126 + };
111 127
112 $scope.getNotificacaoContrato = function(notificacaoContrato, edit) { 128 $scope.getNotificacaoContrato = function(notificacaoContrato, edit) {
113 $scope.setLoadingGet(true); 129 $scope.setLoadingGet(true);
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/OrdemFornecimentoController.js
@@ -10,7 +10,7 @@ citApp.controller(&#39;OrdemFornecimentoController&#39;, [&#39;$scope&#39;, &#39;OrdemFornecimentoRe @@ -10,7 +10,7 @@ citApp.controller(&#39;OrdemFornecimentoController&#39;, [&#39;$scope&#39;, &#39;OrdemFornecimentoRe
10 10
11 $scope.uploader = new FileUploader({ 11 $scope.uploader = new FileUploader({
12 autoUpload: false, 12 autoUpload: false,
13 - queueLimit: 1, 13 + queueLimit: 99,
14 url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento=' 14 url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
15 }); 15 });
16 16
@@ -263,16 +263,17 @@ citApp.controller(&#39;OrdemFornecimentoController&#39;, [&#39;$scope&#39;, &#39;OrdemFornecimentoRe @@ -263,16 +263,17 @@ citApp.controller(&#39;OrdemFornecimentoController&#39;, [&#39;$scope&#39;, &#39;OrdemFornecimentoRe
263 }; 263 };
264 264
265 // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento 265 // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
266 - angular.forEach($scope.ordemFornecimento.documentos, function(documento, key) {  
267 - if (documento.uploadsDocumento) {  
268 - ordemFornecimentoTemp.documentos.push({  
269 - uploadsDocumento: clone(documento.uploadsDocumento),  
270 - numero: clone(documento.numero)  
271 - });  
272 - // deleta esse atributo por causa de um erro de ciclo no json  
273 - delete documento.uploadsDocumento;  
274 - }  
275 - }); 266 + angular.forEach($scope.ordemFornecimento.documentos, function(documento, key) {
  267 + if (documento.uploadsDocumento) {
  268 + documento.uuid = getUuid();
  269 + ordemFornecimentoTemp.documentos.push({
  270 + file: documento.uploadsDocumento[0],
  271 + uuid: clone(documento.uuid)
  272 + });
  273 + // deleta esse atributo por causa de um erro de ciclo no json
  274 + delete documento.uploadsDocumento;
  275 + }
  276 + });
276 277
277 OrdemFornecimentoRepository.save($scope.ordemFornecimento).then(function(result) { 278 OrdemFornecimentoRepository.save($scope.ordemFornecimento).then(function(result) {
278 279
@@ -292,36 +293,28 @@ citApp.controller(&#39;OrdemFornecimentoController&#39;, [&#39;$scope&#39;, &#39;OrdemFornecimentoRe @@ -292,36 +293,28 @@ citApp.controller(&#39;OrdemFornecimentoController&#39;, [&#39;$scope&#39;, &#39;OrdemFornecimentoRe
292 293
293 // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento 294 // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento
294 var salvarListaDocumentos = function(ordemFornecimentoTemp) { 295 var salvarListaDocumentos = function(ordemFornecimentoTemp) {
295 - 296 + $scope.uploader.queue = [];
  297 +
296 angular.forEach($scope.ordemFornecimento.documentos, function(documentoSalvo, key) { 298 angular.forEach($scope.ordemFornecimento.documentos, function(documentoSalvo, key) {
297 // verifica se a entidade documento foi salva 299 // verifica se a entidade documento foi salva
298 if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) { 300 if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {
299 // percorre todos os documentos temporarios para verificacao do numero do documento 301 // percorre todos os documentos temporarios para verificacao do numero do documento
300 angular.forEach(ordemFornecimentoTemp.documentos, function(documentoTransient, key) { 302 angular.forEach(ordemFornecimentoTemp.documentos, function(documentoTransient, key) {
301 // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado 303 // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
302 - if (documentoSalvo.numero === documentoTransient.numero) { 304 + if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) {
303 //salva o anexo ao documento que tiver o mesmo numero do documento transient 305 //salva o anexo ao documento que tiver o mesmo numero do documento transient
304 - salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento); 306 +
  307 + documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id;
  308 + $scope.uploader.queue.push(documentoTransient.file);
305 } 309 }
306 -  
307 }); 310 });
308 -  
309 } 311 }
310 }); 312 });
311 -  
312 - };  
313 -  
314 - // metodo responsavel para salvar os anexos da baixa depois de ter salvo a baixa, utilizando a referencia do id baixa.documento.id  
315 - var salvarUpload = function(documento, uploadsDocumento) {  
316 - $scope.uploader.queue = uploadsDocumento;  
317 - // percorre a lista de uploads a serem enviados  
318 - angular.forEach($scope.uploader.queue, function(item, key) {  
319 - item.url = item.url + documento.id;  
320 - });  
321 - if ($scope.uploader.queue && $scope.uploader.queue.length > 0) {  
322 - // realiza o upload se existir no minimo um arquivo para upload  
323 - $scope.uploader.uploadAll(); 313 +
  314 + if($scope.uploader.queue.length > 0){
  315 + $scope.uploader.uploadAll();
324 } 316 }
  317 + delete $scope.ordemFornecimentoTemp;
325 }; 318 };
326 319
327 //Watch para buscar o gestor do contrato 320 //Watch para buscar o gestor do contrato
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/RegistroOcorrenciaController.js
@@ -35,10 +35,10 @@ citApp.controller(&#39;RegistroOcorrenciaController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim @@ -35,10 +35,10 @@ citApp.controller(&#39;RegistroOcorrenciaController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
35 $scope.resetForm(); 35 $scope.resetForm();
36 36
37 $scope.uploader = new FileUploader({ 37 $scope.uploader = new FileUploader({
38 - autoUpload: false,  
39 - queueLimit: 1,  
40 - url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='  
41 - }); 38 + autoUpload: false,
  39 + queueLimit: 99,
  40 + url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
  41 + });
42 42
43 $scope.editar = function () { 43 $scope.editar = function () {
44 $scope.edit = true; 44 $scope.edit = true;
@@ -82,9 +82,10 @@ citApp.controller(&#39;RegistroOcorrenciaController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim @@ -82,9 +82,10 @@ citApp.controller(&#39;RegistroOcorrenciaController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
82 // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento 82 // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
83 angular.forEach($scope.registroOcorrencia.documentos, function(documento, key) { 83 angular.forEach($scope.registroOcorrencia.documentos, function(documento, key) {
84 if (documento.uploadsDocumento) { 84 if (documento.uploadsDocumento) {
  85 + documento.uuid = getUuid();
85 registroOcorrenciaTemp.documentos.push({ 86 registroOcorrenciaTemp.documentos.push({
86 - uploadsDocumento: clone(documento.uploadsDocumento),  
87 - numero: clone(documento.numero) 87 + file: documento.uploadsDocumento[0],
  88 + uuid: clone(documento.uuid)
88 }); 89 });
89 // deleta esse atributo por causa de um erro de ciclo no json 90 // deleta esse atributo por causa de um erro de ciclo no json
90 delete documento.uploadsDocumento; 91 delete documento.uploadsDocumento;
@@ -106,36 +107,30 @@ citApp.controller(&#39;RegistroOcorrenciaController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim @@ -106,36 +107,30 @@ citApp.controller(&#39;RegistroOcorrenciaController&#39;, [&#39;$scope&#39;, &#39;$translate&#39;, &#39;$tim
106 }; 107 };
107 108
108 // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento 109 // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento
109 - var salvarListaDocumentos = function(registroOcorrencia) {  
110 -  
111 - angular.forEach($scope.registroOcorrencia.documentos, function(documentoSalvo, key) {  
112 - // verifica se a entidade documento foi salva  
113 - if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {  
114 - // percorre todos os documentos temporarios para verificacao do numero do documento  
115 - angular.forEach(registroOcorrencia.documentos, function(documentoTransient, key) {  
116 - // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado  
117 - if (documentoSalvo.numero === documentoTransient.numero) {  
118 - //salva o anexo ao documento que tiver o mesmo numero do documento transient  
119 - salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento);  
120 - }  
121 - });  
122 - }  
123 - });  
124 - };  
125 -  
126 - // metodo responsavel para salvar os anexos depois de ter salvo o registro de ocorrencia, utilizando a referencia do id registroOcorrencia.id  
127 - var salvarUpload = function(documento, uploadsDocumento) {  
128 - $scope.uploader.queue = uploadsDocumento;  
129 - // percorre a lista de uploads a serem enviados  
130 - angular.forEach($scope.uploader.queue, function(item, key) {  
131 - item.url = item.url + documento.id;  
132 - });  
133 - if ($scope.uploader.queue && $scope.uploader.queue.length > 0) {  
134 - // realiza o upload se existir no minimo um arquivo para upload  
135 - $scope.uploader.uploadAll();  
136 - }  
137 - };  
138 - 110 + var salvarListaDocumentos = function(registroOcorrenciaTemp) {
  111 + $scope.uploader.queue = [];
  112 +
  113 + angular.forEach($scope.registroOcorrencia.documentos, function(documentoSalvo, key) {
  114 + // verifica se a entidade documento foi salva
  115 + if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {
  116 + // percorre todos os documentos temporarios para verificacao do numero do documento
  117 + angular.forEach(registroOcorrenciaTemp.documentos, function(documentoTransient, key) {
  118 + // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
  119 + if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) {
  120 + //salva o anexo ao documento que tiver o mesmo numero do documento transient
  121 +
  122 + documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id;
  123 + $scope.uploader.queue.push(documentoTransient.file);
  124 + }
  125 + });
  126 + }
  127 + });
  128 +
  129 + if($scope.uploader.queue.length > 0){
  130 + $scope.uploader.uploadAll();
  131 + }
  132 + delete $scope.registroOcorrenciaTemp;
  133 + };
139 134
140 $scope.isInformacoesValidas = function () { 135 $scope.isInformacoesValidas = function () {
141 136
cit-contratos-web/src/main/webapp/assets/js/angular/custom/controller/TermoReferenciaController.js
@@ -34,239 +34,239 @@ citApp.controller(&#39;TermoReferenciaController&#39;, [&#39;$scope&#39;, @@ -34,239 +34,239 @@ citApp.controller(&#39;TermoReferenciaController&#39;, [&#39;$scope&#39;,
34 $timeout, 34 $timeout,
35 $filter, 35 $filter,
36 EventoRegistroNaoConformidadeRepository) { 36 EventoRegistroNaoConformidadeRepository) {
37 - $scope.termoReferencia = {  
38 - estudoTecnico : {},  
39 - detalhamentosSolucoes : [],  
40 - penalidades : [],  
41 - sancoes : [],  
42 - observacoes : [],  
43 - documentos : [],  
44 - deveresContratante : "",  
45 - deveresContratada : "",  
46 - deveresOrgaoRegistroPreco : "",  
47 - mecanismoComunicacao : "",  
48 - integrantesEstudoTecnico : {}  
49 - };  
50 -  
51 - $scope.listaJustificativaContratacao = [];  
52 - $scope.listaBeneficiosEsperados = [];  
53 - $scope.listEtBensServicos = [];  
54 - $scope.papeis = '';  
55 -  
56 - $scope.termoReferenciaDetalhamentoSolucao = {formaPagamento: {}, bemServicoSolucao:{}};  
57 - $scope.editDetalhamento = false;  
58 - $scope.editPenalidade = false;  
59 - $scope.editSancao = false;  
60 -  
61 - //Dados da tabela de Justificativa de Contratacao  
62 - $scope.headers = [{  
63 - title : $translate.instant('LABEL.NECESSIDADE_NEGOCIO'),  
64 - value : 'objetivoEstrategicoNecessidade.descricao'  
65 - },{  
66 - title : $translate.instant('LABEL.JUSTIFICATIVA'),  
67 - value : 'justificativaNecessidade'  
68 - }];  
69 -  
70 - $scope.fields = [ 'id', 'objetivoEstrategicoNecessidade.descricao', 'justificativaNecessidade'];  
71 -  
72 - $scope.filters = [ {  
73 - type : 'string',  
74 - field : 'objetivoEstrategicoNecessidade.descricao'  
75 - },{  
76 - type : 'string',  
77 - field : 'justificativaNecessidade',  
78 - },{  
79 - type: 'numeric',  
80 - field: 'estudoTecnico.id',  
81 - value: ($scope.termoReferencia.estudoTecnico ? $scope.termoReferencia.estudoTecnico.id : 0 )  
82 - }];  
83 -  
84 - $scope.filterCriteria = {  
85 - start : 1,  
86 - dir : 'asc',  
87 - sort : 'id',  
88 - limit : 10,  
89 - };  
90 -  
91 - //Dados da tabela de Beneficios Esperados  
92 - $scope.headersBeneficios = [{  
93 - title : $translate.instant('LABEL.BENEFICIO'),  
94 - value : 'beneficioEsperado'  
95 - },{  
96 - title : $translate.instant('LABEL.DESCRICAO'),  
97 - value : 'descricaoBeneficioEsperado'  
98 - }];  
99 -  
100 - $scope.fieldsBeneficios = [ 'id', 'beneficioEsperado', 'descricaoBeneficioEsperado'];  
101 -  
102 - $scope.filtersBeneficios = [ {  
103 - type : 'string',  
104 - field : 'beneficioEsperado'  
105 - },{  
106 - type : 'string',  
107 - field : 'descricaoBeneficioEsperado',  
108 - },{  
109 - type: 'numeric',  
110 - field: 'estudoTecnico.id',  
111 - value: ($scope.termoReferencia.estudoTecnico ? $scope.termoReferencia.estudoTecnico.id : 0)  
112 - }];  
113 -  
114 - $scope.filterCriteriaBeneficios = {  
115 - start : 1,  
116 - dir : 'asc',  
117 - sort : 'id',  
118 - limit : 10,  
119 - };  
120 -  
121 - //#####################DOMINIOS###########################  
122 -  
123 - DominioRepository.findAllDominio('tipoFormaPagamento').then(function(result) {  
124 - $scope.dominiosTiposFormaPagamento = result;  
125 - });  
126 -  
127 - DominioRepository.findAllDominio('tipoEmpreitada').then(function(result) {  
128 - $scope.dominiosEmpreitada = result;  
129 - });  
130 -  
131 - DominioRepository.findAllDominio('tipoAdjudicacaoObjeto').then(function(result) {  
132 - $scope.dominiosAdjudicacao = result;  
133 - });  
134 -  
135 - DominioRepository.findAllDominio('tipoModalidadeContrato').then(function(result) {  
136 - $scope.dominiosModalidade = result;  
137 - });  
138 -  
139 - DominioRepository.findAllDominio('tipoNotificacaoContratoSancao').then(function(result) {  
140 - $scope.dominioTiposSancaoList = result;  
141 - });  
142 - //##########################AUTOCOMPLETES###########################################  
143 -  
144 - $scope.findBemServicoSolucao = function (value){  
145 - return EstudoTecnicoBemServicoSolucaoRepository.listarBensServicosPorNome(value).then(function(result) {  
146 - return result;  
147 - });  
148 - };  
149 -  
150 - $scope.findFornecedor = function(value){  
151 - return ParceiroRepository.findParceiros('tipoParceiro', ['FORNECEDOR'] , value).then(function(result) {  
152 - return result;  
153 - });  
154 - };  
155 -  
156 - $scope.findOrgaoExterno = function(value){  
157 - return ParceiroRepository.findParceiros('tipoParceiro', ['ORGAO_EXTERNO'] , value).then(function(result) {  
158 - return result;  
159 - });  
160 - };  
161 -  
162 - $scope.findEstudoTecnico = function(value){  
163 - return EstudoTecnicoRepository.listarEstudosPorCodigo(value).then(function(result) {  
164 - return result;  
165 - });  
166 - };  
167 -  
168 - $scope.atualizaInformacoesIntegrantesEstudoTecnico = function (item){  
169 -  
170 - $scope.termoReferencia.integrantesEstudoTecnico = {  
171 - integranteTecnico : item.integranteTecnico.pessoa.nome + ' - Mat. SIAPE: ' + item.integranteTecnico.matricula,  
172 - integranteAdministrativo : item.integranteAdministrativo.pessoa.nome + ' - Mat. SIAPE: ' + item.integranteAdministrativo.matricula,  
173 - integranteRequisitante : item.integranteRequisitante.pessoa.nome + ' - Mat. SIAPE: ' + item.integranteRequisitante.matricula  
174 - };  
175 - };  
176 -  
177 - // Metodo responsavel por limpar o auto complete de Modelo Email  
178 - $scope.limparModeloEmailAutoComplete = function(value) {  
179 - value = {};  
180 - };  
181 -  
182 - $scope.atualizaListaJustificativasContratacao = function(value){  
183 - var listIdJustificativa = [];  
184 - angular.forEach(value.etRequisitosNegocio, function(value, key){  
185 - listIdJustificativa.push(value.id);  
186 - });  
187 -  
188 - $scope.listaJustificativaContratacao = listIdJustificativa;  
189 - };  
190 -  
191 - $scope.atualizaListaBeneficiosEsperados = function(value){  
192 - var listIdBeneficios = [];  
193 - angular.forEach(value.etBeneficiosEsperados, function(value, key){  
194 - listIdBeneficios.push(value.id);  
195 - });  
196 -  
197 - $scope.listaBeneficiosEsperados = listIdBeneficios;  
198 - };  
199 -  
200 - $scope.atualizaListaEtBensServicos = function(value){  
201 - if (!value){  
202 - value = $scope.termoReferencia.estudoTecnico;  
203 - }  
204 - $scope.listEtBensServicos = $filter('idNotEqualObj')(value.etBensServicosSolucoes, $scope.termoReferencia.detalhamentosSolucoes, "bemServicoSolucao"); ;  
205 - };  
206 -  
207 -  
208 - //###################### METODOS AUXILIARES ####################################  
209 -  
210 - // Limpa formulario para novo cadastro  
211 - $scope.resetForm = function() {  
212 - $scope.termoReferencia = {  
213 - detalhamentosSolucoes : [],  
214 - penalidades : [],  
215 - sancoes : [],  
216 - observacoes : [],  
217 - documentos : [],  
218 - deveresContratante : "",  
219 - deveresContratada : "",  
220 - deveresOrgaoRegistroPreco : "",  
221 - mecanismoComunicacao : ""  
222 - };  
223 - $scope.listaJustificativaContratacao = [];  
224 - $scope.listaBeneficiosEsperados = [];  
225 - $scope.listEtBensServicos = [];  
226 - $scope.termoReferenciaDetalhamentoSolucao = {formaPagamento: {}, bemServicoSolucao:{}};  
227 - $scope.papeis = '';  
228 -  
229 - $scope.penalidade = {};  
230 - $scope.sancao = {};  
231 -  
232 - $scope.edit = true;  
233 - $scope.pgEdit = true;  
234 - $scope.editDetalhamento = false;  
235 - $scope.editPenalidade = false;  
236 - $scope.editSancao = false;  
237 - $scope.step = 0;  
238 -  
239 - $scope.startTimerIntervalSaveDraft($scope.workspace , $scope.termoReferencia, true);  
240 -  
241 - $timeout(function(){  
242 - $scope.termoReferenciaForm.$submitted = false;  
243 - $scope.termoReferenciaForm.equipeContratacaoForm.$submitted = false;  
244 - $scope.termoReferenciaForm.justificativaContratacaoForm.$submitted = false;  
245 - $scope.termoReferenciaForm.especificacoesTecnicasForm.$submitted = false;  
246 - $scope.termoReferenciaForm.modeloGestaoForm.$submitted = false;  
247 - $scope.termoReferenciaForm.sancoesForm.$submitted = false;  
248 - $scope.termoReferenciaForm.criteriosSelecaoForm.$submitted = false;  
249 - $scope.termoReferenciaForm.anexosObservacoesForm.$submitted = false;  
250 -  
251 - $scope.termoReferenciaForm.$setPristine();  
252 - $scope.termoReferenciaForm.equipeContratacaoForm.$setPristine();  
253 - $scope.termoReferenciaForm.justificativaContratacaoForm.$setPristine();  
254 - $scope.termoReferenciaForm.especificacoesTecnicasForm.$setPristine();  
255 - $scope.termoReferenciaForm.modeloGestaoForm.$setPristine();  
256 - $scope.termoReferenciaForm.sancoesForm.$setPristine();  
257 - $scope.termoReferenciaForm.criteriosSelecaoForm.$setPristine();  
258 - $scope.termoReferenciaForm.anexosObservacoesForm.$setPristine();  
259 - });  
260 -  
261 - createTemplates();  
262 - $scope.getConfiguracoesTemplate();  
263 - $scope.preenchePapeis();  
264 - $scope.carregarValoresPadrao();  
265 - $scope.atualizarListaSizeSelect();  
266 - $scope.atualizarListaSizeSelectPenalidade();  
267 - $scope.atualizarListaSizeSelectSancao();  
268 -  
269 - }; 37 + $scope.termoReferencia = {
  38 + estudoTecnico : {},
  39 + detalhamentosSolucoes : [],
  40 + penalidades : [],
  41 + sancoes : [],
  42 + observacoes : [],
  43 + documentos : [],
  44 + deveresContratante : "",
  45 + deveresContratada : "",
  46 + deveresOrgaoRegistroPreco : "",
  47 + mecanismoComunicacao : "",
  48 + integrantesEstudoTecnico : {}
  49 + };
  50 +
  51 + $scope.listaJustificativaContratacao = [];
  52 + $scope.listaBeneficiosEsperados = [];
  53 + $scope.listEtBensServicos = [];
  54 + $scope.papeis = '';
  55 +
  56 + $scope.termoReferenciaDetalhamentoSolucao = {formaPagamento: {}, bemServicoSolucao:{}};
  57 + $scope.editDetalhamento = false;
  58 + $scope.editPenalidade = false;
  59 + $scope.editSancao = false;
  60 +
  61 + //Dados da tabela de Justificativa de Contratacao
  62 + $scope.headers = [{
  63 + title : $translate.instant('LABEL.NECESSIDADE_NEGOCIO'),
  64 + value : 'objetivoEstrategicoNecessidade.descricao'
  65 + },{
  66 + title : $translate.instant('LABEL.JUSTIFICATIVA'),
  67 + value : 'justificativaNecessidade'
  68 + }];
  69 +
  70 + $scope.fields = [ 'id', 'objetivoEstrategicoNecessidade.descricao', 'justificativaNecessidade'];
  71 +
  72 + $scope.filters = [ {
  73 + type : 'string',
  74 + field : 'objetivoEstrategicoNecessidade.descricao'
  75 + },{
  76 + type : 'string',
  77 + field : 'justificativaNecessidade',
  78 + },{
  79 + type: 'numeric',
  80 + field: 'estudoTecnico.id',
  81 + value: ($scope.termoReferencia.estudoTecnico ? $scope.termoReferencia.estudoTecnico.id : 0 )
  82 + }];
  83 +
  84 + $scope.filterCriteria = {
  85 + start : 1,
  86 + dir : 'asc',
  87 + sort : 'id',
  88 + limit : 10,
  89 + };
  90 +
  91 + //Dados da tabela de Beneficios Esperados
  92 + $scope.headersBeneficios = [{
  93 + title : $translate.instant('LABEL.BENEFICIO'),
  94 + value : 'beneficioEsperado'
  95 + },{
  96 + title : $translate.instant('LABEL.DESCRICAO'),
  97 + value : 'descricaoBeneficioEsperado'
  98 + }];
  99 +
  100 + $scope.fieldsBeneficios = [ 'id', 'beneficioEsperado', 'descricaoBeneficioEsperado'];
  101 +
  102 + $scope.filtersBeneficios = [ {
  103 + type : 'string',
  104 + field : 'beneficioEsperado'
  105 + },{
  106 + type : 'string',
  107 + field : 'descricaoBeneficioEsperado',
  108 + },{
  109 + type: 'numeric',
  110 + field: 'estudoTecnico.id',
  111 + value: ($scope.termoReferencia.estudoTecnico ? $scope.termoReferencia.estudoTecnico.id : 0)
  112 + }];
  113 +
  114 + $scope.filterCriteriaBeneficios = {
  115 + start : 1,
  116 + dir : 'asc',
  117 + sort : 'id',
  118 + limit : 10,
  119 + };
  120 +
  121 + //#####################DOMINIOS###########################
  122 +
  123 + DominioRepository.findAllDominio('tipoFormaPagamento').then(function(result) {
  124 + $scope.dominiosTiposFormaPagamento = result;
  125 + });
  126 +
  127 + DominioRepository.findAllDominio('tipoEmpreitada').then(function(result) {
  128 + $scope.dominiosEmpreitada = result;
  129 + });
  130 +
  131 + DominioRepository.findAllDominio('tipoAdjudicacaoObjeto').then(function(result) {
  132 + $scope.dominiosAdjudicacao = result;
  133 + });
  134 +
  135 + DominioRepository.findAllDominio('tipoModalidadeContrato').then(function(result) {
  136 + $scope.dominiosModalidade = result;
  137 + });
  138 +
  139 + DominioRepository.findAllDominio('tipoNotificacaoContratoSancao').then(function(result) {
  140 + $scope.dominioTiposSancaoList = result;
  141 + });
  142 + //##########################AUTOCOMPLETES###########################################
  143 +
  144 + $scope.findBemServicoSolucao = function (value){
  145 + return EstudoTecnicoBemServicoSolucaoRepository.listarBensServicosPorNome(value).then(function(result) {
  146 + return result;
  147 + });
  148 + };
  149 +
  150 + $scope.findFornecedor = function(value){
  151 + return ParceiroRepository.findParceiros('tipoParceiro', ['FORNECEDOR'] , value).then(function(result) {
  152 + return result;
  153 + });
  154 + };
  155 +
  156 + $scope.findOrgaoExterno = function(value){
  157 + return ParceiroRepository.findParceiros('tipoParceiro', ['ORGAO_EXTERNO'] , value).then(function(result) {
  158 + return result;
  159 + });
  160 + };
  161 +
  162 + $scope.findEstudoTecnico = function(value){
  163 + return EstudoTecnicoRepository.listarEstudosPorCodigo(value).then(function(result) {
  164 + return result;
  165 + });
  166 + };
  167 +
  168 + $scope.atualizaInformacoesIntegrantesEstudoTecnico = function (item){
  169 +
  170 + $scope.termoReferencia.integrantesEstudoTecnico = {
  171 + integranteTecnico : item.integranteTecnico.pessoa.nome + ' - Mat. SIAPE: ' + item.integranteTecnico.matricula,
  172 + integranteAdministrativo : item.integranteAdministrativo.pessoa.nome + ' - Mat. SIAPE: ' + item.integranteAdministrativo.matricula,
  173 + integranteRequisitante : item.integranteRequisitante.pessoa.nome + ' - Mat. SIAPE: ' + item.integranteRequisitante.matricula
  174 + };
  175 + };
  176 +
  177 + // Metodo responsavel por limpar o auto complete de Modelo Email
  178 + $scope.limparModeloEmailAutoComplete = function(value) {
  179 + value = {};
  180 + };
  181 +
  182 + $scope.atualizaListaJustificativasContratacao = function(value){
  183 + var listIdJustificativa = [];
  184 + angular.forEach(value.etRequisitosNegocio, function(value, key){
  185 + listIdJustificativa.push(value.id);
  186 + });
  187 +
  188 + $scope.listaJustificativaContratacao = listIdJustificativa;
  189 + };
  190 +
  191 + $scope.atualizaListaBeneficiosEsperados = function(value){
  192 + var listIdBeneficios = [];
  193 + angular.forEach(value.etBeneficiosEsperados, function(value, key){
  194 + listIdBeneficios.push(value.id);
  195 + });
  196 +
  197 + $scope.listaBeneficiosEsperados = listIdBeneficios;
  198 + };
  199 +
  200 + $scope.atualizaListaEtBensServicos = function(value){
  201 + if (!value){
  202 + value = $scope.termoReferencia.estudoTecnico;
  203 + }
  204 + $scope.listEtBensServicos = $filter('idNotEqualObj')(value.etBensServicosSolucoes, $scope.termoReferencia.detalhamentosSolucoes, "bemServicoSolucao"); ;
  205 + };
  206 +
  207 +
  208 + //###################### METODOS AUXILIARES ####################################
  209 +
  210 + // Limpa formulario para novo cadastro
  211 + $scope.resetForm = function() {
  212 + $scope.termoReferencia = {
  213 + detalhamentosSolucoes : [],
  214 + penalidades : [],
  215 + sancoes : [],
  216 + observacoes : [],
  217 + documentos : [],
  218 + deveresContratante : "",
  219 + deveresContratada : "",
  220 + deveresOrgaoRegistroPreco : "",
  221 + mecanismoComunicacao : ""
  222 + };
  223 + $scope.listaJustificativaContratacao = [];
  224 + $scope.listaBeneficiosEsperados = [];
  225 + $scope.listEtBensServicos = [];
  226 + $scope.termoReferenciaDetalhamentoSolucao = {formaPagamento: {}, bemServicoSolucao:{}};
  227 + $scope.papeis = '';
  228 +
  229 + $scope.penalidade = {};
  230 + $scope.sancao = {};
  231 +
  232 + $scope.edit = true;
  233 + $scope.pgEdit = true;
  234 + $scope.editDetalhamento = false;
  235 + $scope.editPenalidade = false;
  236 + $scope.editSancao = false;
  237 + $scope.step = 0;
  238 +
  239 + $scope.startTimerIntervalSaveDraft($scope.workspace , $scope.termoReferencia, true);
  240 +
  241 + $timeout(function(){
  242 + $scope.termoReferenciaForm.$submitted = false;
  243 + $scope.termoReferenciaForm.equipeContratacaoForm.$submitted = false;
  244 + $scope.termoReferenciaForm.justificativaContratacaoForm.$submitted = false;
  245 + $scope.termoReferenciaForm.especificacoesTecnicasForm.$submitted = false;
  246 + $scope.termoReferenciaForm.modeloGestaoForm.$submitted = false;
  247 + $scope.termoReferenciaForm.sancoesForm.$submitted = false;
  248 + $scope.termoReferenciaForm.criteriosSelecaoForm.$submitted = false;
  249 + $scope.termoReferenciaForm.anexosObservacoesForm.$submitted = false;
  250 +
  251 + $scope.termoReferenciaForm.$setPristine();
  252 + $scope.termoReferenciaForm.equipeContratacaoForm.$setPristine();
  253 + $scope.termoReferenciaForm.justificativaContratacaoForm.$setPristine();
  254 + $scope.termoReferenciaForm.especificacoesTecnicasForm.$setPristine();
  255 + $scope.termoReferenciaForm.modeloGestaoForm.$setPristine();
  256 + $scope.termoReferenciaForm.sancoesForm.$setPristine();
  257 + $scope.termoReferenciaForm.criteriosSelecaoForm.$setPristine();
  258 + $scope.termoReferenciaForm.anexosObservacoesForm.$setPristine();
  259 + });
  260 +
  261 + createTemplates();
  262 + $scope.getConfiguracoesTemplate();
  263 + $scope.preenchePapeis();
  264 + $scope.carregarValoresPadrao();
  265 + $scope.atualizarListaSizeSelect();
  266 + $scope.atualizarListaSizeSelectPenalidade();
  267 + $scope.atualizarListaSizeSelectSancao();
  268 +
  269 + };
270 270
271 $scope.setRascunho = function(rascunho){ 271 $scope.setRascunho = function(rascunho){
272 272
@@ -279,102 +279,94 @@ citApp.controller(&#39;TermoReferenciaController&#39;, [&#39;$scope&#39;, @@ -279,102 +279,94 @@ citApp.controller(&#39;TermoReferenciaController&#39;, [&#39;$scope&#39;,
279 $scope.setLoading(false); 279 $scope.setLoading(false);
280 }; 280 };
281 281
282 - // Atualiza pagina de pesquisa  
283 - $scope.atualizaPaginaPesquisa = function () {  
284 - angular.element('#searchTermoReferencia').scope().fetchResult();  
285 - };  
286 -  
287 - $scope.openModalDetalhamentoSolucao = function() {  
288 - $scope.edicao = false;  
289 - $scope.termoReferenciaDetalhamentoSolucao = {};  
290 - $scope.editDetalhamento = true;  
291 -// $scope.atualizaListaEtBensServicos();  
292 - $scope.listEtBensServicos = $scope.termoReferencia.estudoTecnico.etBensServicosSolucoes; 282 + // Atualiza pagina de pesquisa
  283 + $scope.atualizaPaginaPesquisa = function () {
  284 + angular.element('#searchTermoReferencia').scope().fetchResult();
  285 + };
293 286
294 - $timeout(function() {  
295 - $scope.$openModal('modal-detalhamento-solucao.html', 'lg');  
296 - });  
297 - }; 287 + $scope.openModalDetalhamentoSolucao = function() {
  288 + $scope.edicao = false;
  289 + $scope.termoReferenciaDetalhamentoSolucao = {};
  290 + $scope.editDetalhamento = true;
  291 +// $scope.atualizaListaEtBensServicos();
  292 + $scope.listEtBensServicos = $scope.termoReferencia.estudoTecnico.etBensServicosSolucoes;
298 293
299 - $scope.openModalPenalidade = function() { 294 + $timeout(function() {
  295 + $scope.$openModal('modal-detalhamento-solucao.html', 'lg');
  296 + });
  297 + };
300 298
301 - $scope.penalidade = {};  
302 - $scope.editPenalidade = true; 299 + $scope.openModalPenalidade = function() {
303 300
304 - $timeout(function() {  
305 - $scope.$openModal('modal-penalidade.html', 'lg');  
306 - });  
307 - }; 301 + $scope.penalidade = {};
  302 + $scope.editPenalidade = true;
308 303
309 - $scope.openModalSancao = function() { 304 + $timeout(function() {
  305 + $scope.$openModal('modal-penalidade.html', 'lg');
  306 + });
  307 + };
310 308
311 - $scope.sancao = {};  
312 - $scope.editSancao = true; 309 + $scope.openModalSancao = function() {
313 310
314 - $timeout(function() {  
315 - $scope.$openModal('modal-sancao.html', 'lg');  
316 - });  
317 - }; 311 + $scope.sancao = {};
  312 + $scope.editSancao = true;
318 313
319 - $scope.uploader = new FileUploader({  
320 - autoUpload: false,  
321 - queueLimit: 1,  
322 - url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='  
323 - }); 314 + $timeout(function() {
  315 + $scope.$openModal('modal-sancao.html', 'lg');
  316 + });
  317 + };
324 318
325 - // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento  
326 - var salvarListaDocumentos = function(termo) { 319 + $scope.uploader = new FileUploader({
  320 + autoUpload: false,
  321 + queueLimit: 99,
  322 + url: '/cit-tabelas-corp-web/rest/anexo/uploadAnexo?idDocumento='
  323 + });
327 324
  325 + // metodo utilizado para percorrer a lista de documentos persistidos e verificar com a lista de documentos temporarios para verificacao de qual anexo pertence a qual documento
  326 + var salvarListaDocumentos = function(termoTemp) {
  327 + $scope.uploader.queue = [];
  328 +
328 angular.forEach($scope.termoReferencia.documentos, function(documentoSalvo, key) { 329 angular.forEach($scope.termoReferencia.documentos, function(documentoSalvo, key) {
329 // verifica se a entidade documento foi salva 330 // verifica se a entidade documento foi salva
330 if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) { 331 if (documentoSalvo !== undefined && documentoSalvo.id !== undefined) {
331 // percorre todos os documentos temporarios para verificacao do numero do documento 332 // percorre todos os documentos temporarios para verificacao do numero do documento
332 - angular.forEach(termo.documentos, function(documentoTransient, key) { 333 + angular.forEach(termoTemp.documentos, function(documentoTransient, key) {
333 // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado 334 // verifica se o numero do documento salvo e igual ao numero do documento transient que o anexo ainda esta vinculado
334 - if (documentoSalvo.numero === documentoTransient.numero) { 335 + if (documentoTransient.file && documentoSalvo.uuid === documentoTransient.uuid) {
335 //salva o anexo ao documento que tiver o mesmo numero do documento transient 336 //salva o anexo ao documento que tiver o mesmo numero do documento transient
336 - salvarUpload(documentoSalvo, documentoTransient.uploadsDocumento); 337 +
  338 + documentoTransient.file.url = documentoTransient.file.url + documentoSalvo.id;
  339 + $scope.uploader.queue.push(documentoTransient.file);
337 } 340 }
338 -  
339 }); 341 });
340 -  
341 } 342 }
342 }); 343 });
343 -  
344 - };  
345 -  
346 - // metodo responsavel para salvar os anexos da baixa depois de ter salvo a baixa, utilizando a referencia do id baixa.documento.id  
347 - var salvarUpload = function(documento, uploadsDocumento) {  
348 - $scope.uploader.queue = uploadsDocumento;  
349 - // percorre a lista de uploads a serem enviados  
350 - angular.forEach($scope.uploader.queue, function(item, key) {  
351 - item.url = item.url + documento.id;  
352 - });  
353 - if ($scope.uploader.queue && $scope.uploader.queue.length > 0) {  
354 - // realiza o upload se existir no minimo um arquivo para upload  
355 - $scope.uploader.uploadAll(); 344 +
  345 + if($scope.uploader.queue.length > 0){
  346 + $scope.uploader.uploadAll();
356 } 347 }
  348 + delete $scope.termoTemp;
357 }; 349 };
358 350
359 - // ADICIONAR Detalhamento Solucao  
360 - $scope.addDetalhamentoSolucao = function(formDetalhamento, continuarEditando) { 351 + // ADICIONAR Detalhamento Solucao
  352 + $scope.addDetalhamentoSolucao = function(formDetalhamento, continuarEditando) {
361 353
362 var detalhe = $scope.termoReferenciaDetalhamentoSolucao; 354 var detalhe = $scope.termoReferenciaDetalhamentoSolucao;
363 formDetalhamento.$submitted = true; 355 formDetalhamento.$submitted = true;
364 - 356 +
365 //verifica se o formulario esta valido para salvar 357 //verifica se o formulario esta valido para salvar
366 if (formDetalhamento.$invalid) { 358 if (formDetalhamento.$invalid) {
367 //Mensagem de erro de campos obrigatorios nao preenchidos 359 //Mensagem de erro de campos obrigatorios nao preenchidos
368 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false); 360 $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
369 return; 361 return;
370 } 362 }
371 - 363 +
372 if (detalhe.formaPagamento && detalhe.formaPagamento.codigo===1){ 364 if (detalhe.formaPagamento && detalhe.formaPagamento.codigo===1){
373 $scope.termoReferenciaDetalhamentoSolucao.numeroParcelas = null; 365 $scope.termoReferenciaDetalhamentoSolucao.numeroParcelas = null;
374 } 366 }
375 $scope.setLoadingSalva(true); 367 $scope.setLoadingSalva(true);
376 var isDuplicado = false; 368 var isDuplicado = false;
377 - 369 +
378 if($scope.edicao && $scope.bemServicoSolucaoValidatorId != $scope.termoReferenciaDetalhamentoSolucao.bemServicoSolucao.id){ 370 if($scope.edicao && $scope.bemServicoSolucaoValidatorId != $scope.termoReferenciaDetalhamentoSolucao.bemServicoSolucao.id){
379 angular.forEach($scope.termoReferencia.detalhamentosSolucoes, function (item, idx) { 371 angular.forEach($scope.termoReferencia.detalhamentosSolucoes, function (item, idx) {
380 if (item.bemServicoSolucao.id === detalhe.bemServicoSolucao.id) { 372 if (item.bemServicoSolucao.id === detalhe.bemServicoSolucao.id) {
@@ -393,738 +385,739 @@ citApp.controller(&#39;TermoReferenciaController&#39;, [&#39;$scope&#39;, @@ -393,738 +385,739 @@ citApp.controller(&#39;TermoReferenciaController&#39;, [&#39;$scope&#39;,
393 } 385 }
394 }); 386 });
395 } 387 }
396 - 388 +
397 if (!isDuplicado) { 389 if (!isDuplicado) {
398 - 390 +
399 if (detalhe.$index != undefined && detalhe.$index != null) { 391 if (detalhe.$index != undefined && detalhe.$index != null) {
400 $scope.termoReferencia.detalhamentosSolucoes[detalhe.$index] = detalhe; 392 $scope.termoReferencia.detalhamentosSolucoes[detalhe.$index] = detalhe;
401 } else { 393 } else {
402 $scope.termoReferencia.detalhamentosSolucoes.push(detalhe); 394 $scope.termoReferencia.detalhamentosSolucoes.push(detalhe);
403 } 395 }
404 - 396 +
405 if(continuarEditando){ 397 if(continuarEditando){
406 $scope.edicao = false; 398 $scope.edicao = false;
407 delete $scope.bemServicoSolucaoValidatorId; 399 delete $scope.bemServicoSolucaoValidatorId;
408 formDetalhamento.$submitted = false; 400 formDetalhamento.$submitted = false;
409 formDetalhamento.$setPristine(); 401 formDetalhamento.$setPristine();
410 $scope.termoReferenciaDetalhamentoSolucao = {}; 402 $scope.termoReferenciaDetalhamentoSolucao = {};
411 - $scope.listEtBensServicos = $scope.termoReferencia.estudoTecnico.etBensServicosSolucoes; 403 + $scope.listEtBensServicos = $scope.termoReferencia.estudoTecnico.etBensServicosSolucoes;
412 }else{ 404 }else{
413 $scope.$modalInstance.dismiss('cancel'); 405 $scope.$modalInstance.dismiss('cancel');
414 } 406 }
415 $scope.atualizarListaSizeSelect(); 407 $scope.atualizarListaSizeSelect();
416 } 408 }
417 - 409 +
418 $scope.setLoadingSalva(false); 410 $scope.setLoadingSalva(false);
419 -  
420 - };  
421 411
422 - // ADICIONAR Penalidade  
423 - $scope.addPenalidade = function(formPenalidade, continuarEditando) { 412 + };
424 413
425 - var penalid = $scope.penalidade; 414 + // ADICIONAR Penalidade
  415 + $scope.addPenalidade = function(formPenalidade, continuarEditando) {
426 416
427 - formPenalidade.$submitted = true; 417 + var penalid = $scope.penalidade;
428 418
429 - //verifica se o formulario esta valido para salvar  
430 - if (formPenalidade.$invalid) {  
431 - //Mensagem de erro de campos obrigatorios nao preenchidos  
432 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);  
433 - return;  
434 - } 419 + formPenalidade.$submitted = true;
435 420
436 - $scope.setLoadingSalva(true); 421 + //verifica se o formulario esta valido para salvar
  422 + if (formPenalidade.$invalid) {
  423 + //Mensagem de erro de campos obrigatorios nao preenchidos
  424 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  425 + return;
  426 + }
437 427
438 - if (penalid.$index != undefined && penalid.$index != null) {  
439 - $scope.termoReferencia.penalidades[penalid.$index] = penalid;  
440 - } else {  
441 - $scope.termoReferencia.penalidades.push(penalid);  
442 - } 428 + $scope.setLoadingSalva(true);
443 429
444 - $scope.setLoadingSalva(false);  
445 -  
446 - if(continuarEditando){  
447 - formPenalidade.$submitted = false;  
448 - formPenalidade.$setPristine();  
449 - $scope.penalidade = {};  
450 - }else{  
451 - $scope.$modalInstance.dismiss('cancel');  
452 - } 430 + if (penalid.$index != undefined && penalid.$index != null) {
  431 + $scope.termoReferencia.penalidades[penalid.$index] = penalid;
  432 + } else {
  433 + $scope.termoReferencia.penalidades.push(penalid);
  434 + }
  435 +
  436 + $scope.setLoadingSalva(false);
  437 +
  438 + if(continuarEditando){
  439 + formPenalidade.$submitted = false;
  440 + formPenalidade.$setPristine();
  441 + $scope.penalidade = {};
  442 + }else{
  443 + $scope.$modalInstance.dismiss('cancel');
  444 + }
453 $scope.atualizarListaSizeSelectPenalidade(); 445 $scope.atualizarListaSizeSelectPenalidade();
454 - }; 446 + };
455 447
456 - // ADICIONAR Penalidade  
457 - $scope.addSancao = function(formSancao, continuarEditando) { 448 + // ADICIONAR Penalidade
  449 + $scope.addSancao = function(formSancao, continuarEditando) {
458 450
459 - var sans = $scope.sancao; 451 + var sans = $scope.sancao;
460 452
461 - formSancao.$submitted = true; 453 + formSancao.$submitted = true;
462 454
463 - //verifica se o formulario esta valido para salvar  
464 - if (formSancao.$invalid) {  
465 - //Mensagem de erro de campos obrigatorios nao preenchidos  
466 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);  
467 - return;  
468 - } 455 + //verifica se o formulario esta valido para salvar
  456 + if (formSancao.$invalid) {
  457 + //Mensagem de erro de campos obrigatorios nao preenchidos
  458 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  459 + return;
  460 + }
469 461
470 - $scope.setLoadingSalva(true); 462 + $scope.setLoadingSalva(true);
471 463
472 - if (sans.$index != undefined && sans.$index != null) {  
473 - $scope.termoReferencia.sancoes[sans.$index] = sans;  
474 - } else {  
475 - $scope.termoReferencia.sancoes.push(sans);  
476 - } 464 + if (sans.$index != undefined && sans.$index != null) {
  465 + $scope.termoReferencia.sancoes[sans.$index] = sans;
  466 + } else {
  467 + $scope.termoReferencia.sancoes.push(sans);
  468 + }
477 469
478 - $scope.setLoadingSalva(false); 470 + $scope.setLoadingSalva(false);
479 471
480 - if(continuarEditando){  
481 - formSancao.$submitted = false;  
482 - formSancao.$setPristine();  
483 - $scope.sancao = {};  
484 - } else {  
485 - $scope.$modalInstance.dismiss('cancel');  
486 - }  
487 - }; 472 + if(continuarEditando){
  473 + formSancao.$submitted = false;
  474 + formSancao.$setPristine();
  475 + $scope.sancao = {};
  476 + } else {
  477 + $scope.$modalInstance.dismiss('cancel');
  478 + }
  479 + };
488 480
489 - //Watch para calcular total  
490 - $scope.$watch('termoReferenciaDetalhamentoSolucao.valor', function() {  
491 - $timeout(function() {  
492 - if ($scope.termoReferenciaDetalhamentoSolucao && ($scope.termoReferenciaDetalhamentoSolucao.valor && $scope.termoReferenciaDetalhamentoSolucao.quantidade)) {  
493 - $scope.termoReferenciaDetalhamentoSolucao.total = $scope.termoReferenciaDetalhamentoSolucao.valor * $scope.termoReferenciaDetalhamentoSolucao.quantidade;  
494 - } else {  
495 - if ($scope.termoReferenciaDetalhamentoSolucao) {  
496 - $scope.termoReferenciaDetalhamentoSolucao.total = null;  
497 - }  
498 - }  
499 - });  
500 - });  
501 -  
502 - //Watch para calcular total  
503 - $scope.$watch('termoReferenciaDetalhamentoSolucao.quantidade', function() {  
504 - $timeout(function() {  
505 - if ($scope.termoReferenciaDetalhamentoSolucao && ($scope.termoReferenciaDetalhamentoSolucao.valor && $scope.termoReferenciaDetalhamentoSolucao.quantidade)) {  
506 - $scope.termoReferenciaDetalhamentoSolucao.total = $scope.termoReferenciaDetalhamentoSolucao.valor * $scope.termoReferenciaDetalhamentoSolucao.quantidade;  
507 - } else {  
508 - if ($scope.termoReferenciaDetalhamentoSolucao) {  
509 - $scope.termoReferenciaDetalhamentoSolucao.total = null;  
510 - }  
511 - }  
512 - });  
513 - });  
514 -  
515 - $scope.getConfiguracoesTemplate = function () {  
516 - ConfiguracaoRepository.getConfiguracao($scope.usuarioLogado.organizacao.id).then(function (result) {  
517 - var configTemp = result.originalElement;  
518 - var parametro;  
519 - for (var i = 0; i < configTemp.parametros.length; i++){  
520 - parametro = configTemp.parametros[i];  
521 - switch (parametro.chave) {  
522 - case "DEVERES_RESPONSABILIDADES_CONTRATANTE" :  
523 - $scope.termoReferencia.deveresContratante = parametro.valor;  
524 - break;  
525 - case "DEVERES_RESPONSABILIDADES_CONTRATADA" :  
526 - $scope.termoReferencia.deveresContratada = parametro.valor;  
527 - break;  
528 - case "DEVERES_RESPONSABILIDADES_ORGAO" :  
529 - $scope.termoReferencia.deveresOrgaoRegistroPreco = parametro.valor;  
530 - break;  
531 - case "MECANISMOS_FORMAIS_COMUNICACAO" :  
532 - $scope.termoReferencia.mecanismoComunicacao = parametro.valor;  
533 - break;  
534 - };  
535 - };  
536 - });  
537 - }; 481 + //Watch para calcular total
  482 + $scope.$watch('termoReferenciaDetalhamentoSolucao.valor', function() {
  483 + $timeout(function() {
  484 + if ($scope.termoReferenciaDetalhamentoSolucao && ($scope.termoReferenciaDetalhamentoSolucao.valor && $scope.termoReferenciaDetalhamentoSolucao.quantidade)) {
  485 + $scope.termoReferenciaDetalhamentoSolucao.total = $scope.termoReferenciaDetalhamentoSolucao.valor * $scope.termoReferenciaDetalhamentoSolucao.quantidade;
  486 + } else {
  487 + if ($scope.termoReferenciaDetalhamentoSolucao) {
  488 + $scope.termoReferenciaDetalhamentoSolucao.total = null;
  489 + }
  490 + }
  491 + });
  492 + });
538 493
539 - // marca DetalhamentoSolucao  
540 - $scope.checkDetalhamentoSolucao = function(index) {  
541 - $timeout(function() {  
542 - for (var i = 0; i < $scope.termoReferencia.detalhamentosSolucoes.length; i++) {  
543 - if (i == index) {  
544 - $scope.termoReferencia.detalhamentosSolucoes[i].$checked = true;  
545 - } else {  
546 - $scope.termoReferencia.detalhamentosSolucoes[i].$checked = false;  
547 - }  
548 - }  
549 - $scope.atualizarListaSizeSelect();  
550 - });  
551 - }; 494 + //Watch para calcular total
  495 + $scope.$watch('termoReferenciaDetalhamentoSolucao.quantidade', function() {
  496 + $timeout(function() {
  497 + if ($scope.termoReferenciaDetalhamentoSolucao && ($scope.termoReferenciaDetalhamentoSolucao.valor && $scope.termoReferenciaDetalhamentoSolucao.quantidade)) {
  498 + $scope.termoReferenciaDetalhamentoSolucao.total = $scope.termoReferenciaDetalhamentoSolucao.valor * $scope.termoReferenciaDetalhamentoSolucao.quantidade;
  499 + } else {
  500 + if ($scope.termoReferenciaDetalhamentoSolucao) {
  501 + $scope.termoReferenciaDetalhamentoSolucao.total = null;
  502 + }
  503 + }
  504 + });
  505 + });
  506 +
  507 + $scope.getConfiguracoesTemplate = function () {
  508 + ConfiguracaoRepository.getConfiguracao($scope.usuarioLogado.organizacao.id).then(function (result) {
  509 + var configTemp = result.originalElement;
  510 + var parametro;
  511 + for (var i = 0; i < configTemp.parametros.length; i++){
  512 + parametro = configTemp.parametros[i];
  513 + switch (parametro.chave) {
  514 + case "DEVERES_RESPONSABILIDADES_CONTRATANTE" :
  515 + $scope.termoReferencia.deveresContratante = parametro.valor;
  516 + break;
  517 + case "DEVERES_RESPONSABILIDADES_CONTRATADA" :
  518 + $scope.termoReferencia.deveresContratada = parametro.valor;
  519 + break;
  520 + case "DEVERES_RESPONSABILIDADES_ORGAO" :
  521 + $scope.termoReferencia.deveresOrgaoRegistroPreco = parametro.valor;
  522 + break;
  523 + case "MECANISMOS_FORMAIS_COMUNICACAO" :
  524 + $scope.termoReferencia.mecanismoComunicacao = parametro.valor;
  525 + break;
  526 + };
  527 + };
  528 + });
  529 + };
552 530
553 - // recupera DetalhamentoSolucao selecionada  
554 - $scope.getDetalhamentoSolucaoChecked = function() {  
555 - var detalhamentoSolucaoChecked = undefined;  
556 - $scope.termoReferenciaDetalhamentoSolucao = {};  
557 - $scope.termoReferencia.detalhamentosSolucoes.forEach(function(detalhe) {  
558 - if (detalhe.$checked) {  
559 - detalhamentoSolucaoChecked = detalhe;  
560 - }  
561 - }); 531 + // marca DetalhamentoSolucao
  532 + $scope.checkDetalhamentoSolucao = function(index) {
  533 + $timeout(function() {
  534 + for (var i = 0; i < $scope.termoReferencia.detalhamentosSolucoes.length; i++) {
  535 + if (i == index) {
  536 + $scope.termoReferencia.detalhamentosSolucoes[i].$checked = true;
  537 + } else {
  538 + $scope.termoReferencia.detalhamentosSolucoes[i].$checked = false;
  539 + }
  540 + }
  541 + $scope.atualizarListaSizeSelect();
  542 + });
  543 + };
562 544
563 - return detalhamentoSolucaoChecked;  
564 - }; 545 + // recupera DetalhamentoSolucao selecionada
  546 + $scope.getDetalhamentoSolucaoChecked = function() {
  547 + var detalhamentoSolucaoChecked = undefined;
  548 + $scope.termoReferenciaDetalhamentoSolucao = {};
  549 + $scope.termoReferencia.detalhamentosSolucoes.forEach(function(detalhe) {
  550 + if (detalhe.$checked) {
  551 + detalhamentoSolucaoChecked = detalhe;
  552 + }
  553 + });
565 554
566 - // marca Penalidade  
567 - $scope.checkPenalidade = function(index) {  
568 - $timeout(function() {  
569 - for (var i = 0; i < $scope.termoReferencia.penalidades.length; i++) {  
570 - if (i == index) {  
571 - $scope.termoReferencia.penalidades[i].$checked = true;  
572 - } else {  
573 - $scope.termoReferencia.penalidades[i].$checked = false;  
574 - }  
575 - }  
576 - $scope.atualizarListaSizeSelectPenalidade();  
577 - });  
578 - }; 555 + return detalhamentoSolucaoChecked;
  556 + };
579 557
580 - // recupera Penalidade selecionada  
581 - $scope.getPenalidadeChecked = function() {  
582 - var penalidadeChecked = undefined;  
583 - $scope.termoReferenciaPenalidade = {};  
584 - $scope.termoReferencia.penalidades.forEach(function(penalidade) {  
585 - if (penalidade.$checked) {  
586 - penalidadeChecked = penalidade;  
587 - }  
588 - }); 558 + // marca Penalidade
  559 + $scope.checkPenalidade = function(index) {
  560 + $timeout(function() {
  561 + for (var i = 0; i < $scope.termoReferencia.penalidades.length; i++) {
  562 + if (i == index) {
  563 + $scope.termoReferencia.penalidades[i].$checked = true;
  564 + } else {
  565 + $scope.termoReferencia.penalidades[i].$checked = false;
  566 + }
  567 + }
  568 + $scope.atualizarListaSizeSelectPenalidade();
  569 + });
  570 + };
589 571
590 - return penalidadeChecked;  
591 - }; 572 + // recupera Penalidade selecionada
  573 + $scope.getPenalidadeChecked = function() {
  574 + var penalidadeChecked = undefined;
  575 + $scope.termoReferenciaPenalidade = {};
  576 + $scope.termoReferencia.penalidades.forEach(function(penalidade) {
  577 + if (penalidade.$checked) {
  578 + penalidadeChecked = penalidade;
  579 + }
  580 + });
592 581
593 - // marca Sancao  
594 - $scope.checkSancao = function(index) {  
595 - $timeout(function() {  
596 - for (var i = 0; i < $scope.termoReferencia.sancoes.length; i++) {  
597 - if (i == index) {  
598 - $scope.termoReferencia.sancoes[i].$checked = true;  
599 - } else {  
600 - $scope.termoReferencia.sancoes[i].$checked = false;  
601 - }  
602 - }  
603 - $scope.atualizarListaSizeSelectSancao();  
604 - });  
605 - }; 582 + return penalidadeChecked;
  583 + };
606 584
607 - // recupera Sancao selecionada  
608 - $scope.getSancaoChecked = function() {  
609 - var sancaoChecked = undefined;  
610 - $scope.termoReferenciaSancao = {};  
611 - $scope.termoReferencia.sancoes.forEach(function(sancao) {  
612 - if (sancao.$checked) {  
613 - sancaoChecked = sancao;  
614 - }  
615 - }); 585 + // marca Sancao
  586 + $scope.checkSancao = function(index) {
  587 + $timeout(function() {
  588 + for (var i = 0; i < $scope.termoReferencia.sancoes.length; i++) {
  589 + if (i == index) {
  590 + $scope.termoReferencia.sancoes[i].$checked = true;
  591 + } else {
  592 + $scope.termoReferencia.sancoes[i].$checked = false;
  593 + }
  594 + }
  595 + $scope.atualizarListaSizeSelectSancao();
  596 + });
  597 + };
616 598
617 - return sancaoChecked;  
618 - }; 599 + // recupera Sancao selecionada
  600 + $scope.getSancaoChecked = function() {
  601 + var sancaoChecked = undefined;
  602 + $scope.termoReferenciaSancao = {};
  603 + $scope.termoReferencia.sancoes.forEach(function(sancao) {
  604 + if (sancao.$checked) {
  605 + sancaoChecked = sancao;
  606 + }
  607 + });
619 608
620 - $scope.preenchePapeis = function(){  
621 - DominioRepository.findAllDominio('tipoPapelEquipeContratos').then(function(result) {  
622 - $scope.dominioPapeis = result; 609 + return sancaoChecked;
  610 + };
623 611
624 - angular.forEach($scope.dominioPapeis, function(value, key){  
625 - $scope.papeis+= value.descricao + '\n';  
626 - }); 612 + $scope.preenchePapeis = function(){
  613 + DominioRepository.findAllDominio('tipoPapelEquipeContratos').then(function(result) {
  614 + $scope.dominioPapeis = result;
627 615
628 - }); 616 + angular.forEach($scope.dominioPapeis, function(value, key){
  617 + $scope.papeis+= value.descricao + '\n';
  618 + });
629 619
630 - }; 620 + });
631 621
632 - $scope.carregarValoresPadrao = function() {  
633 - DominioRepository.findAllDominioByCodigo('tipoEmpreitada', 2).then(function(result) {  
634 - $scope.termoReferencia.empreitada = result.originalElement;  
635 - }); 622 + };
636 623
637 - DominioRepository.findAllDominioByCodigo('tipoAdjudicacaoObjeto', 2).then(function(result) {  
638 - $scope.termoReferencia.adjudicacaoObjeto = result.originalElement;  
639 - }); 624 + $scope.carregarValoresPadrao = function() {
  625 + DominioRepository.findAllDominioByCodigo('tipoEmpreitada', 2).then(function(result) {
  626 + $scope.termoReferencia.empreitada = result.originalElement;
  627 + });
640 628
641 - if($scope.dominioTiposSancaoList){  
642 - angular.forEach($scope.dominioTiposSancaoList, function(sancaoDominio) {  
643 - var sans = {sancao : sancaoDominio.descricao, dominioTipoSancao : sancaoDominio.originalElement, descricao : $translate.instant('LABEL.DESCREVER_SANCAO')};  
644 - $scope.termoReferencia.sancoes.push(sans);  
645 - });  
646 - }  
647 - }; 629 + DominioRepository.findAllDominioByCodigo('tipoAdjudicacaoObjeto', 2).then(function(result) {
  630 + $scope.termoReferencia.adjudicacaoObjeto = result.originalElement;
  631 + });
648 632
649 - //###################### METODOS DA BARRA DE ACOES DO FORMULARIO ####################################  
650 -  
651 - function setFormsTermoReferenciaSubmitted(valor){  
652 - $scope.termoReferenciaForm.$submitted = valor;  
653 - $scope.termoReferenciaForm.equipeContratacaoForm.$submitted = valor;  
654 - $scope.termoReferenciaForm.justificativaContratacaoForm.$submitted = valor;  
655 - $scope.termoReferenciaForm.especificacoesTecnicasForm.$submitted = valor;  
656 - $scope.termoReferenciaForm.modeloGestaoForm.$submitted = valor;  
657 - $scope.termoReferenciaForm.sancoesForm.$submitted = valor;  
658 - $scope.termoReferenciaForm.criteriosSelecaoForm.$submitted = valor;  
659 - $scope.termoReferenciaForm.anexosObservacoesForm.$submitted = valor;  
660 - }  
661 - // SALVA O TERMO  
662 - $scope.saveOrUpdate = function(){  
663 -  
664 - setFormsTermoReferenciaSubmitted(true);  
665 -  
666 - //Vefifica se o termoReferenciaForm esta invalido, caso esteja envia um alerta para o usuario  
667 - if($scope.termoReferenciaForm.$invalid){  
668 - $scope.showAlert('error', $translate.instant('MSG.MN001'));  
669 - } else {  
670 - var termoTemp = {  
671 - documentos: []  
672 - };  
673 -  
674 - // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento  
675 - angular.forEach($scope.termoReferencia.documentos, function(documento, key) {  
676 - if (documento.uploadsDocumento) {  
677 - termoTemp.documentos.push({  
678 - uploadsDocumento: clone(documento.uploadsDocumento),  
679 - numero: clone(documento.numero)  
680 - });  
681 - // deleta esse atributo por causa de um erro de ciclo no json  
682 - delete documento.uploadsDocumento;  
683 - }  
684 - });  
685 -  
686 - $scope.setLoadingSalva(true);  
687 -  
688 - $scope.termoReferencia.rascunho = $scope.workspace.rascunho ? $scope.workspace.rascunho.id : null;  
689 - TermoReferenciaRepository.save($scope.termoReferencia).then(function(result) {  
690 -  
691 - $scope.termoReferencia = result.originalElement;  
692 - $scope.atualizaListaBeneficiosEsperados($scope.termoReferencia.estudoTecnico);  
693 - $scope.atualizaListaJustificativasContratacao($scope.termoReferencia.estudoTecnico);  
694 - $scope.atualizaInformacoesIntegrantesEstudoTecnico($scope.termoReferencia.estudoTecnico);  
695 -  
696 - $scope.setLoading(false);  
697 - $scope.showAlert("success", $translate.instant('MSG.SUCESSO_SALVAR_TERMO_REFERENCIA'));  
698 - // depois de salvar o termo ja tendo uma referencia do id do termo, esse metodo ira salvar os documentos se houver  
699 - salvarListaDocumentos(termoTemp);  
700 - setFormsTermoReferenciaSubmitted(false);  
701 -  
702 - $timeout(function() {  
703 - $scope.$showPageSearchWorkspace($scope.workspace);  
704 - $scope.atualizaPaginaPesquisa(); 633 + if($scope.dominioTiposSancaoList){
  634 + angular.forEach($scope.dominioTiposSancaoList, function(sancaoDominio) {
  635 + var sans = {sancao : sancaoDominio.descricao, dominioTipoSancao : sancaoDominio.originalElement, descricao : $translate.instant('LABEL.DESCREVER_SANCAO')};
  636 + $scope.termoReferencia.sancoes.push(sans);
705 }); 637 });
706 -  
707 - });  
708 - };  
709 - };  
710 -  
711 - $scope.editar = function () {  
712 - $scope.edit = true;  
713 - $scope.pgEdit = true;  
714 - };  
715 -  
716 - // Consulta entidade e mostra no formulario  
717 - $scope.getTermo = function(idTermo, edit) {  
718 - $scope.resetForm();  
719 - $scope.setLoadingGet(true);  
720 -  
721 - TermoReferenciaRepository.get(idTermo).then(function(result) {  
722 -  
723 - $scope.termoReferencia = result.originalElement;  
724 - $scope.edit = edit;  
725 - $scope.atualizaListaBeneficiosEsperados($scope.termoReferencia.estudoTecnico);  
726 - $scope.atualizaListaJustificativasContratacao($scope.termoReferencia.estudoTecnico);  
727 - $scope.atualizaInformacoesIntegrantesEstudoTecnico($scope.termoReferencia.estudoTecnico);  
728 - $scope.stopTimerIntervalDraft($scope.workspace);  
729 - $scope.setLoading(false);  
730 - });  
731 - }; 638 + }
  639 + };
732 640
733 - // MODAL QUE CONFIRMA REMOVER TERMO  
734 - $scope.remover = function(termo){  
735 - $scope.$openModalConfirm({  
736 - message: $translate.instant('MSG.CONFIRMA_EXCLUIR_TERMO_REFERENCIA'),  
737 - callback: function () {  
738 - TermoReferenciaRepository.remove(termo).then(function() {  
739 - $scope.termoReferencia = {}; 641 + //###################### METODOS DA BARRA DE ACOES DO FORMULARIO ####################################
  642 +
  643 + function setFormsTermoReferenciaSubmitted(valor){
  644 + $scope.termoReferenciaForm.$submitted = valor;
  645 + $scope.termoReferenciaForm.equipeContratacaoForm.$submitted = valor;
  646 + $scope.termoReferenciaForm.justificativaContratacaoForm.$submitted = valor;
  647 + $scope.termoReferenciaForm.especificacoesTecnicasForm.$submitted = valor;
  648 + $scope.termoReferenciaForm.modeloGestaoForm.$submitted = valor;
  649 + $scope.termoReferenciaForm.sancoesForm.$submitted = valor;
  650 + $scope.termoReferenciaForm.criteriosSelecaoForm.$submitted = valor;
  651 + $scope.termoReferenciaForm.anexosObservacoesForm.$submitted = valor;
  652 + }
  653 + // SALVA O TERMO
  654 + $scope.saveOrUpdate = function(){
  655 +
  656 + setFormsTermoReferenciaSubmitted(true);
  657 +
  658 + //Vefifica se o termoReferenciaForm esta invalido, caso esteja envia um alerta para o usuario
  659 + if($scope.termoReferenciaForm.$invalid){
  660 + $scope.showAlert('error', $translate.instant('MSG.MN001'));
  661 + } else {
  662 + var termoTemp = {
  663 + documentos: []
  664 + };
740 665
741 - $scope.showAlert("success", $translate.instant('MSG.SUCESSO_EXCLUSAO_TERMO_REFERENCIA'));  
742 - angular.element('#searchTermoReferencia').scope().fetchResult(); 666 + // preencher lista de documentos temporarios para verificacao dos anexos. verificar qual anexo e de qual documento pelo numero do documento
  667 + angular.forEach($scope.termoReferencia.documentos, function(documento, key) {
  668 + if (documento.uploadsDocumento) {
  669 + documento.uuid = getUuid();
  670 + termoTemp.documentos.push({
  671 + file: documento.uploadsDocumento[0],
  672 + uuid: clone(documento.uuid)
  673 + });
  674 + // deleta esse atributo por causa de um erro de ciclo no json
  675 + delete documento.uploadsDocumento;
  676 + }
  677 + });
743 678
744 - });  
745 -  
746 - $scope.$modalConfirmInstance.dismiss('cancel');  
747 - $scope.resetForm();  
748 - }  
749 - });  
750 - };  
751 -  
752 - $scope.abrirDetalhamentoSolucao = function(edit) {  
753 -  
754 - $scope.listEtBensServicos = $scope.termoReferencia.estudoTecnico.etBensServicosSolucoes;  
755 - $scope.termoReferenciaDetalhamentoSolucao = clone($scope.getDetalhamentoSolucaoChecked());  
756 - $scope.edicao = true;  
757 - $scope.editDetalhamento = edit;  
758 -  
759 - $scope.bemServicoSolucaoValidatorId = $scope.termoReferenciaDetalhamentoSolucao.bemServicoSolucao.id; 679 + $scope.setLoadingSalva(true);
760 680
761 - if(!edit && !$scope.termoReferenciaDetalhamentoSolucao) {//DetalhamentoSolucao  
762 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
763 - return;  
764 - } 681 + $scope.termoReferencia.rascunho = $scope.workspace.rascunho ? $scope.workspace.rascunho.id : null;
  682 + TermoReferenciaRepository.save($scope.termoReferencia).then(function(result) {
765 683
766 - if(edit && !$scope.termoReferenciaDetalhamentoSolucao) {  
767 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));  
768 - return;  
769 - } 684 + $scope.termoReferencia = result.originalElement;
  685 + $scope.atualizaListaBeneficiosEsperados($scope.termoReferencia.estudoTecnico);
  686 + $scope.atualizaListaJustificativasContratacao($scope.termoReferencia.estudoTecnico);
  687 + $scope.atualizaInformacoesIntegrantesEstudoTecnico($scope.termoReferencia.estudoTecnico);
770 688
771 - if ($scope.termoReferenciaDetalhamentoSolucao.prazoEntrega){ 689 + $scope.setLoading(false);
  690 + $scope.showAlert("success", $translate.instant('MSG.SUCESSO_SALVAR_TERMO_REFERENCIA'));
  691 + // depois de salvar o termo ja tendo uma referencia do id do termo, esse metodo ira salvar os documentos se houver
  692 + salvarListaDocumentos(termoTemp);
  693 + setFormsTermoReferenciaSubmitted(false);
772 694
773 - $scope.termoReferenciaDetalhamentoSolucao.prazoEntrega = $filter('date')( $scope.termoReferenciaDetalhamentoSolucao.prazoEntrega, "dd/MM/yyyy");  
774 - } 695 + $timeout(function() {
  696 + $scope.$showPageSearchWorkspace($scope.workspace);
  697 + $scope.atualizaPaginaPesquisa();
  698 + });
775 699
776 - $timeout(function() {  
777 - $scope.$openModal('modal-detalhamento-solucao.html', 'lg');  
778 - });  
779 - }; 700 + });
  701 + };
  702 + };
780 703
781 - $scope.abrirPenalidade = function(edit) { 704 + $scope.editar = function () {
  705 + $scope.edit = true;
  706 + $scope.pgEdit = true;
  707 + };
782 708
783 - $scope.penalidade = clone($scope.getPenalidadeChecked()); 709 + // Consulta entidade e mostra no formulario
  710 + $scope.getTermo = function(idTermo, edit) {
  711 + $scope.resetForm();
  712 + $scope.setLoadingGet(true);
784 713
785 - $scope.editPenalidade = edit; 714 + TermoReferenciaRepository.get(idTermo).then(function(result) {
786 715
787 - if(!edit && !$scope.penalidade) {  
788 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
789 - return;  
790 - } 716 + $scope.termoReferencia = result.originalElement;
  717 + $scope.edit = edit;
  718 + $scope.atualizaListaBeneficiosEsperados($scope.termoReferencia.estudoTecnico);
  719 + $scope.atualizaListaJustificativasContratacao($scope.termoReferencia.estudoTecnico);
  720 + $scope.atualizaInformacoesIntegrantesEstudoTecnico($scope.termoReferencia.estudoTecnico);
  721 + $scope.stopTimerIntervalDraft($scope.workspace);
  722 + $scope.setLoading(false);
  723 + });
  724 + };
791 725
792 - if(edit && !$scope.penalidade) {  
793 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));  
794 - return;  
795 - } 726 + // MODAL QUE CONFIRMA REMOVER TERMO
  727 + $scope.remover = function(termo){
  728 + $scope.$openModalConfirm({
  729 + message: $translate.instant('MSG.CONFIRMA_EXCLUIR_TERMO_REFERENCIA'),
  730 + callback: function () {
  731 + TermoReferenciaRepository.remove(termo).then(function() {
  732 + $scope.termoReferencia = {};
796 733
797 - $timeout(function() {  
798 - $scope.$openModal('modal-penalidade.html', 'lg');  
799 - });  
800 - }; 734 + $scope.showAlert("success", $translate.instant('MSG.SUCESSO_EXCLUSAO_TERMO_REFERENCIA'));
  735 + angular.element('#searchTermoReferencia').scope().fetchResult();
801 736
802 - $scope.abrirSancao = function(edit) { 737 + });
803 738
804 - $scope.sancao = clone($scope.getSancaoChecked()); 739 + $scope.$modalConfirmInstance.dismiss('cancel');
  740 + $scope.resetForm();
  741 + }
  742 + });
  743 + };
805 744
806 - $scope.editSancao = edit; 745 + $scope.abrirDetalhamentoSolucao = function(edit) {
807 746
808 - if(!edit && !$scope.sancao) {  
809 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));  
810 - return;  
811 - } 747 + $scope.listEtBensServicos = $scope.termoReferencia.estudoTecnico.etBensServicosSolucoes;
  748 + $scope.termoReferenciaDetalhamentoSolucao = clone($scope.getDetalhamentoSolucaoChecked());
  749 + $scope.edicao = true;
  750 + $scope.editDetalhamento = edit;
812 751
813 - if(edit && !$scope.sancao) {  
814 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));  
815 - return;  
816 - } 752 + $scope.bemServicoSolucaoValidatorId = $scope.termoReferenciaDetalhamentoSolucao.bemServicoSolucao.id;
817 753
818 - $timeout(function() {  
819 - $scope.$openModal('modal-sancao.html', 'lg');  
820 - });  
821 - }; 754 + if(!edit && !$scope.termoReferenciaDetalhamentoSolucao) {//DetalhamentoSolucao
  755 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  756 + return;
  757 + }
822 758
823 - $scope.removerPenalidade = function() {  
824 - $scope.penalidade = $scope.getPenalidadeChecked();  
825 -  
826 - if ($scope.penalidade) {  
827 - $scope.$openModalConfirm({  
828 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
829 - callback: function() {  
830 - var index = 0;  
831 -  
832 - $scope.termoReferencia.penalidades.forEach(function(penalidade, key) {  
833 - if (penalidade.$checked) {  
834 - index = key;  
835 - }  
836 - });  
837 -  
838 - $scope.termoReferencia.penalidades.splice(index, 1);  
839 - $scope.atualizarListaSizeSelectPenalidade();  
840 - $scope.$modalConfirmInstance.dismiss('cancel');  
841 - }  
842 - });  
843 - } else {  
844 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));  
845 - }  
846 - }; 759 + if(edit && !$scope.termoReferenciaDetalhamentoSolucao) {
  760 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));
  761 + return;
  762 + }
847 763
848 - $scope.removerSancao = function() {  
849 - $scope.sancao = $scope.getSancaoChecked();  
850 -  
851 - if ($scope.sancao) {  
852 - EventoRegistroNaoConformidadeRepository.existeVinculoSancoesComNaoConformidade($scope.sancao.id).then(function(result) {  
853 - if(result){  
854 - $scope.showAlert('warning', $translate.instant('CONTRATOS.MSG.SANCAO_VINCULADA_NAO_CONFORMIDADE'));  
855 - }else{  
856 - $scope.$openModalConfirm({  
857 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
858 - callback: function() {  
859 - var index = 0;  
860 -  
861 - $scope.termoReferencia.sancoes.forEach(function(sancao, key) {  
862 - if (sancao.$checked) {  
863 - index = key;  
864 - }  
865 - });  
866 -  
867 -  
868 - $scope.termoReferencia.sancoes.splice(index, 1);  
869 - $scope.atualizarListaSizeSelectSancao();  
870 - $scope.$modalConfirmInstance.dismiss('cancel');  
871 - }  
872 - });  
873 - }  
874 - });  
875 - } else {  
876 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));  
877 - }  
878 - }; 764 + if ($scope.termoReferenciaDetalhamentoSolucao.prazoEntrega){
879 765
880 - $scope.removerDetalhamentoSolucao = function() {  
881 - $scope.termoReferenciaDetalhamentoSolucao = $scope.getDetalhamentoSolucaoChecked();  
882 -  
883 - if ($scope.termoReferenciaDetalhamentoSolucao) {  
884 - $scope.$openModalConfirm({  
885 - message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),  
886 - callback: function() {  
887 - var index = 0;  
888 -  
889 - $scope.termoReferencia.detalhamentosSolucoes.forEach(function(detalhamento, key) {  
890 - if (detalhamento.$checked) {  
891 - index = key;  
892 - }  
893 - });  
894 -  
895 - $scope.termoReferencia.detalhamentosSolucoes.splice(index, 1);  
896 - $scope.atualizarListaSizeSelect();  
897 - $scope.$modalConfirmInstance.dismiss('cancel');  
898 - }  
899 - });  
900 - } else {  
901 - $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));  
902 - }  
903 - }; 766 + $scope.termoReferenciaDetalhamentoSolucao.prazoEntrega = $filter('date')( $scope.termoReferenciaDetalhamentoSolucao.prazoEntrega, "dd/MM/yyyy");
  767 + }
904 768
  769 + $timeout(function() {
  770 + $scope.$openModal('modal-detalhamento-solucao.html', 'lg');
  771 + });
  772 + };
905 773
  774 + $scope.abrirPenalidade = function(edit) {
906 775
907 -/*##################################  
908 -* # METODOS RELACIONADOS AO WIZARD #  
909 -* ##################################*/ 776 + $scope.penalidade = clone($scope.getPenalidadeChecked());
910 777
911 - function createTemplates(){  
912 - $scope.templates = [{ name: 'termoReferenciaPg1.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg1.html', show: true },  
913 - { name: 'termoReferenciaPg2.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg2.html', show: false},  
914 - { name: 'termoReferenciaPg3.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg3.html', show: false},  
915 - { name: 'termoReferenciaPg4.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg4.html', show: false},  
916 - { name: 'termoReferenciaPg5.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg5.html', show: false},  
917 - { name: 'termoReferenciaPg6.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg6.html', show: false},  
918 - { name: 'termoReferenciaPg7.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg7.html', show: false}];  
919 - };  
920 -  
921 - createTemplates();  
922 -  
923 - $scope.step = 0;  
924 -  
925 - // Verifica se o passo e o primeiro passo do wizard  
926 - $scope.isFirstStep = function () {  
927 - return $scope.step === 0;  
928 - };  
929 -  
930 - // Verifica é o ultimo passo do wizard  
931 - $scope.isLastStep = function () {  
932 - return $scope.step === ($scope.templates.length - 1);  
933 - };  
934 -  
935 - // Verifica se o passo e o passo atual do wizard  
936 - $scope.isCurrentStep = function (step) {  
937 - return $scope.step === step;  
938 - };  
939 -  
940 - // Recupera o label do botao de comando  
941 - $scope.getNextLabel = function () {  
942 - return ($scope.isLastStep()) ? $translate.instant("LABEL.SALVAR") : $translate.instant("LABEL.PROXIMO");  
943 - };  
944 -  
945 - // Utilizado pelo wizard para mudar para o passo desejado  
946 - $scope.setCurrentStep = function (step) {  
947 -  
948 - $scope.setLoadingGet(true);  
949 -  
950 - if (step <= ($scope.step - 1)) {  
951 - $scope.templates[$scope.step].show = false;  
952 - $scope.step = step;  
953 - $scope.templates[step].show = true;  
954 - } else {  
955 - if (!$scope.edit) {  
956 - $scope.permitidoAvancar = true;  
957 - } else {  
958 - permiteAvancoFluxo();  
959 - }  
960 -  
961 - if ($scope.permitidoAvancar) {  
962 - $scope.templates[$scope.step].show = false;  
963 - $scope.step = step;  
964 - $scope.templates[step].show = true;  
965 - }  
966 - }  
967 - $scope.setLoading(false);  
968 - };  
969 -  
970 - // Faz com o que o wizard retroceda um passo  
971 - $scope.handlePrevious = function () {  
972 -  
973 - $scope.setLoadingGet(true);  
974 -  
975 - $scope.templates[$scope.step].show = false;  
976 - $scope.step -= ($scope.isFirstStep()) ? 0 : 1;  
977 - $scope.templates[$scope.step].show = true;  
978 -  
979 - $scope.setLoading(false);  
980 -  
981 - };  
982 -  
983 - // Faz com o que o wizard avance um passo  
984 - $scope.handleNext = function () {  
985 -  
986 - if ($scope.isLastStep()) {  
987 - $scope.saveOrUpdate();  
988 - } else {  
989 - $scope.setLoadingGet(true);  
990 -  
991 - if (!$scope.edit) {  
992 - $scope.permitidoAvancar = true;  
993 - } else {  
994 - permiteAvancoFluxo();  
995 - }  
996 -  
997 - if ($scope.permitidoAvancar) {  
998 - $scope.templates[$scope.step].show = false;  
999 - $scope.step += 1;  
1000 - $scope.templates[$scope.step].show = true;  
1001 - }  
1002 - $scope.setLoading(false);  
1003 - }  
1004 - };  
1005 -  
1006 -  
1007 -//Controla se o usuario pode avancar o fluxo no wizard, validando os itens obrigatorios  
1008 - function permiteAvancoFluxo() {  
1009 -  
1010 - $scope.permitidoAvancar = true;  
1011 -  
1012 - switch ($scope.step) {  
1013 - case 0 :  
1014 - //equipeContratacaoForm  
1015 - if (isFormValid($scope.termoReferenciaForm.equipeContratacaoForm) && $scope.permitidoAvancar) {  
1016 - $scope.termoReferenciaForm.equipeContratacaoForm.$submitted = true;  
1017 - }  
1018 - break;  
1019 - case 1 :  
1020 - //justificativaContratacaoForm  
1021 - if (isFormValid($scope.termoReferenciaForm.justificativaContratacaoForm) && $scope.termoReferencia.detalhamentosSolucoes.length >= 1 && $scope.permitidoAvancar) {  
1022 - $scope.termoReferenciaForm.justificativaContratacaoForm.$submitted = true;  
1023 - }  
1024 - break;  
1025 - case 2 :  
1026 - //especificacoesTecnicasForm  
1027 - if (isFormValid($scope.termoReferenciaForm.especificacoesTecnicasForm) && $scope.permitidoAvancar) {  
1028 - $scope.termoReferenciaForm.especificacoesTecnicasForm.$submitted = true;  
1029 - }  
1030 - break;  
1031 - case 3 :  
1032 - //modeloGestaoForm  
1033 - if (isFormValid($scope.termoReferenciaForm.modeloGestaoForm) && $scope.permitidoAvancar) {  
1034 - $scope.termoReferenciaForm.modeloGestaoForm.$submitted = true;  
1035 - }  
1036 - break;  
1037 - case 4 :  
1038 - //sancoesForm  
1039 - if (($scope.termoReferencia.sancoes.length >= 1 || $scope.termoReferencia.penalidades.length >= 1) && $scope.permitidoAvancar) {  
1040 - $scope.termoReferenciaForm.sancoesForm.$submitted = true;  
1041 - }  
1042 - break;  
1043 - case 5 :  
1044 - //criteriosSelecaoForm  
1045 - if (isFormValid($scope.termoReferenciaForm.criteriosSelecaoForm) && $scope.permitidoAvancar) {  
1046 - $scope.termoReferenciaForm.criteriosSelecaoForm.$submitted = true;  
1047 - }  
1048 - break;  
1049 - case 6 :  
1050 - //anexosObservacoesForm  
1051 - $scope.termoReferenciaForm.anexosObservacoesForm.$submitted = true;  
1052 - break;  
1053 - }  
1054 -  
1055 - if (!$scope.permitidoAvancar && !$scope.stepValid) {  
1056 - //Mensagem de erro de campos obrigatorios nao preenchidos  
1057 - $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);  
1058 - }  
1059 - };  
1060 -  
1061 - //Evita erros verificando se determinadas propriedades existem no form.  
1062 - function isFormValid (form) {  
1063 - $scope.stepValid = true;  
1064 - if (form && form.$invalid) {  
1065 - $scope.stepValid = false;  
1066 - }  
1067 - return $scope.stepValid;  
1068 - };  
1069 - //Evita erros verificando se determinadas propriedades existem no form.  
1070 - function isFormSubmited (form){  
1071 - var submitted = false;  
1072 - if(form && form.$submitted){  
1073 - submitted = true;  
1074 - }  
1075 - return submitted;  
1076 - }  
1077 -  
1078 -  
1079 - $scope.getClassEdit = function (step){  
1080 -  
1081 - switch (step) {  
1082 - case 0 :  
1083 - //equipeContratacaoForm  
1084 - return {'active': $scope.isCurrentStep(step),  
1085 - 'complete' : ($scope.step >= step && isFormValid($scope.termoReferenciaForm.equipeContratacaoForm)),  
1086 - 'invalid' : (isFormSubmited($scope.termoReferenciaForm.equipeContratacaoForm)|| $scope.step > step) && (!isFormValid($scope.termoReferenciaForm.equipeContratacaoForm))};  
1087 - break;  
1088 - case 1 :  
1089 - //justificativaContratacaoForm  
1090 - return {'active': $scope.isCurrentStep(step),  
1091 - 'complete' : ($scope.step > step && isFormValid($scope.termoReferenciaForm.justificativaContratacaoForm) && $scope.termoReferencia.detalhamentosSolucoes.length >= 1 ),  
1092 - 'invalid' : (isFormSubmited($scope.termoReferenciaForm.justificativaContratacaoForm) || $scope.step > step) && (!isFormValid($scope.termoReferenciaForm.justificativaContratacaoForm) || $scope.termoReferencia.detalhamentosSolucoes.length < 1)};  
1093 - break;  
1094 - case 2 :  
1095 - //especificacoesTecnicasForm  
1096 - return {'active': $scope.isCurrentStep(step),  
1097 - 'complete' : ($scope.step > step && isFormValid($scope.termoReferenciaForm.especificacoesTecnicasForm)),  
1098 - 'invalid' : (isFormSubmited($scope.termoReferenciaForm.especificacoesTecnicasForm) || $scope.step > step) && !isFormValid($scope.termoReferenciaForm.especificacoesTecnicasForm)};  
1099 - break;  
1100 - case 3 :  
1101 - //modeloGestaoForm  
1102 - return {'active': $scope.isCurrentStep(step),  
1103 - 'complete' : ($scope.step > step || ($scope.step > step && isFormSubmited($scope.termoReferenciaForm.modeloGestaoForm)))};  
1104 - break;  
1105 - case 4 :  
1106 - //sancoesForm  
1107 - return {'active': $scope.isCurrentStep(step),  
1108 - 'complete' : ($scope.step > step && isFormValid($scope.termoReferenciaForm.sancoesForm) && ($scope.termoReferencia.sancoes.length >= 1 && $scope.termoReferencia.penalidades.length >= 1)),  
1109 - 'invalid' : ($scope.step > step && ($scope.termoReferencia.sancoes.length < 1 || $scope.termoReferencia.penalidades.length < 1))};  
1110 - break;  
1111 - case 5 :  
1112 - //criteriosSelecaoForm  
1113 - return {'active': $scope.isCurrentStep(step),  
1114 - 'complete' : ($scope.step > step && isFormValid($scope.termoReferenciaForm.criteriosSelecaoForm)),  
1115 - 'invalid' : ((isFormSubmited($scope.termoReferenciaForm.criteriosSelecaoForm) || $scope.step > step) && !isFormValid($scope.termoReferenciaForm.criteriosSelecaoForm))};  
1116 - break;  
1117 - case 6 :  
1118 - //anexosObservacoesForm  
1119 - return {'active': $scope.isCurrentStep(step) || isFormSubmited($scope.termoReferenciaForm.anexosObservacoesForm),  
1120 - 'complete' : ($scope.isCurrentStep(step) || ($scope.step > step && isFormSubmited($scope.termoReferenciaForm.anexosObservacoesForm)))};  
1121 - break;  
1122 - };  
1123 - };  
1124 -  
1125 - $scope.getClassList = function (){  
1126 - return {'active': false, 'complete' : true, 'invalid' : false};  
1127 - }; 778 + $scope.editPenalidade = edit;
  779 +
  780 + if(!edit && !$scope.penalidade) {
  781 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  782 + return;
  783 + }
  784 +
  785 + if(edit && !$scope.penalidade) {
  786 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));
  787 + return;
  788 + }
  789 +
  790 + $timeout(function() {
  791 + $scope.$openModal('modal-penalidade.html', 'lg');
  792 + });
  793 + };
  794 +
  795 + $scope.abrirSancao = function(edit) {
  796 +
  797 + $scope.sancao = clone($scope.getSancaoChecked());
  798 +
  799 + $scope.editSancao = edit;
  800 +
  801 + if(!edit && !$scope.sancao) {
  802 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_VISUALIZACAO'));
  803 + return;
  804 + }
  805 +
  806 + if(edit && !$scope.sancao) {
  807 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_EDICAO'));
  808 + return;
  809 + }
  810 +
  811 + $timeout(function() {
  812 + $scope.$openModal('modal-sancao.html', 'lg');
  813 + });
  814 + };
  815 +
  816 + $scope.removerPenalidade = function() {
  817 + $scope.penalidade = $scope.getPenalidadeChecked();
  818 +
  819 + if ($scope.penalidade) {
  820 + $scope.$openModalConfirm({
  821 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  822 + callback: function() {
  823 + var index = 0;
  824 +
  825 + $scope.termoReferencia.penalidades.forEach(function(penalidade, key) {
  826 + if (penalidade.$checked) {
  827 + index = key;
  828 + }
  829 + });
  830 +
  831 + $scope.termoReferencia.penalidades.splice(index, 1);
  832 + $scope.atualizarListaSizeSelectPenalidade();
  833 + $scope.$modalConfirmInstance.dismiss('cancel');
  834 + }
  835 + });
  836 + } else {
  837 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));
  838 + }
  839 + };
  840 +
  841 + $scope.removerSancao = function() {
  842 + $scope.sancao = $scope.getSancaoChecked();
  843 +
  844 + if ($scope.sancao) {
  845 + EventoRegistroNaoConformidadeRepository.existeVinculoSancoesComNaoConformidade($scope.sancao.id).then(function(result) {
  846 + if(result){
  847 + $scope.showAlert('warning', $translate.instant('CONTRATOS.MSG.SANCAO_VINCULADA_NAO_CONFORMIDADE'));
  848 + }else{
  849 + $scope.$openModalConfirm({
  850 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  851 + callback: function() {
  852 + var index = 0;
  853 +
  854 + $scope.termoReferencia.sancoes.forEach(function(sancao, key) {
  855 + if (sancao.$checked) {
  856 + index = key;
  857 + }
  858 + });
  859 +
  860 +
  861 + $scope.termoReferencia.sancoes.splice(index, 1);
  862 + $scope.atualizarListaSizeSelectSancao();
  863 + $scope.$modalConfirmInstance.dismiss('cancel');
  864 + }
  865 + });
  866 + }
  867 + });
  868 + } else {
  869 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));
  870 + }
  871 + };
  872 +
  873 + $scope.removerDetalhamentoSolucao = function() {
  874 + $scope.termoReferenciaDetalhamentoSolucao = $scope.getDetalhamentoSolucaoChecked();
  875 +
  876 + if ($scope.termoReferenciaDetalhamentoSolucao) {
  877 + $scope.$openModalConfirm({
  878 + message: $translate.instant('MSG.CONFIRMA_EXCLUSAO'),
  879 + callback: function() {
  880 + var index = 0;
  881 +
  882 + $scope.termoReferencia.detalhamentosSolucoes.forEach(function(detalhamento, key) {
  883 + if (detalhamento.$checked) {
  884 + index = key;
  885 + }
  886 + });
  887 +
  888 + $scope.termoReferencia.detalhamentosSolucoes.splice(index, 1);
  889 + $scope.atualizarListaSizeSelect();
  890 + $scope.$modalConfirmInstance.dismiss('cancel');
  891 + }
  892 + });
  893 + } else {
  894 + $scope.showAlert('warning', $translate.instant('MSG.SELECIONE_UM_ITEM_PARA_SER_REMOVIDO'));
  895 + }
  896 + };
  897 +
  898 +
  899 +
  900 + /*##################################
  901 + * # METODOS RELACIONADOS AO WIZARD #
  902 + * ##################################*/
  903 +
  904 + function createTemplates(){
  905 + $scope.templates = [{ name: 'termoReferenciaPg1.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg1.html', show: true },
  906 + { name: 'termoReferenciaPg2.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg2.html', show: false},
  907 + { name: 'termoReferenciaPg3.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg3.html', show: false},
  908 + { name: 'termoReferenciaPg4.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg4.html', show: false},
  909 + { name: 'termoReferenciaPg5.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg5.html', show: false},
  910 + { name: 'termoReferenciaPg6.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg6.html', show: false},
  911 + { name: 'termoReferenciaPg7.html', url: '/cit-contratos-web/html/termoReferencia/termoReferenciaPg7.html', show: false}];
  912 + };
  913 +
  914 + createTemplates();
  915 +
  916 + $scope.step = 0;
  917 +
  918 + // Verifica se o passo e o primeiro passo do wizard
  919 + $scope.isFirstStep = function () {
  920 + return $scope.step === 0;
  921 + };
  922 +
  923 + // Verifica é o ultimo passo do wizard
  924 + $scope.isLastStep = function () {
  925 + return $scope.step === ($scope.templates.length - 1);
  926 + };
  927 +
  928 + // Verifica se o passo e o passo atual do wizard
  929 + $scope.isCurrentStep = function (step) {
  930 + return $scope.step === step;
  931 + };
  932 +
  933 + // Recupera o label do botao de comando
  934 + $scope.getNextLabel = function () {
  935 + return ($scope.isLastStep()) ? $translate.instant("LABEL.SALVAR") : $translate.instant("LABEL.PROXIMO");
  936 + };
  937 +
  938 + // Utilizado pelo wizard para mudar para o passo desejado
  939 + $scope.setCurrentStep = function (step) {
  940 +
  941 + $scope.setLoadingGet(true);
  942 +
  943 + if (step <= ($scope.step - 1)) {
  944 + $scope.templates[$scope.step].show = false;
  945 + $scope.step = step;
  946 + $scope.templates[step].show = true;
  947 + } else {
  948 + if (!$scope.edit) {
  949 + $scope.permitidoAvancar = true;
  950 + } else {
  951 + permiteAvancoFluxo();
  952 + }
  953 +
  954 + if ($scope.permitidoAvancar) {
  955 + $scope.templates[$scope.step].show = false;
  956 + $scope.step = step;
  957 + $scope.templates[step].show = true;
  958 + }
  959 + }
  960 + $scope.setLoading(false);
  961 + };
  962 +
  963 + // Faz com o que o wizard retroceda um passo
  964 + $scope.handlePrevious = function () {
  965 +
  966 + $scope.setLoadingGet(true);
  967 +
  968 + $scope.templates[$scope.step].show = false;
  969 + $scope.step -= ($scope.isFirstStep()) ? 0 : 1;
  970 + $scope.templates[$scope.step].show = true;
  971 +
  972 + $scope.setLoading(false);
  973 +
  974 + };
  975 +
  976 + // Faz com o que o wizard avance um passo
  977 + $scope.handleNext = function () {
  978 +
  979 + if ($scope.isLastStep()) {
  980 + $scope.saveOrUpdate();
  981 + } else {
  982 + $scope.setLoadingGet(true);
  983 +
  984 + if (!$scope.edit) {
  985 + $scope.permitidoAvancar = true;
  986 + } else {
  987 + permiteAvancoFluxo();
  988 + }
  989 +
  990 + if ($scope.permitidoAvancar) {
  991 + $scope.templates[$scope.step].show = false;
  992 + $scope.step += 1;
  993 + $scope.templates[$scope.step].show = true;
  994 + }
  995 + $scope.setLoading(false);
  996 + }
  997 + };
  998 +
  999 +
  1000 +// Controla se o usuario pode avancar o fluxo no wizard, validando os itens obrigatorios
  1001 + function permiteAvancoFluxo() {
  1002 +
  1003 + $scope.permitidoAvancar = true;
  1004 +
  1005 + switch ($scope.step) {
  1006 + case 0 :
  1007 + //equipeContratacaoForm
  1008 + if (isFormValid($scope.termoReferenciaForm.equipeContratacaoForm) && $scope.permitidoAvancar) {
  1009 + $scope.termoReferenciaForm.equipeContratacaoForm.$submitted = true;
  1010 + }
  1011 + break;
  1012 + case 1 :
  1013 + //justificativaContratacaoForm
  1014 + if (isFormValid($scope.termoReferenciaForm.justificativaContratacaoForm) && $scope.termoReferencia.detalhamentosSolucoes.length >= 1 && $scope.permitidoAvancar) {
  1015 + $scope.termoReferenciaForm.justificativaContratacaoForm.$submitted = true;
  1016 + }
  1017 + break;
  1018 + case 2 :
  1019 + //especificacoesTecnicasForm
  1020 + if (isFormValid($scope.termoReferenciaForm.especificacoesTecnicasForm) && $scope.permitidoAvancar) {
  1021 + $scope.termoReferenciaForm.especificacoesTecnicasForm.$submitted = true;
  1022 + }
  1023 + break;
  1024 + case 3 :
  1025 + //modeloGestaoForm
  1026 + if (isFormValid($scope.termoReferenciaForm.modeloGestaoForm) && $scope.permitidoAvancar) {
  1027 + $scope.termoReferenciaForm.modeloGestaoForm.$submitted = true;
  1028 + }
  1029 + break;
  1030 + case 4 :
  1031 + //sancoesForm
  1032 + if (($scope.termoReferencia.sancoes.length >= 1 || $scope.termoReferencia.penalidades.length >= 1) && $scope.permitidoAvancar) {
  1033 + $scope.termoReferenciaForm.sancoesForm.$submitted = true;
  1034 + }
  1035 + break;
  1036 + case 5 :
  1037 + //criteriosSelecaoForm
  1038 + if (isFormValid($scope.termoReferenciaForm.criteriosSelecaoForm) && $scope.permitidoAvancar) {
  1039 + $scope.termoReferenciaForm.criteriosSelecaoForm.$submitted = true;
  1040 + }
  1041 + break;
  1042 + case 6 :
  1043 + //anexosObservacoesForm
  1044 + $scope.termoReferenciaForm.anexosObservacoesForm.$submitted = true;
  1045 + break;
  1046 + }
  1047 +
  1048 + if (!$scope.permitidoAvancar && !$scope.stepValid) {
  1049 + //Mensagem de erro de campos obrigatorios nao preenchidos
  1050 + $scope.showAlert('error', $translate.instant('VALIDACAO.ALERTA_OBRIGATORIOS'), " ", false);
  1051 + }
  1052 + };
  1053 +
  1054 + //Evita erros verificando se determinadas propriedades existem no form.
  1055 + function isFormValid (form) {
  1056 + $scope.stepValid = true;
  1057 + if (form && form.$invalid) {
  1058 + $scope.stepValid = false;
  1059 + }
  1060 + return $scope.stepValid;
  1061 + };
  1062 + //Evita erros verificando se determinadas propriedades existem no form.
  1063 + function isFormSubmited (form){
  1064 + var submitted = false;
  1065 + if(form && form.$submitted){
  1066 + submitted = true;
  1067 + }
  1068 + return submitted;
  1069 + }
  1070 +
  1071 +
  1072 + $scope.getClassEdit = function (step){
  1073 +
  1074 + switch (step) {
  1075 + case 0 :
  1076 + //equipeContratacaoForm
  1077 + return {'active': $scope.isCurrentStep(step),
  1078 + 'complete' : ($scope.step >= step && isFormValid($scope.termoReferenciaForm.equipeContratacaoForm)),
  1079 + 'invalid' : (isFormSubmited($scope.termoReferenciaForm.equipeContratacaoForm)|| $scope.step > step) && (!isFormValid($scope.termoReferenciaForm.equipeContratacaoForm))};
  1080 + break;
  1081 + case 1 :
  1082 + //justificativaContratacaoForm
  1083 + return {'active': $scope.isCurrentStep(step),
  1084 + 'complete' : ($scope.step > step && isFormValid($scope.termoReferenciaForm.justificativaContratacaoForm) && $scope.termoReferencia.detalhamentosSolucoes.length >= 1 ),
  1085 + 'invalid' : (isFormSubmited($scope.termoReferenciaForm.justificativaContratacaoForm) || $scope.step > step) && (!isFormValid($scope.termoReferenciaForm.justificativaContratacaoForm) || $scope.termoReferencia.detalhamentosSolucoes.length < 1)};
  1086 + break;
  1087 + case 2 :
  1088 + //especificacoesTecnicasForm
  1089 + return {'active': $scope.isCurrentStep(step),
  1090 + 'complete' : ($scope.step > step && isFormValid($scope.termoReferenciaForm.especificacoesTecnicasForm)),
  1091 + 'invalid' : (isFormSubmited($scope.termoReferenciaForm.especificacoesTecnicasForm) || $scope.step > step) && !isFormValid($scope.termoReferenciaForm.especificacoesTecnicasForm)};
  1092 + break;
  1093 + case 3 :
  1094 + //modeloGestaoForm
  1095 + return {'active': $scope.isCurrentStep(step),
  1096 + 'complete' : ($scope.step > step || ($scope.step > step && isFormSubmited($scope.termoReferenciaForm.modeloGestaoForm)))};
  1097 + break;
  1098 + case 4 :
  1099 + //sancoesForm
  1100 + return {'active': $scope.isCurrentStep(step),
  1101 + 'complete' : ($scope.step > step && isFormValid($scope.termoReferenciaForm.sancoesForm) && ($scope.termoReferencia.sancoes.length >= 1 && $scope.termoReferencia.penalidades.length >= 1)),
  1102 + 'invalid' : ($scope.step > step && ($scope.termoReferencia.sancoes.length < 1 || $scope.termoReferencia.penalidades.length < 1))};
  1103 + break;
  1104 + case 5 :
  1105 + //criteriosSelecaoForm
  1106 + return {'active': $scope.isCurrentStep(step),
  1107 + 'complete' : ($scope.step > step && isFormValid($scope.termoReferenciaForm.criteriosSelecaoForm)),
  1108 + 'invalid' : ((isFormSubmited($scope.termoReferenciaForm.criteriosSelecaoForm) || $scope.step > step) && !isFormValid($scope.termoReferenciaForm.criteriosSelecaoForm))};
  1109 + break;
  1110 + case 6 :
  1111 + //anexosObservacoesForm
  1112 + return {'active': $scope.isCurrentStep(step) || isFormSubmited($scope.termoReferenciaForm.anexosObservacoesForm),
  1113 + 'complete' : ($scope.isCurrentStep(step) || ($scope.step > step && isFormSubmited($scope.termoReferenciaForm.anexosObservacoesForm)))};
  1114 + break;
  1115 + };
  1116 + };
  1117 +
  1118 + $scope.getClassList = function (){
  1119 + return {'active': false, 'complete' : true, 'invalid' : false};
  1120 + };
1128 1121
1129 $scope.atualizarListaSizeSelect = function() { 1122 $scope.atualizarListaSizeSelect = function() {
1130 $timeout(function(){ 1123 $timeout(function(){