{"version":3,"mappings":"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","names":["i0","ctx_r2","oxw","PopoverListarInscricoesComponent","constructor","popoverController","ngOnInit","find","idInscricao","this","dismiss","selectors","ctx_r3","ctx_r5","HeaderGcComponent","storageService","functionsService","inscricaoService","dataSharingService","usuarioLogado","getUsuarioLogado","location","pathname","indexOf","showNotificacaoNovosDocsEnviados","getMostRecentUpdated","source","interval","subscription","subscribe","val","unsubscribe","tipoDocumentos","findByUltimosDocsInscricaoEnviados","next","resp","inscricoesRecentementeAtualizadas","error","console","log","findByUltimosDocsMatriculaEnviados","ngOnDestroy","hideSubmenu","event","idSubmenu","element","document","getElementById","style","visibility","showSubmenu","showingSubmenu","showHideSubmenu","goToPath","path","logoff","setUsuarioLogado","openPopoverListarInscricoes","popover","create","component","componentProps","inscricoes","translucent","showBackdrop","backdropDismiss","trigger","present","onDidDismiss","then","data","idInscricaoSelecionada","i","length","id","dataUltimaVisualizacaoDocumentacaoInscricao","Date","dataUltimaVisualizacaoDocumentacaoMatricula","update","STATUS","ATIVO","INATIVO","TIPO_ARQUIVO","IMAGEM","PDF","VIDEO","DOCX","XLSX","PPTX","JPG","PNG","ZIP","TIPO_FORMA_INGRESSO","VESTIBULAR_ONLINE","VESTIBULAR_PRESENCIAL","ENEM","PORTADOR_DIPLOMA","TRANSFERENCIA","REINGRESSO_POS_ABANDONO","CURSO_EXTENSAO","POS_GRADUACAO","ctx_r4","SwiperCore","Autoplay","Keyboard","Pagination","Navigation","Scrollbar","Zoom","EffectFade","EffectCube","EffectCoverflow","EffectFlip","EffectCards","EffectCreative","Lazy","PopoverSelecionarNoticiaComponent","noticiaService","arquivoService","STATUS_PUBLICACAO","ionViewWillEnter","findByFilter","presentLoading","filtro","noticias","status","push","dismissLoading","getFilePublicURL","fullPath","fileName","API_CONFIG","getMaxSlidesPerView","screen","width","slidePrev","swiper","swiperRef","slideNext","noticia","noticiasSelecionadas","selectNews","index","splice","noticiaDestaque","NoticiaDestaque","cancel","confirm","SwiperComponent","ctx","PopoverDefinirCorPaginaComponent","coresService","cores","getCores","printColor","color","backgroundColor","selectColor","corSelecionada","tipo","label","placeholder","opcoes","fonteDados","ordemExibicao","titulo","emailsDestinatarios","salvarCopiaInterna","mensagemPosEnvio","campos","nome","_type","association","modalidade","e","formacao","habilitacao","turno","curso","tipoFormaIngresso","texto","tipoArquivo","ctx_r10","PopoverSelecionarCursoFormularioComponent","formacaoService","findAll","formacoes","todasOpcoesCursos","opcoesFiltradas","filter","opcao","formacaoNome","n","_a","_b","toLocaleLowerCase","graduacao","posGraduacao","extensao","sortArray","opcoesMarcadas","opcaoCurso","includes","a","_c","filtroFormacao","isChecked","some","opcaoSelecionada","toggleSelection","target","checked","cursoSelecionado","selectAll","forEach","ctx_r18","ctx_r35","ctx_r36","ctx_r45","ctx_r48","ctx_r62","ctx_r119","ctx_r122","ctx_r125","ctx_r127","PopoverFormularioPersonalizadoComponent","modalidadeService","habilitacaoService","cursoService","turnoService","formaIngressoService","cdr","value","modalidades","habilitacoes","cursos","turnos","formasIngresso","textos","tiposArquivos","CampoFormularioDTO","selecionado","Array","isArray","item","listaOpcoesTiposArquivos","getOpcaoTipoArquivo","editandoCampo","loadData","forkJoin","findByStatus","results","fontesDados","todosCursos","listasSelecionaveis","map","OpcaoDTO","Object","getNomeFormaIngressoFormatado","fonteDeDadosSelecionada","loadLists","err","complete","campo","filtrarCursos","opcoesSelecionadas","adicionarOpcaoTexto","novoCampo","novaOpcao","removerOpcaoTexto","adicionarCampo","alert","removerCampo","c","editar","confirmar","validarEmails","emailInvalido","replace","formulario","FormularioPersonalizadoDTO","cancelar","getNomeFonteDados","key","keyNameMap","getKeyFonteDados","nomeFonteDados","keys","getFontesDados","desabilitarFonte","nomeFonte","getDadosFonteSelecionada","nomeFonteSelecionada","getDadosSelecionados","listasSelecionadas","getDadosSelecionaveis","ordemExibicaoCampo","lista","onFonteDeDadosChange","dadosFonteSelecionada","onTipoDeCampoChange","detectChanges","setTimeout","fonteDeDadosSelect","open","tiposDeArquivosSelect","emails","split","email","trim","emailRegex","every","test","moverCampo","direction","targetIndex","campoAtual","campoAlvo","ordemAntigaCampoAtual","ordemAntigaCampoAlvo","listaTexto","atualizarHabilitacoesSelecionaveis","idsFormacoes","habilitacoesValidas","atualizarCursosSelecionaveis","idsModalidades","idsHabilitacoes","idsTurnos","cursosValidos","modalidadeValida","m","formacaoValida","C","habilitacaoValida","L","turnoValido","disponibilidades","disponibilidade","disponibilidadeTurnos","disponibilidadeTurno","habilitado","atualizarValoresSelecionados","valoresSelecionados","detail","flat","formaIngresso","warn","getNomeFormatado","openPopoverSelecionarCurso","cssClass","getSelectedText","cursosSelecionados","getTextoCursosSelecionados","tiposArquivosSelecionados","opcaoTipoArquivo","join","abrirSeletorArquivo","fileLoader","onchange","valor","click","ctx_r8","ctx_r12","ctx_r16","PopoverCriarSecaoPaginaComponent","paginaService","TIPO_SECAO_PAGINA","tiposSecao","getTiposSecao","secao","SecaoPaginaDTO","codigoCorBkg","corFundo","codigoCorFonte","corFonte","selectBkgColor","selectFontColor","getDescricaoTipoSecao","tipoSecao","getDescricaoSecao","allowSelectFontColor","habilitada","operacao","FormularioDTO","habilitarCampoNome","habilitarCampoEmail","habilitarCampoTelefone","habilitarCampoEndereco","habilitarCampoAssunto","habilitarCampoMensagem","ordemExibicaoCampoNome","ordemExibicaoCampoEmail","ordemExibicaoCampoTelefone","ordemExibicaoCampoEndereco","ordemExibicaoCampoAssunto","ordemExibicaoCampoMensagem","multiplosDestinatarios","destinatarios","DestinatarioDTO","margemSuperior","margemDireita","margemInferior","margemEsquerda","paddingSuperior","paddingDireito","paddingInferior","paddingEsquerdo","openFormularioPersonalizadoPopover","formularioPersonalizado","getMarginPreviewContainerHeight","previewDiv","Number","marginTop","marginBottom","getMarginPreviewAreaWidht","containerWidth","clientWidth","marginLeft","marginRight","getPaddingPreviewContainerHeight","getPaddingPreviewAreaWidht","PopoverDefinirParametrosPaginaComponent","estiloCSS","ctx_r23","ctx_r26","ctx_r43","ctx_r51","ctx_r73","ctx_r80","ctx_r87","ctx_r139","ctx_r142","ctx_r145","ctx_r151","ctx_r152","ctx_r155","ctx_r166","ctx_r169","ctx_r172","ctx_r177","ctx_r181","ctx_r188","ctx_r191","ctx_r204","ctx_r210","ctx_r222","ctx_r228","ctx_r243","ctx_r261","ctx_r276","ctx_r280","ctx_r290","ctx_r294","ctx_r304","ctx_r308","ctx_r318","ctx_r322","ctx_r332","ctx_r336","ctx_r358","ctx_r362","ctx_r416","ctx_r435","ctx_r457","ctx_r478","ctx_r499","ctx_r509","ctx_r510","ctx_r511","icons","quill","import","fonts","Quill","sizes","routes","sanitizer","permissaoAcessoService","activatedRoute","PaginaDTO","window","origin","pagina","EstiloCSSDTO","bold","italic","underline","strike","whitelist","checkAccessControl","canCreateAndEdit","href","canCreateEdit","canPublish","secoes","queryParams","param","resp2","initPage","error2","errorParam","sortSections","GALERIA_VIDEOS","galeriaVideos","video","safePath","getSafeURL","FORMULARIO_PERSONALIZADO","guardarListasOriginaisFormularioPersonalizado","arrSections","that","sort","b","sortFormFields","openPopoverCriarSecao","getListaOriginalFormularioPersonalizado","corFundoPagina","side","align","arrow","dismissOnSelect","isOpen","arraySize","uploadBanner","upload","files","ENTIDADE","DIRETORIO","galeriaBanners","body","uploadFoto","galeriaFotos","removeFromBannersGallery","indexBanner","delete","removeFromPhotoGallery","indexFoto","removeFromVideoGallery","indexVideo","uploadImage","imagem","removeFromNews","indexNoticia","noticiasDestaques","openPopoverSetPageColor","openPopoverConfigPage","openPopoverSelecionarNoticia","setBackgroundColor","setSectionHeight","height","minHeight","maxHeight","changePosition","move","aux","vizinho","changeFieldPosition","fields","currentField","field","newIndex","adjacentField","removeSection","showConfirmAlert","getFormatedText","text","bypassSecurityTrustHtml","setEmptyAreaStyle","emptyAreaElement","textContainer","getEmptyAreaMaxHeight","idImage","imageElement","clientHeight","getImageHeight","img","offsetHeight","uploadPDF","galeriaDownloads","legenda","removePDF","indexPDF","getFontColor","corFundoSecao","s","_d","d","_e","_f","arquivo","addLink","galeriaLinks","link","LinkDTO","removeLink","indexLink","changeLinkPosition","getSlidesPerView","addToVideoGallery","showConfirmAlertGetValue","url","indexUrlStart","indexUrlEnd","substring","toString","showAlert","ArquivoDTO","dataGravacao","descricao","bypassSecurityTrustResourceUrl","openCompartilhamento","PopoverCompartilharComponent","reference","mode","save","processTags","handler","insert","tagsInput","tagsArray","tag","self","tags","quit","navigate","validateURL","normalizeUrl","findByNome","setFocus","preventScroll","preventDefault","resetDestinatarios","novoDestinatario","adicionarDestinatario","getListasFormularioPersonalizado","formacoesSelecionadas","habilitacoesOriginais","opcaoHabilitacao","modalidadesSelecionadas","habilitacoesSelecionadas","turnosSelecionados","cursosOriginais","G","Q","listasFormularioPersonalizado","entry","lfp","textosOriginais","textosSelecionados","modalidadesOriginais","formacoesOriginais","turnosOriginais","formasIngressoOriginais","formasIngressoSelecionadas","tiposArquivosOriginais","listasFormulario","listas","selecionadosKey","atualizarValoresCheckbox","toLowerCase","getTiposArquivosAceitos","GcCadastrarPaginaPage","GcCadastrarPaginaPageRoutingModule","RouterModule","GcCadastrarPaginaPageModule","CommonModule","FormsModule","IonicModule","ComponentsModule","QuillModule","SwiperModule","DataSharingService","BehaviorSubject","factory","CursoService","http","cursoDTO","post","observe","put","get","page","pageSize","findByFormacao","idFormacao","findByModalidadesAndFormacoesAndHabilitacoes","textoCursosSelecionados","I","u","_","w","S","FormaIngressoService","getTiposFormaIngresso","arrTiposFormaIngresso","enem","TipoFormaIngressoDTO","temEntregaDocumentacao","temLocal","temProva","podeEscolherDataProva","vestibularOnline","vestibularPresencial","portadorDiploma","transferencia","reingresso","cursoExtensao","getTipoFormaIngresso","countInscritos","idFormaIngresso","countInscritosComProvaAgendada","validadeSubscpriptionPeriod","idsFormaIngresso","getUltimaProva","ultimaProva","ProvaDTO","dataInicio","provas","prova","getTime","sortArrayProvas","TurnoService","turnoDTO"],"sources":["./src/app/components/header-gc/components/popover-listar-inscricoes/popover-listar-inscricoes.component.html","./src/app/components/header-gc/components/popover-listar-inscricoes/popover-listar-inscricoes.component.ts","./src/app/components/header-gc/header-gc.component.html","./src/app/components/header-gc/header-gc.component.ts","./src/app/config/status.config.ts","./src/app/config/tipo-arquivo.config.ts","./src/app/config/tipo-forma-ingresso.config.ts","./src/app/models/vestibular/provaDTO.ts","./src/app/models/vestibular/tipoFormaIngressoDTO.ts","./src/app/models/site/noticiaDestaqueDTO.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-selecionar-noticia/popover-selecionar-noticia.component.html","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-selecionar-noticia/popover-selecionar-noticia.component.ts","./src/app/models/site/estiloCSSDTO.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-definir-cor-pagina/popover-definir-cor-pagina.component.html","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-definir-cor-pagina/popover-definir-cor-pagina.component.ts","./src/app/models/site/secaoPaginaDTO.ts","./src/app/models/site/formularioDTO.ts","./src/app/models/site/destinatarioDTO.ts","./src/app/models/site/campoFormularioDTO.ts","./src/app/models/site/formularioPersonalizadoDTO.ts","./src/app/models/site/opcaoDTO.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-selecionar-curso-formulario/popover-selecionar-curso-formulario/popover-selecionar-curso-formulario.component.html","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-selecionar-curso-formulario/popover-selecionar-curso-formulario/popover-selecionar-curso-formulario.component.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-formulario-personalizado/popover-formulario-personalizado/popover-formulario-personalizado.component.html","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-formulario-personalizado/popover-formulario-personalizado/popover-formulario-personalizado.component.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-criar-secao-pagina/popover-criar-secao-pagina.component.html","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-criar-secao-pagina/popover-criar-secao-pagina.component.ts","./src/app/models/site/linkDTO.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-definir-parametros-pagina/popover-definir-parametros-pagina.component.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/components/popover-definir-parametros-pagina/popover-definir-parametros-pagina.component.html","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/gc-cadastrar-pagina.page.html","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/gc-cadastrar-pagina.page.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/gc-cadastrar-pagina-routing.module.ts","./src/app/pages/modulo-gc/site/gc-cadastrar-pagina/gc-cadastrar-pagina.module.ts","./src/app/services/common/data-sharing.service.ts","./src/app/services/curso/curso.service.ts","./src/app/services/forma-ingresso/forma-ingresso.service.ts","./src/app/services/turno/turno.service.ts"],"sourcesContent":["
\n\n
\n \n {{inscricao.candidato.nome}} {{inscricao.candidato.sobrenome}}, inscrição {{inscricao.id}}, enviou nova documentação.\n \n
\n\n
","import { PopoverController } from '@ionic/angular';\nimport { InscricaoDTO } from '../../../../models/vestibular/inscricaoDTO';\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-popover-listar-inscricoes',\n templateUrl: './popover-listar-inscricoes.component.html',\n styleUrls: ['./popover-listar-inscricoes.component.scss'],\n})\nexport class PopoverListarInscricoesComponent implements OnInit {\n\n constructor( private popoverController: PopoverController ) { }\n\n inscricoes: InscricaoDTO[];\n\n ngOnInit() {}\n\n\n find(idInscricao: number){\n\n //fecha o popover e indica o id da inscrição para disparar o método find do componente header-gc\n this.popoverController.dismiss(idInscricao);\n }\n}\n"," \n\n \n \"logo\"\n\n \n\n 0\">\n {{inscricoesRecentementeAtualizadas.length}}\n \n \n\n \n \n \n \n \n \n \n \n \n\n\n \n \n\n \n\n \n\n\n\n\n\n","import { DataSharingService } from './../../services/common/data-sharing.service';\nimport { PopoverListarInscricoesComponent } from './components/popover-listar-inscricoes/popover-listar-inscricoes.component';\nimport { PopoverController } from '@ionic/angular';\nimport { InscricaoDTO } from '../../models/vestibular/inscricaoDTO';\nimport { InscricaoService } from './../../services/inscricao/inscricao.service';\nimport { UsuarioDTO } from '../../models/controle-acesso/usuarioDTO';\nimport { StorageService } from './../../services/storage/storage.service';\nimport { FunctionsService } from './../../services/common/functions.service';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { interval, Subscription } from 'rxjs';\n\n@Component({\n selector: 'app-header-gc',\n templateUrl: './header-gc.component.html',\n styleUrls: ['./header-gc.component.scss'],\n})\nexport class HeaderGcComponent implements OnInit {\n\n \n\n showingSubmenu = '';\n menuGCItems = [];\n usuarioLogado: UsuarioDTO = null;\n\n showNotificacaoNovosDocsEnviados: boolean = false;\n inscricoesRecentementeAtualizadas: InscricaoDTO[] = [];\n\n subscription: Subscription;\n\n constructor( private storageService : StorageService\n , private functionsService: FunctionsService\n , private inscricaoService: InscricaoService\n , private popoverController: PopoverController\n , private dataSharingService: DataSharingService ) { \n\n this.usuarioLogado = this.storageService.getUsuarioLogado(); \n \n if(location.pathname.indexOf('modulo-gc/gc-analisar-documentacao-inscricao')>-1){\n this.showNotificacaoNovosDocsEnviados = true;\n \n this.getMostRecentUpdated('inscrição');\n\n //repetir a consulta de inscrições recentemente atualizadas a cada 60 segundos\n const source = interval(60000);\n this.subscription = source.subscribe(val => this.getMostRecentUpdated('inscrição'));\n\n }else if(location.pathname.indexOf('modulo-gc/gc-analisar-documentacao-matricula')>-1){\n \n this.showNotificacaoNovosDocsEnviados = true;\n this.getMostRecentUpdated('matrícula');\n\n //repetir a consulta de inscrições recentemente atualizadas a cada 60 segundos\n const source = interval(60000);\n this.subscription = source.subscribe(val => this.getMostRecentUpdated('matrícula'));\n }else {\n // Cancelar a execução de this.getMostRecentUpdated\n this.showNotificacaoNovosDocsEnviados = false;\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n }\n\n getMostRecentUpdated(tipoDocumentos: string){\n\n if(tipoDocumentos=='inscrição'){\n this.inscricaoService.findByUltimosDocsInscricaoEnviados().subscribe({\n next:(resp)=>{\n this.inscricoesRecentementeAtualizadas = resp;\n \n },\n error:(error)=>{\n console.log(error);\n }\n });\n \n }else if(tipoDocumentos == 'matrícula'){\n\n this.inscricaoService.findByUltimosDocsMatriculaEnviados().subscribe({\n next:(resp)=>{\n this.inscricoesRecentementeAtualizadas = resp;\n \n },\n error:(error)=>{\n console.log(error);\n }\n });\n\n }\n \n\n }\n\n ngOnInit() {\n \n }\n\n ngOnDestroy() {\n \n //mata a repetição das consultas de atualização da tela\n if(this.subscription){\n this.subscription.unsubscribe();\n }\n \n }\n\n /**\n * método disparado pelo evento mouseout \n */\n hideSubmenu(event, idSubmenu: string) { \n \n let element = document.getElementById(idSubmenu);\n //this.showingSubmenu = idSubmenu; \n if(element){\n element.style.visibility = 'hidden';\n }\n \n \n }\n\n /**\n * método disparado pelo evento mouseenter \n */\n showSubmenu(idSubmenu: string){\n \n this.showingSubmenu = idSubmenu;\n\n let element = document.getElementById(idSubmenu);\n \n if(element){\n element.style.visibility = 'visible';\n }\n \n\n }\n\n\n /*\n método usado para tablets, disparado através do click no menu, pois em tablet não tem cursor do mouse\n */\n showHideSubmenu(idSubmenu: string){\n \n this.showingSubmenu = idSubmenu;\n\n let element = document.getElementById(idSubmenu);\n \n if(element){\n\n if(element.style.visibility === 'visible'){\n element.style.visibility = 'hidden';\n }else{\n element.style.visibility = 'visible';\n }\n }\n \n }\n\n\n \n goToPath(path:string){\n\n if(path){\n this.functionsService.goToPath(path);\n }\n }\n \n\n logoff(){\n this.storageService.setUsuarioLogado(null);\n this.functionsService.goToPath('modulo-gc/gc-login');\n\n }\n\n\n async openPopoverListarInscricoes(event) {\n \n let tipoDocumentos = 'inscrição';\n if(location.pathname.indexOf('modulo-gc/gc-analisar-documentacao-matricula')>-1){\n tipoDocumentos = 'matrícula'\n }\n const popover = await this.popoverController.create({\n component: PopoverListarInscricoesComponent,\n componentProps: { 'inscricoes': this.inscricoesRecentementeAtualizadas\n , 'tipoDocumentos': tipoDocumentos},\n translucent: false,\n showBackdrop: true,\n backdropDismiss: true,\n event: event,\n trigger: event,\n //cssClass: 'popover-listar-inscricoes', //definido no global.css \n \n });\n\n await popover.present();\n \n //quando fechar o popover\n await popover.onDidDismiss().then((data)=>{\n\n //se tiver selecionado uma inscrição o campo data.data estará preenchido do contrário será null\n if(data && data.data){\n\n //informa ao serviço de notificação/compartilhamento de dados entre componentes o id da inscrição selecionada\n //este id será utilizado para preencher a tela de análise de docs com a inscrição selecionada\n this.dataSharingService.idInscricaoSelecionada.next( data.data ); \n\n //atualiza a inscrição selecionada para ela sair da lista\n for(var i=0; i{\n\n //atualizar o contador no ícone de notificações\n this.getMostRecentUpdated(tipoDocumentos);\n\n },\n error:(error)=>{\n console.log(error);\n }\n });\n\n }\n }\n \n }\n \n });\n \n }\n}\n","export const STATUS = {\r\n \r\n ATIVO: \"ATIVO\",\r\n INATIVO: \"INATIVO\"\r\n \r\n}","export const TIPO_ARQUIVO = {\r\n \r\n IMAGEM: \"IMAGEM\",\r\n PDF: \"PDF\",\r\n VIDEO: \"VIDEO\" ,\r\n DOCX: \"DOCX\",\r\n XLSX: \"XLSX\",\r\n PPTX: \"PPTX\",\r\n JPG: \"JPG\",\r\n PNG: \"PNG\",\r\n ZIP: \"ZIP\"\r\n}","export const TIPO_FORMA_INGRESSO = {\r\n \r\n VESTIBULAR_ONLINE: \"VESTIBULAR_ONLINE\",\r\n\tVESTIBULAR_PRESENCIAL: \"VESTIBULAR_PRESENCIAL\",\r\n\tENEM: \"ENEM\",\r\n\tPORTADOR_DIPLOMA: \"PORTADOR_DIPLOMA\",\r\n\tTRANSFERENCIA: \"TRANSFERENCIA\",\r\n REINGRESSO_POS_ABANDONO: \"REINGRESSO_POS_ABANDONO\",\r\n\tCURSO_EXTENSAO: \"CURSO_EXTENSAO\",\r\n\tPOS_GRADUACAO: \"POS_GRADUACAO\"\r\n \r\n}","export class ProvaDTO{\r\n\r\n id!: number;\r\n dataInicio!: Date;\r\n dataFim!:Date;\r\n horaInicio!: string;\r\n horaFim!: string;\r\n local!: string;\r\n totalVagas!: number;\r\n totalInscricoes!: number; //essa propriedade não é preenchida pela api\r\n idVestibular!: number;\r\n idFormaIngresso !: number;\r\n}","import { VestibularDTO } from './vestibularDTO';\r\nimport { FuncionarioDTO } from '../controle-acesso/funcionarioDTO';\r\nimport { CandidatoDTO } from './candidatoDTO';\r\n\r\nexport class TipoFormaIngressoDTO{\r\n\r\n codigo!: number;\r\n nome!: string;\r\n descricao!: string;\r\n temProva!: boolean;\r\n temEntregaDocumentacao!:boolean;\r\n temLocal!:boolean;\r\n podeEscolherDataProva!:boolean\r\n \r\n}","import { GrupoNoticiaDTO } from './grupoNoticiaDTO';\r\nimport { ArquivoDTO } from '../arquivoDTO';\r\nimport { NoticiaDTO } from './noticiaDTO';\r\n\r\nexport class NoticiaDestaque{\r\n\r\n \r\n id!: number;\r\n noticia!: NoticiaDTO;\r\n \r\n \r\n}\r\n\r\n\r\n","\n
\n
Filtro de notícias
\n \n
\n\n\n
\n \n getMaxSlidesPerView()\"\n effect=\"slide\"\n [slidesPerView]=\"getMaxSlidesPerView()\" >\n\n \n \n -1\"\n *ngIf=\"noticia.status==STATUS_PUBLICADO\"\n (click)=\"selectNews(noticia)\" >\n \n \n \n \n \n\n \n\n \n {{noticia.dataCriacao | date: 'MMMM dd, yyyy'}}\n \n \n \n {{noticia.titulo}}\n \n \n\n \n \n
\n
\n\n
\n \n
\n
\n \n
\n \n
\n \n\n \n
\n
\n Cancelar\n
\n
\n Confirmar\n
\n
\n \n
","import { PopoverController } from '@ionic/angular';\nimport { SwiperComponent } from 'swiper/angular';\nimport SwiperCore, { Autoplay, Keyboard, Pagination, Navigation, Scrollbar, Zoom, EffectFade, EffectCube, EffectCoverflow, EffectFlip, EffectCards, EffectCreative, Lazy, Thumbs } from 'swiper';\nimport { STATUS_PUBLICACAO } from './../../../../../../config/status-publicacao.config';\nimport { FunctionsService } from './../../../../../../services/common/functions.service';\nimport { ArquivoService } from './../../../../../../services/arquivo/arquivo.service';\nimport { API_CONFIG } from 'src/app/config/api.config';\nimport { NoticiaDTO } from '../../../../../../models/site/noticiaDTO';\nimport { NoticiaService } from './../../../../../../services/noticia/noticia.service';\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { NoticiaDestaque } from 'src/app/models/site/noticiaDestaqueDTO';\n\nSwiperCore.use([Autoplay, Keyboard, Pagination, Navigation, Scrollbar, Zoom, EffectFade, EffectCube, EffectCoverflow, EffectFlip, EffectCards, EffectCreative, Lazy]);\n\n\n@Component({\n selector: 'app-popover-selecionar-noticia',\n templateUrl: './popover-selecionar-noticia.component.html',\n styleUrls: ['./popover-selecionar-noticia.component.scss'],\n})\nexport class PopoverSelecionarNoticiaComponent implements OnInit {\n\n @ViewChild(SwiperComponent) swiper: SwiperComponent;\n\n\n filtro: string = '';\n noticias: NoticiaDTO[] = [];\n noticiasSelecionadas: NoticiaDestaque[];\n \n STATUS_PUBLICADO = STATUS_PUBLICACAO.PUBLICADO;\n\n\n constructor( private noticiaService: NoticiaService\n , private arquivoService: ArquivoService\n , private functionsService: FunctionsService\n , private popoverController: PopoverController ) { }\n\n ngOnInit() {}\n\n ionViewWillEnter(){\n\n this.findByFilter();\n\n }\n\n\n findByFilter(){\n\n this.functionsService.presentLoading();\n\n //filtras as notícias pelo título\n this.noticiaService.findByFilter( this.filtro\n , true\n , false\n , false\n , false\n , 0\n , 1000\n , 'ASC').subscribe({\n next:(resp)=>{\n this.noticias = [];\n\n \n for(var i=0; i{\n console.log(error);\n this.functionsService.dismissLoading();\n } \n });\n\n }\n\n\n\n getFilePublicURL(fullPath: string, fileName: string): string{\n \n if(!fullPath || !fileName){\n return API_CONFIG.iisVirtualDirectoryURL + 'empty_photo.jpg';\n }\n\n return this.arquivoService.getFilePublicURL(fullPath, fileName);\n }\n\n\n getMaxSlidesPerView(): number{\n \n if(screen.width>700){\n\n if(this.noticias.length>=3){\n return 3;\n }else{\n return this.noticias.length;\n }\n \n }else{\n return 1;\n }\n }\n\n\n slidePrev(){\n\n this.swiper.swiperRef.slidePrev();\n\n }\n\n slideNext(){\n\n this.swiper.swiperRef.slideNext();\n\n }\n\n indexOf(noticia: NoticiaDTO): number{\n\n if(!this.noticiasSelecionadas){\n this.noticiasSelecionadas = [];\n }\n\n for(var i=0; i-1){//é pra remover a notícia\n this.noticiasSelecionadas.splice(index,1);\n }else{\n let noticiaDestaque = new NoticiaDestaque();\n noticiaDestaque.noticia = noticia;\n this.noticiasSelecionadas.push(noticiaDestaque);\n\n \n }\n\n }\n\n\n cancel(){\n this.popoverController.dismiss();\n }\n\n confirm(){\n\n this.popoverController.dismiss(this.noticiasSelecionadas);\n\n }\n}\n","import { UsuarioDTO } from '../controle-acesso/usuarioDTO';\r\n\r\nexport class EstiloCSSDTO{\r\n\r\n id!: number;\r\n corFundo!: string;\r\n\r\n largura!: string;\r\n altura!: string;\r\n\r\n tamanhoFonte!: string;\r\n corFonte!: string;\r\n \r\n margemEsquerda!: string;\r\n margemDireita!: string;\r\n margemSuperior!: string;\r\n margemInferior!: string;\r\n\r\n paddingEsquerda!: string;\r\n paddingDireita!: string;\r\n paddingSuperior!: string;\r\n paddingInferior!: string;\r\n \r\n}","
\n
Cor de Fundo da Página
\n\n\n \n Clique para selecionar uma cor predefinida\n \n \n
\n \n
\n
\n {{printColor(cor, cor)}}\n
\n \n
\n\n\n \n \n Cor selecionada\n \n\n \n
\n\n \n Código da Cor\n \n\n \n
\n\n
\n  \n
\n \n
\n \n Ok\n \n
\n
\n \n\n
","import { PopoverController } from '@ionic/angular';\nimport { CorService } from './../../../../../../services/cor/cor.service';\nimport { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-popover-definir-cor-pagina',\n templateUrl: './popover-definir-cor-pagina.component.html',\n styleUrls: ['./popover-definir-cor-pagina.component.scss'],\n})\nexport class PopoverDefinirCorPaginaComponent implements OnInit {\n\n cores: string[] = [];\n corSelecionada: string;\n\n constructor( private coresService: CorService\n , private popoverController: PopoverController ) {\n \n this.cores = this.coresService.getCores();\n \n }\n\n\n ngOnInit() {}\n\n\n printColor(id:string, color: string){\n\n document.getElementById(id).style.backgroundColor = color;\n \n }\n\n selectColor(color: string){\n\n this.corSelecionada = color;\n \n\n }\n\n confirm(){\n\n this.popoverController.dismiss(this.corSelecionada);\n\n }\n}\n","import { FormularioDTO } from './formularioDTO';\r\nimport { LinkDTO } from './linkDTO';\r\nimport { NoticiaDTO } from './noticiaDTO';\r\nimport { ArquivoDTO } from 'src/app/models/arquivoDTO';\r\nimport { EstiloCSSDTO } from './estiloCSSDTO';\r\nimport { NoticiaDestaque } from './noticiaDestaqueDTO';\r\nimport { FormularioPersonalizadoDTO } from './formularioPersonalizadoDTO';\r\n\r\nexport class SecaoPaginaDTO{\r\n\r\n id!: number;\r\n \r\n titulo!: string;\r\n assunto!: string;\r\n texto!: string;\r\n textoColuna1!: string;\r\n textoColuna2!: string;\r\n textoColuna3!: string;\r\n \r\n tipo!: string;\r\n habilitada!: boolean;\r\n galeriaBanners!: ArquivoDTO[];\r\n \r\n galeriaDownloads!: ArquivoDTO[];\r\n alinhamentoGaleriaDownloads!: string;\r\n \r\n galeriaLinks!: LinkDTO[];\r\n alinhamentoGaleriaLinks!: string;\r\n \r\n noticiasDestaques!: NoticiaDestaque[];\r\n \r\n imagem!: ArquivoDTO;\r\n galeriaFotos!: ArquivoDTO[];\r\n galeriaVideos!: ArquivoDTO[];\r\n formulario!: FormularioDTO;\r\n formularioPersonalizado!: FormularioPersonalizadoDTO;\r\n \r\n ordemExibicao!: number;\r\n \r\n largura!: number;\r\n altura!: number;\r\n\r\n corFundo!: string;\r\n corFonte!: string;\r\n \r\n margemEsquerda!: number;\r\n margemDireita!: number;\r\n margemSuperior!: number;\r\n margemInferior!: number;\r\n \r\n paddingEsquerdo!: number;\r\n paddingDireito!: number;\r\n paddingSuperior!: number;\r\n paddingInferior!: number;\r\n\r\n}","import { DestinatarioDTO } from \"./destinatarioDTO\";\r\n\r\nexport class FormularioDTO{\r\n\r\n id!: number;\r\n multiplosDestinatarios!: boolean;\r\n destinatarios!: DestinatarioDTO[];\r\n campoNome!: string;\r\n habilitarCampoNome!: boolean;\r\n ordemExibicaoCampoNome!: number;\r\n\r\n campoEndereco!: string;\r\n habilitarCampoEndereco!: boolean;\r\n ordemExibicaoCampoEndereco!: number;\r\n\r\n campoTelefone!: string;\r\n habilitarCampoTelefone!: boolean;\r\n ordemExibicaoCampoTelefone!: number;\r\n\r\n campoEmail!: string;\r\n habilitarCampoEmail!: boolean;\r\n ordemExibicaoCampoEmail!: number;\r\n\r\n campoAssunto!: string;\r\n habilitarCampoAssunto!: boolean;\r\n ordemExibicaoCampoAssunto!: number;\r\n\r\n habilitarAssuntoDuvida!: boolean;\r\n habilitarAssuntoReclamacao!: boolean;\r\n habilitarAssuntoElogio!: boolean;\r\n habilitarAssuntoInteresse!: boolean;\r\n habilitarAssuntoOpiniao!: boolean;\r\n \r\n campoMensagem!: string;\r\n habilitarCampoMensagem!: boolean;\r\n ordemExibicaoCampoMensagem!: number;\r\n}","\r\nexport class DestinatarioDTO{\r\n\r\n id!: number;\r\n email!: string;\r\n nome!: string;\r\n \r\n}","import { OpcaoDTO } from \"./opcaoDTO\";\r\n\r\nexport class CampoFormularioDTO {\r\n tipo!: string; // Tipo do campo (ex.: texto-curto, texto-longo, etc.)\r\n label!: string; // Label do campo\r\n placeholder!: string; // Placeholder do campo (opcional)\r\n valor!: any;\r\n arquivo?: File; // Adicionado para anexos\r\n opcoes!: OpcaoDTO[]; // Lista de opções (para campos de seleção, opcional)\r\n fonteDados!: '' | 'Modalidades' | 'Formações' | 'Habilitações' | 'Turnos' | 'Cursos' | 'Formas de Ingresso' | 'Textos' | 'Tipos de Arquivos'\r\n ordemExibicao!: number;\r\n \r\n\r\n constructor(\r\n tipo?: string, \r\n label?: string, \r\n placeholder?: string, \r\n opcoes?: any[], fonteDados?: '' | 'Modalidades' | 'Formações' | 'Habilitações' | 'Turnos' | 'Cursos' | 'Formas de Ingresso' | 'Textos' | 'Tipos de Arquivos',\r\n ordemExibicao?: number ) {\r\n\r\n this.tipo = tipo;\r\n this.label = label;\r\n this.placeholder = placeholder;\r\n this.opcoes = opcoes;\r\n this.fonteDados = fonteDados;\r\n this.ordemExibicao = ordemExibicao;\r\n }\r\n\r\n \r\n }","import { CampoFormularioDTO } from \"./campoFormularioDTO\";\r\n\r\nexport class FormularioPersonalizadoDTO {\r\n id!: number; // ID do formulário (opcional, se necessário)\r\n titulo!: string; // Título do formulário\r\n mensagemPosEnvio!: string;\r\n campos: CampoFormularioDTO[]; // Lista de campos configurados\r\n emailsDestinatarios: string;\r\n salvarCopiaInterna: boolean;\r\n \r\n constructor(titulo: string, emailsDestinatarios: string, salvarCopiaInterna: boolean, mensagemPosEnvio: string, campos: CampoFormularioDTO[]) {\r\n this.campos = campos;\r\n this.emailsDestinatarios = emailsDestinatarios;\r\n this.salvarCopiaInterna = salvarCopiaInterna;\r\n this.titulo = titulo;\r\n this.mensagemPosEnvio = mensagemPosEnvio;\r\n }\r\n }\r\n \r\n \r\n ","import { CursoDTO } from \"../curso/cursoDTO\";\r\nimport { FormacaoDTO } from \"../curso/formacaoDTO\";\r\nimport { HabilitacaoDTO } from \"../curso/habilitacaoDTO\";\r\nimport { ModalidadeDTO } from \"../curso/modalidadeDTO\";\r\nimport { TurnoDTO } from \"../curso/turnoDTO\";\r\nimport { TipoFormaIngressoDTO } from \"../vestibular/tipoFormaIngressoDTO\";\r\n\r\nexport class OpcaoDTO {\r\n id!: number;\r\n nome!: string;\r\n _type!: string; // Para mapear o tipo no discriminador do back-end\r\n \r\n modalidade!: ModalidadeDTO;\r\n formacao!: FormacaoDTO;\r\n habilitacao!: HabilitacaoDTO;\r\n turno!: TurnoDTO;\r\n curso!: CursoDTO;\r\n tipoFormaIngresso!: TipoFormaIngressoDTO;\r\n texto!: string;\r\n tipoArquivo!: string;\r\n\r\n constructor(\r\n id: number,\r\n nome: string,\r\n _type: string,\r\n association?: {\r\n modalidade?: ModalidadeDTO;\r\n formacao?: FormacaoDTO;\r\n habilitacao?: HabilitacaoDTO;\r\n turno?: TurnoDTO;\r\n curso?: CursoDTO;\r\n tipoFormaIngresso?: TipoFormaIngressoDTO;\r\n texto?: string;\r\n tipoArquivo?: string;\r\n }\r\n ) {\r\n this.id = id;\r\n this.nome = nome;\r\n this._type = _type;\r\n \r\n // Associa apenas o campo relevante\r\n this.modalidade = association?.modalidade;\r\n this.formacao = association?.formacao;\r\n this.habilitacao = association?.habilitacao;\r\n this.turno = association?.turno;\r\n this.curso = association?.curso;\r\n this.tipoFormaIngresso = association?.tipoFormaIngresso;\r\n this.texto = association?.texto;\r\n this.tipoArquivo = association?.tipoArquivo;\r\n }\r\n }\r\n ","
\n \n \n
\n\n
\n
\n Filtro de Cursos\n
\n\n \n\n \n \n \n \n \n \n Filtro\n \n \n \n\n \n \n Filtro\n \n {{formacao.nome}}\n \n \n \n \n \n\n \n Marcar todos\n Desmarcar todos\n \n\n \n
\n
\n \n \n \n  {{ opcao.curso.nome }}\n / {{opcao.curso.formacao.nome}}\n / {{opcao.curso.habilitacao.nome}}\n / {{opcao.curso.modalidade.nome}}\n \n
\n\n \n\n \n
\n\n
\n
\n Cancelar\n
\n
\n Confirmar\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { PopoverController } from '@ionic/angular';\nimport { FormacaoDTO } from 'src/app/models/curso/formacaoDTO';\nimport { OpcaoDTO } from 'src/app/models/site/opcaoDTO';\nimport { FunctionsService } from 'src/app/services/common/functions.service';\nimport { FormacaoService } from 'src/app/services/formacao/formacao.service';\n\n@Component({\n selector: 'app-popover-selecionar-curso-formulario',\n templateUrl: './popover-selecionar-curso-formulario.component.html',\n styleUrls: ['./popover-selecionar-curso-formulario.component.scss'],\n})\nexport class PopoverSelecionarCursoFormularioComponent implements OnInit {\n\n filtro: string = '';\n filtroFormacao: FormacaoDTO;\n\n graduacao: boolean;\n posGraduacao: boolean;\n extensao: boolean;\n \n formacoes: FormacaoDTO[] = [];\n\n todasOpcoesCursos: OpcaoDTO[];\n opcoesFiltradas: OpcaoDTO[];\n opcoesMarcadas: OpcaoDTO[];\n \n constructor(\n private popoverController: PopoverController,\n private functionsService: FunctionsService,\n private formacaoService: FormacaoService\n ) {}\n \n ngOnInit() {\n this.formacaoService.findAll().subscribe({\n next:(resp)=>{\n this.formacoes = resp;\n }\n });\n }\n \n ionViewWillEnter() {\n \n if (this.todasOpcoesCursos && this.todasOpcoesCursos.length > 0) {\n\n this.opcoesFiltradas = this.todasOpcoesCursos.filter(opcao => {\n const formacaoNome = opcao.curso.formacao?.nome?.toLocaleLowerCase();\n return (this.graduacao && formacaoNome === 'graduação') ||\n (this.posGraduacao && formacaoNome === 'pós-graduação') ||\n (this.extensao && formacaoNome === 'extensão');\n });\n this.functionsService.sortArray(this.opcoesFiltradas);\n } else {\n this.opcoesFiltradas = [];\n }\n \n if(!this.opcoesMarcadas){\n this.opcoesMarcadas = [];\n }\n }\n \n filter() {\n\n console.log(this.todasOpcoesCursos)\n\n this.opcoesFiltradas = this.todasOpcoesCursos.filter(opcaoCurso => \n opcaoCurso.curso.nome.toLocaleLowerCase().includes(this.filtro.toLocaleLowerCase()) ||\n opcaoCurso.curso.habilitacao?.nome.toLocaleLowerCase().includes(this.filtro.toLocaleLowerCase()) ||\n opcaoCurso.curso.modalidade?.nome.toLocaleLowerCase().includes(this.filtro.toLocaleLowerCase()) ||\n opcaoCurso.curso.formacao?.nome.toLocaleLowerCase().includes(this.filtro.toLocaleLowerCase())\n );\n\n if(this.filtroFormacao){\n this.opcoesFiltradas = this.opcoesFiltradas.filter(opcaoCurso => \n opcaoCurso.curso.formacao?.id==this.filtroFormacao.id\n );\n }\n }\n \n isChecked(opcao: OpcaoDTO): boolean {\n \n if(!this.opcoesMarcadas){\n this.opcoesMarcadas = [];\n }\n \n return this.opcoesMarcadas.some(opcaoSelecionada => opcaoSelecionada.curso.id === opcao.curso.id);\n }\n \n \n \n \n toggleSelection(event, curso: OpcaoDTO) {\n \n //this.functionsService.presentLoading();\n \n if (event.target.checked) {\n \n this.opcoesMarcadas.push(curso)\n \n } else {\n // Remover \n this.opcoesMarcadas = this.opcoesMarcadas.filter(cursoSelecionado => cursoSelecionado.curso.id !== curso.id);\n }\n \n //this.functionsService.dismissLoading();\n }\n \n \n \n \n cancel() {\n this.popoverController.dismiss(null);\n }\n \n confirm() {\n this.popoverController.dismiss(this.opcoesMarcadas);\n }\n \n selectAll() {\n \n let event = {\n target: {\n checked: true\n }\n }\n \n this.opcoesFiltradas.forEach(curso=>{\n this.toggleSelection(event, curso);\n });\n }\n\n}\n","\n
Configurar Formulário Personalizado
\n
\n \n
Mensagem Gerada
\n \n \n E-mails dos Destinatários\n \n \n \n
Por favor, insira e-mails válidos, separados por ponto e vírgula (;)
\n \n
\n \n \n  Salvar cópia interna\n
\n
Salva na base de dados do sistema uma cópia das mensagens recebidas
\n \n\n \n \n Assunto\n \n \n \n
Assunto que identificará as mensagens recebidas a partir deste formulário
\n \n \n \n Mensagem\n \n \n \n
Mensagem que será exibida após o envio dos dados através desse formulário
\n \n
\n \n
Dados do Formulário
\n \n \n Tipo de Campo\n \n \n {{ tipo.label }}\n \n \n \n\n \n
\n \n Fonte de Dados\n \n \n \n \n \n {{ getNomeFonteDados(key) }}\n Textos Livres\n \n \n\n \n \n
\n\n \n \n Tipos de Arquivos\n \n \n {{ opcao.tipoArquivo.toUpperCase() }}\n \n \n \n\n \n \n Label do Campo\n \n \n\n \n \n Placeholder\n \n \n\n \n \n\n \n
\n \n Opções Disponíveis \n\n \n
\n \n
\n \n \n \n \n \n \n
\n
\n Adicionar Opção\n
\n
\n
\n\n \n \n\n \n \n\n \n {{ opcao.nome }}\n \n\n \n\n \n \n \n\n \n Filtrar Cursos\n \n \n
\n
\n\n\n \n\n \n
\n
\n Adicionar Campo\n
\n
\n\n \n
Preview
\n
\n \n \n \n
\n \n {{ campo.label }}\n \n \n
\n\n \n \n\n \n\n
\n \n {{ campo.label }}\n \n \n \n \n Upload  \n \n \n
\n
{{getSelectedText(campo)}}
\n
\n \n \n
\n \n {{ campo.label }}\n \n \n
\n\n \n
\n \n {{ campo.label }}\n \n \n {{ opcao?.modalidade?.nome }}\n {{ opcao?.formacao?.nome }}\n {{ opcao?.habilitacao?.nome }}\n {{ opcao?.curso?.nome }}\n {{ opcao?.turno?.nome }}\n  {{getNomeFormaIngressoFormatado(opcao?.tipoFormaIngresso.toString())}}\n {{ opcao?.texto }}\n \n \n \n \n
\n\n \n
\n
\n {{ campo.label }}\n
\n \n \n \n \n  {{opcao?.modalidade?.nome}}\n  {{opcao?.formacao?.nome}}\n  {{opcao?.habilitacao?.nome}}\n  {{opcao?.curso?.nome}}\n  {{opcao?.turno?.nome}}\n  {{getNomeFormaIngressoFormatado(opcao?.tipoFormaIngresso.toString())}}\n  {{ opcao?.texto }}\n \n \n \n
\n\n \n
0\" class=\"options-list\">\n
\n {{ campo.label }}\n
\n \n \n \n\n \n  {{opcao?.modalidade?.nome }}\n  {{opcao?.formacao?.nome }}\n  {{opcao?.habilitacao?.nome }}\n  {{opcao?.curso?.nome }}\n  {{opcao?.turno?.nome }}\n  {{getNomeFormaIngressoFormatado(opcao?.tipoFormaIngresso.toString())}}\n  {{ opcao?.texto }}\n \n \n
\n\n \n
\n 0\">\n \n \n \n \n \n \n \n \n \n \n \n
\n\n \n
\n\n \n
\n\n \n \n\n \n
\n
\n Cancelar\n
\n
\n Confirmar\n
\n
\n
\n","import { ChangeDetectorRef, Component, OnInit, ViewChild } from '@angular/core';\nimport { IonSelect, PopoverController } from '@ionic/angular';\nimport { TIPO_FORMA_INGRESSO } from 'src/app/config/tipo-forma-ingresso.config';\nimport { CursoDTO } from 'src/app/models/curso/cursoDTO';\nimport { CampoFormularioDTO } from 'src/app/models/site/campoFormularioDTO';\nimport { FormularioPersonalizadoDTO } from 'src/app/models/site/formularioPersonalizadoDTO';\nimport { OpcaoDTO } from 'src/app/models/site/opcaoDTO';\nimport { FunctionsService } from 'src/app/services/common/functions.service';\nimport { CursoService } from 'src/app/services/curso/curso.service';\nimport { FormaIngressoService } from 'src/app/services/forma-ingresso/forma-ingresso.service';\nimport { FormacaoService } from 'src/app/services/formacao/formacao.service';\nimport { HabilitacaoService } from 'src/app/services/habilitacao/habilitacao.service';\nimport { ModalidadeService } from 'src/app/services/modalidade/modalidade.service';\nimport { TurnoService } from 'src/app/services/turno/turno.service';\nimport { PopoverSelecionarCursoFormularioComponent } from '../../popover-selecionar-curso-formulario/popover-selecionar-curso-formulario/popover-selecionar-curso-formulario.component';\nimport { STATUS } from 'src/app/config/status.config';\nimport { forkJoin } from 'rxjs';\n\nexport interface Listas {\n modalidades: OpcaoDTO[];\n formacoes: OpcaoDTO[];\n habilitacoes: OpcaoDTO[];\n turnos: OpcaoDTO[];\n cursos: OpcaoDTO[];\n formasIngresso: OpcaoDTO[];\n textos: [{'opcoes': OpcaoDTO[], 'ordemExibicao': number}]; //como pode haver mais de uma lista de textos na mesma seção, é preciso distinguir cada uma delas através de sua ordem de exibição\n tiposArquivos: OpcaoDTO[];\n}\n\n\n@Component({\n selector: 'app-popover-formulario-personalizado',\n templateUrl: './popover-formulario-personalizado.component.html',\n styleUrls: ['./popover-formulario-personalizado.component.scss'],\n})\nexport class PopoverFormularioPersonalizadoComponent implements OnInit {\n\n @ViewChild('fonteDeDadosSelect') fonteDeDadosSelect: IonSelect;\n @ViewChild('tiposDeArquivosSelect') tiposDeArquivosSelect: IonSelect;\n\n emailsDestinatarios: string;\n salvarCopiaInterna: boolean;\n titulo: string;\n mensagemPosEnvio: string;\n campos: CampoFormularioDTO[];\n \n todosCursos: CursoDTO[] = [];\n emailInvalido: boolean = false;\n \n tiposCampo = [\n { value: 'texto-curto', label: 'Campo de Texto Curto' },\n { value: 'texto-longo', label: 'Campo de Texto Longo' },\n { value: 'anexos', label: 'Campo de Anexos' },\n { value: 'selecao', label: 'Seleção (Lista Suspensa)' },\n { value: 'selecao-unica', label: 'Seleção Única (Radio)' },\n { value: 'multipla-selecao', label: 'Múltipla Seleção (Checkbox)' },\n ];\n \n\n //tipos de arquivos possíveis de serem selecionados nos campos do tipo upload de anexos (essa lista é inicializada em ngOnInit)\n listaOpcoesTiposArquivos: OpcaoDTO[];\n\n fontesDados = {\n modalidades: [],\n formacoes: [],\n habilitacoes: [],\n cursos: [],\n turnos: [],\n formasIngresso: [\n TIPO_FORMA_INGRESSO.VESTIBULAR_ONLINE,\n TIPO_FORMA_INGRESSO.VESTIBULAR_PRESENCIAL,\n TIPO_FORMA_INGRESSO.ENEM,\n TIPO_FORMA_INGRESSO.PORTADOR_DIPLOMA,\n TIPO_FORMA_INGRESSO.TRANSFERENCIA,\n TIPO_FORMA_INGRESSO.REINGRESSO_POS_ABANDONO,\n TIPO_FORMA_INGRESSO.CURSO_EXTENSAO,\n TIPO_FORMA_INGRESSO.VESTIBULAR_ONLINE,\n ],\n textos: [],\n tiposArquivos: []\n };\n\n \n novoCampo: CampoFormularioDTO = new CampoFormularioDTO;\n editandoCampo: boolean = false;\n\n fonteDeDadosSelecionada: 'Modalidades' | 'Formações' | 'Habilitações' | 'Turnos' | 'Cursos' | 'Formas de Ingresso' | 'Textos' | 'Tipos de Arquivos' | '';\n\n //armazena os dados selecionados nos campos de múltiplas opções\n listasSelecionadas: Listas = {\n modalidades: [],\n formacoes: [],\n habilitacoes: [],\n turnos: [],\n cursos: [],\n formasIngresso: [],\n textos: null,\n tiposArquivos: []\n };\n\n //armazena os dados selecionáveis nos campos de múltiplas opções\n listasSelecionaveis: Listas = {\n modalidades: [],\n formacoes: [],\n habilitacoes: [],\n turnos: [],\n cursos: [],\n formasIngresso: [],\n textos: null,\n tiposArquivos: []\n };\n \n \n\n constructor(\n private modalidadeService: ModalidadeService,\n private formacaoService: FormacaoService,\n private habilitacaoService: HabilitacaoService,\n private cursoService: CursoService,\n private turnoService: TurnoService,\n private popoverController: PopoverController,\n private functionsService: FunctionsService,\n private formaIngressoService: FormaIngressoService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n \n this.listaOpcoesTiposArquivos = [\n this.getOpcaoTipoArquivo('xls'),\n this.getOpcaoTipoArquivo('xlsx'),\n this.getOpcaoTipoArquivo('pdf'),\n this.getOpcaoTipoArquivo('ppt'),\n this.getOpcaoTipoArquivo('pps'),\n this.getOpcaoTipoArquivo('ppsx'),\n this.getOpcaoTipoArquivo('doc'),\n this.getOpcaoTipoArquivo('docx'),\n this.getOpcaoTipoArquivo('txt'),\n this.getOpcaoTipoArquivo('jpg'),\n this.getOpcaoTipoArquivo('jpeg'),\n this.getOpcaoTipoArquivo('png')\n ];\n\n }\n\n ionViewWillEnter(){\n this.editandoCampo = false;\n this.loadData();\n }\n \n \n\n loadData() {\n this.functionsService.presentLoading();\n\n forkJoin({\n modalidades: this.modalidadeService.findAll(),\n formacoes: this.formacaoService.findAll(),\n habilitacoes: this.habilitacaoService.findAll(),\n turnos: this.turnoService.findAll(),\n cursos: this.cursoService.findByStatus(STATUS.ATIVO)\n }).subscribe({\n next: (results) => {\n this.fontesDados.modalidades = results.modalidades;\n this.fontesDados.formacoes = results.formacoes;\n this.fontesDados.habilitacoes = results.habilitacoes;\n this.fontesDados.turnos = results.turnos;\n this.todosCursos = results.cursos; //para ser usado na popup de filtro\n this.fontesDados.cursos = results.cursos;\n\n //lista de modalidades passíveis de serem selecionadas\n this.listasSelecionaveis.modalidades = results.modalidades.map((item: any) => { \n return new OpcaoDTO(\n null,\n item.nome,\n 'Modalidades',\n {\n ...({ modalidade: item }),\n }\n );\n });\n\n //lista de formações passíveis de serem selecionadas\n this.listasSelecionaveis.formacoes = results.formacoes.map((item: any) => { \n return new OpcaoDTO(\n null,\n item.nome,\n 'Formações',\n {\n ...({ formacao: item }),\n }\n );\n });\n\n //lista de habilitações passíveis de serem selecionadas\n this.listasSelecionaveis.habilitacoes = results.habilitacoes.map((item: any) => { \n return new OpcaoDTO(\n null,\n item.nome,\n 'Habilitações',\n {\n ...({ habilitacao: item }),\n }\n );\n });\n\n\n //lista de turnos passíveis de serem selecionadas\n this.listasSelecionaveis.turnos = results.turnos.map((item: any) => { \n return new OpcaoDTO(\n null,\n item.nome,\n 'Turnos',\n {\n ...({ turno: item }),\n }\n );\n });\n\n //lista de cursos passíveis de serem selecionadas\n this.listasSelecionaveis.cursos = results.cursos.map((item: any) => { \n return new OpcaoDTO(\n null,\n item.nome,\n 'Cursos',\n {\n ...({ curso: item }),\n }\n );\n });\n \n\n this.listasSelecionaveis.formasIngresso = this.fontesDados.formasIngresso.map((item: any) => { \n return new OpcaoDTO(\n null,\n this.getNomeFormaIngressoFormatado(item),\n 'Formas de Ingresso',\n {\n ...(this.fonteDeDadosSelecionada === 'Formas de Ingresso' && { tipoFormaIngresso: item }),\n }\n );\n });\n \n\n\n this.loadLists(); // Executa somente após todas as requisições serem concluídas\n },\n error: (err) => {\n console.error('Erro ao carregar dados', err);\n },\n complete: () => {\n this.functionsService.dismissLoading();\n }\n });\n }\n\n\n loadLists(){\n\n if(this.campos){\n //preenche as listas selecionáveis de acordo com o que está predefinido nos campos\n for(var campo of this.campos){\n switch (campo.fonteDados) {\n case 'Modalidades':\n this.listasSelecionaveis.modalidades =[...campo.opcoes];\n break;\n \n case 'Formações':\n this.listasSelecionaveis.formacoes = [...campo.opcoes];\n break;\n\n case 'Habilitações':\n this.listasSelecionaveis.habilitacoes = [...campo.opcoes];\n break;\n\n case 'Turnos':\n this.listasSelecionaveis.turnos = [...campo.opcoes];\n break;\n\n case 'Cursos':\n this.listasSelecionaveis.cursos = [...campo.opcoes];\n break;\n\n case 'Formas de Ingresso':\n this.listasSelecionaveis.formasIngresso = [...campo.opcoes];\n break;\n\n case 'Textos':\n\n if(!this.listasSelecionaveis.textos){\n this.listasSelecionaveis.textos = [{'opcoes': [...campo.opcoes], 'ordemExibicao': campo.ordemExibicao}];\n }else{\n this.listasSelecionaveis.textos.push({'opcoes': [...campo.opcoes], 'ordemExibicao': campo.ordemExibicao});\n }\n\n break;\n \n case 'Tipos de Arquivos':\n this.listasSelecionaveis.tiposArquivos = [...campo.opcoes];\n break; \n }\n } \n }\n\n }\n \n \n\n filtrarCursos(opcoesSelecionadas: any[]) {\n \n if (!this.todosCursos || this.todosCursos.length === 0) {\n //console.error('A lista de todos os cursos está vazia.');\n return;\n }\n \n if (this.fonteDeDadosSelecionada === 'Modalidades') {\n this.fontesDados.cursos = this.todosCursos.filter((curso) =>\n opcoesSelecionadas.some((opcao) => opcao.modalidade.id === curso.modalidade?.id)\n );\n } else if (this.fonteDeDadosSelecionada === 'Formações') {\n this.fontesDados.cursos = this.todosCursos.filter((curso) =>\n opcoesSelecionadas.some((opcao) => opcao.formacao.id === curso.formacao?.id)\n );\n } else if (this.fonteDeDadosSelecionada === 'Habilitações') {\n\n this.fontesDados.cursos = this.todosCursos.filter((curso) =>\n opcoesSelecionadas.some((opcao) => opcao.habilitacao.id === curso.habilitacao?.id)\n );\n\n \n }\n\n }\n \n \n\n adicionarOpcaoTexto() {\n // Garante que o array de opções existe\n this.novoCampo.opcoes = this.novoCampo.opcoes || [];\n \n // Cria uma nova instância de OpcaoDTO com valores padrão\n const novaOpcao = new OpcaoDTO(\n null,\n 'Opção Texto ' + (this.novoCampo.opcoes.length+1), // Nome\n 'Textos', // Tipo padrão, pode ser alterado conforme necessário\n { texto: '' } // Associação inicial com texto vazio\n );\n \n // Adiciona a nova opção ao array\n this.novoCampo.opcoes.push(novaOpcao);\n\n \n }\n \n \n \n \n removerOpcaoTexto(index: number) {\n // Remove a opção na posição especificada\n this.novoCampo.opcoes.splice(index, 1);\n }\n\n \n\n adicionarCampo() {\n\n \n if (!this.novoCampo.tipo) {\n alert('Selecione um tipo de campo!');\n return;\n }\n \n if (!this.novoCampo.label) {\n alert('Defina um label para o campo!');\n return;\n }\n \n if(\n this.novoCampo.tipo === 'selecao' || \n this.novoCampo.tipo === 'selecao-unica' || \n this.novoCampo.tipo === 'multipla-selecao' ||\n this.novoCampo.tipo === 'anexos'\n ){\n \n if(\n !this.fonteDeDadosSelecionada || \n this.novoCampo.opcoes.length === 0\n ){\n alert('Defina a fonte de dados e adicione pelo menos uma opção para o campo de seleção!');\n return;\n }\n \n this.novoCampo.fonteDados = this.fonteDeDadosSelecionada;\n\n if (this.novoCampo.fonteDados=='Textos') {\n\n for(const opcao of this.novoCampo.opcoes){\n if(!opcao.texto || opcao.texto==''){\n alert('O texto da opção é obrigatório!');\n return;\n }\n }\n }\n\n \n // Verifica se é uma seleção que influencia os cursos\n if (\n this.fonteDeDadosSelecionada === 'Modalidades' || \n this.fonteDeDadosSelecionada === 'Formações' || \n this.fonteDeDadosSelecionada === 'Habilitações' ||\n this.fonteDeDadosSelecionada === 'Turnos'\n ) {\n\n this.filtrarCursos(this.novoCampo.opcoes);\n }\n\n \n //guarda as opções disponibilizadas no campo\n switch (this.fonteDeDadosSelecionada) {\n case 'Modalidades':\n //this.listasSelecionaveis.modalidades = [...this.novoCampo.opcoes];\n break;\n\n case 'Formações':\n //this.listasSelecionaveis.formacoes = [...this.novoCampo.opcoes];\n break;\n\n case 'Habilitações':\n //this.listasSelecionaveis.habilitacoes = [...this.novoCampo.opcoes];\n break;\n\n case 'Turnos':\n //this.listasSelecionaveis.turnos = [...this.novoCampo.opcoes];\n break;\n\n case 'Cursos':\n //this.listasSelecionaveis.cursos = [...this.novoCampo.opcoes];\n break;\n\n case 'Formas de Ingresso':\n //this.listasSelecionaveis.formasIngresso = [...this.novoCampo.opcoes];\n break;\n \n case 'Textos':\n if(!this.listasSelecionaveis.textos){\n //this.listasSelecionaveis.textos = [{'opcoes': [...this.novoCampo.opcoes], 'ordemExibicao': this.campos.length+1}];\n }else{\n //this.listasSelecionaveis.textos.push({'opcoes': [...this.novoCampo.opcoes], 'ordemExibicao': this.campos.length+1});\n } \n break;\n \n case 'Tipos de Arquivos':\n // this.listasSelecionaveis.tiposArquivos = [...this.novoCampo.opcoes];\n break;\n }\n\n }\n \n if(this.editandoCampo){\n //apenas atualiza o campo no formulário\n this.campos[this.novoCampo.ordemExibicao-1] = this.novoCampo;\n\n }else{\n //adiciona o novo campo no fim do formulário\n this.novoCampo.ordemExibicao = this.campos.length+1;\n this.campos.push({ ...this.novoCampo });\n }\n \n \n this.editandoCampo = false;\n this.novoCampo = new CampoFormularioDTO;\n this.fonteDeDadosSelecionada = ''; // Reseta a fonte de dados após adicionar o campo\n\n }\n \n\n removerCampo(campo) {\n this.campos = this.campos.filter((c) => c !== campo);\n }\n\n editar(campo: CampoFormularioDTO){\n this.novoCampo = campo;\n this.fonteDeDadosSelecionada = campo.fonteDados;\n this.editandoCampo = true;\n }\n\n\n confirmar() {\n if (this.campos.length === 0) {\n alert('Adicione pelo menos um campo ao formulário!');\n return;\n }\n \n if (!this.titulo) {\n alert('Informe o título do formulário!');\n return;\n }\n\n \n this.validarEmails();\n if (this.emailInvalido) {\n alert('Por favor, insira apenas e-mails válidos.');\n return;\n }\n \n this.emailsDestinatarios = this.emailsDestinatarios.replace(/,/g, ';');\n\n //campos sem ordem definida (bug)\n for(var i=0; i\n new CampoFormularioDTO(\n campo.tipo,\n campo.label, \n campo.placeholder,\n campo.opcoes, //this.getDadosSelecionados(campo.fonteDados),\n campo.fonteDados,\n campo.ordemExibicao\n )\n )\n );\n \n\n this.popoverController.dismiss({ formulario });\n }\n\n cancelar(){\n this.popoverController.dismiss();\n }\n \n\n\n getNomeFonteDados(key: string): 'Modalidades' | 'Formações' | 'Habilitações' | 'Turnos' | 'Cursos' | 'Formas de Ingresso' | 'Textos' | 'Tipos de Arquivos' {\n const keyNameMap = {\n modalidades: 'Modalidades',\n formacoes: 'Formações',\n habilitacoes: 'Habilitações',\n cursos: 'Cursos',\n turnos: 'Turnos',\n formasIngresso: 'Formas de Ingresso',\n textos: 'Textos',\n tiposArquivos: 'Tipos de Arquivos'\n };\n \n return keyNameMap[key];\n \n }\n\n\n getKeyFonteDados(nomeFonteDados: string): string {\n const keyNameMap = {\n modalidades: 'Modalidades',\n formacoes: 'Formações',\n habilitacoes: 'Habilitações',\n cursos: 'Cursos',\n turnos: 'Turnos',\n formasIngresso: 'Formas de Ingresso',\n textos: 'Textos',\n tiposArquivos: 'Tipos de Arquivos'\n };\n \n // Busca a chave correspondente ao valor fornecido\n return Object.keys(keyNameMap).find(key => keyNameMap[key] === nomeFonteDados) || '';\n }\n \n getFontesDados(): string[] {\n return Object.keys(this.fontesDados);\n }\n\n desabilitarFonte(nomeFonte: string): boolean{\n\n \n const resultado = this.campos.some(campo => {\n return campo.fonteDados === nomeFonte && nomeFonte!='Textos';\n });\n \n return resultado;\n\n }\n \n getDadosFonteSelecionada(nomeFonteSelecionada: string): any[]{\n \n switch (nomeFonteSelecionada) {\n case 'Modalidades':\n return this.fontesDados.modalidades;\n \n case 'Formações':\n return this.fontesDados.formacoes;\n \n case 'Habilitações':\n return this.fontesDados.habilitacoes;\n \n case 'Turnos':\n return this.fontesDados.turnos;\n \n case 'Cursos':\n return this.fontesDados.cursos;\n \n case 'Formas de Ingresso':\n return this.fontesDados.formasIngresso;\n \n case 'Textos':\n return this.fontesDados.textos;\n \n case 'Tipos de Arquivos':\n return this.fontesDados.tiposArquivos;\n \n default:\n return [];\n }\n }\n\n\n //selecionados no formulário montado para testes\n getDadosSelecionados(nomeFonteSelecionada: string): any[]{\n \n switch (nomeFonteSelecionada) {\n case 'Modalidades':\n return this.listasSelecionadas.modalidades;\n \n case 'Formações':\n return this.listasSelecionadas.formacoes;\n \n case 'Habilitações':\n return this.listasSelecionadas.habilitacoes;\n \n case 'Turnos':\n return this.listasSelecionadas.turnos;\n \n case 'Cursos':\n return this.listasSelecionadas.cursos;\n \n case 'Formas de Ingresso':\n return this.listasSelecionadas.formasIngresso;\n \n case 'Textos':\n return this.listasSelecionadas.textos;\n\n case 'Tipos de Arquivos':\n return this.listasSelecionadas.tiposArquivos;\n\n default:\n return [];\n }\n }\n\n\n //dados passíveis de seleção no formulário, independente dos filtros aplicados\n getDadosSelecionaveis(nomeFonteSelecionada: string, ordemExibicaoCampo: number): any[]{\n \n switch (nomeFonteSelecionada) {\n case 'Modalidades':\n return this.listasSelecionaveis.modalidades;\n \n case 'Formações':\n return this.listasSelecionaveis.formacoes;\n \n case 'Habilitações':\n return this.listasSelecionaveis.habilitacoes;\n \n case 'Turnos':\n return this.listasSelecionaveis.turnos;\n \n case 'Cursos':\n return this.listasSelecionaveis.cursos;\n \n case 'Formas de Ingresso':\n return this.listasSelecionaveis.formasIngresso;\n \n case 'Textos':\n const lista = this.listasSelecionaveis.textos.find(lista=>lista.ordemExibicao==ordemExibicaoCampo);\n return lista.opcoes;\n \n case 'Tipos de Arquivos':\n return this.listasSelecionaveis.tiposArquivos;\n\n default:\n return [];\n }\n\n \n }\n\n\n onFonteDeDadosChange() {\n\n const dadosFonteSelecionada = [...this.getDadosFonteSelecionada(this.fonteDeDadosSelecionada)];\n \n if (dadosFonteSelecionada && Array.isArray(dadosFonteSelecionada)) {\n \n // Constrói as opções com base na nova modelagem usando o construtor adequado\n this.novoCampo.opcoes = dadosFonteSelecionada.map((item: any) => {\n \n return new OpcaoDTO(\n null,\n this.fonteDeDadosSelecionada!='Formas de Ingresso' ? item.nome : this.getNomeFormaIngressoFormatado(item),\n this.fonteDeDadosSelecionada,\n {\n ...(this.fonteDeDadosSelecionada === 'Modalidades' && { modalidade: item }),\n ...(this.fonteDeDadosSelecionada === 'Formações' && { formacao: item }),\n ...(this.fonteDeDadosSelecionada === 'Habilitações' && { habilitacao: item }),\n ...(this.fonteDeDadosSelecionada === 'Cursos' && { curso: item }),\n ...(this.fonteDeDadosSelecionada === 'Turnos' && { turno: item }),\n ...(this.fonteDeDadosSelecionada === 'Formas de Ingresso' && { tipoFormaIngresso: item }),\n ...(this.fonteDeDadosSelecionada === 'Textos' && { textos: item }),\n }\n );\n });\n \n this.novoCampo.fonteDados = this.fonteDeDadosSelecionada;\n // Sugere automaticamente o label com base na fonte de dados\n this.novoCampo.label = this.fonteDeDadosSelecionada;\n } else {\n // Reseta as opções e o label se não houver fonte selecionada\n this.novoCampo.fonteDados = '';\n this.novoCampo.opcoes = [];\n this.novoCampo.label = '';\n }\n\n if(this.fonteDeDadosSelecionada=='Textos' && this.novoCampo.opcoes.length==0){\n //criar uma opção default\n this.adicionarOpcaoTexto();\n }\n }\n \n \n \n onTipoDeCampoChange() {\n \n if (\n this.novoCampo.tipo === 'selecao' ||\n this.novoCampo.tipo === 'selecao-unica' ||\n this.novoCampo.tipo === 'multipla-selecao'\n ) {\n this.novoCampo.label = ''; // Reseta o label ao mudar o tipo do campo para seleção\n\n //dispara a abertura automática da select de fontes de dados\n this.cdr.detectChanges();\n setTimeout(() => {\n if (this.fonteDeDadosSelect) {\n this.fonteDeDadosSelect.open();\n }\n });\n \n }else if(this.novoCampo.tipo=='anexos'){\n this.fonteDeDadosSelecionada = 'Tipos de Arquivos';\n this.novoCampo.fonteDados = this.fonteDeDadosSelecionada;\n this.novoCampo.label = this.fonteDeDadosSelecionada;\n\n //dispara a abertura automática da select de tipos de arquivos\n this.cdr.detectChanges();\n setTimeout(() => {\n if (this.tiposDeArquivosSelect) {\n this.tiposDeArquivosSelect.open();\n }\n });\n\n }\n }\n \n getOpcaoTipoArquivo(tipoArquivo: string): OpcaoDTO{\n return new OpcaoDTO(\n null,\n 'Tipo de Arquivo',\n 'Tipos de Arquivos',\n {\n 'tipoArquivo': tipoArquivo\n }\n ); \n }\n \n validarEmails() {\n if (!this.emailsDestinatarios) {\n this.emailInvalido = false;\n return;\n }\n\n // Divide os e-mails usando o delimitador ponto e vírgula (;)\n const emails = this.emailsDestinatarios.split(';').map(email => email.trim());\n\n // Regex para validação de email\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\n // Verifica se todos os e-mails são válidos\n this.emailInvalido = !emails.every(email => emailRegex.test(email));\n }\n \n\n\n moverCampo(index: number, direction: number) {\n\n \n // Verifica se o índice está dentro do intervalo válido\n if ((direction === -1 && index === 0) || (direction === 1 && index === this.campos.length - 1)) {\n return; // Não faz nada se estiver no limite\n }\n \n // Calcula o índice alvo\n const targetIndex = index + direction;\n \n // Faz a troca de posições\n const campoAtual = this.campos[index];\n const campoAlvo = this.campos[targetIndex];\n \n // Atualiza a ordemExibicao de cada campo\n const ordemAntigaCampoAtual = campoAtual.ordemExibicao;\n const ordemAntigaCampoAlvo = campoAlvo.ordemExibicao;\n\n campoAtual.ordemExibicao = campoAlvo.ordemExibicao;\n campoAlvo.ordemExibicao = ordemAntigaCampoAtual;\n\n \n //quando uma lista do tipo textos livres é movimentada a sua ordem de exibição deve ser atualizada na lista selecionável\n if(this.listasSelecionaveis.textos){\n\n for(var listaTexto of this.listasSelecionaveis.textos){\n if(listaTexto.ordemExibicao==ordemAntigaCampoAlvo){\n listaTexto.ordemExibicao=99999\n }else if(listaTexto.ordemExibicao==ordemAntigaCampoAtual){\n listaTexto.ordemExibicao=ordemAntigaCampoAlvo;\n }\n }\n \n for(var listaTexto of this.listasSelecionaveis.textos){\n if(listaTexto.ordemExibicao==99999){\n listaTexto.ordemExibicao=ordemAntigaCampoAtual;\n break;\n }\n }\n\n }\n \n\n \n // Reorganiza os campos no array\n this.campos[index] = campoAlvo;\n this.campos[targetIndex] = campoAtual;\n\n \n \n }\n \n\n\n // Atualiza habilitações com base nas formações selecionadas\n atualizarHabilitacoesSelecionaveis() {\n \n //campos que influenciam as habilitações\n const idsFormacoes = this.listasSelecionadas.formacoes.map((formacao) => formacao.id);\n \n if(!idsFormacoes || idsFormacoes.length==0){\n return;\n }\n\n //a partir de todas habilitações existentes, filtra aquelas que possuem as formações selecionadas\n const habilitacoesValidas = this.getDadosFonteSelecionada('Habilitações').filter((habilitacao) => {\n return !idsFormacoes.length || idsFormacoes.includes(habilitacao.formacao?.id);\n });\n\n //passa por cada campo do formulário\n this.listasSelecionaveis.habilitacoes = habilitacoesValidas.map((habilitacao) => {\n \n //a partir das habilitações válidas cria as opções\n return new OpcaoDTO(\n null,\n habilitacao.nome,\n 'Habilitações',\n {\n habilitacao: habilitacao\n }\n );\n });\n\n }\n \n \n \n // Atualiza cursos com base em seleções de modalidades, formações, habilitações e turnos\n atualizarCursosSelecionaveis() { \n \n const idsModalidades = this.getDadosSelecionados('Modalidades').map((item) => item.id);\n const idsFormacoes = this.getDadosSelecionados('Formações').map((item) => item.id);\n const idsHabilitacoes = this.getDadosSelecionados('Habilitações').map((item) => item.id);\n const idsTurnos = this.getDadosSelecionados('Turnos').map((item) => item.id);\n \n //pega a lista de todos os cursos e filtra aqueles adequados a configuração atual dos demais filtros\n const cursosValidos = this.getDadosFonteSelecionada('Cursos').filter((curso) => {\n \n const modalidadeValida = !idsModalidades.length || idsModalidades.includes(curso.modalidade?.id);\n const formacaoValida = !idsFormacoes.length || idsFormacoes.includes(curso.formacao?.id);\n const habilitacaoValida = !idsHabilitacoes.length || idsHabilitacoes.includes(curso.habilitacao?.id);\n\n const turnoValido = !idsTurnos.length ||\n curso.disponibilidades.some((disponibilidade) =>\n disponibilidade.disponibilidadeTurnos.some((disponibilidadeTurno) =>\n idsTurnos.includes(disponibilidadeTurno.turno.id) && disponibilidadeTurno.habilitado\n )\n );\n\n return modalidadeValida && formacaoValida && habilitacaoValida && turnoValido;\n });\n\n //passa por cada campo do formulário\n this.listasSelecionaveis.cursos = cursosValidos.map((curso) => {\n \n //a partir dos cursos válidos cria as opções\n return new OpcaoDTO(\n null,\n curso.nome,\n 'Cursos',\n {\n curso: curso\n }\n );\n });\n }\n \n \n \n atualizarValoresSelecionados(campo: CampoFormularioDTO, event: any) {\n \n let valoresSelecionados;\n if(event.detail){\n valoresSelecionados = [event.detail.value];\n }else{\n valoresSelecionados = event;\n }\n \n switch (campo.fonteDados) {\n case 'Modalidades':\n this.listasSelecionadas.modalidades = valoresSelecionados.flat().map((opcao) => opcao.modalidade);\n this.listasSelecionadas.formacoes = [];\n this.listasSelecionadas.habilitacoes = [];\n this.listasSelecionadas.cursos = []; \n break;\n \n case 'Formações':\n\n console.log('map', valoresSelecionados.map((opcao) => opcao.formacao))\n this.listasSelecionadas.formacoes = valoresSelecionados.flat().map((opcao) => opcao.formacao);\n this.listasSelecionadas.habilitacoes = [];\n this.listasSelecionadas.cursos = [];\n break;\n \n case 'Habilitações':\n this.listasSelecionadas.habilitacoes = valoresSelecionados.flat().map((opcao) => opcao.habilitacao);\n this.listasSelecionadas.cursos = [];\n break;\n \n case 'Turnos':\n this.listasSelecionadas.turnos = valoresSelecionados.flat().map((opcao) => opcao.turno);\n this.listasSelecionadas.cursos = [];\n break;\n \n case 'Cursos':\n this.listasSelecionadas.cursos = valoresSelecionados.flat().map((opcao) => opcao.curso);\n break;\n \n case 'Formas de Ingresso':\n this.listasSelecionadas.formasIngresso = valoresSelecionados.flat().map((opcao) => opcao.formaIngresso);\n break;\n \n case 'Textos':\n this.listasSelecionadas.textos = valoresSelecionados.flat().map((opcao) => opcao.texto);\n break;\n \n case 'Tipos de Arquivos':\n this.listasSelecionadas.tiposArquivos = valoresSelecionados.flat().map((opcao) => opcao.tipoArquivo);\n break;\n \n default:\n console.warn(`Fonte de dados desconhecida: ${campo.fonteDados}`);\n }\n \n \n // Atualiza as habilitações e cursos sempre que uma fonte relacionada for alterada\n if (['Modalidades', 'Formações', 'Habilitações', 'Turnos'].includes(campo.fonteDados)) {\n this.atualizarHabilitacoesSelecionaveis(); // Atualiza habilitações\n this.atualizarCursosSelecionaveis(); // Atualiza cursos\n }\n }\n \n \n \n \n \n \n \n \n \n \n \n \n\n getNomeFormaIngressoFormatado(formaIngresso: string): string{\n return this.formaIngressoService.getNomeFormatado(formaIngresso);\n }\n\n\n async openPopoverSelecionarCurso() {\n\n let todasOpcoesCursos = [];\n for(var curso of this.getDadosFonteSelecionada('Cursos')){\n const opcaoCurso = new OpcaoDTO(null,curso.nome, 'Cursos', {curso: curso});\n todasOpcoesCursos.push(opcaoCurso);\n }\n \n const popover = await this.popoverController.create({\n component: PopoverSelecionarCursoFormularioComponent,\n componentProps: {'todasOpcoesCursos': todasOpcoesCursos,\n 'extensao': true,\n 'posGraduacao': true,\n 'graduacao': true,\n 'opcoesMarcadas': this.novoCampo.opcoes },\n translucent: false,\n showBackdrop: true,\n backdropDismiss: false,\n //event: event,\n cssClass: 'global-popover', //definido no global.css \n \n });\n\n await popover.present();\n \n await popover.onDidDismiss().then((data)=>{\n\n if(data.data){\n this.novoCampo.opcoes = data.data; \n \n }\n \n });\n \n }\n\n\n getSelectedText(campo: CampoFormularioDTO): string{\n\n if(campo.fonteDados=='Cursos' && campo.opcoes){\n\n let cursosSelecionados = [];\n for(var opcaoCurso of campo.opcoes){\n cursosSelecionados.push(opcaoCurso.curso);\n }\n\n \n return this.cursoService.getTextoCursosSelecionados(cursosSelecionados, this.getDadosFonteSelecionada('Cursos'));\n \n }else if(campo.fonteDados=='Tipos de Arquivos' && campo?.opcoes){\n console.log(campo)\n let tiposArquivosSelecionados = [];\n for(var opcaoTipoArquivo of campo.opcoes){\n tiposArquivosSelecionados.push(opcaoTipoArquivo.tipoArquivo);\n }\n\n return 'Arquivos ' + tiposArquivosSelecionados.join(', ');\n }\n\n \n return;\n }\n\n\n \n\n /**\n * Por estarmos usando seleção múltipla, o valor selecionado é um array de objetos. \n * Dessa forma, quando o Ionic chama sua função de comparação, ele passa o objeto da \n * opção como primeiro argumento e o array completo de opções selecionadas como \n * segundo argumento\n * \n */\n compareTiposArquivosSelecionados = (opcao: OpcaoDTO, selecionado: any): boolean => {\n if (Array.isArray(selecionado)) {\n // Se for um array, verifica se existe algum item com o mesmo tipoArquivo\n return selecionado.some(item => item.tipoArquivo === opcao.tipoArquivo);\n }\n // Caso não seja um array (em seleção simples), compara normalmente\n return opcao && selecionado \n ? opcao.tipoArquivo === selecionado.tipoArquivo \n : opcao === selecionado;\n }\n \n \n \n \n\n\n abrirSeletorArquivo(fileLoader: HTMLInputElement, campo: CampoFormularioDTO){\n \n \n fileLoader.onchange = function () {\n\n campo.valor = fileLoader.value;\n\n }\n\n fileLoader.click();\n\n \n}\n\n\n \n \n}","
\n \n \n
Incluir Sessão na Página
\n\n \n \n \n \n\n \n \n \n Tipo de Sessão \n \n \n \n \n  {{getDescricaoTipoSecao(tipoSecao)}}\n \n \n \n \n \n \n \n \n\n \n\n \n\n \n\n \n \n\n \n \n\n \n \n\n
Cor de fundo da seção
\n
\n\n
\n
\n {{printColor('bkg-'+cor, cor)}}\n
\n \n
\n\n \n \n\n \n
\n\n \n Código da Cor\n \n\n \n
\n\n
\n  \n
\n \n \n
\n\n
\n\n \n \n\n
Cor da fonte do link
\n
\n\n
\n
\n {{printColor('fonte-'+cor, cor)}}\n
\n \n
\n\n \n \n\n \n
\n\n \n Código da Cor\n \n\n \n
\n\n
\n  \n
\n \n \n
\n\n
\n
\n \n \n \n \n
Margens Externas da Seção
\n \n \n \n \n Superior\n \n \n \n \n \n Direita\n \n \n \n \n \n Inferior\n \n \n \n \n \n Esquerda\n \n \n \n \n \n \n Página\n
\n Seção \n
\n
\n
\n
\n
\n
\n\n \n \n \n
Margens Internas da Seção
\n \n \n \n \n Superior\n \n \n \n \n \n Direita\n \n \n \n \n \n Inferior\n \n \n \n \n \n Esquerda\n \n \n \n \n \n \n Página\n
\n Seção\n
\n
\n
\n
\n
\n
\n
\n\n
\n \n
\n
\n\n \n
\n
\n Cancelar\n
\n
\n Confirmar\n
\n
\n \n\n\n \n\n
","import { TIPO_SECAO_PAGINA } from './../../../../../../config/tipo-secao-pagina.config';\nimport { PopoverController } from '@ionic/angular';\nimport { SecaoPaginaDTO } from '../../../../../../models/site/secaoPaginaDTO';\nimport { PaginaService } from '../../../../../../services/pagina/pagina.service';\nimport { CorService } from '../../../../../../services/cor/cor.service';\nimport { Component, OnInit } from '@angular/core';\nimport { EstiloCSSDTO } from 'src/app/models/site/estiloCSSDTO';\nimport { FormularioDTO } from 'src/app/models/site/formularioDTO';\nimport { DestinatarioDTO } from 'src/app/models/site/destinatarioDTO';\nimport { PopoverFormularioPersonalizadoComponent } from '../popover-formulario-personalizado/popover-formulario-personalizado/popover-formulario-personalizado.component';\nimport { FormularioPersonalizadoDTO } from 'src/app/models/site/formularioPersonalizadoDTO';\n\n@Component({\n selector: 'app-popover-criar-secao-pagina',\n templateUrl: './popover-criar-secao-pagina.component.html',\n styleUrls: ['./popover-criar-secao-pagina.component.scss'],\n})\nexport class PopoverCriarSecaoPaginaComponent implements OnInit {\n\n corFundoPagina: string;\n\n cores: string[] = [];\n codigoCorBkg: string;\n codigoCorFonte: string;\n \n tiposSecao: string[] = [];\n \n secao: SecaoPaginaDTO;\n operacao: string;\n\n FORMULARIO_PERSONALIZADO = TIPO_SECAO_PAGINA.FORMULARIO_PERSONALIZADO;\n \n constructor( private coresService: CorService\n , private paginaService: PaginaService\n , private popoverController: PopoverController ) {\n \n this.cores = this.coresService.getCores();\n this.tiposSecao = this.paginaService.getTiposSecao();\n \n \n\n }\n\n ngOnInit() {\n if(!this.secao){\n this.secao = new SecaoPaginaDTO();\n this.secao.tipo = '';\n }\n }\n\n ionViewWillEnter(){\n \n if(!this.secao){\n this.secao = new SecaoPaginaDTO();\n this.secao.tipo = '';\n }else{\n this.codigoCorBkg = this.secao.corFundo;\n this.codigoCorFonte = this.secao.corFonte;\n }\n \n }\n\n \n\n printColor(id:string, color: string){\n\n document.getElementById(id).style.backgroundColor = color;\n }\n\n\n selectBkgColor(color: string){\n\n this.codigoCorBkg = color;\n \n }\n\n selectFontColor(color: string){\n\n this.codigoCorFonte = color;\n \n }\n\n getDescricaoTipoSecao(tipoSecao: string): string{\n\n let secao: SecaoPaginaDTO = new SecaoPaginaDTO;\n secao.tipo = tipoSecao;\n \n return this.paginaService.getDescricaoSecao(secao);\n }\n\n\n \n\n allowSelectFontColor(): boolean{\n\n if(this.secao.tipo == TIPO_SECAO_PAGINA.LISTA_PDF ||\n this.secao.tipo == TIPO_SECAO_PAGINA.LISTA_LINKS){\n\n return true;\n }\n\n return false;\n }\n\n cancel(){\n this.popoverController.dismiss();\n }\n \n async confirm() {\n \n this.secao.habilitada = true;\n this.secao.corFundo = this.codigoCorBkg;\n this.secao.corFonte = this.codigoCorFonte;\n \n if (this.secao.tipo === TIPO_SECAO_PAGINA.FORMULARIO && this.operacao !== 'Edição') {\n this.secao.formulario = new FormularioDTO();\n this.secao.formulario.habilitarCampoNome = true;\n this.secao.formulario.habilitarCampoEmail = true;\n this.secao.formulario.habilitarCampoTelefone = true;\n this.secao.formulario.habilitarCampoEndereco = true;\n this.secao.formulario.habilitarCampoAssunto = true;\n this.secao.formulario.habilitarCampoMensagem = true;\n \n this.secao.formulario.ordemExibicaoCampoNome = 1;\n this.secao.formulario.ordemExibicaoCampoEmail = 2;\n this.secao.formulario.ordemExibicaoCampoTelefone = 3;\n this.secao.formulario.ordemExibicaoCampoEndereco = 4;\n this.secao.formulario.ordemExibicaoCampoAssunto = 5;\n this.secao.formulario.ordemExibicaoCampoMensagem = 6;\n \n this.secao.formulario.multiplosDestinatarios = false;\n this.secao.formulario.destinatarios = [];\n this.secao.formulario.destinatarios[0] = new DestinatarioDTO();\n }\n \n this.secao.margemSuperior = this.secao.margemSuperior || 0;\n this.secao.margemDireita = this.secao.margemDireita || 0;\n this.secao.margemInferior = this.secao.margemInferior || 0;\n this.secao.margemEsquerda = this.secao.margemEsquerda || 0;\n \n this.secao.paddingSuperior = this.secao.paddingSuperior || 0;\n this.secao.paddingDireito = this.secao.paddingDireito || 0;\n this.secao.paddingInferior = this.secao.paddingInferior || 0;\n this.secao.paddingEsquerdo = this.secao.paddingEsquerdo || 0;\n \n this.popoverController.dismiss(this.secao);\n }\n \n \n\n async openFormularioPersonalizadoPopover() {\n\n if(!this.secao.formularioPersonalizado){\n this.secao.formularioPersonalizado = new FormularioPersonalizadoDTO('', '', false, '', []);\n }\n\n const popover = await this.popoverController.create({\n component: PopoverFormularioPersonalizadoComponent,\n cssClass: 'global-popover',\n componentProps: {\n campos: this.secao.formularioPersonalizado.campos,\n titulo: this.secao.formularioPersonalizado.titulo,\n mensagemPosEnvio: this.secao.formularioPersonalizado.mensagemPosEnvio,\n emailsDestinatarios: this.secao.formularioPersonalizado.emailsDestinatarios,\n salvarCopiaInterna: this.secao.formularioPersonalizado.salvarCopiaInterna\n },\n });\n \n await popover.present();\n \n const { data } = await popover.onDidDismiss();\n \n if (data && data.formulario) {\n this.secao.tipo = TIPO_SECAO_PAGINA.FORMULARIO_PERSONALIZADO;\n this.secao.formularioPersonalizado = data.formulario; // Atribui o formulário retornado\n }\n }\n \n\n\n\n getMarginPreviewContainerHeight(): string{\n \n const previewDiv = document.getElementById('margin-preview-div');\n const marginTop = Number(previewDiv.style.marginTop.replace('px',''));\n const marginBottom = Number(previewDiv.style.marginBottom.replace('px',''));\n \n //130 é o height inicial\n return 130 + marginTop + marginBottom + 'px';\n }\n\n getMarginPreviewAreaWidht(): string{\n\n const previewContainer = document.getElementById('margin-preview-container');\n let containerWidth = previewContainer.clientWidth;\n\n const previewDiv = document.getElementById('margin-preview-div');\n\n const marginLeft = Number(previewDiv.style.marginLeft.replace('px',''));\n const marginRight = Number(previewDiv.style.marginRight.replace('px',''));\n \n return containerWidth - 10 - marginLeft - marginRight + 'px';\n\n }\n\n\n\n getPaddingPreviewContainerHeight(): string{\n \n const previewDiv = document.getElementById('padding-preview-div');\n const marginTop = Number(previewDiv.style.marginTop.replace('px',''));\n const marginBottom = Number(previewDiv.style.marginBottom.replace('px',''));\n \n //130 é o height inicial\n return 130 + marginTop + marginBottom + 'px';\n }\n\n getPaddingPreviewAreaWidht(): string{\n\n const previewContainer = document.getElementById('padding-preview-container');\n let containerWidth = previewContainer.clientWidth;\n\n const previewDiv = document.getElementById('padding-preview-div');\n\n const marginLeft = Number(previewDiv.style.marginLeft.replace('px',''));\n const marginRight = Number(previewDiv.style.marginRight.replace('px',''));\n \n return containerWidth - 10 - marginLeft - marginRight + 'px';\n\n }\n\n\n\n \n \n}\n","import { SecaoPaginaDTO } from './secaoPaginaDTO';\r\nimport { EstiloCSSDTO } from './estiloCSSDTO';\r\nimport { UsuarioDTO } from '../controle-acesso/usuarioDTO';\r\n\r\nexport class LinkDTO{\r\n\r\n id!: number;\r\n label!: string;\r\n url!: string;\r\n ordemExibicao!: number;\r\n}","import { Component, OnInit } from '@angular/core';\nimport { PopoverController } from '@ionic/angular';\nimport { EstiloCSSDTO } from 'src/app/models/site/estiloCSSDTO';\n\n@Component({\n selector: 'app-popover-definir-parametros-pagina',\n templateUrl: './popover-definir-parametros-pagina.component.html',\n styleUrls: ['./popover-definir-parametros-pagina.component.scss'],\n})\nexport class PopoverDefinirParametrosPaginaComponent implements OnInit {\n\n estiloCSS: EstiloCSSDTO;\n\n constructor( private popoverController: PopoverController ) { }\n\n ngOnInit() {}\n\n\n confirm(){\n\n /*\n if(this.estiloCSS.margemSuperior.indexOf('px;')<0){\n this.estiloCSS.margemSuperior += 'px;'\n }\n\n if(this.estiloCSS.margemDireita.indexOf('px;')<0){\n this.estiloCSS.margemDireita += 'px;'\n }\n\n if(this.estiloCSS.margemInferior.indexOf('px;')<0){\n this.estiloCSS.margemInferior += 'px;'\n }\n\n if(this.estiloCSS.margemEsquerda.indexOf('px;')<0){\n this.estiloCSS.margemEsquerda += 'px;'\n }\n */\n this.popoverController.dismiss(this.estiloCSS);\n\n }\n\n\n}\n","
\n
Margens (valores em pixels)
\n \n\n
\n\n
\n
\n \n \n \n Margem Superior\n
\n\n
\n
\n Margem Esquerda\n \n \n \n \n \n
\n \n
\n Margem Direita\n \n \n \n \n
\n
\n\n
\n\n
\n Margem Inferior\n \n \n \n
\n
\n\n
\n
\n \n\n \n
\n\n
\n Ok\n
","\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n CRIAR PÁGINA DO SITE\n \n\n \n\n
\n \n\n \n \n \n \n\n \n \n\n \n URL e SEO\n \n\n \n\n
\n
\n\n
\n\n
\n {{this.windowLocation}}/pages/\n
\n
\n \n \n \n
\n
\n\n
\n \n \n \n Tags\n \n \n \n \n \n \n \n \n \n Title Tag\n \n \n \n \n \n \n \n \n Meta Description\n \n \n \n \n \n
\n
\n\n
\n\n\n \n \n \n \n \n\n \n \n \n {{secao.ordemExibicao}} - {{getDescricaoSecao(secao)}}\n \n \n
\n \n 1\" \n (click)=\"changePosition(secao,-1)\">\n \n \n \n
\n\n \n \n \n
\n \n \n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n
\n \n
\n\n \n \n \n \n \n \n\n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n
PREVIEW
\n\n \n
\n \n
\n
\n
\n\n
\n
\n\n\n \n
\n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n {{setSectionHeight('secao-'+i, secao.altura)}}\n\n Espaçador de {{secao.altura}}px\n \n
\n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n \n \n Upload Banner  \n \n \n\n \n\n \n \n \n \n \n \n O carrossel de banners está vazio\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n Link do Banner\n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n
\n \n
\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n
PREVIEW
\n\n \n
\n \n
\n
\n
\n
\n\n
\n \n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n \n \n Selecionar Notícias  \n \n \n \n \n\n \n \n Nenhuma notícia destaque\n \n \n\n
0\" >\n \n getMaxSlidesPerView(secao.noticiasDestaques?.length)\"\n effect=\"slide\"\n [slidesPerView]=\"getMaxSlidesPerView(secao.noticiasDestaques?.length)\" >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{noticiaDestaque?.noticia?.dataCriacao | date: 'MMMM dd, yyyy'}}\n \n \n \n {{noticiaDestaque.noticia.titulo}}\n \n \n \n \n \n
\n
\n \n
\n \n
\n \n
\n \n
\n \n
\n \n \n
\n
\n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n \n \n Upload da Imagem  \n \n \n \n \n \n \n \n\n \n
\n \n
\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n \n
PREVIEW
\n\n \n \n
\n \n \n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n \n
\n \n \n \n
\n \n \n \n \n\n \n {{setEmptyAreaStyle(i)}}\n\n \n
\n \n
\n\n
\n\n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n \n
\n \n
\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n
PREVIEW
\n\n \n
\n \n
\n \n
\n
\n
\n \n
\n\n
\n\n
\n\n\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n
\n \n
\n Título do Texto\n
\n\n \n
\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n \n
\n \n \n
\n
\n Coluna 1\n
\n\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n \n
\n\n
\n Coluna 2\n
\n\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n \n\n
\n \n\n
PREVIEW
\n\n \n
\n \n
\n \n
\n
\n
\n\n \n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n\n
\n\n
\n\n\n\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n
\n\n
\n Título do Texto\n
\n\n \n
\n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n \n \n
\n \n \n
\n\n
\n Coluna 1\n
\n\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n \n
\n\n
\n Coluna 2\n
\n\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n \n
\n\n
\n Coluna 3\n
\n\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n\n
\n \n\n
PREVIEW
\n\n \n
\n \n \n
\n \n
\n
\n
\n\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n \n \n
\n\n
\n\n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n \n \n Upload PDF  \n \n \n\n \n\n \n \n \n \n \n \n \n A lista de PDF's está vazia\n \n \n\n
0\">\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n \n
\n \n
\n\n \n\n\n \n \n \n
\n
\n \n \n \n \n
\n \n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n \n \n Link   \n \n \n \n \n\n \n
\n \n
\n Título da Lista de Links {{secao.habilitada}}\n
\n\n \n
\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n
\n \n A lista de links está vazia\n \n
\n\n
0\">\n
\n \n
\n
\n \n
\n
\n \n
\n
\n\n \n
\n \n \n
\n \n \n
\n \n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n \n \n Upload Foto  \n \n \n\n \n\n \n \n \n \n \n
\n \n
\n Título e texto da Galeria de Fotos\n
\n\n \n
\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n
\n \n A galeria de fotos está vazia\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n \n \n Adicionar Vídeo  \n \n \n \n \n \n
\n \n
\n Título e texto da Galeria de Vídeos\n
\n\n \n
\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n
\n \n A galeria de vídeos está vazia\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n
\n \n
\n Título da seção de compartilhamento\n
\n\n \n
\n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n\n
\n Texto para compartilhar\n
\n\n
\n \n \n
\n\n
\n \n \n
\n \n
\n \n
PREVIEW
\n\n \n
\n \n
\n \n
\n
\n
\n
\n \n
\n \n
\n
\n \n
\n\n\n \n
\n \n
\n \n \n {{setBackgroundColor('secao-'+i, secao.corFundo)}}\n\n \n \n
\n \n \n \n Múltiplos Destinatários\n \n \n \n \n E-mail do Destinatário\n \n \n \n \n \n \n \n \n \n Nome\n \n \n \n \n \n E-mail\n \n \n \n \n \n Adicionar Destinatário\n \n \n \n \n\n\n
\n Texto do Formulário\n
\n\n \n
\n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n\n
\n\n \n
\n \n \n \n \n Campo Nome\n \n
\n \n 1\"\n (click)=\"changeFieldPosition(secao.formulario, i+1, -1)\">\n \n \n \n
\n\n \n
\n \n \n \n\n Campo Email\n \n
\n \n 1\"\n (click)=\"changeFieldPosition(secao.formulario, i+1, -1)\">\n \n \n \n \n \n
\n \n \n
\n\n \n \n\n Campo Telefone\n \n
\n \n 1\"\n (click)=\"changeFieldPosition(secao.formulario, i+1, -1)\">\n \n \n \n
\n\n \n
\n\n \n \n\n Campo Endereço\n \n
\n \n 1\"\n (click)=\"changeFieldPosition(secao.formulario, i+1, -1)\">\n \n \n \n
\n\n \n
\n\n \n \n\n Campo Assunto\n \n
\n \n 1\"\n (click)=\"changeFieldPosition(secao.formulario, i+1, -1)\">\n \n \n \n
\n\n \n \n
\n\n \n
\n \n \n \n  Dúvida\n \n \n \n \n  Reclamação\n \n\n \n \n  Elogio\n \n\n \n \n  Opinião\n \n\n \n \n  Interesse\n \n\n \n
\n\n \n \n\n Campo Mensagem\n\n \n
\n \n 1\"\n (click)=\"changeFieldPosition(secao.formulario, i+1, -1)\">\n \n \n \n
\n\n \n
\n
\n\n \n\n \n \n\n
\n\n
PREVIEW
\n\n \n
\n \n
\n \n \n
\n \n
\n
\n
\n\n
\n\n \n
\n\n \n \n {{dest.nome}}\n \n \n \n\n \n
\n \n \n \n \n \n\n \n \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n Dúvida\n Reclamação\n Elogio\n Opinião\n Interesse\n \n \n \n\n \n \n \n \n \n\n \n
\n\n \n
\n\n \n Enviar  \n \n \n
\n \n
\n
\n\n
\n
\n\n\n \n
\n
\n\n \n {{ setBackgroundColor('secao-' + i, secao.corFundo) }}\n\n \n
\n\n \n
\n {{ secao.formularioPersonalizado?.titulo }}\n
\n\n
\n Mensagem: {{ secao.formularioPersonalizado?.mensagemPosEnvio }}\n
\n\n \n
\n \n {{ campo.label }}\n \n \n
\n\n \n \n
\n \n \n {{ campo.label }}\n \n \n \n Upload  \n \n \n
\n
{{getTiposArquivosAceitos(campo)}}
\n\n
\n \n {{ campo.label }}\n \n \n
\n\n \n
\n \n {{ campo.label }}\n \n \n {{ opcao?.modalidade?.nome }}\n {{ opcao?.formacao?.nome }}\n {{ opcao?.habilitacao?.nome }}\n {{ opcao?.curso?.nome }}\n {{ opcao?.turno?.nome }}\n  {{getNomeFormaIngressoFormatado(opcao?.tipoFormaIngresso.toString())}}\n {{ opcao?.texto }}\n \n \n \n
\n\n \n
\n
\n {{ campo.label }}\n
\n \n
\n \n \n {{ opcao?.modalidade?.nome }}\n {{ opcao?.formacao?.nome }}\n {{ opcao?.habilitacao?.nome }}\n {{ opcao?.curso?.nome }}\n {{ opcao?.turno?.nome }}\n  {{getNomeFormaIngressoFormatado(opcao?.tipoFormaIngresso.toString())}}\n {{ opcao?.texto }}\n \n
\n
\n
\n\n \n
0\" class=\"options-list\">\n
\n {{ campo.label }}\n
\n
\n \n \n \n {{ opcao?.modalidade?.nome }}\n {{ opcao?.formacao?.nome }}\n {{ opcao?.habilitacao?.nome }}\n {{ opcao?.curso?.nome }}\n {{ opcao?.turno?.nome }}\n  {{getNomeFormaIngressoFormatado(opcao?.tipoFormaIngresso.toString())}}\n {{ opcao?.texto }}\n \n
\n
\n\n \n
\n\n\n \n
\n Enviar\n
\n
\n\n \n
\n
\n\n
\n\n\n\n \n
\n\n\n \n\n \n Inserir rodapé\n \n \n \n \n\n
\n\n\n \n
\n\n \n Voltar  \n \n \n\n \n\n \n Salvar  \n \n \n\n \n
\n \n\n
\n","import { FormularioDTO } from 'src/app/models/site/formularioDTO';\nimport { PopoverCompartilharComponent } from './../../../detalhar-curso/components/popover-compartilhar/popover-compartilhar.component';\nimport { ArquivoDTO } from './../../../../models/arquivoDTO';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { PaginaService } from './../../../../services/pagina/pagina.service';\nimport { PopoverSelecionarNoticiaComponent } from './components/popover-selecionar-noticia/popover-selecionar-noticia.component';\nimport { API_CONFIG } from 'src/app/config/api.config';\nimport { FunctionsService } from './../../../../services/common/functions.service';\nimport { TIPO_ARQUIVO } from './../../../../config/tipo-arquivo.config';\nimport { DIRETORIO } from './../../../../config/diretorio.config';\nimport { ENTIDADE } from './../../../../config/entidade.config';\nimport { ArquivoService } from './../../../../services/arquivo/arquivo.service';\nimport { TIPO_SECAO_PAGINA } from './../../../../config/tipo-secao-pagina.config';\nimport { SecaoPaginaDTO } from '../../../../models/site/secaoPaginaDTO';\nimport { EstiloCSSDTO } from '../../../../models/site/estiloCSSDTO';\nimport { PopoverDefinirCorPaginaComponent } from './components/popover-definir-cor-pagina/popover-definir-cor-pagina.component';\nimport { PopoverCriarSecaoPaginaComponent } from './components/popover-criar-secao-pagina/popover-criar-secao-pagina.component';\nimport { PaginaDTO } from '../../../../models/site/paginaDTO';\nimport { PopoverController } from '@ionic/angular';\nimport { Component, OnInit } from '@angular/core';\nimport * as Quill from 'quill';\nimport { LinkDTO } from 'src/app/models/site/linkDTO';\nimport { PermissaoAcessoService } from 'src/app/services/permissao-acesso/permissao-acesso.service';\nimport { STATUS_PUBLICACAO } from 'src/app/config/status-publicacao.config';\nimport { ActivatedRoute } from '@angular/router';\nimport { PopoverDefinirParametrosPaginaComponent } from './components/popover-definir-parametros-pagina/popover-definir-parametros-pagina.component';\nimport { DestinatarioDTO } from 'src/app/models/site/destinatarioDTO';\nimport { CampoFormularioDTO } from 'src/app/models/site/campoFormularioDTO';\nimport { OpcaoDTO } from 'src/app/models/site/opcaoDTO';\nimport { FormaIngressoService } from 'src/app/services/forma-ingresso/forma-ingresso.service';\n\nconst quill: any = Quill;\nconst icons = quill.import('ui/icons');\nconst fonts = Quill.import(\"attributors/style/font\");\nconst sizes = Quill.import('attributors/style/size');\n//const Parchment = Quill.import('parchment')\n\n\n//https://stackblitz.com/edit/angular-zif9vj?file=src%2Fapp%2Fconfig%2Fquill-editor-config.ts,src%2Fapp%2Fconfig%2Favailable-line-height.ts,src%2Fapp%2Fapp.module.ts\n/*export const quillModules = {\n toolbar: {\n container: '#rm-text-layer--toolbar',\n handlers: {\n increaseFontSize() { this.increaseFontSize(this) },\n decreaseFontSize() { this.decreaseFontSize(this) },\n increaseLineHeight() { this.increaseLineHeight(this) },\n decreaseLineHeight() { this.decreaseLineHeight(this) },\n }\n },\n}\n*/\n\n\nexport interface ListasFormularioPersonalizado {\n secao: SecaoPaginaDTO;\n modalidadesOriginais: OpcaoDTO[];\n modalidadesSelecionadas: OpcaoDTO[];\n formacoesOriginais: OpcaoDTO[];\n formacoesSelecionadas: OpcaoDTO[];\n habilitacoesOriginais: OpcaoDTO[];\n habilitacoesSelecionadas: OpcaoDTO[];\n turnosOriginais: OpcaoDTO[];\n turnosSelecionados: OpcaoDTO[];\n cursosOriginais: OpcaoDTO[];\n cursosSelecionados: OpcaoDTO[];\n formasIngressoOriginais: OpcaoDTO[];\n formasIngressoSelecionadas: OpcaoDTO[];\n textosOriginais: [{'opcoes': OpcaoDTO[], 'ordemExibicao': number}]; //como pode haver mais de uma lista de textos na mesma seção, é preciso distinguir cada uma delas através de sua ordem de exibição\n textosSelecionados: [{'opcoes': OpcaoDTO[], 'ordemExibicao': number}];\n tiposArquivosOriginais: OpcaoDTO[];\n}\n\n\n\n@Component({\n selector: 'app-gc-cadastrar-pagina',\n templateUrl: './gc-cadastrar-pagina.page.html',\n styleUrls: ['./gc-cadastrar-pagina.page.scss'],\n})\nexport class GcCadastrarPaginaPage implements OnInit {\n\n TITULO_PAGINA = TIPO_SECAO_PAGINA.TITULO_SECAO;\n CARROSSEL_BANNERS = TIPO_SECAO_PAGINA.CARROSSEL_BANNERS;\n RESUMO_PAGINA = TIPO_SECAO_PAGINA.RESUMO_PAGINA;\n DESTAQUE_NOTICIAS = TIPO_SECAO_PAGINA.DESTAQUE_NOTICIAS;\n IMAGEM_E_TEXTO = TIPO_SECAO_PAGINA.IMAGEM_E_TEXTO;\n TEXTO_NORMAL = TIPO_SECAO_PAGINA.TEXTO_NORMAL;\n TEXTO_EM_2_COLUNAS = TIPO_SECAO_PAGINA.TEXTO_EM_2_COLUNAS;\n TEXTO_EM_3_COLUNAS = TIPO_SECAO_PAGINA.TEXTO_EM_3_COLUNAS;\n LISTA_PDF = TIPO_SECAO_PAGINA.LISTA_PDF;\n LISTA_LINKS = TIPO_SECAO_PAGINA.LISTA_LINKS;\n GALERIA_FOTOS = TIPO_SECAO_PAGINA.GALERIA_FOTOS;\n GALERIA_VIDEOS = TIPO_SECAO_PAGINA.GALERIA_VIDEOS;\n BOTAO_COMPARTILHAR = TIPO_SECAO_PAGINA.BOTAO_COMPARTILHAR;\n FORMULARIO = TIPO_SECAO_PAGINA.FORMULARIO;\n FORMULARIO_PERSONALIZADO = TIPO_SECAO_PAGINA.FORMULARIO_PERSONALIZADO;\n ESPACAMENTO = TIPO_SECAO_PAGINA.ESPACAMENTO;\n\n pagina: PaginaDTO = new PaginaDTO();\n filtroNoticia: string = '';\n \n originalMaxHeight: string = 'auto';\n\n canCreateEdit: boolean;\n canPublish: boolean;\n\n windowLocation = window.location.origin;\n\n\n executou : boolean = false;\n \n listasFormularioPersonalizado: ListasFormularioPersonalizado[] = [];\n \n constructor( private functionsService: FunctionsService\n , private popoverController: PopoverController \n , private arquivoService: ArquivoService\n , private paginaService: PaginaService\n , private sanitizer: DomSanitizer\n , private permissaoAcessoService: PermissaoAcessoService\n , private activatedRoute: ActivatedRoute\n , private formaIngressoService: FormaIngressoService ) {\n \n if(!this.pagina.estiloCSS || !this.pagina.estiloCSS.corFundo){\n this.pagina.estiloCSS = new EstiloCSSDTO();\n this.pagina.estiloCSS.corFundo = 'fff';\n }\n \n\n icons['bold'] = 'N';\n icons['italic'] = 'I';\n icons['underline'] = 'S';\n icons['strike'] = 'ab';\n\n\n fonts.whitelist = [ \"Montserrat\"\n , \"Montserrat-Black\"\n , \"Montserrat-Bold\",\n , \"Montserrat-ExtraBold\",\n , \"Myriad\"\n , \"OpenSans\"\n , \"OpenSans-Bold\"\n , \"OpenSans-ExtraBold\"\n , \"OpenSans-SemiBold\"\n , \"Poppins-Regular\" ];\n Quill.register(fonts, true);\n \n \n //font size\n sizes.whitelist = ['6px', '8px', '9px','10px', '11px', '12px', '13px', '14px', '16px', '18px', '24px', '30px', '36px', '48px', '56px', '64px'];\n Quill.register(sizes, true);\n\n\n /*\n const AvailableLineHeights = [\n ...Array(110).keys()\n ].map(\n (x) => `${(80 + x * 5) / 100}`\n )\n \n const lineHeightConfig = {\n scope: Parchment.Scope.BLOCK,\n whitelist: AvailableLineHeights\n }\n \n const lineHeightClass = new Parchment.Attributor.Class('line-height', 'ql-line-height', lineHeightConfig)\n const lineHeightStyle = new Parchment.Attributor.Style('line-height', 'line-height', lineHeightConfig)\n \n\n Quill.register(lineHeightClass, true)\n Quill.register(lineHeightStyle, true)\n */\n \n\n }\n\n/*\n increaseLineHeight(scope: any){ \n this.updateLineHeight(scope, 1) \n }\n \n decreaseLineHeight(scope: any){ \n this.updateLineHeight(scope, -1) \n }\n\n \n updateLineHeight(scope: any, variation: number){\n const newLineHeight = ((this.getCurrentLineHeight(scope) * 10) + variation) / 10\n scope.quill.format('line-height', `${newLineHeight}`, 'user')\n }\n\n getCurrentLineHeight(scope: any): number {\n const currentValue = this.getCurrentFormat(scope)['line-height'] || '1.5'\n return parseFloat(currentValue)\n }\n\n getCurrentFormat(scope: any) {\n return scope.quill.getFormat(\n scope.quill.selection.savedRange\n )\n }\n */\n\n ngOnInit() {\n\n \n }\n\n\n \n\n checkAccessControl(){\n\n this.permissaoAcessoService.canCreateAndEdit(window.location.href).subscribe({\n next:(resp)=>{\n this.canCreateEdit = resp;\n },\n error:(error)=>{\n this.canCreateEdit = false;\n }\n });\n\n \n this.permissaoAcessoService.canPublish(window.location.href).subscribe({\n next:(resp)=>{\n this.canPublish = resp;\n },\n error:(error)=>{\n this.canPublish = false;\n }\n });\n\n\n }\n\n\n ionViewWillEnter(){\n \n this.functionsService.presentLoading();\n\n //verificar as permissões de acesso\n this.checkAccessControl();\n\n this.pagina = new PaginaDTO();\n this.pagina.secoes = [];\n \n \n //se for edição de uma notícia então o parâmetro id vem preenchido\n this.activatedRoute.queryParams.subscribe(\n param=>{\n \n if(param.id){\n\n this.paginaService.find(param.id).subscribe(\n resp2=>{\n\n this.pagina = resp2;\n\n this.initPage();\n \n this.functionsService.dismissLoading();\n\n },\n error2=>{\n console.log(error2);\n this.functionsService.dismissLoading();\n }\n );\n\n }else{\n\n if(!this.pagina.status){\n this.pagina.status = STATUS_PUBLICACAO.RASCUNHO;\n }\n \n this.functionsService.dismissLoading();\n }\n \n },\n \n errorParam=>{\n console.log(errorParam);\n });\n\n }\n\n initPage(){\n\n if(!this.pagina.status){\n this.pagina.status = STATUS_PUBLICACAO.RASCUNHO;\n }\n \n this.sortSections(this.pagina.secoes);\n \n this.pagina.secoes.forEach(secao=>{\n if(secao.tipo==this.GALERIA_VIDEOS){\n\n secao.galeriaVideos.forEach(video=>{\n video.safePath = this.getSafeURL(video.path);\n });\n\n }\n\n if(secao.tipo==this.FORMULARIO_PERSONALIZADO){\n //forçar o armazenamento dos dados originais das listas\n this.guardarListasOriginaisFormularioPersonalizado(secao); \n }\n });\n\n }\n \n\n sortSections(arrSections: SecaoPaginaDTO[]){\n const that = this;\n\n arrSections.sort(function (a, b) {\n\n if(a.formularioPersonalizado){\n that.sortFormFields(a);\n }\n\n if (a.ordemExibicao > b.ordemExibicao) {\n return 1;\n }\n if (a.ordemExibicao < b.ordemExibicao) {\n return -1;\n }\n // a must be equal to b\n return 0;\n });\n\n }\n\n\n sortFormFields(secao: SecaoPaginaDTO) {\n secao.formularioPersonalizado.campos.sort((a, b) => a.ordemExibicao - b.ordemExibicao);\n }\n\n async openPopoverCriarSecao(secao: SecaoPaginaDTO) {\n \n let operacao = 'Criação';\n \n if(secao){\n operacao = 'Edição';\n if(secao.tipo==this.FORMULARIO_PERSONALIZADO){\n for(var campo of secao.formularioPersonalizado.campos){\n //garantir que os campos do formulário serão preenchidos com os dados sem filtros\n campo.opcoes = this.getListaOriginalFormularioPersonalizado(campo.fonteDados, secao, campo.ordemExibicao);\n }\n }\n\n }\n\n const popover = await this.popoverController.create({\n component: PopoverCriarSecaoPaginaComponent,\n componentProps: { 'secao' : secao, 'operacao' : operacao, 'corFundoPagina': this.pagina?.estiloCSS?.corFundo },\n translucent: false,\n showBackdrop: false,\n backdropDismiss: true,\n side: 'bottom',\n align: 'start',\n arrow: true,\n dismissOnSelect: false,\n cssClass: 'global-popover', //definido no global.css \n \n });\n \n\n \n if(!popover.isOpen){\n await popover.present();\n }\n \n await popover.onDidDismiss().then((data)=>{\n\n if(data && data.data){\n \n if(operacao=='Criação'){\n \n if(!this.pagina.secoes){\n this.pagina.secoes = [];\n }\n //novas seções são criadas no final da página\n let secao: SecaoPaginaDTO = data.data;\n secao.ordemExibicao = this.pagina.secoes.length+1;\n\n this.pagina.secoes.push(secao);\n }\n\n if(secao.tipo==this.FORMULARIO_PERSONALIZADO){\n console.log('seção após fechar popover',secao)\n //guarda os valores das listas dos formulários personalizados\n this.guardarListasOriginaisFormularioPersonalizado(secao);\n }\n }\n \n });\n \n \n }\n\n\n getMaxSlidesPerView( arraySize: number): number{\n \n if(screen.width>700){\n\n if(arraySize<3){\n return arraySize;\n }\n\n return 3;\n\n }else{\n return 1;\n }\n }\n\n uploadBanner(fileLoader: HTMLInputElement, secao: SecaoPaginaDTO){\n\n let that = this;\n\n fileLoader.onchange = function () {\n\n let banner = fileLoader.files[0];\n \n that.arquivoService.upload( banner\n , ENTIDADE.PAGINA\n , that.pagina.id\n , DIRETORIO.GALERIA_BANNERS\n , TIPO_ARQUIVO.IMAGEM ).subscribe(\n resp=>{\n \n if(!secao.galeriaBanners){\n secao.galeriaBanners = [];\n }\n\n secao.galeriaBanners.push(resp.body);\n fileLoader.value = '';\n },\n error=>{\n console.log(error);\n }\n ); \n \n }\n\n fileLoader.click();\n\n \n }\n\n\n uploadFoto(fileLoader: HTMLInputElement, secao: SecaoPaginaDTO){\n\n let that = this;\n\n fileLoader.onchange = function () {\n\n let banner = fileLoader.files[0];\n \n that.arquivoService.upload( banner\n , ENTIDADE.PAGINA\n , that.pagina.id\n , DIRETORIO.GALERIA_FOTOS\n , TIPO_ARQUIVO.IMAGEM ).subscribe(\n resp=>{\n \n if(!secao.galeriaFotos){\n secao.galeriaFotos = [];\n }\n\n secao.galeriaFotos.push(resp.body);\n fileLoader.value = '';\n },\n error=>{\n console.log(error);\n }\n ); \n \n }\n\n fileLoader.click();\n\n \n }\n\n \n removeFromBannersGallery(secao: SecaoPaginaDTO, indexBanner: number){\n \n this.functionsService.presentLoading();\n\n let banner = secao.galeriaBanners[indexBanner];\n\n this.arquivoService.delete(banner.id).subscribe(\n resp=>{\n secao.galeriaBanners.splice(indexBanner,1);\n this.functionsService.dismissLoading();\n },\n error=>{\n console.log(error);\n this.functionsService.dismissLoading();\n }\n );\n }\n\n removeFromPhotoGallery(secao: SecaoPaginaDTO, indexFoto: number){\n \n this.functionsService.presentLoading();\n\n let foto = secao.galeriaFotos[indexFoto];\n\n this.arquivoService.delete(foto.id).subscribe(\n resp=>{\n secao.galeriaFotos.splice(indexFoto,1);\n this.functionsService.dismissLoading();\n },\n error=>{\n console.log(error);\n this.functionsService.dismissLoading();\n }\n );\n }\n\n\n removeFromVideoGallery(secao: SecaoPaginaDTO, indexVideo: number){\n \n this.functionsService.presentLoading();\n\n let video = secao.galeriaVideos[indexVideo];\n\n if(video?.id){\n this.arquivoService.delete(video.id).subscribe(\n resp=>{\n secao.galeriaVideos.splice(indexVideo,1);\n this.functionsService.dismissLoading();\n },\n error=>{\n console.log(error);\n this.functionsService.dismissLoading();\n }\n );\n }else{\n secao.galeriaVideos.splice(indexVideo,1);\n this.functionsService.dismissLoading();\n }\n \n }\n\n\n uploadImage(fileLoader: HTMLInputElement, secao: SecaoPaginaDTO, index: number = -1){\n\n let that = this;\n\n fileLoader.onchange = function () {\n\n let banner = fileLoader.files[0];\n \n that.arquivoService.upload( banner\n , ENTIDADE.PAGINA\n , that.pagina.id\n , DIRETORIO.TEXTO_FORMATADO\n , TIPO_ARQUIVO.IMAGEM ).subscribe(\n resp=>{\n \n secao.imagem = resp.body;\n fileLoader.value = '';\n },\n error=>{\n console.log(error);\n }\n ); \n \n }\n\n fileLoader.click();\n\n \n\n \n }\n\n \n\n removeFromNews(secao: SecaoPaginaDTO, indexNoticia: number){\n \n this.functionsService.presentLoading();\n\n secao.noticiasDestaques.splice(indexNoticia,1);\n this.functionsService.dismissLoading();\n\n \n }\n\n\n\n getFilePublicURL(fullPath: string, fileName: string): string{\n \n if(!fullPath || !fileName){\n return API_CONFIG.iisVirtualDirectoryURL + 'empty_photo.jpg';\n }\n\n return this.arquivoService.getFilePublicURL(fullPath, fileName);\n }\n\n\n\n async openPopoverSetPageColor() {\n \n const popover = await this.popoverController.create({\n component: PopoverDefinirCorPaginaComponent,\n componentProps: {},\n translucent: false,\n showBackdrop: false,\n backdropDismiss: true,\n side: 'bottom',\n align: 'start',\n arrow: true,\n dismissOnSelect: false,\n cssClass: 'global-popover', //definido no global.css \n \n });\n\n \n if(!popover.isOpen){\n await popover.present();\n }\n \n await popover.onDidDismiss().then((data)=>{\n\n if(data && data.data){\n \n if(!this.pagina.estiloCSS){\n this.pagina.estiloCSS = new EstiloCSSDTO();\n }\n this.pagina.estiloCSS.corFundo = data.data;\n }\n \n });\n \n \n }\n\n\n async openPopoverConfigPage() {\n \n if(!this.pagina.estiloCSS){\n this.pagina.estiloCSS = new EstiloCSSDTO();\n }\n\n const popover = await this.popoverController.create({\n component: PopoverDefinirParametrosPaginaComponent,\n componentProps: {estiloCSS: this.pagina.estiloCSS},\n translucent: false,\n showBackdrop: false,\n backdropDismiss: true,\n side: 'bottom',\n align: 'start',\n arrow: true,\n dismissOnSelect: false,\n cssClass: 'margins-popover', //definido no global.css \n \n });\n\n \n if(!popover.isOpen){\n await popover.present();\n }\n \n await popover.onDidDismiss().then((data)=>{\n\n if(data && data.data){\n this.pagina.estiloCSS = data.data;\n\n }\n \n });\n \n \n }\n\n\n async openPopoverSelecionarNoticia(secao: SecaoPaginaDTO) {\n \n const popover = await this.popoverController.create({\n component: PopoverSelecionarNoticiaComponent,\n componentProps: { 'noticiasSelecionadas' : secao.noticiasDestaques },\n translucent: false,\n showBackdrop: false,\n backdropDismiss: true,\n side: 'bottom',\n align: 'start',\n arrow: true,\n dismissOnSelect: false,\n cssClass: 'global-popover', //definido no global.css \n \n });\n\n \n if(!popover.isOpen){\n await popover.present();\n }\n \n await popover.onDidDismiss().then((data)=>{\n\n if(data && data.data){\n console.log(data.data);\n //this.pagina.corFundo = data.data;\n \n if(!secao.noticiasDestaques){\n secao.noticiasDestaques = [];\n }\n \n secao.noticiasDestaques = data.data;\n \n \n \n\n }\n \n });\n \n \n }\n\n\n setBackgroundColor(id: string, color: string){\n document.getElementById(id).style.backgroundColor = color;\n }\n\n\n setSectionHeight(id: string, height: number){\n document.getElementById(id).style.minHeight = height + 'px';\n document.getElementById(id).style.height = height + 'px';\n document.getElementById(id).style.maxHeight = height + 'px';\n }\n\n\n changePosition(secao:SecaoPaginaDTO, move: number){\n\n //move igual a +1 move pra frente, igual a -1 move pra traz\n\n this.functionsService.presentLoading();\n\n const index = this.pagina.secoes.indexOf(secao);\n //guarda o objeto que está na posição que se deseja movimentar\n let aux = this.pagina.secoes[index];\n aux.ordemExibicao += (move); //nova ordem de exibição dele\n\n let vizinho = this.pagina.secoes[index + (move)]; //o vizinho que está em aux + move vai pra posição do objeto movido\n vizinho.ordemExibicao -= (move);\n this.pagina.secoes[index] = vizinho;\n \n this.pagina.secoes[index + (move)] = aux; //a posição que era do vizinho recebe o objeto movido\n\n this.functionsService.dismissLoading();\n }\n\n\n changeFieldPosition(formulario: FormularioDTO, index: number, move: number) {\n // Obter todos os campos e suas ordens em um array para manipulação dinâmica\n const fields = [\n { key: 'ordemExibicaoCampoNome', value: formulario.ordemExibicaoCampoNome },\n { key: 'ordemExibicaoCampoEmail', value: formulario.ordemExibicaoCampoEmail },\n { key: 'ordemExibicaoCampoTelefone', value: formulario.ordemExibicaoCampoTelefone },\n { key: 'ordemExibicaoCampoEndereco', value: formulario.ordemExibicaoCampoEndereco },\n { key: 'ordemExibicaoCampoAssunto', value: formulario.ordemExibicaoCampoAssunto },\n { key: 'ordemExibicaoCampoMensagem', value: formulario.ordemExibicaoCampoMensagem },\n ];\n \n // Encontrar o campo atual baseado no índice\n const currentField = fields.find(field => field.value === index);\n \n if (!currentField) return; // Campo inválido ou não encontrado\n \n // Novo índice para o campo\n const newIndex = index + move;\n \n // Encontrar o campo adjacente que será trocado\n const adjacentField = fields.find(field => field.value === newIndex);\n \n if (!adjacentField) return; // Movimento inválido (fora dos limites)\n \n // Trocar os índices entre o campo atual e o adjacente\n currentField.value = newIndex;\n adjacentField.value = index;\n \n // Atualizar os valores no objeto `formulario`\n formulario[currentField.key] = currentField.value;\n formulario[adjacentField.key] = adjacentField.value;\n }\n \n \n\n getDescricaoSecao(secao: SecaoPaginaDTO): string{\n return this.paginaService.getDescricaoSecao(secao);\n }\n\n\n \n\n async removeSection(secao: SecaoPaginaDTO){\n\n const confirma = await this.functionsService.showConfirmAlert( 'Confirma?'\n , 'Confirma a exclusão da seção ' + secao.titulo + '?'\n , 'Confirmar'\n , 'Cancelar');\n if(!confirma){\n return;\n } \n\n\n const index = this.pagina.secoes.indexOf(secao);\n this.pagina.secoes.splice(index, 1);\n\n //reorganizar a ordem de exibição das seções posteriores\n for(var i=index; i{\n \n if(!secao.galeriaDownloads){\n secao.galeriaDownloads = [];\n }\n resp.body.legenda = resp.body.nome;\n\n secao.galeriaDownloads.push(resp.body);\n\n fileLoader.value = '';\n \n },\n error=>{\n console.log(error);\n }\n ); \n \n }\n\n fileLoader.click();\n\n \n }\n\n\n removePDF(secao: SecaoPaginaDTO, indexPDF: number){\n \n this.functionsService.presentLoading();\n\n let pdf = secao.galeriaDownloads[indexPDF];\n this.arquivoService.delete(pdf.id).subscribe(\n resp=>{\n secao.galeriaDownloads.splice(indexPDF,1);\n this.functionsService.dismissLoading();\n },\n error=>{\n console.log(error);\n this.functionsService.dismissLoading();\n }\n );\n }\n\n\n getFontColor(corFundoSecao: string){\n\n if(!corFundoSecao && !this.pagina.estiloCSS?.corFundo){\n return 'black';\n }\n\n //seção sem cor e página com cor, então predomina a cor da página\n if(!corFundoSecao && this.pagina.estiloCSS?.corFundo){\n \n //a página está com fundo branco\n if( this.pagina.estiloCSS?.corFundo ==='' ||\n this.pagina.estiloCSS?.corFundo==='#fff' ||\n this.pagina.estiloCSS?.corFundo==='#fffff' ||\n this.pagina.estiloCSS?.corFundo==='rgb(255,255,255)'){\n \n return 'black'; \n }\n\n //seção sem cor de fundo e página com fundo diferente de branco\n return 'white';\n\n }\n\n //seção com cor de fundo então predomina a cor da seção\n if(corFundoSecao){\n \n //a página está com fundo branco\n if( corFundoSecao ==='' ||\n corFundoSecao==='#fff' ||\n corFundoSecao==='#fffff' ||\n corFundoSecao==='rgb(255,255,255)'){\n \n return 'black'; \n }\n\n //seção sem cor de fundo e página com fundo diferente de branco\n return 'white';\n\n }\n\n\n \n }\n\n\n open(arquivo: ArquivoDTO){\n let path = arquivo.path.replace(API_CONFIG.iisVirtualDirectoryPath, API_CONFIG.iisVirtualDirectoryURL); \n this.functionsService.goToPath(path + '/' + arquivo.nome, true);\n }\n\n\n addLink(secao: SecaoPaginaDTO){\n\n if(!secao.galeriaLinks){\n secao.galeriaLinks = [];\n }\n\n let link = new LinkDTO();\n link.ordemExibicao = secao.galeriaLinks.length+1;\n\n secao.galeriaLinks.push(link);\n\n }\n\n\n removeLink(secao: SecaoPaginaDTO, indexLink: number){\n\n secao.galeriaLinks.splice(indexLink, 1);\n\n }\n\n\n changeLinkPosition(secao: SecaoPaginaDTO, link:LinkDTO, move: number){\n\n //move igual a +1 move pra frente, igual a -1 move pra traz\n\n this.functionsService.presentLoading();\n\n const index = secao.galeriaLinks.indexOf(link);\n //guarda o objeto que está na posição que se deseja movimentar\n let aux = secao.galeriaLinks[index];\n aux.ordemExibicao += (move); //nova ordem de exibição dele\n\n let vizinho = secao.galeriaLinks[index + (move)]; //o vizinho que está em aux + move vai pra posição do objeto movido\n vizinho.ordemExibicao -= (move);\n secao.galeriaLinks[index] = vizinho;\n \n secao.galeriaLinks[index + (move)] = aux; //a posição que era do vizinho recebe o objeto movido\n\n this.functionsService.dismissLoading();\n\n }\n\n\n getSlidesPerView(arraySize: number): number{\n \n if(screen.width>700){\n\n if(arraySize<3){\n return arraySize;\n }\n\n return 3;\n\n }else{\n return 1;\n }\n }\n\n\n\n addToVideoGallery(secao: SecaoPaginaDTO){\n\n this.functionsService.showConfirmAlertGetValue( 'Vídeo'\n , 'Informe a URL do vídeo no Youtube.'\n , 'Ok'\n ,'Cancelar'\n , 'URL do vídeo'\n , '').then(url=>{\n \n if(url){\n \n const indexUrlStart = url.indexOf('src=\"', 0) + 5;\n const indexUrlEnd = url.indexOf('\"',indexUrlStart);\n\n if(indexUrlStart>0 && indexUrlEnd>indexUrlStart){\n url = url.substring(indexUrlStart,indexUrlEnd);\n }\n \n\n if(url.toString().indexOf('https://www.youtube.com/embed')<0){\n this.functionsService.showAlert('Atenção!', 'A URL informada não é válida.
Uma URL válida é iniciada da seguinte forma: https://www.youtube.com/embed',['Ok']);\n return;\n }else{\n\n let video: ArquivoDTO = new ArquivoDTO();\n video.dataGravacao = new Date();\n video.path = url;\n video.safePath = this.getSafeURL(url); \n video.tipo = TIPO_ARQUIVO.VIDEO;\n video.descricao = 'Galeria de Vídeos';\n\n if(!secao.galeriaVideos){\n secao.galeriaVideos = [];\n }\n \n secao.galeriaVideos.push(video); \n\n }\n }\n });\n\n \n }\n\n getSafeURL(url: string): SafeResourceUrl{\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n }\n\n\n\n async openCompartilhamento(event) {\n \n const popover = await this.popoverController.create({\n component: PopoverCompartilharComponent,\n componentProps: {'pagina': this.pagina},\n translucent: true,\n showBackdrop: true,\n backdropDismiss: true,\n reference:\"trigger\",\n event: event,\n side: 'top',\n align: 'center',\n arrow: true,\n dismissOnSelect: true,\n mode: \"md\",\n cssClass: 'popover-compartilhar-curso', \n \n });\n\n \n await popover.present();\n \n \n await popover.onDidDismiss().then((data)=>{\n\n });\n \n \n }\n\n\n save(){\n\n this.functionsService.presentLoading();\n\n for(var secao of this.pagina.secoes){\n if(secao.tipo==this.FORMULARIO_PERSONALIZADO){\n //usar as listas originais\n for(var campo of secao.formularioPersonalizado.campos){\n campo.opcoes = this.getListaOriginalFormularioPersonalizado(campo.fonteDados, secao, campo.ordemExibicao);\n console.log(campo)\n }\n }\n }\n \n this.processTags();\n\n if(!this.pagina.id){\n\n this.paginaService.insert(this.pagina).subscribe({\n next:(resp)=>{\n\n this.pagina = resp.body;\n this.initPage();\n\n this.functionsService.dismissLoading();\n this.functionsService.showAlert( 'Sucesso!'\n , 'Página criada com sucesso!'\n , [{ \n text: 'Ok',\n handler: () => {\n //this.functionsService.navigate('modulo-gc/gc-listar-paginas');\n }\n }]);\n\n },\n error:(error)=>{\n console.log(error);\n this.functionsService.dismissLoading();\n }\n });\n\n }else{\n\n this.paginaService.update(this.pagina).subscribe({\n next:(resp)=>{\n\n this.pagina = resp.body;\n this.initPage();\n \n this.functionsService.dismissLoading();\n this.functionsService.showAlert( 'Sucesso!'\n , 'Página atualizada com sucesso!'\n , [{ \n text: 'Ok',\n handler: () => {\n //this.functionsService.navigate('modulo-gc/gc-listar-paginas');\n }\n }]);\n\n },\n error:(error)=>{\n console.log(error);\n this.functionsService.dismissLoading();\n }\n });\n\n }\n }\n\n\n processTags(): void {\n if (this.pagina.tagsInput) {\n // Separa as tags pela vírgula, remove espaços e filtra duplicatas e tags que ultrapassem 50 caracteres\n const tagsArray = this.pagina.tagsInput.split(',')\n .map(tag => tag.trim())\n .filter((tag, index, self) => tag && tag.length <= 50 && self.indexOf(tag) === index);\n this.pagina.tags = tagsArray;\n } else {\n this.pagina.tags = [];\n }\n }\n\n \n \n\n quit(){\n this.functionsService.navigate('modulo-gc/gc-listar-paginas')\n }\n\n\n validateURL(event){\n\n if(!this.pagina.nome){\n return;\n }\n\n this.pagina.nome = this.pagina.nome.replace(/\\\\/g, '_').replace(/\\//g, '_');\n\n this.functionsService.presentLoading();\n\n this.pagina.nome = this.pagina.nome.replace('.html', '');\n this.pagina.nome = this.functionsService.normalizeUrl(this.pagina.nome);\n \n this.paginaService.findByNome( this.pagina.nome ).subscribe(\n resp=>{\n\n if(resp.id != this.pagina.id){\n this.functionsService.showAlert( 'Atenção!'\n , 'O endereço ' + this.pagina.nome + ' já está sendo usado por outra página!'\n , [{ \n text: 'Ok',\n handler: () => {\n this.pagina.nome = '';\n event.target.setFocus();\n }\n }]);\n this.pagina.nome = '';\n }\n\n this.functionsService.dismissLoading();\n\n },\n error=>{\n\n //console.log(error);\n this.functionsService.dismissLoading();\n\n });\n\n }\n\n\n \n \n preventScroll(event){\n /*\n existe um bug com o ion-accordion que sempre que algum elemento dentro dele é clicado\n o header do accordion recebe o foco automaticamente gerando um scroll indesejado da \n tela\n\n esse comando é para evitar esse comportamento\n ref: https://github.com/ionic-team/ionic-framework/issues/25064\n */\n \n event.preventDefault();\n\n \n }\n\n resetDestinatarios(formulario: FormularioDTO){\n\n formulario.destinatarios = [];\n const novoDestinatario = new DestinatarioDTO;\n formulario.destinatarios.push(novoDestinatario);\n \n }\n\n\n adicionarDestinatario(formulario: FormularioDTO){\n\n if(!formulario.destinatarios){\n formulario.destinatarios = [];\n }\n\n const novoDestinatario = new DestinatarioDTO;\n formulario.destinatarios.push(novoDestinatario);\n\n }\n \n\n // Atualiza habilitações com base nas formações selecionadas\n atualizarHabilitacoesSelecionaveis(secao: SecaoPaginaDTO) {\n const lista = this.getListasFormularioPersonalizado(secao);\n \n const idsFormacoes = lista.formacoesSelecionadas.map((formacao) => formacao.id);\n \n // Atualiza as habilitações com base nas formações selecionadas\n secao.formularioPersonalizado.campos = secao.formularioPersonalizado.campos.map((campo) => {\n if (campo.fonteDados === 'Habilitações') {\n\n campo.opcoes = lista.habilitacoesOriginais.filter((opcaoHabilitacao) =>\n idsFormacoes.includes(opcaoHabilitacao.habilitacao.formacao.id)\n );\n }\n return campo;\n });\n \n }\n \n \n\n // Atualiza cursos com base em seleções de modalidades, formações, habilitações e turnos\n atualizarCursosSelecionaveis(secao: SecaoPaginaDTO) {\n const lista = this.getListasFormularioPersonalizado(secao);\n \n const idsModalidades = lista.modalidadesSelecionadas.map((item) => item.id);\n const idsFormacoes = lista.formacoesSelecionadas.map((item) => item.id);\n const idsHabilitacoes = lista.habilitacoesSelecionadas.map((item) => item.id);\n const idsTurnos = lista.turnosSelecionados.map((item) => item.id);\n \n secao.formularioPersonalizado.campos = secao.formularioPersonalizado.campos.map((campo) => {\n \n if (campo.fonteDados === 'Cursos') {\n \n campo.opcoes = lista.cursosOriginais.filter((opcaoCurso) => {\n\n const modalidadeValida = !idsModalidades.length || idsModalidades.includes(opcaoCurso.curso.modalidade?.id);\n const formacaoValida = !idsFormacoes.length || idsFormacoes.includes(opcaoCurso.curso.formacao?.id);\n const habilitacaoValida = !idsHabilitacoes.length || idsHabilitacoes.includes(opcaoCurso.curso.habilitacao?.id);\n \n const turnoValido = !idsTurnos.length ||\n opcaoCurso.curso.disponibilidades.some((disponibilidade) =>\n disponibilidade.disponibilidadeTurnos.some((disponibilidadeTurno) =>\n idsTurnos.includes(disponibilidadeTurno.turno.id) && disponibilidadeTurno.habilitado\n )\n );\n \n return modalidadeValida && formacaoValida && habilitacaoValida && turnoValido;\n });\n \n \n }\n return campo;\n });\n }\n \n \n\n\n getListasFormularioPersonalizado(secao: SecaoPaginaDTO): ListasFormularioPersonalizado {\n \n let lista = this.listasFormularioPersonalizado.find((entry) => entry.secao === secao);\n\n return lista;\n }\n\n private guardarListasOriginaisFormularioPersonalizado(secao: SecaoPaginaDTO){\n\n //alguns campos foram gravados sem a ordem de exibição\n for(var i=0; ilista.ordemExibicao==ordemExibicaoCampo);\n return lista.opcoes;\n\n case 'Tipos de Arquivos':\n return listasFormulario.tiposArquivosOriginais;\n }\n\n // Retorna uma lista vazia se não houver campo correspondente\n return [];\n }\n\n \n\n atualizarValoresSelecionados(secao: SecaoPaginaDTO, campo: CampoFormularioDTO, event: any) {\n\n let valoresSelecionados;\n if(event.detail){\n valoresSelecionados = [event.detail.value];\n }else{\n valoresSelecionados = event;\n }\n \n\n const listas = this.getListasFormularioPersonalizado(secao);\n \n switch (campo.fonteDados) {\n case 'Modalidades':\n listas.modalidadesSelecionadas = valoresSelecionados.map((opcao) => opcao.modalidade);\n listas.formacoesSelecionadas = [];\n listas.habilitacoesSelecionadas = [];\n listas.cursosSelecionados = [];\n break;\n \n case 'Formações':\n listas.formacoesSelecionadas = valoresSelecionados.map((opcao) => opcao.formacao);\n listas.habilitacoesSelecionadas = [];\n listas.cursosSelecionados = [];\n break;\n \n case 'Habilitações':\n listas.habilitacoesSelecionadas = valoresSelecionados.map((opcao) => opcao.habilitacao);\n listas.cursosSelecionados = [];\n break;\n \n case 'Turnos':\n listas.turnosSelecionados = valoresSelecionados.map((opcao) => opcao.turno);\n listas.cursosSelecionados = [];\n break;\n \n case 'Cursos':\n listas.cursosSelecionados = valoresSelecionados.map((opcao) => opcao.curso);\n break;\n \n case 'Formas de Ingresso':\n listas.formasIngressoSelecionadas = valoresSelecionados.map((opcao) => opcao.formaIngresso);\n break;\n\n case 'Textos':\n listas.textosSelecionados = valoresSelecionados.map((opcao) => opcao.texto);\n break;\n \n default:\n console.warn(`Fonte de dados desconhecida: ${campo.fonteDados}`);\n }\n \n \n \n // Atualiza os cursos sempre que uma fonte relacionada for alterada\n if (['Modalidades', 'Formações', 'Habilitações', 'Turnos'].includes(campo.fonteDados)) {\n this.atualizarHabilitacoesSelecionaveis(secao); // Atualiza habilitações\n this.atualizarCursosSelecionaveis(secao); // Atualiza cursos\n }\n }\n \n\n \n getKeyFonteDados(nomeFonteDados: string): string {\n const keyNameMap = {\n modalidades: 'Modalidades',\n formacoes: 'Formações',\n habilitacoes: 'Habilitações',\n cursos: 'Cursos',\n turnos: 'Turnos',\n formasIngresso: 'Formas de Ingresso',\n textos: 'Textos',\n tiposArquivos: 'Tipos de Arquivos'\n };\n \n // Busca a chave correspondente ao valor fornecido\n return Object.keys(keyNameMap).find(key => keyNameMap[key] === nomeFonteDados) || '';\n }\n\n\n isChecked(secao: SecaoPaginaDTO, campo: CampoFormularioDTO, opcao: any): boolean {\n const lista = this.getListasFormularioPersonalizado(secao);\n\n if(!lista){\n return;\n }\n const selecionadosKey = `${this.getKeyFonteDados(campo.fonteDados)}Selecionadas`;\n \n if(campo.fonteDados=='Cursos' || campo.fonteDados=='Turnos' || campo.fonteDados=='Textos'){\n selecionadosKey.replace('Selecionadas', 'Selecionados');\n }\n\n return lista[selecionadosKey]?.some(item => item.id === opcao.id) || false;\n }\n\n atualizarValoresCheckbox(secao: SecaoPaginaDTO, campo: CampoFormularioDTO, opcao: any, event: any) {\n const isChecked = event.detail.checked;\n const lista = this.getListasFormularioPersonalizado(secao); // Obtém a lista associada à seção\n const selecionadosKey = `${campo.fonteDados.toLowerCase()}Selecionadas`; // Define a chave dinamicamente\n \n if(campo.fonteDados=='Cursos' || campo.fonteDados=='Turnos' || campo.fonteDados=='Textos'){\n selecionadosKey.replace('Selecionadas', 'Selecionados');\n }\n\n // Garante que a lista de selecionados exista antes de usá-la\n if (!lista[selecionadosKey]) {\n lista[selecionadosKey] = []; // Inicializa como um array vazio\n }\n \n if (isChecked) {\n // Adiciona a opção selecionada\n lista[selecionadosKey] = [...lista[selecionadosKey], opcao];\n } else {\n // Remove a opção desmarcada\n lista[selecionadosKey] = lista[selecionadosKey].filter(item => item !== opcao);\n }\n \n \n this.atualizarValoresSelecionados(secao,campo, lista[selecionadosKey]);\n }\n \n\n getNomeFormaIngressoFormatado(formaIngresso: string): string{\n return this.formaIngressoService.getNomeFormatado(formaIngresso);\n }\n \n\n abrirSeletorArquivo(fileLoader: HTMLInputElement, campo: CampoFormularioDTO){\n \n \n fileLoader.onchange = function () {\n\n campo.valor = fileLoader.value;\n\n }\n\n fileLoader.click();\n\n \n }\n\n getTiposArquivosAceitos(campo: CampoFormularioDTO): string{\n \n if(campo.fonteDados=='Tipos de Arquivos' && campo?.opcoes){\n\n let tiposArquivosSelecionados = [];\n for(var opcaoTipoArquivo of campo.opcoes){\n tiposArquivosSelecionados.push(opcaoTipoArquivo.tipoArquivo);\n }\n\n return 'Arquivos ' + tiposArquivosSelecionados.join(', ');\n }\n\n return 'Aceita todos tipos de arquivos';\n\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { GcCadastrarPaginaPage } from './gc-cadastrar-pagina.page';\n\nconst routes: Routes = [\n {\n path: '',\n component: GcCadastrarPaginaPage\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class GcCadastrarPaginaPageRoutingModule {}\n","import { SwiperModule } from 'swiper/angular';\nimport { QuillModule } from 'ngx-quill';\nimport { ComponentsModule } from './../../../../components/components.module';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { IonicModule } from '@ionic/angular';\n\nimport { GcCadastrarPaginaPageRoutingModule } from './gc-cadastrar-pagina-routing.module';\n\nimport { GcCadastrarPaginaPage } from './gc-cadastrar-pagina.page';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n IonicModule,\n GcCadastrarPaginaPageRoutingModule,\n ComponentsModule,\n QuillModule,\n SwiperModule\n ],\n declarations: [GcCadastrarPaginaPage]\n})\nexport class GcCadastrarPaginaPageModule {}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataSharingService {\n\n //serviço usado para emitir a mensagem para outros componentes que precisem saber quando o usuário está logado ou não\n public isUserLoggedIn: BehaviorSubject = new BehaviorSubject(false);\n \n //serviço usado para emitir a mensagem do header para a página gc-analisar-documentacao\n public idInscricaoSelecionada: BehaviorSubject = new BehaviorSubject(0);\n \n \n constructor() { }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { CursoDTO } from '../../models/curso/cursoDTO';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { API_CONFIG } from './../../config/api.config';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CursoService {\n\n constructor(private http: HttpClient){ \n }\n\n insert(cursoDTO: CursoDTO) : Observable {\n \n\n return this.http.post( API_CONFIG.apiURL+'/cursos'\n , cursoDTO\n , { observe: 'response' }); //.pipe(timeout(100000))\n\n }\n\n update(cursoDTO: CursoDTO) : Observable {\n \n return this.http.put( API_CONFIG.apiURL+'/cursos/' + cursoDTO.id\n , cursoDTO\n , { observe: 'response' });\n\n }\n\n\n findAll() : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/cursos');\n\n }\n\n findByFilter(filtro: string, page: number, pageSize: number, sort: string = 'ASC') : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/cursos/findByFilter?filter='+filtro+'&page='+page+'&size='+pageSize+'&sort='+sort);\n\n }\n\n findByFormacao(idFormacao: number) : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/cursos/findByFormacao?idFormacao='+idFormacao);\n\n }\n\n findByModalidadesAndFormacoesAndHabilitacoes(idsModalidades: number[], idsFormacoes: number[], idsHabilitacoes: number[]) : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/cursos/findByModalidadesAndFormacoesAndHabilitacoes?idsModalidades='+idsModalidades+'&idsFormacoes='+idsFormacoes+'&idsHabilitacoes='+idsHabilitacoes);\n\n }\n\n findByStatus(status: string) : Observable {\n \n return this.http.get( API_CONFIG.apiURL+'/cursos/findByStatus?status='+status);\n\n }\n\n \n find(id: number) : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/cursos/' + id);\n\n }\n\n delete(id: number) : Observable {\n\n return this.http.delete( `${API_CONFIG.apiURL}${'/cursos/'}${id}`);\n\n }\n\n\n getTextoCursosSelecionados(cursosSelecionados: CursoDTO[], todosCursos: CursoDTO[]){\n\n if(cursosSelecionados.length==0){\n\n return 'Nenhum curso selecionado';\n\n }else if(cursosSelecionados.length==todosCursos.length){\n \n return 'Todos os cursos';\n \n }else if(cursosSelecionados.length<4){\n \n let textoCursosSelecionados = '';\n for(var i=0; i {\n\n return this.http.get( API_CONFIG.apiURL+'/formasingresso');\n\n }\n\n find(id: number) : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/formasingresso/' + id);\n\n }\n\n \n getTiposFormaIngresso() : TipoFormaIngressoDTO[] {\n\n let arrTiposFormaIngresso: TipoFormaIngressoDTO[] = [];\n \n let enem = new TipoFormaIngressoDTO();\n enem.nome = TIPO_FORMA_INGRESSO.ENEM;\n enem.descricao = 'Utilize sua nota do ENEM para ingressar em um dos nossos cursos de graduação.';\n enem.temEntregaDocumentacao = true;\n enem.temLocal = false;\n enem.temProva = false;\n enem.podeEscolherDataProva = false;\n\n arrTiposFormaIngresso.push(enem);\n \n let vestibularOnline = new TipoFormaIngressoDTO();\n vestibularOnline.nome = TIPO_FORMA_INGRESSO.VESTIBULAR_ONLINE;\n vestibularOnline.descricao = 'Redação Online disponível para ser realizada 48h após a sua inscrição.';\n vestibularOnline.temEntregaDocumentacao = false;\n vestibularOnline.temLocal = false;\n vestibularOnline.temProva = true;\n vestibularOnline.podeEscolherDataProva = true;\n\n arrTiposFormaIngresso.push(vestibularOnline);\n\n let vestibularPresencial = new TipoFormaIngressoDTO();\n vestibularPresencial.nome = TIPO_FORMA_INGRESSO.VESTIBULAR_PRESENCIAL;\n vestibularPresencial.descricao = 'Redação Presencial realizada nas Faculdades Souza Marques em data e horário previamente definidos.';\n vestibularPresencial.temEntregaDocumentacao = false;\n vestibularPresencial.temLocal = true;\n vestibularPresencial.temProva = true;\n vestibularPresencial.podeEscolherDataProva = false;\n \n arrTiposFormaIngresso.push(vestibularPresencial);\n\n let portadorDiploma = new TipoFormaIngressoDTO();\n portadorDiploma.nome = TIPO_FORMA_INGRESSO.PORTADOR_DIPLOMA;\n portadorDiploma.descricao = 'Ingresse em um de nossos cursos de graduação utilizando seu Diploma.';\n portadorDiploma.temEntregaDocumentacao = true;\n portadorDiploma.temLocal = false;\n portadorDiploma.temProva = false;\n portadorDiploma.podeEscolherDataProva = false;\n \n arrTiposFormaIngresso.push(portadorDiploma);\n\n\n let transferencia = new TipoFormaIngressoDTO();\n transferencia.nome = TIPO_FORMA_INGRESSO.TRANSFERENCIA;\n transferencia.descricao = 'Ingresse em um de nossos cursos de graduação realizando a transferência de outra universidade.';\n transferencia.temEntregaDocumentacao = true;\n transferencia.temLocal = false;\n transferencia.temProva = false;\n transferencia.podeEscolherDataProva = false;\n \n arrTiposFormaIngresso.push(transferencia);\n\n\n let reingresso = new TipoFormaIngressoDTO();\n reingresso.nome = TIPO_FORMA_INGRESSO.REINGRESSO_POS_ABANDONO;\n reingresso.descricao = 'Reingresse no curso que você abandonou.';\n reingresso.temEntregaDocumentacao = true;\n reingresso.temLocal = false;\n reingresso.temProva = false;\n reingresso.podeEscolherDataProva = false;\n \n arrTiposFormaIngresso.push(reingresso);\n\n\n let cursoExtensao = new TipoFormaIngressoDTO();\n cursoExtensao.nome = TIPO_FORMA_INGRESSO.CURSO_EXTENSAO;\n cursoExtensao.descricao = 'Curso de Extensão.';\n cursoExtensao.temEntregaDocumentacao = false;\n cursoExtensao.temLocal = false;\n cursoExtensao.temProva = false;\n cursoExtensao.podeEscolherDataProva = false;\n \n arrTiposFormaIngresso.push(cursoExtensao);\n\n let posGraduacao = new TipoFormaIngressoDTO();\n posGraduacao.nome = TIPO_FORMA_INGRESSO.POS_GRADUACAO;\n posGraduacao.descricao = 'Pós-Graduação.';\n posGraduacao.temEntregaDocumentacao = true;\n posGraduacao.temLocal = false;\n posGraduacao.temProva = false;\n posGraduacao.podeEscolherDataProva = false;\n \n arrTiposFormaIngresso.push(posGraduacao);\n \n return arrTiposFormaIngresso;\n\n }\n\n getTipoFormaIngresso(descricao: any) : TipoFormaIngressoDTO {\n\n if(descricao === TIPO_FORMA_INGRESSO.ENEM){\n\n let enem = new TipoFormaIngressoDTO();\n enem.nome = TIPO_FORMA_INGRESSO.ENEM;\n enem.descricao = 'Utilize sua nota do ENEM para ingressar em um dos nossos cursos de graduação.';\n enem.temEntregaDocumentacao = true;\n enem.temLocal = false;\n enem.temProva = false;\n enem.podeEscolherDataProva = false;\n\n return enem;\n\n }else if(descricao === TIPO_FORMA_INGRESSO.VESTIBULAR_ONLINE){\n \n let vestibularOnline = new TipoFormaIngressoDTO();\n vestibularOnline.nome = TIPO_FORMA_INGRESSO.VESTIBULAR_ONLINE;\n vestibularOnline.descricao = 'Redação Online disponível para ser realizada 48h após a sua inscrição.';\n vestibularOnline.temEntregaDocumentacao = false;\n vestibularOnline.temLocal = false;\n vestibularOnline.temProva = true;\n vestibularOnline.podeEscolherDataProva = true;\n\n return vestibularOnline;\n\n }else if(descricao === TIPO_FORMA_INGRESSO.VESTIBULAR_PRESENCIAL){\n\n let vestibularPresencial = new TipoFormaIngressoDTO();\n vestibularPresencial.nome = TIPO_FORMA_INGRESSO.VESTIBULAR_PRESENCIAL;\n vestibularPresencial.descricao = 'Redação Presencial realizada nas Faculdades Souza Marques em data e horário previamente definidos.';\n vestibularPresencial.temEntregaDocumentacao = false;\n vestibularPresencial.temLocal = true;\n vestibularPresencial.temProva = true;\n vestibularPresencial.podeEscolherDataProva = true;\n\n return vestibularPresencial;\n \n }else if(descricao === TIPO_FORMA_INGRESSO.PORTADOR_DIPLOMA){\n\n let portadorDiploma = new TipoFormaIngressoDTO();\n portadorDiploma.nome = TIPO_FORMA_INGRESSO.PORTADOR_DIPLOMA;\n portadorDiploma.descricao = 'Ingresse em um de nossos cursos de graduação utilizando seu diploma em outras áreas.';\n portadorDiploma.temEntregaDocumentacao = true;\n portadorDiploma.temLocal = false;\n portadorDiploma.temProva = false;\n portadorDiploma.podeEscolherDataProva = false;\n\n return portadorDiploma;\n\n }else if(descricao === TIPO_FORMA_INGRESSO.TRANSFERENCIA){\n\n let transferencia = new TipoFormaIngressoDTO();\n transferencia.nome = TIPO_FORMA_INGRESSO.TRANSFERENCIA;\n transferencia.descricao = 'Ingresse em um de nossos cursos transferindo-se de outras instituições.';\n transferencia.temEntregaDocumentacao = true;\n transferencia.temLocal = false;\n transferencia.temProva = false;\n transferencia.podeEscolherDataProva = false;\n\n return transferencia;\n \n }else if(descricao === TIPO_FORMA_INGRESSO.REINGRESSO_POS_ABANDONO){\n\n let reingresso = new TipoFormaIngressoDTO();\n reingresso.nome = TIPO_FORMA_INGRESSO.REINGRESSO_POS_ABANDONO;\n reingresso.descricao = 'Reingresse no curso que você abandonou.';\n reingresso.temEntregaDocumentacao = true;\n reingresso.temLocal = false;\n reingresso.temProva = false;\n reingresso.podeEscolherDataProva = false;\n\n return reingresso;\n \n }else if(descricao === TIPO_FORMA_INGRESSO.CURSO_EXTENSAO){\n\n let cursoExtensao = new TipoFormaIngressoDTO();\n cursoExtensao.nome = TIPO_FORMA_INGRESSO.CURSO_EXTENSAO;\n cursoExtensao.descricao = 'Curso de Extensão.';\n cursoExtensao.temEntregaDocumentacao = false;\n cursoExtensao.temLocal = false;\n cursoExtensao.temProva = false;\n cursoExtensao.podeEscolherDataProva = false;\n\n return cursoExtensao;\n\n }else if(descricao === TIPO_FORMA_INGRESSO.POS_GRADUACAO){\n\n let posGraduacao = new TipoFormaIngressoDTO();\n posGraduacao.nome = TIPO_FORMA_INGRESSO.POS_GRADUACAO;\n posGraduacao.descricao = 'Pós-Graduação.';\n posGraduacao.temEntregaDocumentacao = true;\n posGraduacao.temLocal = false;\n posGraduacao.temProva = false;\n posGraduacao.podeEscolherDataProva = false;\n\n return posGraduacao;\n }\n\n return null;\n\n }\n\n getNomeFormatado(tipo: string) : string {\n\n if(tipo === TIPO_FORMA_INGRESSO.ENEM){\n return 'ENEM';\n }else if(tipo === TIPO_FORMA_INGRESSO.VESTIBULAR_ONLINE){\n return 'Vestibular Online';\n }else if(tipo === TIPO_FORMA_INGRESSO.VESTIBULAR_PRESENCIAL){\n return 'Vestibular Presencial';\n }else if(tipo === TIPO_FORMA_INGRESSO.PORTADOR_DIPLOMA){\n return 'Portador de Diploma';\n }else if(tipo === TIPO_FORMA_INGRESSO.TRANSFERENCIA){\n return 'Transferência Externa';\n }else if(tipo === TIPO_FORMA_INGRESSO.REINGRESSO_POS_ABANDONO){\n return 'Reingresso após Abandono';\n }else if(tipo === TIPO_FORMA_INGRESSO.CURSO_EXTENSAO){\n return 'Curso de Extensão';\n }else if(tipo === TIPO_FORMA_INGRESSO.POS_GRADUACAO){\n return 'Pós-Graduação';\n }\n\n return '';\n\n }\n\n \n countInscritos(idFormaIngresso: number) : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/formasingresso/countInscritos?idFormaIngresso=' + idFormaIngresso);\n\n }\n\n countInscritosComProvaAgendada(idFormaIngresso: number) : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/formasingresso/countInscritosComProvaAgendada?idFormaIngresso=' + idFormaIngresso);\n\n }\n\n validadeSubscpriptionPeriod(idsFormaIngresso: number[]) : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/formasingresso/validadeSubscpriptionPeriod?idsFormaIngresso=' + idsFormaIngresso); \n\n }\n\n \n\n getUltimaProva(formaIngresso: FormaIngressoDTO): ProvaDTO{\n\n \n let ultimaProva = new ProvaDTO();\n ultimaProva.dataInicio = new Date('1950-01-01');\n\n for(var i=0; i new Date(ultimaProva.dataInicio).getTime()){\n ultimaProva = prova;\n }\n\n }\n\n return ultimaProva;\n\n }\n\n sortArrayProvas(formaIngresso: FormaIngressoDTO){\n\n //ordena o array de provas pela data da prova\n formaIngresso.provas.sort(function (a, b) {\n \n if (new Date(a.dataInicio).getTime() > new Date(b.dataInicio).getTime()) {\n return 1;\n }\n if ( new Date(a.dataInicio).getTime() < new Date(b.dataInicio).getTime()) {\n return -1;\n }\n // a must be equal to b\n return 0;\n });\n\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { TurnoDTO } from '../../models/curso/turnoDTO';\nimport { API_CONFIG } from './../../config/api.config';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TurnoService {\n\n constructor(private http: HttpClient){ \n }\n\n insert(turnoDTO: TurnoDTO) : Observable {\n \n\n return this.http.post( API_CONFIG.apiURL+'/turnos'\n , turnoDTO\n , { observe: 'response' }); //.pipe(timeout(100000))\n\n }\n\n update(turnoDTO: TurnoDTO) : Observable {\n \n return this.http.put( API_CONFIG.apiURL+'/turnos/' + turnoDTO.id\n , turnoDTO\n , { observe: 'response' });\n\n }\n\n\n findAll() : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/turnos');\n\n }\n\n \n find(id: number) : Observable {\n\n return this.http.get( API_CONFIG.apiURL+'/turnos/' + id);\n\n }\n\n delete(id: number) : Observable {\n\n return this.http.delete( `${API_CONFIG.apiURL}${'/turnos/'}${id}`);\n\n }\n\n}\n"],"sourceRoot":"webpack:///","file":"804.855b5f6ae3b07161.js"}