Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> isEMED [in template "20102#20129#438394" at line 4102, column 15]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: #if !isEMED [in template "20102#20129#438394" at line 4102, column 9]
----
1<#assign
2 isEditMode = themeDisplay.getURLCurrent()?contains('p_l_mode=edit')
3/>
4<!-- Essa verificação é necessária para que não encaminhe erros de freemarker ao KIBANA ao acessar a página de edição dos componentes -->
5<#if isEditMode >
6 <h3>Modo de edição identificado</h3>
7<#else>
8
9<#assign resources = themeDisplay.getPortalURL() />
10<#assign contextPath = "/documents/d/global" />
11<#assign _rnd = .now?long >
12<script src="${resources}${contextPath}/js-portal-services?cb=${_rnd}"></script>
13
14<style>
15
16 .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card {
17 background: white;
18 width: 100%;
19 padding: 32px 52px;
20 box-shadow: 2px 5px 12px #00000040;
21 border-radius: 20px;
22 display: flex;
23 flex-wrap: nowrap;
24 justify-content: space-between;
25 align-items: center;
26 }
27
28 .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card .item-passo-icone {
29 max-width: 100%;
30 height: 72px;
31 margin-bottom: 10px;
32 }
33
34 .ssp:not(.liferay-instance) .ssp-como-me-matricular__section {
35 background: #472247;
36 border-top: 18px solid #792F7A;
37 text-align: center;
38 padding-bottom: 60px;
39 }
40
41 .ssp:not(.liferay-instance) .ssp-como-me-matricular__section .title-section-white::after {
42
43
44 display: none;
45
46
47 }
48
49 .ssp:not(.liferay-instance) .ssp-como-me-matricular__section .title-section-white {
50 color: white;
51 font-size: 44px !important;
52 margin-bottom: 32px !important;
53 text-align:unset;
54 }
55
56 .ssp:not(.liferay-instance) .ssp-como-me-matricular__passo-passo-card .item-passo-title {
57 font-size: 28px;
58 color: #B767C2;
59 font-weight: bold;
60 line-height: 28px;
61 margin: 0;
62 margin-bottom:.5rem;
63 }
64
65
66.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__icon-credit-card::after {
67
68 font-size: 18px;
69
70}
71
72.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__icon-boleto::after {
73
74 font-size: 18px;
75
76}
77
78.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__header {
79 align-items:center;
80 color:#454F63;
81}
82
83.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__btn-close::after {
84 font-family: "Font Awesome 6 Pro";
85 font-weight: normal;
86 content: "\f00d";
87 font-style: normal;
88 font-size:30px;
89 cursor: pointer;
90}
91
92.ssp:not(.liferay-instance) .ssp-card-modal-forma-pagamento__body {
93
94 padding:0 15px;
95}
96
97.ssp-card-modal-forma-pagamento__tipos-content p {
98
99 color: #454F63!important;
100 font-size: 14px!important;
101}
102
103.ssp-card-modal-forma-pagamento__tipos-content strong {
104
105 font-weight: bold!important;
106}
107
108.txt-desconto-oito{
109
110 font-weight: 600!important;
111 border: 1px solid #f2f2f2;
112 border-right: 0;
113 border-left: 0;
114 padding: 10px 0;
115}
116
117.next-mobile{
118 color: white;
119 display: flex;
120 align-items: center;
121 text-decoration: none!important;
122}
123
124.next-mobile:hover{
125 color: white;
126 font-weight: normal!important;
127}
128
129.next-mobile::before{
130 font-family: "Montserrat", sans-serif;
131 content: "Próxima";
132 font-size: 14px;
133 font-weight: 600;
134 display: block;
135 margin-right: 9px;
136 color: white;
137}
138
139.next-mobile.slick-arrow.slick-disabled{
140 opacity: 0.4;
141}
142
143
144/* Prev Mobile button */
145
146
147.prev-mobile{
148 color: white;
149 display: flex;
150 align-items: center;
151 text-decoration: none;
152 text-decoration: none!important;
153}
154
155.prev-mobile:hover{
156 color: white;
157 font-weight: normal!important;
158}
159
160.prev-mobile::after{
161 font-family: "Montserrat", sans-serif;
162 content: "Anterior";
163 font-weight: 600;
164 font-size: 14px;
165 display: block;
166 margin-left: 9px;
167 color: white;
168}
169
170.prev-mobile.slick-arrow.slick-disabled{
171 opacity: 0.4;
172}
173
174
175.icon-ao-vivo{
176 font-size: 15px!important;
177 margin: 0 3px;
178}
179
180.ssp-card-detalhe-curso__tag-ao-vivo{
181 font-family: "Montserrat";
182 font-size: 19px;
183 letter-spacing: 0px;
184 color: #F77A3B;
185}
186
187.selecione-unidade-title-custom{
188
189 width:100%!important;
190
191}
192
193.recalcular{
194 background:#F6921E!important;
195 border: solid 1px #F6921E!important;
196}
197
198.ssp-card-detalhe-curso__description{
199
200 font-family: "Montserrat";
201 max-width: 800px;
202 font-size: 20px;
203 font-weight: 500;
204 font-stretch: normal;
205 font-style: normal;
206 line-height: 1.23;
207 letter-spacing: normal;
208 margin: 10px 0;
209 text-align: left;
210 color: #4f596f;
211
212}
213
214/* nova formatação para registro de interesse */
215.ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__content {
216 display: flex;
217 flex-wrap: nowrap;
218 justify-content: center;
219 align-items: center;
220 padding: 10px 0;
221}
222
223/* Novas tags para formato de curso */
224
225.ssp-card-detalhe-curso__tag-formato{
226
227 font-size:18px;
228 font-weight:600;
229
230}
231
232.icon-formato{
233 margin-right:7px;
234}
235
236.online-aovivo{
237 position:relative;
238
239}
240
241.icon-small-wifi {
242 font-size: 13px;
243 position: absolute;
244 left: -12px;
245 top: -5px;
246}
247
248.ssp-desconto-2022 .modal-extensao_txteconomiza {
249 font-size: 14px !important;
250 font-weight: 100 !important;
251}
252.ssp-desconto-2022 .ssp-card-oferta-curso__desconto-content .ssp-card-oferta-curso__valor-desconto {
253 font-weight: 100 !important;
254}
255.ssp-desconto-2022 .modal-extensao-btn-conheca {
256 border: 1px solid #474F61 !important;
257 border-radius: 4px;
258 color: #474F61 !important;
259 font-size: 15px;
260 height: 50px;
261 margin-left: 0;
262 display: flex;
263 align-items: center;
264 justify-content: center;
265}
266
267.ssp-card-modal-forma-pagamento.ssp-desconto-2022 {
268 color: #454F63;
269}
270.ssp-card-oferta-curso__item-valor-investimento.ssp-desconto-2022 {
271 font-size: 22px !important;
272}
273.ssp-card-oferta-curso__item-valor-investimento.ssp-desconto-2022 span {
274 font-size: 13px !important;
275}
276.ssp-desconto-2022 span {
277 padding: 0 !important;
278}
279
280.ssp:not(.liferay-instance) .ssp-card-registro-interesse__select {
281 appearance: none !important;
282 -webkit-appearance: none !important;
283 -moz-appearance: none !important;
284
285 background-size: 25px 25px !important;
286 background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgNTEyIj48IS0tIEZvbnQgQXdlc29tZSBQcm8gNS4xNS40IGJ5IEBmb250YXdlc29tZSAtIGh0dHBzOi8vZm9udGF3ZXNvbWUuY29tIExpY2Vuc2UgLSBodHRwczovL2ZvbnRhd2Vzb21lLmNvbS9saWNlbnNlIChDb21tZXJjaWFsIExpY2Vuc2UpIC0tPjxwYXRoIGQ9Ik0xODcuOCAyNjQuNUw0MSA0MTIuNWMtNC43IDQuNy0xMi4zIDQuNy0xNyAwTDQuMiAzOTIuN2MtNC43LTQuNy00LjctMTIuMyAwLTE3TDEyMi43IDI1NiA0LjIgMTM2LjNjLTQuNy00LjctNC43LTEyLjMgMC0xN0wyNCA5OS41YzQuNy00LjcgMTIuMy00LjcgMTcgMGwxNDYuOCAxNDhjNC43IDQuNyA0LjcgMTIuMyAwIDE3eiIvPjwvc3ZnPg==);
287 background-repeat: no-repeat !important;
288 background-position-x: 99% !important;
289 background-position-y: 50% !important;
290}
291
292@media only screen and (max-width: 768px){
293
294 .ssp-card-detalhe-curso__tag-ao-vivo{
295 font-size: 14px;
296 display: none;
297 }
298 .ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__content {
299
300 flex-wrap: wrap!important;
301
302}
303.ssp-card-modal-forma-pagamento__tipos-content p {
304
305 font-size: 12px!important;
306}
307
308
309 .ssp:not(.liferay-instance) .ssp-section-selecione-unidade {
310 padding: 30px 0!important;
311 padding-bottom: 30px !important;
312 background-color: #2a2e43;
313 }
314
315 .ssp:not(.liferay-instance) .ssp-aviso-novas-turmas__title {
316 padding-bottom: 1.25rem !important;
317 }
318
319 .selecione-unidade-title-custom{
320 width:100%!important;
321
322 }
323
324 .ssp-card-detalhe-curso__description{
325 width: 100%;
326 font-size: 15px;
327
328 }
329 .ssp-como-me-matricular__passo-passo-card {
330 padding: 30px 24px!important;
331
332 }
333
334 .emed-select-group {
335 box-shadow: none!important;
336 border: none !important;
337 border-bottom: 1px solid #6E6E6E!important;
338 border-radius: 0 !important;
339 padding: 0 !important;
340 margin: 1rem 0 !important;
341 }
342
343 .emed .ssp-card-registro-interesse__title-modal{
344 font-size: 20px!important;
345 }
346 .emed .ssp-card-registro-interesse__title-section-itens {
347 font-size: 15px!important;
348 margin-top: 0px!important;
349 margin-bottom: 0px!important;
350 color: #2a2e43;
351 }
352 .ssp-card-registro-interesse.emed [type="checkbox"] {
353 transform: scale(0.6);
354 margin-left: 2px;
355 }
356
357 .ssp-card-registro-interesse.emed label {
358 margin-left: 0px;
359 margin-right: 3px;
360 }
361}
362
363.ssp-card-oferta-curso__local-realizacao-content__title {
364 font-family: "Open Sans", sans-serif;
365 font-size: 10pt;
366 font-weight: normal;
367 color: #00488c;
368 font-weight: bold;
369 text-decoration: none!important;
370 padding-left: 10px;
371}
372
373 @media screen and (min-width: 767px){
374
375 .ssp-modal-local-realizacao{
376 width: 480px!important;
377 }
378 .ssp-card-modal-forma-pagamento__header {
379 margin-bottom: 20px;
380 }
381
382 .ssp-modal-local-realizacao__title{
383 color:#01488C !important;
384 text-align: center!important;
385 margin-left: -23px!important;
386 }
387
388 .ssp:not(.liferay-instance) .ssp-modal-local-realizacao__title {
389 font-size: 14pt;
390 }
391 .ssp:not(.liferay-instance) [data-info="data-para-matricula"] {
392 font-size: 14px !important;
393 text-align: left;
394 }
395 .ssp-modal-emed-txt-desconto-oito {
396 padding: 10px 0 0px!important;
397 }
398 .ssp:not(.liferay-instance) .ssp-modal-emed-info-valor-matricula {
399 color: #4F596F;
400 font-size: 15px!important;
401 text-align: center;
402 font-weight: 500!important;
403 }
404}
405
406@media screen and (max-width: 767px){
407 .ssp:not(.liferay-instance) .ssp-modal-local-realizacao {
408 width: 347px;
409 padding: 22px;
410 }
411 .ssp-modal {
412 padding-top: 72px!important;
413 }
414 .ssp-card-modal-forma-pagamento {
415 max-width: 335px!important;
416 }
417 .ssp-card-modal-forma-pagamento__body {
418 padding: 0px!important;
419 }
420 .ssp-modal-emed-txt-desconto-oito {
421 font-size: 12px !important;
422 }
423 .ssp-card-modal-forma-pagamento__header {
424 margin-bottom: 20px!important;
425 }
426 .txt-desconto-oito i {
427 font-size: 12px!important;
428 padding-top: 3px;
429 }
430 .txt-pague-vista {
431 font-size: 12px!important;
432 }
433 .txt-ganhe-mais {
434 font-size: 12px!important;
435 }
436 .ssp-modal-emed-info-valor-matricula {
437 color: #2A2E43!important;
438 font-size: 12px!important;
439 font-weight: 500!important;
440 }
441 .ssp:not(.liferay-instance) [data-info="data-para-matricula"] {
442 font-size: 12px !important;
443 line-height: 1.5;
444 text-align: left;
445 }
446
447 .ssp-desconto-2022 .txt-desconto-oito {
448 font-size: 14px !important;
449 }
450}
451
452@media screen and (max-width: 767px){
453 .ssp:not(.liferay-instance) .ssp-modal-local-realizacao__title {
454 font-size: 16pt;
455 }
456}
457
458.container-local-realizacao{
459 padding: 6px;
460 border: 0.5pt solid #cdd0d8;
461 border-radius: 5px;
462 width: 260px;
463 margin: 10px auto;
464 box-shadow: 1px 1px 1px #0000000F;
465}
466
467.idioma-online{
468 border:0!important;
469 box-shadow:none!important;
470}
471
472.btn-idiomas__aula-online .fa-wifi{
473 margin-right: 7px
474}
475
476.ssp-modal-local-realizacao__title{
477 color:#01488C !important;
478 text-align: center!important;
479}
480
481h6.ssp-modal-local-realizacao__title::after {
482 content: "";
483 display: block;
484 width: 20%;
485 padding-top: 10px;
486 border-bottom: 1px solid #01488C;
487 transition: .5s;
488 margin:auto;
489}
490
491.ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__icon-wifi::after {
492 font-family: "Font Awesome 5 Free";
493 content: '\f1eb';
494 font-weight: 600;
495 color: #00488c;
496 font-size: 8px;
497 font-style: normal;
498 margin-left: 2px;
499}
500
501.ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__icon-chalkboard-teacher::after {
502 font-family: "Font Awesome 5 Free";
503 content: '\f51c';
504 font-weight: 600;
505 color: #00488c;
506 font-size: 13px;
507 font-style: normal;
508}
509
510.ssp-card-oferta-curso__local-realizacao-content__icon-wifi{
511 display: flex;
512 margin-top: 0px;
513 margin-bottom: -10px;
514}
515
516.ssp:not(.liferay-instance) .ssp-modal__local-realizacao-content__icon-wifi::after {
517 font-family: "Font Awesome 5 Free";
518 content: '\f1eb';
519 font-weight: 600;
520 color: #00488c;
521 font-size: 9pt;
522 font-style: normal;
523 margin-right: 10px;
524}
525
526.ssp:not(.liferay-instance) .ssp-modal__local-realizacao-content__icon-chalkboard-teacher::after {
527 font-family: "Font Awesome 5 Free";
528 content: '\f51c';
529 font-weight: 600;
530 color: #00488c;
531 font-size: 16pt;
532 font-style: normal;
533 margin-left: -16px;
534}
535
536.ssp-modal__local-realizacao-content__icon-wifi{
537 display: flex;
538 margin-right: 2px
539}
540
541.ssp-modal-local-realizacao__texto{
542 text-align:center!important;
543}
544
545.texto-modal-emed{
546 text-align:left;
547}
548
549.nextPrevOpacity{
550 opacity: 0.3;
551}
552
553
554 .modal-extensao {
555 display: block;
556 position: fixed;
557 z-index: 2000;
558 padding-top: 100px;
559 left: 0;
560 top: 0;
561 width: 100%;
562 height: 100%;
563 overflow: auto;
564 background-color: black;
565 background-color: rgba(0, 0, 0, 0.6);
566 font-family: Montserrat;
567 }
568 .modal-extensao_content {
569 max-width: 700px;
570 width: 100%;
571 background: white;
572 border-radius: 12px;
573 padding: 30px 60px;
574 position: relative;
575 text-align: center;
576 margin: auto;
577 -webkit-animation-name: animatetop;
578 -webkit-animation-duration: 0.4s;
579 animation-name: animatetop;
580 animation-duration: 0.4s;
581 }
582 .modal-extensao-condicoes__title {
583 color: #000!important;
584 text-transform: uppercase!important;
585 font-size: 18px!important;
586
587 }
588 .modal-extensao-condicoes__subtitle {
589 color: #000!important;
590 font-size: 18px!important;
591 margin-bottom: 0px!important;
592
593 }
594 .modal-extensao__btn {
595 background-color: #5ACC75!important;
596 font-size: 14px;
597 float: right;
598 color: #ffffff;
599 min-width: 165px;
600 }
601 .modal-extensao__btn:hover {
602 background-color: #3fb25c!important;
603 border-color: transparent;
604 color: #ffffff;
605 }
606 .modal-extensao_subtitle {
607 font-size: 13.7px!important;
608 color: #2A2E43!important;
609 font-family: Montserrat, semi-bold!important;
610 font-weight: 600!important;
611 }
612 .modal-extensao_subtitle::after {
613 content: " ";
614 display: block;
615 width: 126px;
616 height: 2px;
617 background: #707070;
618 margin: 0 auto;
619 margin-top: 5px;
620 }
621 .modal-extensao_preco {
622 color: #454F63;
623 font-size: 25px;
624 font-family: Montserrat;
625 font-weight: bold;
626 }
627 .modal-extensao_ctboleto {
628 width: 50%;
629 float: left;
630 border-color: #D7D7DB;
631 border-style: solid;
632 border-width: 1px;
633 border-left: none;
634 font-size: 21px;
635 color: #454F63
636
637 }
638 .modal-extensao_ctcard {
639 width: 50%;
640 float: left;
641 border-color: #D7D7DB;
642 border-style: solid;
643 border-width: 1px;
644 border-right: none;
645 border-left: none;
646 font-size: 21px;
647 color: #454F63;
648 }
649
650 .modal-extensao_txtPag {
651 color:#2A2E43;
652 font-size: 9px;
653 font-family: Montserrat;
654 font-weight: 600;
655 display: block;
656 }
657 .modal-extensao_txteconomiza {
658 display: block;
659 font-size: 12px;
660 }
661 .modal-extensao_txtverde {
662 color: #5ACC75;
663 }
664 .modal-extensao_txtParcela {
665 color:#2A2E43;
666 font-size: 12px;
667 font-family: Montserrat;
668 font-weight: normal;
669 display: block;
670 }
671 .modal-extensao_txtporcent{
672 font-size: 9px;
673 color: #5ACC75;
674 font-weight: 600;
675 }
676 .modal-extensao-btn-conheca {
677 color: #2967F4 !important;
678 background-color: transparent;
679 border-color: #2967F4 !important;
680 box-shadow: none !important;
681 font-size: 14px !important;
682 margin-left: 10px;
683 transition: 0.3s;
684 float: left;
685 }
686 .modal-extensao-btn-conferir {
687 color: #2967F4 !important;
688 background-color: transparent;
689 border-color: #2967F4 !important;
690 box-shadow: none !important;
691 font-size: 14px !important;
692 margin-left: 10px;
693 transition: 0.3s;
694 min-width: 330px;
695 min-height: 50px;
696 }
697 .modal-extensao-btn-conferir:hover {
698 color: #ffffff!important;
699 }
700
701 .modal-extensao-btn-conheca:hover, .modal-extensao-btn-conheca:focus {
702 color: #ffffff!important;
703 }
704 .modal-extensao-btn-aluno-sim-nao {
705 color: #000000;
706 background-color: transparent;
707 border-color: #000000 !important;
708 box-shadow: none !important;
709 font-size: 14px !important;
710 margin-left: 10px;
711 transition: 0.3s;
712 min-width: 95px;
713 }
714 .modal-extensao-btn-aluno-sim-ativo {
715 color: #ffffff!important;
716 background-color: #3969EB!important;
717 border-color: #3969EB !important;
718 }
719 .modal-extensao-btn-aluno-sim-nao:hover {
720 background-color: transparent;
721 border-color: #3969EB !important;
722 color: #3969EB!important; }
723 .modal-extensao-voltar-icon,.modal-extensao-fechar {
724 font-size: 13px;
725 position: absolute;
726 top: 30px;
727 right: 20px;
728 cursor: pointer;
729 color: #000;
730 }
731
732 .modal-extensao-voltar-txticon {
733 color: #000;
734 font-size: 9px;
735 font-family: Montserrat;
736 font-weight: 600;
737 padding-left: 5px;
738 }
739 .modal-extensao-ico-check {
740 color: #5ACC75;
741 font-size: 65px;
742 }
743 .modal-extensao-aluno_txtcontent {
744 font-size: 18px!important;
745 color: #000;
746 }
747 .modal-extensao-aluno__btn {
748 background-color: #5ACC75!important;
749 font-size: 14px;
750 color: #ffffff;
751 min-width: 330px;
752 text-transform: uppercase;
753 min-height: 50px;
754 }
755 .modal-extensao-aluno__btn:hover {
756 color: #fff;
757 background-color: #3fb25c!important;
758 border-color: transparent;
759 color: #ffffff;
760 }
761 .modal-extensao-ico-percent {
762 background-color: blue;
763 color: #fff;
764 font-size: 48px;
765 border-radius: 50%;
766 padding: 10px 18px;
767 }
768
769 .btn-preco-ex-aluno,.btn-preco-padrao{
770
771 background:none;
772 border: none;
773 width: 100%;
774 display: flex;
775 align-items: center;
776 justify-content: space-between;
777 text-align: left;
778 font-size: 14px;
779 }
780
781 .custom-icon-right{
782 transform: rotate(0);
783 transition: all 0.5s;
784 }
785
786 .custom-icon-right-active{
787 transform: rotate(90deg);
788 }
789
790 .ssp-divisor{
791 width: 100%;
792 color: #D7D7DB;
793 margin: 15px 0;
794 }
795
796
797 @media only screen and (max-width: 768px){
798
799 .modal-extensao_content{
800 width:336px;
801 padding: 60px 20px 20px 20px;
802 }
803
804 .modal-extensao__btn{
805 width: 100%;
806 }
807
808 .modal-extensao-modal-extensao__btn {
809 float: initial;
810 width: 234px;
811 }
812 .modal-extensao-btn-conheca {
813 float: initial;
814 width: 100%;
815 margin-left: 0px;
816 }
817 .modal-extensao-aluno__btn {
818 min-width: 234px;
819 }
820 .modal-extensao-btn-conferir{
821 min-width: 234px;
822 margin-left: 0px;
823 }
824 }
825
826
827/* Emed */
828.ssp-btn-emed__voltar-curso {
829 border: 1px solid #474F61;
830 color: #474F61;
831 max-width: 372px;
832 margin-left: 60px;
833 height: 50px;
834 padding: 12px!important;
835}
836
837@media (max-width: 768px) {
838 .ssp-btn-emed__voltar-curso {
839 font-size: 14px;
840 margin-left: 0px!important;
841 }
842}
843
844@media only screen and (max-width: 767px){
845 .ssp:not(.liferay-instance) .ssp-emed-visita-text {
846 margin: 0;
847 transform: none;
848 margin-left: 10px;
849 }
850}
851
852.ssp:not(.liferay-instance) .icon-map-adress::after {
853 padding: 0 8px 0 0;
854}
855
856.ssp:not(.liferay-instance) .ssp-card-oferta-curso__mensagem-legal {
857 margin: 5px 0;
858}
859
860.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento {
861 width: 100%;
862 color: white !important;
863 font-size: 15px;
864 font-weight: 600;
865 margin: 10px 0;
866}
867
868.ssp-modal-emed-info-txt-matricula {
869 display: inline-block;
870}
871.ssp:not(.liferay-instance) .btn-card-investimento.--inscreva-se.disabled, .ssp:not(.liferay-instance) a.btn.btn-success.disabled.manutencao {
872 background: #BFC3C9 !important;
873 color: #454F63!important;
874 opacity: 1!important;
875 font-size: 14px;
876 border:none;
877}
878
879.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento.--bolsas.disabled {
880 background: #E5E8ED;
881 color: #454F63!important;
882 opacity: 1;
883 font-size: 14px;
884}
885
886.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .btn-card-investimento.--inscreva-se {
887 background-color: #5acc75;
888 text-transform: none;
889}
890
891.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .link-descontos-parcelamentos {
892 font-weight: 600;
893}
894
895.ssp:not(.liferay-instance) .ssp-card-oferta-curso__sem-vaga-title {
896 margin: 0;
897}
898
899.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-container {
900
901 padding: 0;
902
903}
904
905.ssp:not(.liferay-instance) .ssp-ofertas-emed__filtro-content {
906 padding: 40px 0;
907}
908
909.ssp:not(.liferay-instance) .ssp-ofertas-emed__card-info-investimento .txt-boleto-cartao {
910 text-align: center;
911}
912.ssp-card-modal-emed-lineou {
913height: 1px;
914 background-color: #FC7834;
915 text-align: center;
916 width: 50%;
917 margin: 0px auto;
918 margin-bottom: 15px;
919}
920.ssp-card-modal-emed-lineou span {
921background-color: white;
922 position: relative;
923 top: -0.8em;
924 padding: 0 19px;
925 font-weight: bold;
926 color: #2A2E43;
927 font-size: 15px;
928}
929.ssp-modal-emed-txtValor {
930 font-size: 16px;
931 color: #04488C;
932 font-weight: bold;
933}
934.ssp-card-modal-emed-centralizaPagtos{
935max-width: 285px;margin:0 auto; margin-top: 18px!important;
936}
937.ssp-card-modal-forma-pagamento__tipos-content p {
938 font-weight: 500!important;
939}
940.textoCartoesAceitos {
941 font-weight: 500!important;
942}
943.ssp-card-modal-emed-valorObs {
944 color: #004A8C;
945 display: flex;
946 justify-content: center;
947 font-weight: 500;
948 padding-top: 11px;
949 font-size: 14px;
950}
951.ssp-card-modal-emed-boxDesconto{
952 border: 0!important;
953 font-weight: 500!important;
954 background-color: #F7F7F7;
955 border-radius: 13px;
956 padding: 20px 40px!important;
957 margin-bottom: 0!important;
958}
959.ssp-modal-emed-boxoito {
960 padding: 5px 45px!important;
961 text-align: center;
962 border-bottom: 0px!important;
963}
964.ssp-modal-emed-btfechar {
965 position: absolute;
966 right: 0;
967 display: flex;
968 flex-direction: column;
969 text-align: center;
970 line-height: 0.9;
971 top: -48px;
972 color: #E4E8F0;
973 font-weight: 500;
974 font-size: 14px;
975}
976.ssp-card-modal-forma-pagamento__btn-close:hover {
977 opacity: .6;
978}
979.ssp-card-modal-emed-ano {
980 font-weight: 500;
981 font-size: 22px;
982 color: #454F63;
983}
984.ssp:not(.liferay-instance) [data-info="msg-20-desconto"] {
985 font-weight: 500!important;
986
987}
988.ssp-card-modal-emed-valorObs i {
989 padding-top: 2px;
990 padding-right: 3px;
991}
992button[id^="btnComprarEmedModal_"] {
993 height: 50px;
994 font-weight: 600;
995 max-width: 372px;
996 width: 100%;
997 margin: 0 auto;
998 /* margin-left: 60px; */
999 display: block;
1000 height: 50px;
1001 padding: 12px !important;
1002
1003}
1004.obsspan {
1005 justify-content: left;
1006 padding-bottom: 10px;
1007}
1008
1009.emed_transferencia_texto{
1010 font-size:20px!important;;
1011}
1012
1013
1014@media only screen and (max-width: 767px){
1015
1016 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__mensagem-legal {
1017 width: 100%;
1018 }
1019
1020 .ssp-card-modal-emed-valorObs {
1021 font-size: 12px;
1022 }
1023 .obsspan {
1024 justify-content: left;
1025 margin-left: -14px!important;
1026 }
1027 .ssp-modal-emed-boxoito {
1028 padding: 5px 0px!important;
1029 }
1030 .ssp-modal-emed-info-txt-matricula {
1031 display: inherit;
1032 }
1033 .ssp-card-modal-emed-boxDesconto{
1034 padding: 20px 20px!important;
1035 font-size: 12px!important;
1036 }
1037 .ssp:not(.liferay-instance) [data-info="msg-20-desconto"] {
1038 font-size: 12px !important;
1039 font-weight: 500!important;
1040 }
1041 .ssp-modal-emed-btfechar {
1042 font-size: 12px;
1043
1044 }
1045 button[id^="btnComprarEmedModal_"] {
1046 height: 50px;
1047 padding: 10px;
1048 border-radius: 4px;
1049 margin-left: 0px!important
1050 }
1051 button[id^="btnComprarEmedModal_"] span {
1052 font-size: 15px;
1053 font-weight: 600;
1054 }
1055 .ssp-btn-emed__voltar-curso_0 {
1056 font-weight: 600!important;
1057 height: 50px;
1058 border-radius: 4px!important;
1059 padding: 14px!important;
1060 }
1061
1062 .emed_transferencia_texto{
1063 font-size:16px!important;
1064 }
1065
1066}
1067
1068@media screen and (min-width: 1200px){
1069 .ssp-col-lg-without {
1070 flex: unset;
1071 width: unset;
1072 }
1073}
1074@media screen and (max-width: 1199px){
1075 .ssp-desconto-2022 .modal-extensao_txteconomiza {
1076 font-size: 12px !important;
1077 }
1078 .ssp-filters-px {
1079 padding: 0 !important;
1080 }
1081 .ssp-switch-label {
1082 margin: auto 0 !important;
1083 }
1084 .ssp-switch-label-message {
1085 margin-top: 10px;
1086 margin-bottom: 10px;
1087 padding-right: 0 !important;
1088 padding-left: 0 !important;
1089 }
1090 .ssp-container-selecione-unidade [name="unidades-ofertas"] {
1091 max-width: 316px!important;
1092 }
1093 .ssp-detalhe-curso-titulo-filter {
1094 font-size: 16px !important;
1095 }
1096}
1097
1098
1099.ssp-filters-px {
1100 padding: 0 80px;
1101}
1102/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
1103/* !!!!!!! CSS Destinado ao switch(toggle) !!!!!!! */
1104/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
1105.ssp-switch {
1106 position: relative;
1107 display: inline-block;
1108 width: 63px;
1109 height: 32px;
1110}
1111
1112.ssp-switch input {
1113 opacity: 0;
1114 width: 0;
1115 height: 0;
1116}
1117
1118.ssp-switch-label {
1119 margin: auto 15px;
1120 font: normal normal 600 16px/19px Montserrat;
1121 letter-spacing: 0px;
1122 color: #FFFFFF;
1123 white-space: nowrap;
1124}
1125
1126.ssp-switch-label-section {
1127 font: normal normal 600 18px/22px Montserrat;
1128 margin-bottom: 11px;
1129}
1130
1131.ssp-switch-label-message {
1132 font: normal normal medium 16px/19px Montserrat !important;
1133 letter-spacing: 0px;
1134 color: #FFFFFF;
1135 margin-top: 16px;
1136 padding-left: 25px;
1137 padding-right: 25px;
1138}
1139
1140.ssp-switch-divider {
1141 border-bottom: 1px solid #4a4d5f;
1142 width: 100%;
1143}
1144
1145.ssp:not(.liferay-instance) .ssp-detalhe-curso-titulo-filter.ssp-detalhe-curso-titulo-filter {
1146 font-size: 21px;
1147}
1148
1149.ssp-switch-slider {
1150 position: absolute;
1151 cursor: pointer;
1152 top: 0;
1153 left: 0;
1154 right: 0;
1155 bottom: 0;
1156 background-color: #00000000;
1157 border: 1px solid #FFFFFF;
1158 -webkit-transition: .4s;
1159 transition: .4s;
1160}
1161
1162.ssp-switch-slider:before {
1163 position: absolute;
1164 content: "";
1165 height: 21px;
1166 width: 21px;
1167 left: 4px;
1168 bottom: 4px;
1169 background-color: white;
1170 -webkit-transition: .4s;
1171 transition: .4s;
1172}
1173
1174input:checked + .ssp-switch-slider {
1175 background-color: #5ACC75;
1176 border: 1px solid #5ACC75;
1177}
1178input:checked + .ssp-switch-slider-secondary {
1179 background-color: #2967F4;
1180 border: 1px solid #2967F4;
1181}
1182
1183input:focus + .ssp-switch-slider {
1184 box-shadow: 0 0 1px #5ACC75;
1185}
1186input:focus + .ssp-switch-slider-secondary {
1187 box-shadow: 0 0 1px #2967F4;
1188}
1189
1190input:checked + .ssp-switch-slider:before {
1191 -webkit-transform: translateX(33px);
1192 -ms-transform: translateX(33px);
1193 transform: translateX(33px);
1194}
1195
1196/* Rounded sliders */
1197.ssp-switch-slider.round {
1198 border-radius: 34px;
1199}
1200
1201.ssp-switch-slider.round:before {
1202 border-radius: 50%;
1203}
1204
1205/*Utilizado no modal de registro de interesse #9309*/
1206option[value=""][disabled] {
1207 display: none;
1208}
1209/* Css para botao de idiomas online */
1210
1211.btn-idiomas__aula-online{
1212 background:#5382FF;
1213 color:white!important;
1214 text-decoration:none!important;
1215 padding:11px 14px;
1216 border-radius:4px;
1217 font-size:13px;
1218 font-weight:600;
1219 transition:.3s;
1220}
1221
1222.btn-idiomas__aula-online:hover{
1223 background:#5275D1;
1224 font-weight:600!important;
1225}
1226
1227.title-idioma-online__modal,.icon-wifi-title__modal{
1228 color:#5382FF!important;
1229 font-size:25px!important;
1230 margin:0!important;
1231 margin-right:5px!important;
1232}
1233
1234.btn-modal-entendi__idioma-online{
1235 font-size:16px!important;
1236 font-weight:600!important;
1237 color:#5382FF!important;
1238 border:#5382FF 1px solid!important;
1239 padding:15px 142px;
1240 width:auto!important;
1241}
1242
1243.btn-modal-entendi__idioma-online:hover{
1244 font-size:16px!important;
1245 font-weight:600!important;
1246 color:#5382FF!important;
1247 border:#5382FF 1px solid!important;
1248 background:white!important;
1249}
1250
1251@media only screen and (max-width: 768px){
1252
1253 .title-idioma-online__modal,.icon-wifi-title__modal{
1254 color:#5382FF!important;
1255 font-size:21px!important;
1256 margin:0!important;
1257 margin-right:5px!important;
1258 }
1259
1260 .btn-modal-entendi__idioma-online{
1261 font-size:16px!important;
1262 font-weight:600!important;
1263 color:#5382FF!important;
1264 border:#5382FF 1px solid!important;
1265 padding:12px 30%;
1266 width:auto!important;
1267 }
1268
1269}
1270
1271.btn-emed-lista-espera{
1272 background-color:#C560C7!important;
1273}
1274
1275.ssp:not(.liferay-instance) .ssp-container__form-select {
1276 max-width: 430px;
1277 width:100%;
1278}
1279
1280
1281@media (max-width: 768px){
1282 .ssp:not(.liferay-instance) .ssp-ofertas-emed__card {
1283 margin: 10px 20px;
1284 max-width: 335px;
1285 }
1286}
1287
1288/* css EMED Registro de interesse */
1289
1290.emed #periodo-registro-interesse,.emed #turmas-registro-interesse{
1291
1292 display: flex;
1293 align-items: center;
1294 padding: 0.625rem 0;
1295 width: 85%;
1296 justify-content: space-between;
1297 margin: 0 auto;
1298
1299}
1300
1301.ssp-card-registro-interesse__title-section-itens{
1302 margin: 10px 0 11.5px 0 !important;
1303 font-size: 20px;
1304 flex-basis: 120px;
1305}
1306
1307.ssp-card-registro-interesse__check-itens-content {
1308 display: flex!important;
1309 justify-content: center!important;
1310 flex: 0 1 90%!important;
1311}
1312.ssp-card-registro-interesse__check-item {
1313 display: flex;
1314 align-items: center;
1315 flex-basis: 100px;
1316}
1317
1318.ssp-card-registro-interesse label {
1319 margin-right: 0!important;
1320}
1321
1322.ssp-card-registro-interesse [type="checkbox"] {
1323box-shadow: 0px 0px 6px #00000029;
1324}
1325
1326#cursos-registro-interesse,#unidades-registro-interesse{
1327padding: 10px 0;
1328}
1329
1330.emed-select-group{
1331
1332box-shadow: 0px 0px 12px #00000010;
1333border: 1px solid #6E6E6E;
1334border-radius: 4px;
1335padding: 1.0rem 1.125rem;
1336margin: 1rem 0;
1337
1338}
1339
1340.ssp:not(.liferay-instance) .ssp-card-registro-interesse__add-mais > a {
1341 color: #457eff !important;
1342 }
1343
1344.emed .ssp-card-registro-interesse__btn-enviar {
1345background-color: #C560C7 !important;
1346}
1347
1348.ssp-card-registro-interesse__title-modal{
1349color:#C560C7 !important;
1350font-size: 35px !important;
1351font-weight: bold !important;
1352margin: 0 !important;
1353}
1354
1355#msg-transferencia-emed{
1356display: flex;
1357justify-content: center;
1358flex: wrap;
1359flex-direction: column;
1360align-items: center;
1361padding: 1rem 0;
1362}
1363
1364.transferencia-emed-title {
1365 color: #d266d4;
1366 display: flex;
1367 gap: 10px;
1368 font-size: 16px;
1369 font-weight: bold;
1370 align-items:center;
1371}
1372
1373.transferencia-emed-title p {
1374 margin: 0 !important;
1375 font-weight: bold !important;
1376 font-size: 16px!important;
1377}
1378
1379.transferencia-emed-link a{
1380 font-size: 15px;
1381 font-weight: 500!important;
1382 color: #792F7A;
1383 display: block;
1384 text-align: center;
1385}
1386
1387.transferencia-emed-link a:hover {
1388 font-weight: 500!important;
1389 color: #792F7A;
1390}
1391
1392.emed .ssp-card-registro-interesse__label-curso-selecionado{
1393color:#2A2E43!important;
1394font-weight: bold!important;
1395font-size: 28px;
1396}
1397
1398
1399/* css para registro de interesse atual */
1400
1401#periodo-registro-interesse,#dias-registro-interesse{
1402padding: .625rem 0;
1403}
1404
1405/* css card sem turma e registro de interesse emed*/
1406
1407.slick-area-emed {
1408 display: -webkit-box !important;
1409 display: -ms-flexbox !important;
1410 display: flex !important;
1411 -webkit-box-align: center;
1412 -ms-flex-align: center;
1413 align-items: center;
1414 -webkit-box-pack: center;
1415 -ms-flex-pack: center;
1416 justify-content: center;
1417 font-size: 0;
1418 -ms-flex-wrap: nowrap;
1419 flex-wrap: nowrap;
1420 }
1421
1422 .slick-area-emed .slick-track, .slick-area-emed .slick-list {
1423 width: 100%;
1424 }
1425
1426 @media only screen and (max-width: 1199px) and (min-width: 768px) {
1427 .slick-area-emed--md-bleed {
1428 width: 100vw;
1429 left: calc(-1 * calc(50vw - (740px / 2) + 37px))!important;
1430 }
1431 .slick-area-emed--md-bleed .slick-list {
1432 padding-left: calc(calc(50vw - (768px / 2) + 37px));
1433 padding-right: calc(calc(50vw - (768px / 2) + 37px));
1434 }
1435 .slick-area-emed--md-bleed .slick-arrow {
1436 display: none !important;
1437 }
1438 }
1439
1440 @media only screen and (min-width: 376px) and (max-width: 1024px) {
1441 .slick-area-emed--md-bleed {
1442 width: 100vw;
1443 left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px));
1444 }
1445 .slick-area-emed--md-bleed .slick-list {
1446 padding-left: 2px;
1447 }
1448 .slick-area-emed--md-bleed .slick-arrow {
1449 display: none !important;
1450 }
1451 }
1452
1453 @media only screen and (max-width: 375px) {
1454
1455 .ssp-emed__card-slider-body {
1456 padding: 25px 30px;
1457 }
1458
1459
1460 .slick-area-emed--md-bleed {
1461 width: 100vw;
1462 left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px));
1463 }
1464 /* .slick-area-emed--md-bleed .slick-list {
1465 padding-left: 20px;
1466
1467 } */
1468 .slick-area-emed--md-bleed .slick-arrow {
1469 display: none !important;
1470 }
1471 }
1472
1473 .slick-area__item {
1474 display: flex;
1475 flex-basis: auto;
1476 }
1477
1478 .ssp-emed__section__textCard {
1479 margin: 20px 0 0 0;
1480}
1481
1482 .ssp-emed__card-slider-body {
1483 padding: 25px 50px;
1484 min-height: 350px;
1485 display: flex;
1486 flex-direction: column;
1487 }
1488
1489 .slick-area__item {
1490 display: flex;
1491 flex-basis: auto;
1492 }
1493
1494 .ssp-emed__card-slider-body a {
1495 text-decoration: none!important;
1496 font-weight: normal;
1497 color: #78849E
1498 }
1499
1500 .ssp-emed__card-slider-body a:hover {
1501 font-weight: bold!important;
1502 color: #2a2e43
1503 }
1504
1505 .ssp-emed__card-slider {
1506 border-radius: 12px;
1507 background: transparent;
1508 -webkit-box-shadow: 0 0 12px 0 rgb(0 0 0 / 16%);
1509 box-shadow: 0 0 12px 0 rgb(0 0 0 / 16%);
1510 margin: 12px;
1511 position: relative;
1512 overflow: hidden;
1513 color: #ffffff!important;
1514 border: 1px solid #fff;
1515 min-height: 350px;
1516 }
1517
1518 .slick-initialized .slick-track {
1519 display: flex;
1520 }
1521
1522 .slick-initialized .slick-slide {
1523 height: inherit!important;
1524 display: flex;
1525 }
1526
1527 .ssp-emed__section__titleCard {
1528 font-size: 28px !important;
1529 color: #ffffff !important;
1530 margin: 0 !important;
1531 display: flex !important;
1532 justify-content: flex-start !important;
1533 flex-direction: row !important;
1534 align-items: start !important;
1535 flex-basis: 60px;
1536}
1537
1538.ssp-emed__section__titleCard i {
1539 font-size: 28px;
1540 color: #ffffff;
1541 margin: 0 0.85rem 0 0;
1542 line-height: 30px;
1543}
1544
1545.ssp-emed__section__titleCard i.fa-envelope {
1546 margin-top: 0px;
1547}
1548
1549.ssp-emed__section__titleCard i.fa-users-class {
1550 margin-top:2px;
1551}
1552
1553.ssp-emed__section__titleCard div {
1554 text-decoration: underline;
1555 font-size: 28px !important;
1556 font-weight: bold;
1557 margin: 0!important;
1558 transform:translateY(-2px)
1559}
1560
1561 .ssp-emed__section__introCard {
1562 display: block;
1563 font: 28px/30px 'Montserrat';
1564 font-weight: 600;
1565 margin: 20px 0;
1566 color: #ffffff;
1567 }
1568
1569 .ssp-emed__section__introCardCTA {
1570 font: 34px/36px 'Montserrat';
1571 font-weight: bold;
1572 display: block;
1573 margin: 20px 0;
1574 color: #ffffff;
1575 }
1576
1577 .ssp-emed__section__textCard {
1578 font: 22px/30px 'Montserrat';
1579 color: #ffffff;
1580 display: block;
1581 margin: 20px 0 0 0;
1582 position: relative;
1583 }
1584
1585 .ssp-emed__iconWrapper {
1586 display: inline-block;
1587 width: 50px;
1588 color: #B053B2;
1589 position: absolute;
1590 bottom: 0;
1591 right: 0;
1592 }
1593
1594 .ssp-emed__btn {
1595 background-color: #B053B2 ;
1596 color: #fff!important;
1597 font: normal normal 600 18px/22px Montserrat;
1598 box-shadow: 0px 4px 16px #455B6314;
1599 width: 100%;
1600 transition: .3s;
1601 padding:10px!important;
1602 }
1603
1604 .ssp-emed__btn:hover {
1605 opacity: 0.7;
1606 }
1607
1608 /*mobile emed*/
1609 @media only screen and (max-width: 1024px) {
1610 .slick-area-emed .slick-dots li.slick-active button:before {
1611 opacity: .75;
1612 color: #707070;
1613 }
1614
1615 .slick-area-emed .slick-dots li button:before {
1616 color: blue;
1617 }
1618
1619 .ssp-card-detalhe-curso__secundary-info-carga-horaria {
1620 min-width: 35%;
1621 text-align: end;
1622 }
1623 }
1624
1625 @media only screen and (max-width: 1199px) and (min-width: 768px) {
1626 .slick-area-emed--md-bleed {
1627 width: 100vw;
1628 left: calc(-1 * calc(50vw - (740px / 2) + 37px))!important;
1629 }
1630 .slick-area-emed--md-bleed .slick-list {
1631 padding-left: calc(calc(50vw - (768px / 2) + 37px));
1632 padding-right: calc(calc(50vw - (768px / 2) + 37px));
1633 }
1634 .slick-area-emed--md-bleed .slick-arrow {
1635 display: none !important;
1636 }
1637 }
1638
1639 @media only screen and (min-width: 375px) and (max-width: 1024px) {
1640 .slick-area-emed--md-bleed {
1641 width: 100vw;
1642 left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px));
1643 }
1644 .slick-area-emed--md-bleed .slick-list {
1645 padding-left: 2px;
1646 }
1647 .slick-area-emed--md-bleed .slick-arrow {
1648 display: none !important;
1649 }
1650 .ssp-emed__section__titleCard {
1651 align-items: start !important;
1652 }
1653
1654 .ssp-emed__section__titleCard div {
1655 font-weight: bold !important;
1656 }
1657
1658 .ssp-emed__section__titleCard i {
1659 font-weight: 300 !important;
1660 font-size: 28px !important;
1661 margin: 3px 0.85rem 0 0;
1662 }
1663
1664 .transferencia-emed-title {
1665 font-size: 12px;
1666 }
1667
1668 .ssp:not(.liferay-instance) .ssp-card-registro-interesse__select {
1669 background-size: 15px 15px !important;
1670 padding: 0 10px;
1671 }
1672 }
1673
1674 @media only screen and (max-width: 550px) {
1675
1676 .ssp-emed__section__introCardCTA{
1677 font-size: 28px;
1678 }
1679
1680 #msg-transferencia-emed{
1681 gap:12px;
1682 }
1683
1684
1685
1686 .ssp-emed__card-slider {
1687 width:335px;
1688 min-height: 440px;
1689 }
1690
1691 .slick-initialized .slick-track {
1692 display: flex;
1693 }
1694
1695 .slick-initialized .slick-slide {
1696 height: inherit!important;
1697 display: flex;
1698 min-height: 440px;
1699 }
1700
1701 .ssp-emed__card-slider-body {
1702 padding: 25px 30px;
1703 }
1704
1705 .ssp-emed__section__titleCard div {
1706 transform: translateY(-5%);
1707 font-size: 24px!important;
1708 }
1709
1710 .slick-area-emed--md-bleed {
1711 width: 100vw;
1712 left: calc(-1 * (calc(100vw / 2) - calc(310px / 2) - 3px));
1713 }
1714 .slick-area-emed--md-bleed .slick-list {
1715 padding-left: 20px;
1716 }
1717 .slick-area-emed--md-bleed .slick-arrow {
1718 display: none !important;
1719 }
1720
1721 .ssp-card-registro-interesse__title-section-itens {
1722 flex-basis: 80px;
1723 }
1724
1725 .emed #periodo-registro-interesse, .emed #turmas-registro-interesse {
1726 width: 95%;
1727 }
1728
1729 .emed .ssp:not(.liferay-instance) .ssp-card-registro-interesse label {
1730 margin: 0!important;
1731 }
1732
1733 .emed .ssp-card-registro-interesse.emed [type="checkbox"] {
1734 margin-left: 0!important;
1735 }
1736
1737 .emed .ssp-card-registro-interesse__check-item {
1738 flex-basis: 100px;
1739 }
1740 }
1741
1742 .emed-select-group {
1743 box-shadow: 0px 0px 12px #00000010;
1744 border: 1px solid #6E6E6E;
1745 border-radius: 4px;
1746 margin: 1rem 0;
1747}
1748
1749.emed-select-group h4 {
1750 margin: 15px 0 10px 0;
1751}
1752.ssp-emed__section__textCard {
1753 margin: 20px 0 0 0;
1754}
1755
1756.ssp-card-msg-sucesso__btn{
1757 font-size: 20px;
1758}
1759
1760.ssp:not(.liferay-instance) .ssp-card-oferta-curso {
1761 height:fit-content;
1762}
1763
1764.ssp-card-duvida__bolsa-estudo{
1765
1766background:#DCE8FF;
1767padding: 30px;
1768max-width: 683px;
1769width: 100%;
1770border-radius: 14px;
1771display:flex;
1772justify-content:center;
1773align-items: center;
1774gap: 20px;
1775margin: 1rem auto;
1776
1777}
1778
1779.ssp-card-duvida__bolsa-estudo p{
1780
1781font-size: 16px!important;
1782font-weight: bold!important;
1783color: #2967F4!important;
1784margin: 0!important;;
1785
1786}
1787
1788.ssp-card-duvida__bolsa-estudo a{
1789
1790border:1px solid #2967F4!important;
1791font-size: 14px!important;
1792font-weight: 600;
1793text-decoration: none!important;
1794color: #2967F4!important;
1795padding:14px 27px;
1796border-radius:6px;
1797transition: .3s;
1798
1799}
1800
1801.ssp:not(.liferay-instance) .ssp-card-duvida__bolsa-estudo a:hover{
1802
1803font-size: 14px!important;
1804font-weight: 600!important;
1805background: #2967F4!important;
1806color:white !important;
1807opacity:1!important;
1808
1809}
1810
1811@media only screen and (max-width: 768px){
1812
1813.ssp-card-duvida__bolsa-estudo{
1814
1815 background:#DCE8FF;
1816 padding: 20px;
1817 flex-flow: column;
1818 width:90%;
1819
1820}
1821
1822.ssp-card-duvida__bolsa-estudo p{
1823
1824 max-width:200px;
1825 text-align: center;
1826
1827}
1828
1829.ssp-card-duvida__bolsa-estudo a{
1830
1831 padding:16px 27px;
1832
1833}
1834
1835}
1836
1837/* Novo Card de Oferta */
1838
1839 /* ajustes no card existente */
1840
1841 .ssp:not(.liferay-instance) .ssp-card-oferta__info-turma{
1842 margin-bottom: 30px;
1843 }
1844
1845 .ssp:not(.liferay-instance) .ssp-card-oferta__info-turma-content {
1846 margin-bottom: 5px;
1847 }
1848
1849 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__item-data-periodo{
1850 margin: 5px 0 10px 0;
1851 }
1852
1853 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item {
1854 border-radius: 0;
1855 background-color: unset;
1856 padding: 0;
1857 max-width: 100%;
1858 width: 100%;
1859 margin: 0;
1860 }
1861
1862 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora_content{
1863 margin:0;
1864 opacity: 0;
1865 transition: 0.3s;
1866 }
1867
1868 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__dia {
1869 margin: 0;
1870 font-size: 17px;
1871 font-weight: bold;
1872 font-stretch: normal;
1873 font-style: normal;
1874 line-height: 1.23;
1875 letter-spacing: normal;
1876 text-align: center;
1877 }
1878
1879 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__hora {
1880 margin: 0;
1881 font-size: 17px;
1882 font-weight: bold;
1883 font-stretch: normal;
1884 font-style: normal;
1885 line-height: 1.3;
1886 letter-spacing: normal;
1887 text-align: center;
1888 }
1889
1890 .modal-extensao_txteconomiza{
1891 font-size: 14px;
1892 color: #454F63;
1893 font-weight: 400;
1894 }
1895
1896 .btn.btn-lg {
1897 padding:.7rem;
1898
1899 }
1900
1901 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__desconto-content p{
1902 font-size: 17px;
1903 }
1904
1905 .ssp-card-oferta-curso__item-valor-investimento{
1906 font-size: 38px;
1907 }
1908
1909 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content .ssp-card-oferta-curso__formas-pagamento-content__title{
1910 color: #454F63;
1911 font-weight: bold!important;
1912 font-size: 14px;
1913}
1914
1915.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content .ssp-card-oferta-curso__formas-pagamento-content__icon-credit-card::after{
1916 color: #454F63!important;
1917 font-size: 14px;
1918}
1919
1920.ssp-card-modal-forma-pagamento__icon-boleto-e-cartao{
1921 font-size: 18px!important;
1922 margin-right: 15px!important;
1923}
1924
1925
1926.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content span{
1927 color:#454F63;
1928 font-size: 14px;
1929 font-weight: 400;
1930}
1931
1932.ssp:not(.liferay-instance) .ssp-card-oferta-curso__formas-pagamento-content {
1933 padding-bottom: 0;
1934}
1935
1936 /* local realizacao */
1937
1938 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__title {
1939 font-size: 13px;
1940 color: #00488C;
1941 font-weight: 600;
1942 text-decoration: none!important;
1943 border: 1px solid #00488C;
1944 padding: 11px 14px;
1945 transition:.3s;
1946 border-radius: 4px;
1947 display: flex;
1948 gap: 5px;
1949 align-items: center;
1950 }
1951
1952 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__local-realizacao-content__title:hover {
1953 color: white;
1954 font-weight: 600!important;
1955 background: #08488C;
1956 }
1957
1958 .container-local-realizacao {
1959 padding:0;
1960 border:0;
1961 border-radius: unset;
1962 width: 100%;
1963 margin: 10px 0 0 0;
1964 box-shadow: none;
1965 display: flex;
1966 justify-content:center;
1967 align-items: flex-end;
1968 }
1969
1970 .icon-local-realizacao{
1971 color: #00488C;
1972 font-size: 13px;
1973 }
1974
1975
1976 @media only screen and (max-width: 768px){
1977
1978 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__dia-hora-item__dia {
1979 font-size: 16px;
1980 }
1981
1982 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__title-item {
1983 font-size: 14px!important;
1984 }
1985
1986 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__valor-desconto{
1987 font-size: 15px;
1988 }
1989
1990 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__item-valor-investimento {
1991 font-size: 33px;
1992 }
1993
1994 .icon-local-realizacao {
1995 font-size: 12px;
1996 }
1997
1998 .modal-extensao_txteconomiza {
1999 font-size: 12px;
2000 }
2001
2002 .content-valores-descontos {
2003 padding-bottom: 8px!important;
2004 }
2005
2006 .ssp:not(.liferay-instance) .ssp-card-oferta-curso__desconto-content p{
2007 font-size: 14px!important;
2008 }
2009
2010
2011 }
2012
2013
2014
2015
2016/* final ajustes no card existente */
2017
2018
2019/* Novos elementos */
2020
2021.content-data-dias{
2022 padding:20px;
2023 padding-top:0;
2024 border-bottom: none !important;
2025}
2026
2027.content-valores-descontos{
2028 padding:20px 0 0 0;
2029 opacity: 1;
2030 height:auto;
2031 transition: 0.3s;
2032 overflow: hidden;
2033 border-top: 1px #E4E8F0 solid;
2034}
2035
2036.content-valores-descontos.hide-price{
2037
2038 padding:0;
2039 opacity: 0;
2040 height:0;
2041
2042}
2043
2044.content-btn-bolsa{
2045
2046 border-top: 1px #E4E8F0 solid;
2047 padding-top:20px;
2048
2049}
2050
2051.content-btn-bolsa.modifier-content-show{
2052
2053 padding-bottom: 20px;
2054
2055}
2056
2057.content-btn-bolsa.modifier-content-show .ou-separator-desconto{
2058 display:none;
2059}
2060
2061.content-btn-bolsa.modifier-content-show .btn-show-price{
2062 display:none;
2063}
2064
2065.content-buttons{
2066
2067 padding:20px 0 0 0;
2068
2069}
2070
2071.block-valor-desconto{
2072
2073 background-color:#F2F6FF;
2074 padding: 30px 10px 15px 10px;
2075 border-radius:12px;
2076 position: relative;
2077
2078}
2079
2080.block-valor-desconto .ssp-card-oferta-curso__item-valor-investimento span {
2081 font-size: 18px;
2082}
2083
2084.block-valor-total{
2085
2086 background-color:#F2F6FF;
2087 padding:15px 10px;
2088 border-radius:12px;
2089 position: relative;
2090
2091}
2092
2093.block-valor-total .ssp-card-oferta-curso__title-item{
2094 font-size: 16px!important;
2095 color: #454F63!important;
2096 font-weight:500!important;
2097}
2098
2099.block-valor-total .ssp-card-oferta-curso__item-valor-investimento{
2100 font-size:22px;
2101}
2102
2103.block-valor-total .ssp-card-oferta-curso__item-valor-investimento span{
2104 font-size:11px;
2105}
2106
2107.block-valor-total .ssp-card-oferta-curso__desconto-content p{
2108 font-size:14px;
2109 font-weight: 500;
2110}
2111
2112.tag-label-desconto{
2113
2114background-color:#B6FDCF;
2115border-radius: 15px;
2116padding:5px;
2117margin: -50px 20px 10px 20px;
2118
2119}
2120
2121.tag-label-desconto span, .tag-label-desconto small{
2122font-size: 16px!important;
2123font-weight: bold!important;
2124color: #454F63!important;
2125}
2126
2127
2128
2129.ou-separator-desconto{
2130 font-size: 16px;
2131 color: #454F63;
2132 font-weight: bold;
2133 display:flex;
2134 flex-wrap: nowrap;
2135 align-items: center;
2136 justify-content:space-between;
2137 gap: 15px;
2138 padding:20px 0;
2139}
2140
2141.ou-separator-desconto::after{
2142 content: "";
2143 height:2px;
2144 background-color:#E4E8F0;
2145 width: 100%;
2146 display: block;
2147}
2148
2149.ou-separator-desconto::before{
2150 content: "";
2151 height:2px;
2152 background-color:#E4E8F0;
2153 width: 100%;
2154 display: block;
2155}
2156
2157.btn-show-price{
2158
2159 background: unset;
2160 border: 0;
2161 font-size: 14px!important;
2162 color: #454F63!important;
2163
2164}
2165
2166.btn-show-price p{
2167 margin: 0 !important;
2168}
2169
2170.btn-show-price span{
2171 text-decoration: underline;
2172 font-weight: bold;
2173}
2174
2175@media only screen and (max-width: 768px){
2176
2177 .content-data-dias{
2178
2179 padding:20px 0;
2180
2181 }
2182
2183 .ssp-card-oferta-curso__local-realizacao-content__title {
2184
2185 font-size: 14px;
2186 display:flex;
2187 align-items: center;
2188 gap: 5px;
2189 padding: 10px 13px;
2190 }
2191
2192 .ssp-card-oferta-curso__local-realizacao-content__title i{
2193
2194 font-size: 11px;
2195 }
2196
2197 .tag-label-desconto span, .tag-label-desconto small {
2198 font-size: 13px!important;
2199 }
2200
2201 .tag-label-desconto {
2202 padding: 5px;
2203 margin: -50px 12px 10px 12px;
2204 }
2205
2206 .block-valor-desconto .ssp-card-oferta-curso__item-valor-investimento span {
2207 font-size: 18px;
2208 }
2209
2210 .content-buttons {
2211 padding: 10px 0 0 0;
2212 }
2213
2214
2215}
2216
2217/*final Novo card de ofertas*/
2218
2219/* form aprendizagem */
2220
2221[data-modal="modal"]{
2222 background-color: rgba(0,0,0,0.7);
2223 backdrop-filter: blur(10px);
2224 display:none;
2225}
2226
2227[data-modal="close-form-modal"]{
2228
2229 font-size: 22px;
2230 background: unset!important;
2231 color: white!important;
2232 display: flex;
2233 align-items: center;
2234 margin: 0;
2235 padding: 0;
2236 position:absolute;
2237 right:0;
2238 border:0;
2239 gap:5px;
2240 right: 2%;
2241 top: -2%;
2242
2243}
2244
2245[data-modal="close-form-modal"] i{
2246
2247 font-size:43px;
2248 height:fit-content;
2249
2250}
2251
2252.open-modal-form{
2253 position: fixed;
2254 top: 0;
2255 width: 100%;
2256 height: 100%;
2257 z-index: 100;
2258 display: flex;
2259 justify-content: center;
2260 align-items: center;
2261 overflow:auto;
2262
2263}
2264
2265.open-modal-form .ssp_ct_form_programe{
2266 animation-name: animatetop;
2267 animation-duration: .4s;
2268 position:relative;
2269}
2270
2271label .reference-mark {
2272color:#78849e;
2273}
2274.lexicon-icon-asterisk {
2275 color:#78849e;
2276}
2277.lexicon-icon-reload {
2278 margin-left:10px;
2279}
2280.ssp_title_form_programe{
2281 font-size: 42px!important;
2282 color: #ffffff!important;
2283 font-family: "Montserrat",sans-serif;
2284 font-weight:600;
2285 text-align:left;
2286}
2287.ssp_subtitle_form_programe {
2288 margin-top:0px!important;
2289
2290}
2291.ssp_subtitle_form_programe{
2292 font-size: 20px!important;
2293 color: #ffffff!important;
2294 font-family: "Montserrat",sans-serif;
2295 font-weight:600;
2296 text-align:left;
2297}
2298.lfr-ddm-form-page {
2299background-color: #fff;
2300border-radius: 12px 12px 0px 0px;
2301padding: 35px 15px!important;
2302}
2303.ssp:not(.liferay-instance) .form-group label {
2304 color: #78849E;
2305 font: normal normal 600 16px/19px Montserrat;
2306 padding-bottom: 10px;
2307}
2308.lfr-ddm-form-page-description {
2309display: none!important;
2310}
2311.lfr-ddm-form-page-title {
2312display: none!important;
2313}
2314.lfr-ddm-form-submit {
2315background-color: #0380F0;
2316 text-align: center;
2317 float: none!important;
2318 border: 1px solid #0380F0;
2319 border-radius: 6px;
2320 font-size: 16px;
2321 width: 245px;
2322 height: 50px;
2323}
2324.lfr-ddm-form-pagination-controls {
2325background-color: #fff;
2326 text-align: center;
2327 border-radius: 0px 0px 12px 12px;
2328 padding-bottom: 25px;
2329}
2330.ddm-form-name {
2331display: none!important;
2332}
2333.ddm-form-description {
2334display: none!important;
2335}
2336.ddm-form-builder-app {
2337margin-top:35px;
2338}
2339.taglib-captcha {
2340 display: flex;
2341}
2342.input-text-wrapper {
2343 left: 20px;
2344}
2345.lfr-ddm-form-pagination-controls {
2346 padding-top:0px!important;
2347 display:flex;
2348 justify-content:center;
2349 align-items: center;
2350 flex-flow:column;
2351}
2352@media only screen and (max-width: 1024px) {
2353
2354.open-modal-form{
2355
2356 align-items: flex-start;
2357
2358}
2359
2360.ddm-form-builder-app {
2361 margin-top: 15px;
2362}
2363
2364.ssp_title_form_programe{
2365font-size: 34px!important;
2366line-height: 1.2!important;
2367}
2368.ssp_subtitle_form_programe{
2369font-size:18px!important;
2370}
2371.taglib-captcha {
2372 display:block;
2373}
2374.input-text-wrapper {
2375 left:0;
2376}
2377.ssp_ct_form_programe {
2378 padding:0px;
2379 max-width:100%;
2380 padding:40px 20px;
2381}
2382
2383[data-modal="close-form-modal"]{
2384
2385 right: 20px;
2386 top: 0;
2387
2388}
2389
2390}
2391
2392.ssp:not(.liferay-instance) a.btn.btn-success.disabled{
2393 pointer-events: none;
2394 opacity: 0.5 !important;
2395 color: #FFF !important;
2396 background-color: #4CBF69 !important;
2397 cursor: not-allowed;
2398 border: none !important;
2399 font-size: 0.9rem !important;
2400}
2401
2402.slick-list.draggable {
2403 height: auto !important;
2404}
2405
2406.ssp:not(.liferay-instance) .ssp-image-opacity {
2407
2408 opacity: 1;
2409 object-fit: cover;
2410 object-position: center;
2411
2412}
2413
2414.ssp-option-group {
2415 text-align: left;
2416 font: normal normal 600 15px/19px Montserrat;
2417 letter-spacing: 0px;
2418 color: #004A8C;
2419}
2420.ssp-option {
2421 text-align: left;
2422 font: normal normal normal 15px/19px Montserrat;
2423 letter-spacing: 0px;
2424 color: #656565;
2425}
2426@media only screen and (max-width: 768px){
2427 .ssp-option-group {
2428 font: normal normal 600 15px/19px Montserrat;
2429 }
2430 .ssp-option {
2431 font: normal normal normal 15px/19px Montserrat;
2432 }
2433}
2434
2435.open-modal-form.lfr-ddm__default-page-header{
2436 display:none;
2437}
2438
2439/* css para funcionalidade de híbrido */
2440
2441.ssp-emed__vantagens-content.livre span{
2442 color: #FF9057!important;
2443}
2444.ssp-emed__vantagens-content.livre a:hover {
2445 color: white;
2446 background-color: #FF9057!important;;
2447 border: 1px solid #FF9057!important;;
2448}
2449.ssp-emed__vantagens-content.tecnico span{
2450 color: #F7BD23!important;
2451}
2452.ssp-emed__vantagens-content.tecnico a:hover {
2453 color: white;
2454 background-color: #F7BD23!important;;
2455 border: 1px solid #F7BD23!important;;
2456}
2457.ssp-emed__vantagens-content.ensino-medio-tecnico span{
2458 color: #C761CB!important;
2459}
2460.ssp-emed__vantagens-content.ensino-medio-tecnico a:hover{
2461 color: white;
2462 background-color: #C761CB!important;;
2463 border: 1px solid #C761CB!important;;
2464}
2465.ssp-emed__vantagens-content.extensao span{
2466 color: #3ECCA6!important;
2467}
2468.ssp-emed__vantagens-content.extensao a:hover{
2469 color: white;
2470 background-color: #3ECCA6!important;
2471 border: 1px solid #3ECCA6!important;
2472}
2473
2474/* Transferencias EMED */
2475
2476.emed-transferencias-space{
2477 max-width: 772px;
2478}
2479
2480.card-transferencias-emed {
2481 text-align: left;
2482}
2483
2484.card-transferencias-emed .ssp-emed__card-slider-body{
2485 padding: 30px;
2486}
2487
2488.card-pre-inscricao {
2489 text-align: center;
2490}
2491
2492.card-pre-inscricao .ssp-emed__card-slider-body{
2493 justify-content: space-evenly;
2494}
2495
2496.footer-card-card-pre-inscricao{
2497 margin-top: 48px;
2498 }
2499
2500.card-transferencias-emed, .card-pre-inscricao{
2501 span, strong{
2502 font-size: 24px;
2503 }
2504 span{
2505 font-weight: 500;
2506 }
2507 strong{
2508 font-weight: 700;
2509 }
2510 .transferencias-emed-rodape{
2511 margin-top:25px;
2512 span{
2513 font-size:0.9rem;
2514 font-weight: 400;
2515 }
2516 }
2517}
2518
2519@media only screen and (max-width: 768px){
2520 .card-pre-inscricao {
2521 text-align: left;
2522 }
2523
2524 .footer-card-card-pre-inscricao{
2525 margin-top: 24px;
2526 }
2527
2528 .footer-card-card-pre-inscricao strong{
2529 margin-top: 24px;
2530 font-size: 24px!important;
2531 }
2532
2533 .card-pre-inscricao .ssp-emed__card-slider {
2534 width: 100%;
2535 max-width: 329px;
2536 min-height: 390px;
2537 margin: 0;
2538 }
2539
2540 .card-pre-inscricao .ssp-emed__card-slider:nth-child(n+2){
2541 margin: 12px;
2542 }
2543
2544 .card-transferencias-emed, .card-pre-inscricao{
2545 span, strong{
2546 font-size: 16px;
2547 }
2548 .ssp-emed__section__titleCard{
2549 flex-basis: 0;
2550 margin-bottom: 24px!important;
2551 align-items: center!important;
2552 }
2553
2554 .ssp-emed__section__titleCard i{
2555 font-size: 24px!important;
2556 }
2557
2558 .ssp-emed__section__titleCard div{
2559 font-size: 20px !important;
2560 }
2561 }
2562
2563 .slick-area__item.card-pre-inscricao{
2564 min-height: 390px!important;
2565 }
2566
2567 .card-transferencias-emed .ssp-emed__card-slider{
2568 margin: 0;
2569 }
2570
2571 .card-transferencias-emed .ssp-emed__card-slider{
2572 margin: 0;
2573 min-height: 300px;
2574 }
2575
2576 .card-transferencias-emed .col-md-12{
2577 padding: 0;
2578 }
2579
2580 .card-transferencias-emed .transferencias-emed-rodape span{
2581 font-size: 12px;
2582 }
2583
2584 .ssp-ofertas-emed__filtro-content .btn-filtro{
2585 width:156px !important;
2586 font-size:14px !important;
2587 }
2588
2589 #titulo-emed{
2590 text-transform: uppercase;
2591 }
2592
2593 .emed-transferencias-space div:nth-child(n+2){
2594 padding-left:0;
2595 }
2596
2597 .emed-transferencias-space .slick-area-emed--md-bleed{
2598 position: inherit;
2599 }
2600
2601}
2602
2603</style>
2604
2605
2606 <#assign
2607
2608 prefix = "ssp"
2609 nomeVocabularioTipoCurso = 'tipo-de-curso'
2610
2611
2612 nomeVocabularioUnidades = 'unidades'
2613
2614 nomeVocabularioFormato = 'formato'
2615
2616 nomeFormato = ""
2617 nomeVocabularioModalidade = 'modalidade'
2618
2619 nomeModalidade = ""
2620
2621 normalizer = serviceLocator.findService("com.liferay.portal.kernel.util.FriendlyURLNormalizer")
2622
2623 journalArticle = getJournalArticle()
2624 />
2625
2626 <#if journalArticle?contains("#erro#")>
2627 erro
2628 <#else>
2629
2630 <#assign
2631
2632 categories = getCategorias(journalArticle.getResourcePrimKey())
2633
2634 document = saxReaderUtil.read(journalArticle.getContent()).getRootElement()
2635
2636 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='dataEfetivaFTFieldSet']")
2637 dataEfetivaFTFieldSet = xPathSelector.selectSingleNode(document)
2638
2639 xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='dataEfetivaFT']")
2640 dataEfetiva = xPathSelector.selectSingleNode(document)
2641
2642 dataEfetivaSTR = dataEfetiva.elementText("dynamic-content")?string
2643
2644 articleId = journalArticle.getArticleId()
2645
2646 codigoFT = getStringValue(document,'codigoFT')
2647
2648 tituloComercial = journalArticle.getTitle()
2649
2650 objetivo = getStringValue(dataEfetivaFTFieldSet, 'objetivoComercial')
2651
2652 cargaHoraria = getStringValue(dataEfetivaFTFieldSet, 'cargaHorariaTotalFT')
2653
2654 oQueVouAprenderComercial = getStringValue(dataEfetivaFTFieldSet, 'oQueVouAprenderComercial')
2655
2656 comoVouAprenderComercial = getStringValue(dataEfetivaFTFieldSet, 'comoVouAprenderComercial')
2657
2658 possoFazerEsteCursoComercial = getStringValue(dataEfetivaFTFieldSet, 'possoFazerEsteCursoComercial')
2659
2660 tereiCertificadoComercial = getStringValue(dataEfetivaFTFieldSet, 'tereiCertificadoComercial')
2661
2662 tereiDiplomaComercial = getStringValue(dataEfetivaFTFieldSet, 'tereiDiplomaComercial')
2663
2664 precisoEstagiarComercial = getStringValue(dataEfetivaFTFieldSet, 'precisoEstagiarComercial')
2665
2666 comoMeMatricularComercial = getStringValue(dataEfetivaFTFieldSet, 'comoMeMatricularComercial')
2667
2668 oQueMaisPrecisoSaberComercial = getStringValue(dataEfetivaFTFieldSet, 'oQueMaisPrecisoSaberComercial')
2669
2670 normalizedModalidadeName = ""
2671
2672 />
2673
2674 <div style="display: none;">ElasticSearchNaoRetornarFiltro </div>
2675 <input type="hidden" name="codigoFT" value="${codigoFT}" />
2676 <input type="hidden" name="articleId" value="${articleId}" />
2677
2678 <input type="hidden" name="dataEfetivaSTR" value="${dataEfetivaSTR}" />
2679
2680 <input type="hidden" name="codUnidadeSelecionada" value="" />
2681
2682 <#list categories as category>
2683
2684 <#assign
2685 vocabulary = getVocabulary(category.getVocabularyId())
2686 />
2687
2688 <#if normalizer.normalize(vocabulary.getName()) == nomeVocabularioTipoCurso>
2689
2690 <#assign
2691 categoriaTipoCurso = category
2692 normalizedCategoryName = normalizer.normalize(category.getName())
2693 />
2694
2695 <input type="hidden" name="tipoCurso" value="${normalizedCategoryName}" />
2696
2697 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioUnidades>
2698
2699 <input type="hidden" name="unidades" value="${category.getCategoryId()}" data-unidade="${category.getName()}" />
2700
2701 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioModalidade>
2702
2703 <#assign
2704 categoriaModalidade = category
2705 normalizedModalidadeName = normalizer.normalize(category.getName())
2706
2707 />
2708 <input type="hidden" name="modalidadeName" value="${normalizedModalidadeName}" />
2709 <input type="hidden" name="modalidades" value="${normalizedModalidadeName}" />
2710
2711 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioFormato>
2712 <#assign
2713 nomeFormato = category.getName()
2714 />
2715
2716
2717 <#assign idFormato = category.getCategoryId() />
2718 <#if nomeFormato == "Presencial + EAD" >
2719 <input type="hidden" name="formato" value="${category.getCategoryId()}" data-formato="Presencial + EAD" />
2720 <#else>
2721 <input type="hidden" name="formato" value="${category.getCategoryId()}" data-formato="${category.getName()}" />
2722 </#if>
2723 </#if>
2724 </#list>
2725
2726 <#assign xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='imagemComercial']")>
2727
2728 <#if xPathSelector.selectSingleNode(dataEfetivaFTFieldSet)?? >
2729
2730 <#assign imagemStr = xPathSelector.selectSingleNode(dataEfetivaFTFieldSet).getStringValue()>
2731 <#if imagemStr?contains("{") >
2732 <#attempt>
2733 <#assign
2734 imagemJson = jsonFactoryUtil.createJSONObject(imagemStr)
2735 imagemId = getterUtil.getInteger(imagemJson.get('fileEntryId'))
2736 dl = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")
2737 dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")
2738 fileEntry = dl.getFileEntry(imagemId)
2739 imagemAlt = imagemJson.get('alt')
2740 imagemUrl = dlURLHelper.getDownloadURL(fileEntry, fileEntry.getFileVersion(), themeDisplay,null)
2741 />
2742 <#recover>
2743 <#assign
2744 imagemAlt = ""
2745 imagemUrl = ""
2746 />
2747 </#attempt>
2748 <#else>
2749 <#assign imagemUrl = "">
2750 </#if>
2751
2752 <#else>
2753 <#assign imagemUrl = "">
2754 </#if>
2755
2756
2757 <#assign
2758
2759 URLCodec = staticUtil["com.liferay.portal.kernel.util.URLCodec"]
2760 HtmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"]
2761 StringPool = staticUtil["com.liferay.petra.string.StringPool"]
2762 dlFileEntryLocalService = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
2763
2764 xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='quaisMateriaisComercial']")
2765 quaisMateriaisComercialPDFStr = xPathSelector.selectSingleNode(dataEfetivaFTFieldSet).getStringValue()
2766 />
2767
2768 <#if quaisMateriaisComercialPDFStr?contains('classPK') >
2769
2770 <#assign
2771
2772 PDFJson = jsonFactoryUtil.createJSONObject(quaisMateriaisComercialPDFStr)
2773 classPKNumber = PDFJson.classPK?number
2774 fileEntry = dlFileEntryLocalService.getDLFileEntry(classPKNumber)
2775 folderId = fileEntry.getFolderId()
2776 title = fileEntry.getTitle()
2777
2778 quaisMateriaisComercialPDFUrl = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + themeDisplay.getScopeGroupId() + StringPool.SLASH + folderId + StringPool.SLASH + URLCodec.encodeURL(HtmlUtil.unescape(title))
2779 />
2780
2781 <#else>
2782 <#assign quaisMateriaisComercialPDFUrl = "">
2783 </#if>
2784
2785 <#function getFirstArticleStructure categoryId structureName>
2786 <#attempt>
2787 <#assign searchImpl = serviceLocator.findService("br.senac.search.api.Search")>
2788 <#assign companyId = themeDisplay.getCompanyId()>
2789 <#assign groupId = themeDisplay.getScopeGroupId()>
2790 <#assign articles = searchImpl.findArticlesByCategoryIds(companyId, groupId, structureName, (categoryId gt 0)?then([categoryId],[]), true, 0, 1)>
2791 <#if articles?size gt 0>
2792 <#return articles?first>
2793 </#if>
2794 <#return ''>
2795 <#recover>
2796 <#return ''>
2797 </#attempt>
2798 </#function>
2799
2800
2801 <#assign
2802 nomeTipoCurso = categoriaTipoCurso.getName()
2803 nomeCategoriaTipoCurso = categoriaTipoCurso.getName()
2804 idTipoCurso = categoriaTipoCurso.getCategoryId()
2805 />
2806 <input type="hidden" name="nomeCategoriaTipoCurso" value="${nomeCategoriaTipoCurso}" />
2807
2808 <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
2809
2810 <#assign
2811 nomeTipoCurso = categoriaTipoCurso.getName()
2812 />
2813
2814 <input type="hidden" name="idTipoCurso" value="${idTipoCurso}" />
2815
2816 <#elseif (nomeTipoCurso?contains("cnico") && !nomeTipoCurso?contains("EAD") ) || nomeTipoCurso?contains("Livre") >
2817
2818 <#assign
2819 nomeTipoCurso = "Cursos "+ categoriaTipoCurso.getName() + "s"
2820 />
2821
2822 <#else>
2823 <#assign
2824 nomeTipoCurso = categoriaTipoCurso.getName()
2825 />
2826 <#assign nomeTipoCurso = categoriaTipoCurso.getName()/>
2827
2828 </#if>
2829
2830 <#-- Caso o curso seja do formato hibrido, busca o webcontent da pasta Onde as aulas vão acontecer - hibrido -->
2831 <#if nomeFormato == "Presencial + EAD">
2832 <#assign
2833 hibridoStructure = getFirstArticleStructure(idFormato,"formato-hibrido")
2834 documentHibrido = saxReaderUtil.read(hibridoStructure.getContent())
2835 rootElement = documentHibrido.getRootElement()
2836 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='textoFormatoHibrido']")
2837 />
2838 <#if xPathSelector.selectSingleNode(rootElement)?? >
2839 <#assign txtHibrido = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
2840 <input type="hidden" name="textoFormatoHibrido" value="${txtHibrido}"/>
2841 </#if>
2842 </#if>
2843
2844
2845 <#-- dados de compartilhamento -->
2846 <@liferay_util["html-top"]>
2847 <meta name="image" property="og:image" content="${imagemUrl}">
2848 <meta property="og:image:width" content="1024">
2849 </@>
2850 <#-- dados de compartilhamento -->
2851
2852
2853 <#assign
2854 webContentServiceUtil = serviceLocator.findService("br.senac.services.service.WebContentServiceUtil")
2855
2856 temasMercadologicos = webContentServiceUtil.getTemasPorArticleId(themeDisplay.getScopeGroupId(), journalArticle)
2857 categoriesIdiomas = temasMercadologicos?filter(c -> c.getName()?lower_case?contains("idioma"))
2858 hasIdiomas = categoriesIdiomas?has_content
2859 hasEMED = normalizedModalidadeName?contains("ensino-medio")
2860 />
2861
2862 <#function getManutencao>
2863
2864 <#assign manutencaoStructure = getFirstArticleStructure(idTipoCurso,"manutencoes") />
2865 <#if manutencaoStructure == "">
2866 <#return {"bolsa":"", "compra":"", "rodape":""} />
2867 </#if>
2868 <#assign
2869 txtBolsa = ""
2870 txtCompra = ""
2871 txtRodape = ""
2872 content = saxReaderUtil.read(manutencaoStructure.getContent())
2873 rootElement = content.getRootElement()
2874 />
2875 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='chkManutencaoBolsa']") />
2876 <#if xPathSelector.selectSingleNode(rootElement).getStringValue()?trim == "true" >
2877 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoBolsa']") />
2878 <#assign txtBolsa = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
2879 </#if>
2880 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='chkManutencaoCompra']") />
2881 <#if xPathSelector.selectSingleNode(rootElement).getStringValue()?trim == "true" >
2882 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoCompra']") />
2883 <#assign txtCompra = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
2884 </#if>
2885 <#if txtCompra != "" || txtBolsa != "">
2886 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoRodape']") />
2887 <#assign txtRodape = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
2888 </#if>
2889
2890 <#return {"bolsa": txtBolsa, "compra": txtCompra, "rodape": txtRodape} />
2891
2892 </#function>
2893
2894 <#assign manutencao = getManutencao() />
2895 <input type="hidden" id="manutencao-compra" value="${manutencao.compra}" />
2896 <input type="hidden" id="manutencao-bolsa" value="${manutencao.bolsa}" />
2897
2898 <div class="${prefix}-header-curso__image">
2899 <#if imagemUrl?contains(".webp")>
2900 <#-- Remove midias adaptaveis -->
2901 <picture>
2902 <img class="ssp-image-opacity" src="${imagemUrl}" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> loading="lazy">
2903 </picture>
2904 <#else>
2905 <img class="ssp-image-opacity" src="${imagemUrl}" <#if imagemAlt?length != 0> alt="${imagemAlt}"</#if> loading="lazy">
2906 </#if>
2907 <div class="${prefix}-header-curso__tag-formato bg-nivel-${normalizedCategoryName}">
2908 <#if hasIdiomas>
2909 <span>${nomeTipoCurso}</span>
2910 <#else>
2911 <span>${nomeTipoCurso} | ${nomeFormato}</span>
2912 </#if>
2913 </div>
2914 </div>
2915
2916 <section id="curso-info">
2917 <div class="ssp-card-detalhe-curso__container">
2918
2919 <div class="ssp-card-detalhe-curso">
2920
2921 <div class="ssp-card-detalhe-curso__tag-color-tipo bg-nivel-${normalizedCategoryName}"></div>
2922
2923 <div class="container">
2924
2925 <#if nomeFormato?contains("ao-vivo") >
2926 <span class="ssp-card-detalhe-curso__tag-ao-vivo">Senac Online<i class="fas fa-signal-stream icon-ao-vivo" aria-hidden="true"></i>ao vivo</span>
2927
2928 </#if>
2929
2930 <div class="ssp-card-detalhe-curso__content">
2931 <div>
2932
2933 <!-- <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
2934
2935 <p class="ssp-txt-emed__inscricoes-aberta">Inscrições abertas</p>
2936
2937 </#if> -->
2938
2939 <!-- rever a lógica da chama de inscricoes abertas -->
2940
2941 <h1 class="ssp-card-detalhe-curso__title">${tituloComercial}</h1>
2942 <input type="hidden" name="tituloComercial" value="${tituloComercial}" />
2943
2944 <div class="ssp-card-detalhe-curso__description">${objetivo}</div>
2945 </div>
2946 <div class="ssp-card-detalhe-curso__secunday-info-content">
2947
2948 <#if nomeFormato?contains("ao-vivo") >
2949 <span class="d-md-none">
2950 <a class="ssp-card-detalhe-curso__secunday-info-back-link" href="#" style="color: #ff9057;">${categoriaTipoCurso.getName()}</a>
2951 <#if !hasIdiomas>
2952 <span> | ${nomeFormato}</span>
2953 </#if>
2954 </span>
2955
2956 <#else>
2957 <span class="d-md-none">
2958 <a class="ssp-card-detalhe-curso__secunday-info-back-link" href="#">${categoriaTipoCurso.getName()}</a>
2959 <#if !hasIdiomas>
2960 <span> | ${nomeFormato}</span>
2961 </#if>
2962 </span>
2963
2964 </#if>
2965
2966 <p class="ssp-card-detalhe-curso__secundary-info-carga-horaria">${cargaHoraria} horas</p>
2967 </div>
2968 </div>
2969 <div class="ssp-saiba-mais-curso-accordion">
2970
2971 <#if (possoFazerEsteCursoComercial?length > 0)>
2972 <div class="ssp-saiba-mais-curso-accordion__body">
2973 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Posso fazer este curso?</div>
2974 <div class="ssp-saiba-mais-curso-accordion__contents">${possoFazerEsteCursoComercial}</div>
2975 </div>
2976
2977 </#if>
2978
2979 <#if (oQueVouAprenderComercial?length > 0) >
2980 <div class="ssp-saiba-mais-curso-accordion__body">
2981 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">O que vou aprender?</div>
2982 <div class="ssp-saiba-mais-curso-accordion__contents" id="plano-curso">${oQueVouAprenderComercial}</div>
2983 </div>
2984 </#if>
2985
2986 <#if (comoVouAprenderComercial?length > 0)>
2987 <div class="ssp-saiba-mais-curso-accordion__body">
2988 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Como vou aprender?</div>
2989 <div class="ssp-saiba-mais-curso-accordion__contents">${comoVouAprenderComercial}</div>
2990 </div>
2991 </#if>
2992
2993
2994 <div class="ssp-saiba-mais-curso-accordion__body">
2995 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Quais materiais vou precisar?</div>
2996 <#if nomeTipoCurso?contains("Ensino Médio Técnico") >
2997 <div class="ssp-saiba-mais-curso-accordion__contents">
2998 Desenvolvemos os materiais e disponibilizamos tudo para você!<br/><br/>Também temos bibliotecas físicas e virtuais, além de parceria com a Microsoft, que garante acesso à plataforma Teams para conferir aulas, avisos e materiais da sua turma.
2999 </div>
3000 <#else>
3001 <#if (quaisMateriaisComercialPDFUrl?length > 0)>
3002 <div class="ssp-saiba-mais-curso-accordion__contents">
3003 <a href="${quaisMateriaisComercialPDFUrl}" target="_blank"><i class="fa fa-download" aria-hidden="true"></i> Confira os materiais que você precisará.</a>
3004 </div>
3005 <#else>
3006 <div class="ssp-saiba-mais-curso-accordion__contents">Inicialmente, não há lista de materiais para este curso. Mas confirme em aula se será necessário comprar algum item.</div>
3007 </#if>
3008 </#if>
3009 </div>
3010
3011 <#if (tereiDiplomaComercial?length > 0)>
3012 <div class="ssp-saiba-mais-curso-accordion__body">
3013 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Terei diploma?</div>
3014 <div class="ssp-saiba-mais-curso-accordion__contents">${tereiDiplomaComercial}</div>
3015 </div>
3016 </#if>
3017
3018 <#if (tereiCertificadoComercial?length > 0)>
3019 <div class="ssp-saiba-mais-curso-accordion__body">
3020 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Terei certificado?</div>
3021 <div class="ssp-saiba-mais-curso-accordion__contents">${tereiCertificadoComercial}</div>
3022 </div>
3023 </#if>
3024
3025 <#if (comoMeMatricularComercial?length > 0)>
3026 <div class="ssp-saiba-mais-curso-accordion__body">
3027 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Como me matricular?</div>
3028 <div class="ssp-saiba-mais-curso-accordion__contents">${comoMeMatricularComercial}</div>
3029 </div>
3030 </#if>
3031
3032 <#if (precisoEstagiarComercial?length > 0)>
3033 <div class="ssp-saiba-mais-curso-accordion__body">
3034 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Preciso estagiar?</div>
3035 <div class="ssp-saiba-mais-curso-accordion__contents">${precisoEstagiarComercial}</div>
3036 </div>
3037 </#if>
3038
3039
3040 <#if (oQueMaisPrecisoSaberComercial?length > 0)>
3041 <div class="ssp-saiba-mais-curso-accordion__body">
3042 <#if nomeTipoCurso?contains("Ensino Médio Técnico") >
3043 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Estudo em outra escola, como funciona a transferência?</div>
3044 <#else>
3045 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">O que mais preciso saber?</div>
3046 </#if>
3047 <div class="ssp-saiba-mais-curso-accordion__contents">${oQueMaisPrecisoSaberComercial}</div>
3048 </div>
3049 </#if>
3050
3051 <!-- Info para EMED -->
3052
3053 <#if nomeTipoCurso?contains("Ensino Médio Técnico") >
3054
3055 <div class="ssp-emed__vantagens-content">
3056
3057 <p>Conheça <span>mais vantagens</span> do Ensino Médio Técnico no Senac.</p>
3058 <a href="/ensino-medio-tecnico" class="btn">Saiba mais</a>
3059
3060 </div>
3061
3062 <#elseif nomeFormato?contains("Presencial") && nomeFormato?contains("EAD") && !nomeTipoCurso?contains("Idioma")>
3063
3064 <!-- Info para híbrido -->
3065
3066 <div class="ssp-emed__vantagens-content ${normalizedCategoryName}">
3067
3068 <p>Quer saber mais sobre nossos <span>cursos com aulas presenciais e a distância</span>?</p>
3069 <a href="/presencial-ead" class="btn">Saiba mais</a>
3070
3071 </div>
3072
3073 <#else>
3074
3075 <!-- <div class="ssp-emed__vantagens-content ${normalizedCategoryName}">
3076
3077 <p>Conheça <span>mais vantagens</span>?</p>
3078 <a href="#" class="btn">Saiba mais</a>
3079
3080 </div> -->
3081
3082 </#if>
3083
3084
3085 <!-- Slider para cursos de Cozinheiro e Garçom -->
3086
3087 <#if codigoFT=="14125">
3088
3089 <div>
3090
3091 <h6 style="font-family: Montserrat;font-size: 20px;font-weight: 600;color: #2a2e43;padding: 15px;border-top: 1px solid #e7e7e7;">Quer participar do processo seletivo? Confira todas as etapas:</h6>
3092
3093
3094 <div class="slider-passo-passo__cursos-cozinha">
3095
3096 <div class="ssp-passo-passo-cozinheiro_card">
3097
3098 <div>
3099
3100 <h6 class="ssp-passo-passo-cozinheiro_card-title">Abertura do processo</h6>
3101
3102 <p class="ssp-passo-passo-cozinheiro_card-txt">Primeiro, confirme se você atende aos pré-requisitos para se inscrever em <a class="ssp-passo-passo-cozinheiro_card-link" href="/bolsas-de-estudo">bolsas de estudo</a>. Depois, confira no campo "Como me matricular?" o cronograma de abertura das inscrições do processo seletivo. </p>
3103
3104 </div>
3105
3106
3107 </div>
3108
3109 <div class="ssp-passo-passo-cozinheiro_card">
3110
3111 <div>
3112
3113 <h6 class="ssp-passo-passo-cozinheiro_card-title">Inscrições</h6>
3114
3115 <p class="ssp-passo-passo-cozinheiro_card-txt">Quando o processo seletivo abrir, faça login no site, acesse a página do curso, selecione a unidade e realize a inscrição, que é gratuita. As inscrições podem ser encerradas antes da data divulgada, quando alcançarmos 3 inscrições por vaga.</p>
3116
3117 </div>
3118
3119 </div>
3120
3121 <div class="ssp-passo-passo-cozinheiro_card">
3122
3123 <div>
3124
3125 <h6 class="ssp-passo-passo-cozinheiro_card-title">Convocação para entrevista</h6>
3126
3127 <p class="ssp-passo-passo-cozinheiro_card-txt">
3128 Ao finalizar sua inscrição no processo seletivo, você receberá uma confirmação no e-mail que cadastrou no nosso site. Também vamos enviar para o seu e-mail o convite para a entrevista e as orientações sobre envio dos documentos necessários.
3129 </p>
3130
3131
3132 </div>
3133
3134 </div>
3135
3136 <div class="ssp-passo-passo-cozinheiro_card">
3137
3138 <div>
3139
3140 <h6 class="ssp-passo-passo-cozinheiro_card-title">Entrevista</h6>
3141
3142 <p class="ssp-passo-passo-cozinheiro_card-txt">A entrevista será realizada presencialmente nos hotéis-escola Senac. Se você não participar, sua inscrição é cancelada automaticamente. Lembre-se: antes da entrevista, envie por e-mail os documentos necessários.
3143 </p>
3144
3145
3146 </div>
3147
3148 </div>
3149
3150 <div class="ssp-passo-passo-cozinheiro_card">
3151
3152 <div>
3153
3154 <h6 class="ssp-passo-passo-cozinheiro_card-title">Resultado</h6>
3155
3156 <p class="ssp-passo-passo-cozinheiro_card-txt">
3157 Até 7 dias depois de ter feito a entrevista, você receberá a resposta por e-mail sobre o resultado do processo seletivo.
3158 </p>
3159
3160 </div>
3161
3162 </div>
3163
3164 <div class="ssp-passo-passo-cozinheiro_card">
3165
3166 <div>
3167
3168 <h6 class="ssp-passo-passo-cozinheiro_card-title">Matrícula</h6>
3169
3170 <p class="ssp-passo-passo-cozinheiro_card-txt">
3171 Se receber a aprovação, a próxima etapa é fazer a matrícula. Lembre-se de enviar os documentos, inclusive os exames solicitados no e-mail.
3172 </p>
3173
3174 </div>
3175
3176 </div>
3177
3178 <div class="ssp-passo-passo-cozinheiro_card">
3179
3180 <div>
3181
3182 <h6 class="ssp-passo-passo-cozinheiro_card-title">Início do curso!</h6>
3183
3184 <p class="ssp-passo-passo-cozinheiro_card-txt">
3185 Teve aprovação em todas as etapas? Parabéns!
3186
3187 Sua jornada de transformação profissional
3188
3189 começará com o início das aulas. Mas se não
3190
3191 conseguiu dessa vez, não desanime. Sempre estamos com
3192
3193 vagas abertas para diversos cursos.
3194 </p>
3195
3196 </div>
3197
3198 </div>
3199
3200
3201 </div>
3202
3203 </div>
3204
3205 <#elseif codigoFT=="15390" >
3206
3207 <div>
3208
3209 <h6 style="font-family: Montserrat;font-size: 20px;font-weight: 600;color: #2a2e43;padding: 15px;border-top: 1px solid #e7e7e7;">Quer participar do processo seletivo? Confira todas as etapas:</h6>
3210
3211 <div class="slider-passo-passo__cursos-cozinha">
3212
3213 <div class="ssp-passo-passo-cozinheiro_card">
3214
3215 <div>
3216
3217 <h6 class="ssp-passo-passo-cozinheiro_card-title">Abertura do processo</h6>
3218
3219 <p class="ssp-passo-passo-cozinheiro_card-txt">Primeiro, confirme se você atende aos pré-requisitos para se inscrever em <a class="ssp-passo-passo-cozinheiro_card-link" href="/bolsas-de-estudo">bolsas de estudo</a>. Depois, confira no campo "Como me matricular?" o cronograma de abertura das inscrições do processo seletivo. </p>
3220
3221 </div>
3222
3223
3224 </div>
3225
3226 <div class="ssp-passo-passo-cozinheiro_card">
3227
3228 <div>
3229
3230 <h6 class="ssp-passo-passo-cozinheiro_card-title">Inscrições</h6>
3231
3232 <p class="ssp-passo-passo-cozinheiro_card-txt">Quando o processo seletivo abrir, faça login no site, acesse a página do curso, selecione a unidade e realize a inscrição, que é gratuita. As inscrições podem ser encerradas antes da data divulgada, quando alcançarmos 3 inscrições por vaga.</p>
3233
3234 </div>
3235
3236 </div>
3237
3238 <div class="ssp-passo-passo-cozinheiro_card">
3239
3240 <div>
3241
3242 <h6 class="ssp-passo-passo-cozinheiro_card-title">Convocação para entrevista</h6>
3243
3244 <p class="ssp-passo-passo-cozinheiro_card-txt">
3245 Ao finalizar sua inscrição no processo seletivo, você receberá uma confirmação no e-mail que cadastrou no nosso site. Também vamos enviar para o seu e-mail o convite para a entrevista e as orientações sobre envio dos documentos necessários.
3246 </p>
3247
3248
3249 </div>
3250
3251 </div>
3252
3253 <div class="ssp-passo-passo-cozinheiro_card">
3254
3255 <div>
3256
3257 <h6 class="ssp-passo-passo-cozinheiro_card-title">Entrevista</h6>
3258
3259 <p class="ssp-passo-passo-cozinheiro_card-txt">A entrevista será realizada presencialmente nos hotéis-escola Senac. Se você não participar, sua inscrição é cancelada automaticamente. Lembre-se: antes da entrevista, envie por e-mail os documentos necessários.
3260 </p>
3261
3262
3263 </div>
3264
3265 </div>
3266
3267 <div class="ssp-passo-passo-cozinheiro_card">
3268
3269 <div>
3270
3271 <h6 class="ssp-passo-passo-cozinheiro_card-title">Resultado</h6>
3272
3273 <p class="ssp-passo-passo-cozinheiro_card-txt">
3274 Até 7 dias depois de ter feito a entrevista, você receberá a resposta por e-mail sobre o resultado do processo seletivo.
3275 </p>
3276
3277 </div>
3278
3279 </div>
3280
3281 <div class="ssp-passo-passo-cozinheiro_card">
3282
3283 <div>
3284
3285 <h6 class="ssp-passo-passo-cozinheiro_card-title">Matrícula</h6>
3286
3287 <p class="ssp-passo-passo-cozinheiro_card-txt">
3288 Se receber a aprovação, a próxima etapa é fazer a matrícula. Lembre-se de enviar os documentos, inclusive os exames solicitados no e-mail.
3289 </p>
3290
3291 </div>
3292
3293 </div>
3294
3295 <div class="ssp-passo-passo-cozinheiro_card">
3296
3297 <div>
3298
3299 <h6 class="ssp-passo-passo-cozinheiro_card-title">Início do curso!</h6>
3300
3301 <p class="ssp-passo-passo-cozinheiro_card-txt">
3302 Teve aprovação em todas as etapas? Parabéns!
3303
3304 Sua jornada de transformação profissional
3305
3306 começará com o início das aulas. Mas se não
3307
3308 conseguiu dessa vez, não desanime. Sempre estamos com
3309
3310 vagas abertas para diversos cursos.
3311 </p>
3312
3313 </div>
3314
3315 </div>
3316
3317
3318 </div>
3319
3320 </div>
3321
3322 </#if>
3323
3324 <!-- Final Slider para cursos de Cozinheiro e Garçom -->
3325
3326 </div>
3327 </div>
3328 </div>
3329 </div>
3330 </section>
3331 <#assign
3332 dNoneSelectUnidade = ''
3333 mostrarUnidades = !nomeFormato?contains("ao-vivo")
3334 isEMED = normalizedCategoryName?contains("ensino-medio-tecnico")
3335 isAprendizagem = normalizedCategoryName?contains("jovem-aprendiz")
3336 />
3337
3338 <#if nomeFormato?contains("ao-vivo") >
3339 <#assign dNoneSelectUnidade = 'd-none' />
3340 </#if>
3341
3342 <#-- Obter data matricula emed -->
3343 <#if isEMED>
3344 <#function getMatriculaEMED >
3345 <#assign emedTags = getFirstArticleStructure(0,"emed-tags")
3346 document = saxReaderUtil.read(emedTags.getContent())
3347 rootElement = document.getRootElement()
3348 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='dataInicioPeriodoMatricula']") />
3349 <#if xPathSelector.selectSingleNode(rootElement)?? >
3350 <#assign dataInicio = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3351 </#if>
3352 <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='horaInicioMatricula']") />
3353 <#if xPathSelector.selectSingleNode(rootElement)?? >
3354 <#assign horaInicio = xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3355 </#if>
3356
3357 <#setting time_zone="America/Sao_Paulo">
3358 <#assign today = .now?datetime />
3359 <#assign emeddatetime = (dataInicio + " " + horaInicio)?datetime["yyyy-MM-dd HH:mm"] />
3360 <#assign matriculaAberta = today gt emeddatetime />
3361
3362 <#return {"dataInicio" : dataInicio, "horaInicio" : horaInicio, "aberta" : matriculaAberta}>
3363 </#function>
3364
3365 <#assign matriculaEMED = getMatriculaEMED() />
3366
3367 </#if>
3368
3369 <#if isEMED || isAprendizagem>
3370 <section class="ssp-section-selecione-unidade ssp-section ${dNoneSelectUnidade}" style="background:#2B2E41">
3371 <div class="container">
3372
3373 <div class="ssp-container-selecione-unidade" style="max-width: 815px; margin: auto;">
3374 <div class="ssp-container_ofertas__title">
3375 <h3 class="ssp-aviso-novas-turmas__title selecione-unidade-title-custom">
3376
3377 Selecione uma unidade para conhecer as próximas turmas:
3378
3379 </h3>
3380 </div>
3381
3382 <div class="ssp-container__form-select">
3383 <select id="unidades-ofertas" class="form-control" name="unidades-ofertas">
3384 <option value="">Selecione uma unidade</option>
3385 </select>
3386 </div>
3387
3388 </div>
3389
3390 <div class="ssp-ofertas__box-endereco-unidade">
3391 <i class="icon-map-adress"></i>
3392 <a href="" target="_blank" class="ssp-ofertas__endereco-unidade"></a>
3393 </div>
3394
3395 </div>
3396
3397 </section>
3398 <#else>
3399 <section class="ssp-section-selecione-unidade ssp-section" style="background:#2B2E41">
3400 <div class="container">
3401 <div class="ssp-container-selecione-unidade ${dNoneSelectUnidade} row no-gutters mb-lg-8">
3402 <div class="ssp-container_ofertas__title">
3403 <h2 class="ssp-aviso-novas-turmas__title selecione-unidade-title-custom ssp-detalhe-curso-titulo-filter">Escolha a unidade e conheça as turmas disponíveis:</h2>
3404 </div>
3405 </div>
3406 <div class="row ssp-filters-px justify-content-center">
3407 <div class="col-12 col-lg ${dNoneSelectUnidade} px-md-0 order-1">
3408 <div class="ssp-container-selecione-unidade row no-gutters">
3409 <div class="col-12">
3410 <div class="ssp-container__form-select mx-auto">
3411 <label for="unidades-ofertas" class="ssp-switch-label ssp-switch-label-section mx-0 d-none d-lg-block">Selecione uma unidade:</label>
3412 <select id="unidades-ofertas" class="form-control" name="unidades-ofertas"></select>
3413 </div>
3414 </div>
3415 </div>
3416 </div>
3417
3418 <div id="ssp-alternadores" class="col mt-5 mt-lg-0 ${(isEMED || isAprendizagem)?then('d-none', '')} px-md-0 order-3 order-lg-2" style="max-width: 480px; display: none;">
3419 <div class="row no-gutters ssp-switch-label ssp-switch-label-section mx-0">Filtre por:</div>
3420 <div class="row no-gutters mt-4">
3421 <#assign
3422 mostrarFiltroInscricao = (nomeTipoCurso?contains("Técnico") && !nomeTipoCurso?contains("Ensino Médio")) || nomeTipoCurso?contains("Livre") || nomeTipoCurso?contains("Extensão")
3423 mostrarFiltroBolsa = (nomeTipoCurso?contains("Técnico") && !nomeTipoCurso?contains("Ensino Médio")) || (nomeTipoCurso?contains("Livre") && !normalizedModalidadeName?contains("acoes-educ.-curta-duracao"))
3424 textoFiltroCompra = (nomeTipoCurso?contains("Livre") && normalizedModalidadeName?contains("acoes-educ.-curta-duracao"))?then("Matrículas abertas", "Comprar agora")
3425 />
3426
3427
3428 <#if mostrarFiltroInscricao && mostrarFiltroBolsa>
3429 <div class="ssp-switch-divider d-md-none my-4"></div>
3430 </#if>
3431
3432 <#if mostrarFiltroInscricao>
3433 <div class="col-12 col-lg">
3434 <div class="d-flex justify-content-between justify-content-lg-start">
3435 <label class="ssp-switch order-2 order-lg-1">
3436 <input type="checkbox" id="chkInscricao">
3437 <span class="ssp-switch-slider round"></span>
3438 </label>
3439 <label for="chkInscricao" class="ssp-switch-label order-1 order-lg-2">${textoFiltroCompra}</label>
3440 </div>
3441 </div>
3442 </#if>
3443
3444
3445 <#if mostrarFiltroBolsa>
3446 <div class="col-12 col-lg">
3447 <div class="d-flex justify-content-between justify-content-lg-start">
3448 <label class="ssp-switch order-2 order-lg-1">
3449 <input type="checkbox" id="chkBolsa">
3450 <span class="ssp-switch-slider ssp-switch-slider-secondary round"></span>
3451 </label>
3452 <label for="chkBolsa" class="ssp-switch-label order-1 order-lg-2">Bolsas de estudo</label>
3453 </div>
3454 </div>
3455 </#if>
3456 </div>
3457 </div>
3458
3459 <div class="col-12 order-2 order-lg-3">
3460 <div class="row ${mostrarUnidades?then('text-center text-lg-left', 'text-center')}">
3461 <div id="msgFiltroAplicado" class="col-12 ssp-switch-label-message" style="display: none;">
3462 <div class="row no-gutters">
3463 <span class="col-12 ssp-col-lg-without ${mostrarUnidades?then('', 'ml-auto')}">Filtro aplicado com sucesso. </span>
3464 <span class="col-12 ssp-col-lg-without ${mostrarUnidades?then('', 'mr-auto')}">Confira o resultado.</span>
3465 </div>
3466 </div>
3467 </div>
3468 </div>
3469 </div>
3470
3471 <div class="ssp-ofertas__box-endereco-unidade ${dNoneSelectUnidade}">
3472 <i class="icon-map-adress"></i>
3473 <a href="" target="_blank" class="ssp-ofertas__endereco-unidade"></a>
3474 </div>
3475
3476 </div>
3477
3478 </section>
3479 </#if>
3480
3481
3482 <!-- EMED -->
3483 <section class="ssp-ofertas-emed__section d-none">
3484
3485 <h2 class="title-section-white" id="titulo-emed"></h2>
3486
3487 <div class="ssp-ofertas-emed__filtro-content container">
3488
3489 <button type="button" value="0010" class="btn btn-filtro btn--filtro-ativo">Turmas - 1º ano</button>
3490
3491 <button type="button" value="0" class="btn btn-filtro">Transferências</button>
3492
3493 </div>
3494
3495 <div class="ssp-ofertas-emed__card-container">
3496
3497 <div class="ssp-slick-ofertas-emed">
3498
3499 </div>
3500
3501 </div>
3502
3503 </section>
3504
3505 <!-- FIM EMED -->
3506
3507 <section id="ssp-section-response" class="ssp-section" style="background: #2a2e43; position: relative;">
3508
3509 <div id="turmas-container" class="container">
3510
3511 <div id="informe-novas-turmas">
3512 <div style="display: flex; flex-wrap: nowrap;">
3513
3514 <a class="prev-mobile d-lg-none d-xl-none nextPrevOpacity" href="#" >
3515 <i class="fas fa-chevron-left"></i>
3516 </a>
3517
3518 <h2 id="ssp-h3-turmas" class="ssp-section-title ssp-card-oferta-curso__section-title text-capitalize" style="font-weight: bold;text-transform: uppercase; display: none;">Turmas</h2>
3519
3520 <a href="#" class="next-mobile d-lg-none d-xl-none" >
3521 <i class="fas fa-chevron-right"></i>
3522 </a>
3523
3524 </div>
3525
3526
3527 <div class="oferta-slick-area oferta-slick-area--md-bleed slider-container">
3528
3529 </div>
3530 </div>
3531
3532 <#if !isEMED>
3533 <div class="ssp-card-oferta-curso__sem-vaga d-none" style="margin: auto;">
3534
3535 <h2 class="ssp-card-oferta-curso__sem-vaga-title">
3536 Estude com a gente na próxima turma!
3537 </h2>
3538
3539 <p class="ssp-card-oferta-curso__sem-vaga-description">
3540 Registre seu interesse e avisaremos você quando surgirem novas vagas.
3541 </p>
3542 </div>
3543 <#else>
3544
3545 <div class="card-transferencias-emed container p-0 d-none emed-transferencias-space">
3546 <div>
3547 <div class="col-md-12 col-xs-12 pb-10">
3548 <div>
3549 <div class="slick-area__item">
3550
3551 <div class="ssp-emed__card-slider">
3552
3553 <div class="ssp-emed__card-slider-body">
3554 <h2 class="ssp-emed__section__titleCard">
3555 <i class="fal fa-users-class"></i>
3556 <div>Turmas</div>
3557 </h2>
3558 <div style="display:grid;gap:20px;">
3559 <span class="emed_transferencia_texto">Para saber mais sobre vagas de transferências para 1º e 2º ano para estudantes do Senac e de outras escolas, entre em contato com a unidade de interesse para checar a disponibilidade.</span>
3560 <span></span>
3561 </div>
3562 </div>
3563
3564 </div>
3565
3566 </div>
3567 </div>
3568 </div>
3569 </div>
3570 </div>
3571
3572 <#if matriculaEMED.aberta> <div class="sem-vaga-emed container p-0 d-none">
3573 <#else> <div class="sem-vaga-emed container p-0 d-none emed-transferencias-space">
3574 </#if>
3575 <div>
3576 <div class="col-md-12 col-xs-12 pb-10">
3577
3578 <!--slick slider-->
3579 <div class="slick-area-emed slick-area-emed--md-bleed">
3580
3581 <#if matriculaEMED.aberta>
3582 <div class="slick-area__item">
3583
3584 <div class="ssp-emed__card-slider">
3585
3586 <div class="ssp-emed__card-slider-body">
3587 <h2 class="ssp-emed__section__titleCard">
3588 <i class="fal fa-users-class"></i>
3589 <div><lfr-editable type="rich-text">Turmas</lfr-editable></div>
3590 </h2>
3591 <lfr-editable type="rich-text">
3592 <div class="ssp-emed__section__introCard"><strong>Estude com a gente na próxima turma!</strong></div>
3593 <div class="ssp-emed__section__textCard">
3594 <span class="texto">
3595 Registre seu interesse e avisaremos você sobre a abertura das inscrições para o próximo ano.
3596 </span>
3597 <span class="ssp-emed__iconWrapper animate__animated animate__fadeOutRight animate__infinite"><i
3598 class="fas fa-chevron-right"></i></span>
3599 </div>
3600 </lfr-editable>
3601 </a>
3602 </div>
3603
3604 </div>
3605
3606 </div>
3607
3608 <div class="slick-area__item">
3609
3610 <div class="ssp-emed__card-slider">
3611 <div class="ssp-emed__card-slider-body">
3612
3613 <h2 class="ssp-emed__section__titleCard">
3614 <i class="far fa-envelope"></i>
3615 <div><lfr-editable id="emed-precos-title" type="rich-text">Registro de Interesse</lfr-editable></div>
3616 </h2>
3617 <lfr-editable id="txt_emed_boleto" type="rich-text">
3618 <div class="ssp-emed__section__introCardCTA">
3619 Quer receber um aviso sobre as turmas do próximo ano?
3620 </div>
3621 </lfr-editable>
3622 </a>
3623 <a class="ssp-emed__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close_10"
3624 id="btnOptin" href="javascript:;">Sim, me avise.</a>
3625 </div>
3626 </div>
3627 </div>
3628 <#else>
3629 <#-- pre inscricao emed -->
3630 <div class="slick-area__item card-pre-inscricao">
3631
3632 <div class="ssp-emed__card-slider">
3633
3634 <div class="ssp-emed__card-slider-body">
3635 <h2 class="ssp-emed__section__titleCard">
3636 <i class="fal fa-users-class"></i>
3637 <div><h4 class="ssp-h4" data-lfr-editable-id="ssp-transf-text" data-lfr-editable-type="rich-text">Confira as datas das próximas turmas</h4></div>
3638 </h2>
3639 <lfr-editable type="rich-text" style="text-align: left;">
3640 <div class="ssp-emed__section__introCard" style="margin: 0;"><strong class="ssp-p-g" style="font-weight: 700;">Inscrições para bolsas</strong></div>
3641 <div class="ssp-emed__section__textCard" style="margin: 0!important;">
3642 <span class="ssp-p-g texto">
3643 A partir de 4/8, às 12h
3644 </span>
3645 </lfr-editable>
3646 <hr style="margin: 24px 0; background: #FFF;"/>
3647 <lfr-editable type="rich-text" style="text-align: left;">
3648 <div class="ssp-emed__section__introCard" style="margin: 0;"><strong class="ssp-p-g" style="font-weight: 700;">Matrículas</strong></div>
3649 <div class="ssp-emed__section__textCard" style="margin: 0!important;">
3650 <span class="ssp-p-g texto">
3651 A partir de 18/8, às 12h
3652 </span>
3653 </div>
3654 </lfr-editable>
3655 </a>
3656 </div>
3657
3658 </div>
3659 <!-- <div class="ssp-emed__card-slider">
3660
3661 <div class="ssp-emed__card-slider-body">
3662 <h2 class="ssp-emed__section__titleCard">
3663 <i class="fal fa-users-class"></i>
3664 <div><lfr-editable id="emed-aulas-title" type="rich-text">Turmas</lfr-editable></div>
3665 </h2>
3666 <lfr-editable id="txt_emed_aulas" type="rich-text">
3667 <div>
3668 <strong>Matrículas e inscrições para bolsas de estudo:</strong><br/>
3669 <span style="font-weight: 400;">
3670 a partir de ${matriculaEMED.dataInicio?split("-")?reverse?join("/")}, às ${matriculaEMED.horaInicio?split(":")?first} horas
3671 <#if matriculaEMED.horaInicio?split(":")?last != "00">
3672 e ${matriculaEMED.horaInicio?split(":")?last} minutos
3673 </#if>
3674 </span>
3675 </div>
3676
3677 <div class="footer-card-card-pre-inscricao">
3678 <strong>
3679 Estude com a gente na próxima turma!<br/>
3680 Esperamos por você!
3681 </strong>
3682 </div>
3683 </lfr-editable>
3684 </a>
3685 </div> -->
3686
3687 </div>
3688
3689 </div>
3690
3691 </#if>
3692
3693 </div>
3694 <!--/slick slider-->
3695
3696 </div>
3697 </div>
3698 </div>
3699
3700 </#if>
3701 <div class="oferta-slick-area_modal">
3702 </div>
3703
3704 <#if manutencao.rodape != "">
3705 <p class="ssp-card-oferta-curso__mensagem-legal">${manutencao.rodape}</p>
3706 <#else>
3707 <#if isEMED>
3708 <p class="ssp-card-oferta-curso__mensagem-legal">O Senac reserva-se o direito de alterar o número de vagas, datas, horários ou cancelar o programa.</p>
3709 <#else>
3710 <p class="ssp-card-oferta-curso__mensagem-legal">A turma pode ser cancelada ou ter alterações do número de vagas, datas e horários.</p>
3711 </#if>
3712 </#if>
3713
3714 </div>
3715
3716 <div id="ssp-abrir-pagina-bolsa" class="ssp-card-duvida__bolsa-estudo d-none" style="margin-top: 44px;">
3717
3718 <p>Tem dúvidas sobre bolsas de estudo?</p>
3719 <a href="/bolsas-de-estudo">Saiba como funciona</a>
3720
3721 </div>
3722
3723
3724 </section>
3725
3726 <section id="section-registro-interesse" class="ssp-section-novas-turmas">
3727
3728 <div class="container">
3729
3730 <div class="ssp-aviso-novas-turmas__content">
3731
3732 <!-- <div class="pb-sm-5 pb-md-5" > -->
3733 <div>
3734
3735 <p class="ssp-aviso-novas-turmas__title">Receba um aviso por e-mail se abrirem novas turmas.</p>
3736 <!-- p class="ssp-aviso-novas-turmas__description">Selecione a unidade e registre seu interesse.</p -->
3737
3738 </div>
3739
3740 <!--
3741 <div class="ssp-container__form-select">
3742
3743 <select class="form-control select-large select-registro-interesse" id="select-registro-interesse">
3744 <option value="">Selecione uma unidade</option>
3745 </select>
3746
3747 </div>
3748 -->
3749 <div class="ssp-btn-group__content-teste">
3750
3751 <button type="button" class="btn btn-primary btn-custom" id="btn-aviso-novas-turmas">Registrar interesse</button>
3752
3753 </div>
3754
3755
3756
3757 </div>
3758
3759
3760 </div>
3761
3762
3763 </section>
3764
3765 <section id="modal-backpack-error" class="ssp-modal-registro-interesse d-none">
3766
3767 <div class="ssp-card-msg-erro">
3768
3769 <div class="ssp-card-msg-sucesso__content">
3770 <i class="fas fa-exclamation-circle" style="color: #ec3a3a;"></i>
3771 <p>Houve um erro ao inserir curso na mochila!</p>
3772 <p>Por favor, tente novamente!</p>
3773 </div>
3774
3775 <div>
3776 <button id="btn-voltar-modal-backpack-error" class="btn btn-nivel ssp-card-msg-sucesso__btn">Voltar</button>
3777 </div>
3778
3779 </div>
3780
3781 </section>
3782
3783 <section id="modal-backpack-success" class="ssp-modal-registro-interesse d-none">
3784
3785 <div class="ssp-modal-mochila-curso">
3786
3787 <div class="ssp-modal-mochila-curso__header">
3788
3789 <button class="modal-btn-close" type="button">
3790
3791 <i class="fal fa-times"></i>
3792
3793 </button>
3794
3795 <h2 class="modal-title">Curso adicionado à mochila!</h2>
3796 <p class="modal-subtitle">Você incluiu na sua mochila de compras o curso
3797 <span id="modal-backpack-success__nome-curso"></span>
3798 </p>
3799
3800 </div>
3801
3802 <div class="ssp-modal-mochila-curso__body">
3803
3804 <p>A sua vaga só é garantida nesta turma quando você finaliza a
3805 compra. Deseja concluir agora?</p>
3806
3807 </div>
3808
3809 <div class="ssp-modal-mochila-curso__block-btn-items block-btn-items">
3810
3811 <a class="btn-finalizar-compra btn-mochila-finalizar-compra-success" href="#">
3812 Finalizar compra
3813 </a>
3814
3815 <button class="btn-continuar-site btn-mochila-continuar-site-success">
3816 Continuar no site
3817 </button>
3818
3819 </div>
3820
3821
3822 </div>
3823
3824 </section>
3825
3826</#if>
3827
3828<#if nomeTipoCurso?has_content && nomeTipoCurso?contains("Ensino Médio Técnico") >
3829 <!-- Agende a sua visita -->
3830 <#assign searchImpl = serviceLocator.findService("br.senac.search.api.Search") />
3831 <#assign articles = searchImpl.search("EMED - Agende sua visita", {}, themeDisplay.getCompanyId(), themeDisplay.getScopeGroupId(), themeDisplay.getUserId(), false) />
3832
3833 <section id="ssp-emed-visita-sector">
3834 <div class="container py-5 pt-lg-0" style="display:none;">
3835 <div data-emed="ssp-emed-visita-wrapper" class="ssp-emed-visita-wrapper">
3836 <#list articles![] as article>
3837 <#assign document = saxReaderUtil.read(article.getContent()) />
3838 <#assign rootElement = document.getRootElement() />
3839
3840 <#assign
3841 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='textoDoBotao']")
3842 textoDoBotao = xPathSelector.selectSingleNode(rootElement).getStringValue()
3843
3844 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='linkBotao']")
3845 linkBotao = xPathSelector.selectSingleNode(rootElement).getStringValue()
3846
3847 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='ativarBotao']")
3848 ativarBotao = xPathSelector.selectSingleNode(rootElement).getStringValue()
3849 />
3850
3851 <#if ativarBotao?trim == "true">
3852 <script>$('#ssp-emed-visita-sector').children().show()</script>
3853 <div data-emed="ssp-emed-visita-text" class="ssp-emed-visita-text">
3854
3855 <a href="${linkBotao}">${textoDoBotao}</a>
3856
3857 </div>
3858 <div class="ssp-emed-visita-icon">
3859 <i class="fas fa-route"></i>
3860 </div>
3861 </#if>
3862 </#list>
3863 </div>
3864 </div>
3865 </section>
3866
3867
3868 <!-- Como me matricular EMED -->
3869
3870 <section class="ssp-como-me-matricular__section">
3871
3872 <h2 class="title-section-white">Como me matricular?</h2>
3873
3874 <div class="container">
3875
3876 <div class="ssp-como-me-matricular__passo-passo-card">
3877
3878 <div class="item-passo">
3879 <img class="item-passo-icone" src="/o/senac-theme/images/icon-escolha-curso.svg" alt="">
3880 <p class="item-passo-title">Escolha o curso</p>
3881 <span>Selecione o curso, a unidade do seu interesse e confira as turmas disponíveis.</span>
3882 </div>
3883
3884 <img class="item-passo-icone-seta" src="/o/senac-theme/images/icon-seta-passo.svg" alt="">
3885
3886 <div class="item-passo">
3887 <img class="item-passo-icone" src="/o/senac-theme/images/icon-realize-inscricao.svg" alt="">
3888 <p class="item-passo-title">Adicione à Mochila</p>
3889 <span>Faça login ou crie uma conta em nosso site e continue a compra.</span>
3890 </div>
3891
3892 <img class="item-passo-icone-seta" src="/o/senac-theme/images/icon-seta-passo.svg" alt="">
3893
3894 <div class="item-passo">
3895 <img class="item-passo-icone" src="/o/senac-theme/images/icon-aguarde-contato.svg" alt="">
3896 <p class="item-passo-title">Faça a matrícula</p>
3897 <span>Todas as etapas são on-line. Para garantir a vaga, preencha todas as informações.</span>
3898 </div>
3899
3900 </div>
3901
3902
3903 </div>
3904
3905 </section>
3906
3907 </#if>
3908
3909
3910 <div class="ssp-section ssp-section-lg-bottom-slider d-none" id="section-cursos-voce-pode-gostar" style="background-color: #f2f2f2">
3911 <div class="container">
3912 <h2 class="ssp-section-title">
3913 <lfr-editable id="cursos-voce-pode-gostar-title" type="rich-text">
3914 Cursos que você pode gostar
3915 </lfr-editable>
3916 </h2>
3917
3918 <div id="slider-curso">
3919
3920 </div>
3921
3922 </div>
3923 </div>
3924
3925
3926
3927
3928 <#-- Section para o item de curso-->
3929 <div id="curso-item-template" class="d-none slick-area__item">
3930
3931 <div class="ssp-card-curso" style="height: 288px;">
3932
3933 <a class="ssp-absolute-link ck-curso" href="#a"></a>
3934
3935 <div class="ssp-card-curso__image">
3936
3937 <div class="ssp-image-container">
3938 <img src="" />
3939
3940 </div>
3941
3942 </div>
3943
3944 <div class="ssp-card-curso__body">
3945
3946 <div class="ssp-card-curso__color-tag-modalidade"></div>
3947
3948 <div class="ssp-card-curso__tags">
3949
3950 <span class="ssp-card-curso__tag-formato-title"></span>
3951
3952 <span class="tag-modalidade-title__senac-online d-none">Senac Online - ao vivo</span>
3953
3954 </div>
3955
3956 <h6 class="ssp-card-curso__title">
3957
3958 </h6>
3959
3960 <div class="ssp-card-curso__info">
3961
3962 <span class="ssp-tag bg-white border-nivel-extensao text-nivel-extensao mr-1 btn-inscricoes-abertas">Inscrições abertas</span>
3963 <span class="ssp-tag bg-white border-primary text-primary btn-bolsas">Bolsas</span>
3964
3965 </div>
3966
3967 </div>
3968
3969 </div>
3970
3971 </div>
3972
3973 <#function getJournalArticle>
3974
3975
3976 <#assign journalArticleService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
3977 <#assign friendlyURL = themeDisplay.getURLCurrent()?split("/")?last?split("?")?first>
3978 <#assign groupId = themeDisplay.getSiteGroupId()>
3979 <#attempt>
3980
3981 <#if !friendlyURL?contains("fragment_collections") >
3982
3983 <#return journalArticleService.getArticleByUrlTitle(groupId,friendlyURL)>
3984 <#else>
3985
3986 <#return '#erro#'>
3987 </#if>
3988
3989 <#recover>
3990
3991 <#return '#erro#'>
3992 </#attempt>
3993 </#function>
3994
3995 <#function getCategorias primaryKey>
3996
3997 <#assign categoryService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
3998 <#attempt>
3999
4000 <#return categoryService.getCategories("com.liferay.journal.model.JournalArticle", primaryKey)>
4001
4002 <#recover>
4003
4004 <#return '#erro#'>
4005 </#attempt>
4006 </#function>
4007
4008 <#function getVocabulary vocabularyId>
4009
4010 <#assign vocabularyService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService") />
4011 <#attempt>
4012
4013 <#return vocabularyService.getVocabulary(vocabularyId)>
4014
4015 <#recover>
4016
4017 <#return '#erro#'>
4018 </#attempt>
4019 </#function>
4020
4021 <#function getStringValue dom name>
4022 <#assign
4023 seletorSTR = "dynamic-element[@field-reference='"+name+"']"
4024 xPathSelector = saxReaderUtil.createXPath(seletorSTR)
4025 />
4026 <#if xPathSelector.selectSingleNode(dom)?? >
4027 <#assign
4028 valueSTR = xPathSelector.selectSingleNode(dom).getStringValue()?trim
4029 />
4030 <#return valueSTR>
4031 </#if>
4032 <#return ''>
4033 </#function>
4034
4035 <!--Modal de Login -->
4036
4037 <section id="modal-login" class="ssp-modal-registro-interesse d-none">
4038
4039 <div class="dropdown-menu-modal dropdown-menu-right" id="js-login-dropdown-menu-2" style="width: 340px; max-width: 340px; display: block;">
4040
4041 <div class="px-5">
4042 <i id="btn-close-loginModal" class="fas fa-times btn-close__modal-login"></i>
4043 <div class="text-darker-gray py-3">Faça login na sua conta</div>
4044 </div>
4045
4046 <div class="dropdown-divider"></div>
4047
4048 <div class="dropdown-menu-arrow"></div>
4049
4050 <form id="login_form" class="px-5 py-4" method="post">
4051
4052 <div class="alert alert-danger py-3 d-none" id="mensagem-erro-login" style="background:#f8d7da;border-color:#f5c6cb; color:#a94442"></div>
4053
4054 <div class="form-group">
4055
4056 <label for="login-email">E-mail</label>
4057 <div class="input-group mb-2">
4058 <div class="input-group-prepend">
4059 <span class="input-group-text"><i class="icon-envelope"></i></span>
4060 </div>
4061 <input type="text" class="form-control" id="login-email-modal" name="_com_liferay_login_web_portlet_LoginPortlet_login" placeholder="Digite seu e-mail" aria-label="Email" aria-describedby="login-email">
4062 </div>
4063
4064 </div>
4065
4066 <div class="form-group">
4067
4068 <label for="login-password">Senha</label>
4069 <div class="input-group mb-2">
4070 <div class="input-group-prepend">
4071 <span class="input-group-text"><i class="icon-key"></i></span>
4072 </div>
4073 <input type="password" class="form-control" id="login-password-modal" name="_com_liferay_login_web_portlet_LoginPortlet_password" placeholder="Digite sua senha" aria-label="Password" aria-describedby="login-password">
4074 </div>
4075
4076 </div>
4077
4078 <div class="pt-1 pb-3">
4079 <small><a href="http://www.sp.senac.br/login-unico/SendPassword" target="_blank">Esqueceu sua senha?</a></small>
4080 </div>
4081
4082 <button type="button" class="btn btn-primary w-100" id="btnLogin" data-login="btnLogin">Entrar</button>
4083 </form>
4084
4085 <div class="dropdown-divider"></div>
4086
4087 <div class="px-5 pb-4">
4088 <div class="text-darker-gray py-3">Não tem cadastro?</div>
4089 <a href="https://www.sp.senac.br/usuario-unico/InsertUser?destino=${themeDisplay.getPortalURL()+themeDisplay.getURLCurrent()}" target="_blank" class="btn bg-btn-cadastre btn-nivel-livre text-white w-100 ">Cadastre-se</a>
4090 </div>
4091
4092
4093 </div>
4094
4095 </section>
4096
4097 <!-- modal registro interesse -->
4098
4099
4100 <section id="modal-registro-interesse" class="ssp-modal-registro-interesse d-none">
4101
4102 <#if !isEMED>
4103 <div class="ssp-card-registro-interesse">
4104
4105 <i id="btn-close-Modal-registro-interesse" class="fas fa-times btn-close__modal-login"></i>
4106
4107 <p class="ssp-card-registro-interesse__label-curso-selecionado">Curso selecionado:</p>
4108 <h3 class="ssp-card-registro-interesse__nome-curso"></h3>
4109
4110 <div id="unidades-registro-interesse">
4111
4112 <h4 class="ssp-card-registro-interesse__title-section-itens">Unidade:</h4>
4113
4114 <div id="select-unidades-registro-interesse">
4115 <select class="ssp-card-registro-interesse__select unidades" id="select_0"><option value="" disabled="" selected="">Selecione uma unidade</option></select>
4116 </div>
4117
4118 <div class="ssp-card-registro-interesse__add-mais">
4119 <a class="" id="add-unidade-regsitro-interesse" href="#a"><i class="fas fa-plus mr-1"></i>Adicionar unidade</a>
4120
4121
4122
4123 <a class="" id="remove-unidade-regsitro-interesse" href="#a"><i class="fas fa-times mr-1"></i>Remover unidade</a>
4124 </div>
4125
4126 </div>
4127
4128 <div id="dias-registro-interesse">
4129 <h4 class="ssp-card-registro-interesse__title-section-itens text-center">Dias da Semana</h4>
4130
4131 <div class="ssp-card-registro-interesse__week-content">
4132 <span id="todosDias" class="ssp-week-day">Todos</span>
4133 <span class="ssp-week-day">Seg</span>
4134 <span class="ssp-week-day">Ter</span>
4135 <span class="ssp-week-day">Qua</span>
4136 <span class="ssp-week-day">Qui</span>
4137 <span class="ssp-week-day">Sex</span>
4138 <span class="ssp-week-day">Sab</span>
4139 </div>
4140
4141 </div>
4142
4143 <div id="periodo-registro-interesse">
4144
4145 <h4 class="ssp-card-registro-interesse__title-section-itens text-center">Período:</h4>
4146
4147 <div class="ssp-card-registro-interesse__check-itens-content periodos-registro-interesse">
4148
4149 <div class="ssp-card-registro-interesse__check-item" id="div-campo-todos">
4150 <input type="checkbox" name="" value="" id="check-todos-periodos">
4151 <label for="check-todos-periodos">Todos</label>
4152 </div>
4153
4154 <div class="ssp-card-registro-interesse__check-item">
4155 <input type="checkbox" name="" value="M" id="periodo-m">
4156 <label for="periodo-m">Manhã</label>
4157 </div>
4158
4159 <div class="ssp-card-registro-interesse__check-item">
4160 <input type="checkbox" name="" value="T" id="periodo-t">
4161 <label for="periodo-t">Tarde</label>
4162 </div>
4163
4164 <div class="ssp-card-registro-interesse__check-item">
4165 <input type="checkbox" name="" value="N" id="periodo-n">
4166 <label for="periodo-n" "="">Noite</label>
4167 </div>
4168
4169
4170 </div>
4171
4172 </div>
4173
4174 <div class="ssp-card-registro-interesse__card-politica">
4175
4176
4177 </div>
4178
4179 <div class="ssp-card-registro-interesse__check-item">
4180 <input type="checkbox" name="" value="" id="check-politica-privacidade">
4181 <label for="check-politica-privacidade">Aceito a Política de Privacidade</label>
4182 </div>
4183
4184 <div class="text-center mt-5">
4185
4186 <button class="btn btn-nivel ssp-card-registro-interesse__btn-enviar btn-with-loading" href="#a" id="enviar-registro-interesse-btn" disabled="disabled">Enviar</button>
4187
4188 <p class="ssp-card-registro-interesse__aviso"><strong>Importante:</strong> O registro de interesse não garante a vaga.</p>
4189
4190 </div>
4191
4192 </div>
4193
4194 <#else>
4195
4196 <div class="ssp-card-registro-interesse emed">
4197
4198 <i id="btn-close-Modal-registro-interesse" class="fas fa-times btn-close__modal-login"></i>
4199
4200 <p class="ssp-card-registro-interesse__label-curso-selecionado">Curso selecionado:</p>
4201
4202 <div class="emed-select-group">
4203
4204 <h3 class="ssp-card-registro-interesse__title-modal"></h3>
4205
4206 <div id="unidades-registro-interesse">
4207
4208 <h4 class="ssp-card-registro-interesse__title-section-itens">Escolha uma unidade</h4>
4209
4210 <div id="select-unidades-registro-interesse">
4211 <select class="ssp-card-registro-interesse__select unidades" id="select_0"><option value="" disabled="" selected="">Selecione uma unidade</option></select>
4212 </div>
4213
4214 <div class="ssp-card-registro-interesse__add-mais">
4215 <a class="" id="add-unidade-regsitro-interesse" href="#a"><i class="fas fa-plus mr-1"></i>Adicionar unidade</a>
4216
4217
4218
4219 <a class="" id="remove-unidade-regsitro-interesse" href="#a"><i class="fas fa-times mr-1"></i>Remover unidade</a>
4220 </div>
4221
4222 </div>
4223
4224 </div>
4225
4226
4227 <div id="periodo-registro-interesse">
4228
4229 <p class="ssp-card-registro-interesse__title-section-itens">Período:</p>
4230
4231 <div class="ssp-card-registro-interesse__check-itens-content periodos-registro-interesse">
4232 <div class="ssp-card-registro-interesse__check-item">
4233 <input type="checkbox" name="" value="M" id="periodo-m">
4234 <label for="periodo-m">Manhã</label>
4235 </div>
4236
4237 <div class="ssp-card-registro-interesse__check-item">
4238 <input type="checkbox" name="" value="T" id="periodo-t">
4239 <label for="periodo-t">Tarde</label>
4240 </div>
4241
4242 <div class="ssp-card-registro-interesse__check-item" id="div-campo-todos">
4243 <input type="checkbox" name="" value="" id="check-todos-periodos">
4244 <label for="check-todos-periodos">Todos</label>
4245 </div>
4246
4247 </div>
4248
4249 </div>
4250
4251 <div id="turmas-registro-interesse">
4252
4253 <p class="ssp-card-registro-interesse__title-section-itens">Turma:</p>
4254
4255 <div class="ssp-card-registro-interesse__check-itens-content turmas-registro-interesse">
4256
4257 <div class="ssp-card-registro-interesse__check-item">
4258 <input type="checkbox" name="" value="1" id="primeiro">
4259 <label for="primeiro">1º ano</label>
4260 </div>
4261
4262 <div class="ssp-card-registro-interesse__check-item">
4263 <input type="checkbox" name="" value="2" id="segundo">
4264 <label for="segundo">2º ano</label>
4265 </div>
4266
4267 <div class="ssp-card-registro-interesse__check-item">
4268 <input type="checkbox" name="" value="3" id="terceiro">
4269 <label for="terceiro">3º ano</label>
4270 </div>
4271
4272 </div>
4273
4274 </div>
4275
4276 <div id="msg-transferencia-emed">
4277
4278 <div class="transferencia-emed-title">
4279 <i class="fas fa-comment-exclamation"></i>
4280 <p>Quer se transferir de escola?</p>
4281 </div>
4282
4283 <div class="transferencia-emed-link">
4284 <a href="#">Fale direto com a unidade de interesse.</a>
4285 </div>
4286
4287 </div>
4288
4289 <div class="ssp-card-registro-interesse__card-politica">
4290
4291 </div>
4292
4293 <div class="ssp-card-registro-interesse__check-item">
4294 <input type="checkbox" name="" value="" id="check-politica-privacidade">
4295 <label for="check-politica-privacidade">Aceito a Política de Privacidade</label>
4296 </div>
4297
4298 <div class="text-center mt-5">
4299
4300 <button class="btn btn-nivel ssp-card-registro-interesse__btn-enviar btn-with-loading" href="#a" id="enviar-registro-interesse-btn" disabled="disabled">Enviar</button>
4301
4302 <p class="ssp-card-registro-interesse__aviso"><strong>Importante:</strong> O registro de interesse não garante a vaga.</p>
4303
4304 </div>
4305
4306 </div>
4307
4308 </#if>
4309 </section>
4310
4311 <section id="modal-registro-interesse-sucesso" class="ssp-modal-registro-interesse d-none">
4312
4313 <div class="ssp-card-msg-sucesso">
4314
4315 <div class="ssp-card-msg-sucesso__content">
4316 <i class="fas fa-exclamation-circle"></i>
4317 <p>Obrigado por registrar seu interesse!</p>
4318 <p>Acompanhe seu e-mail para ficar por dentro das novidades!</p>
4319 </div>
4320
4321 <div>
4322 <a class="btn btn-nivel ssp-card-msg-sucesso__btn" href="#" id="btn-voltar-home">Voltar para a home</a>
4323 </div>
4324
4325 </div>
4326
4327 </section>
4328
4329 <section id="modal-registro-interesse-erro" class="ssp-modal-registro-interesse d-none">
4330
4331 <div class="ssp-card-msg-erro">
4332
4333 <div class="ssp-card-msg-sucesso__content">
4334 <i class="fas fa-exclamation-circle" style="color: #ec3a3a;"></i>
4335 <p>Houve um erro ao registrar seu interesse!</p>
4336 <p>Por favor, tente novamente!</p>
4337 </div>
4338
4339 <div>
4340 <a class="btn btn-nivel ssp-card-msg-sucesso__btn" href="#">Voltar para a home</a>
4341 </div>
4342
4343 </div>
4344
4345 </section>
4346
4347 <!-- Aviso para curso de aprendizagem -->
4348
4349 <div id="aviso-curso-aprendizagem" class="ssp-bolsa-formulario__card-aviso-atencao d-none" style="width: 100%;">
4350
4351 <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i>
4352
4353 <div class="ssp-bolsa-formulario__card-aviso-texto">
4354 <p>Para contratar aprendiz, preencha o formulário e entraremos em contato.</p>
4355 </div>
4356
4357 </div>
4358
4359 <!-- modal form de aprendizagem -->
4360
4361 <#if isAprendizagem>
4362
4363 <#assign resources = themeDisplay.getPortalURL() />
4364 <link href="${resources}/documents/d/global/css-formulario-aprendizagem" rel="stylesheet" type="text/css">
4365
4366 <dialog id="modal-form" class="ssp-modal-ds">
4367
4368 <button type="button" data-modal="close-form-modal">
4369 Fechar
4370 <i class="fas fa-times"></i>
4371 </button>
4372
4373 </dialog>
4374
4375 </#if>
4376
4377 <div id="avisoTrampolim" class="ssp-bolsa-formulario__card-aviso-atencao container text-left d-none" style="width: 100%;">
4378 <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i>
4379 <div class="ssp-bolsa-formulario__card-aviso-texto"><p>Para informações sobre preço do curso e matrícula, entre em contato a unidade.</p>
4380 </div>
4381
4382 </div>
4383
4384
4385 <!--modal forma pagto extensao-->
4386 <section id="modalFormaPagtoExt" class="modal-extensao ssp-modal">
4387 <div class="modal-extensao_content">
4388 <i class="fas fa-undo modal-extensao-voltar-icon"><span class="modal-extensao-voltar-txticon">Voltar</span></i>
4389 <h1 class="modal-extensao-condicoes__title">Descontos e Parcelamento</h1>
4390 <div class="row">
4391
4392 <!-- <button class="btn-preco-padrao d-xs-flex d-sm-flex d-lg-none d-xl-none">
4393 Preço Padrão
4394 <i class="fas fa-chevron-right custom-icon-right"></i>
4395 </button> -->
4396
4397 <div class="col-lg-6 col-sm-12 col-xs-12">
4398
4399 <h2 class="modal-extensao_subtitle">Investimento</h2>
4400
4401 <span class="modal-extensao_preco">R$ <span class="precoVendaOferta"></span></span>
4402 <span class="modal-extensao_txteconomiza">.<b class="modal-extensao_txtverde"></b></span>
4403 <div class="modal-extensao_ctboleto pt-2 pb-2 mb-3">
4404 <i class="fas fa-barcode" aria-hidden="true"></i>
4405 <span class="modal-extensao_txtPag">Boleto Bancário</span>
4406 <span class="modal-extensao_txtParcela"><b><span class="numParcelaBoleto"></span>x de R$ <span class="precoParcelaBoleto"></span></b></span>
4407 <span class="modal-extensao_txtParcela">sem juros</span>
4408 </div>
4409 <div class="modal-extensao_ctcard pt-2 pb-2 mb-3">
4410 <i class="far fa-credit-card" aria-hidden="true"></i>
4411 <span class="modal-extensao_txtPag">Cartão de Crédito</span>
4412 <span class="modal-extensao_txtParcela"><b><span class="numParcelaCartoes"></span>x de R$ <span class="precoParcelaCartoes"></span></b></span>
4413 <span class="modal-extensao_txtParcela">sem juros</span>
4414 </div>
4415 <p class="modal-extensao_txtParcela pt-5"><b>À vista:</b> R$ <span class="precoAVistaPadraoExt"></span> <span class="modal-extensao_txtporcent">(-8%)</span></p>
4416 </div>
4417
4418 <!-- <hr class="ssp-divisor d-xs-block d-sm-block d-lg-none d-xl-none"> -->
4419
4420 <!-- <button class="btn-preco-ex-aluno d-xs-flex d-sm-flex d-lg-none d-xl-none">
4421 Preço para Contribuintes,<br>alunos e ex-alunos*
4422 <i class="fas fa-chevron-right custom-icon-right"></i>
4423 </button> -->
4424
4425 <div class="col-lg-6 col-sm-12 col-xs-12">
4426 <h2 class="modal-extensao_subtitle mt-4">Valor com 20% de desconto para alunos, ex-alunos e contribuintes Senac</h2>
4427 <span class="modal-extensao_preco">R$ <span class="precoContrExt"></span></span>
4428 <span class="modal-extensao_txteconomiza">Você economiza <b class="modal-extensao_txtverde">R$ <span class="economiaExt"></span> (-20%)</b></span>
4429 <div class="modal-extensao_ctboleto pt-2 pb-2 mb-3">
4430 <i class="fas fa-barcode" aria-hidden="true"></i>
4431 <span class="modal-extensao_txtPag">Boleto Bancário</span>
4432 <span class="modal-extensao_txtParcela"><b><span class="numParcelaBoleto"></span>x de R$ <span class="precoParcelaBoletoExt"></span></b></span>
4433 <span class="modal-extensao_txtParcela">sem juros</span>
4434 </div>
4435 <div class="modal-extensao_ctcard pt-2 pb-2 mb-3">
4436 <i class="far fa-credit-card" aria-hidden="true"></i>
4437 <span class="modal-extensao_txtPag">Cartão de Crédito</span>
4438 <span class="modal-extensao_txtParcela"><b><span class="numParcelaCartoes"></span>x de R$ <span class="precoParcelaCartoesExt"></span></b></span>
4439 <span class="modal-extensao_txtParcela">sem juros</span>
4440 </div>
4441 <p class="modal-extensao_txtParcela pt-5"><b>À vista:</b> R$ <span class="precoAVistaContrExt"></span> <span class="modal-extensao_txtporcent">(-8%)</span></p>
4442 </div>
4443 <div class="col-lg-6 col-sm-12 col-xs-12">
4444 <a target="_blank" href="#">
4445 <button class="btn modal-extensao__btn mt-3 text-uppercase">Comprar</button>
4446 </a>
4447 </div>
4448 <div class="col-lg-6 col-sm-12 col-xs-12">
4449 <button class="btn btn-primary modal-extensao-btn-conheca mt-3" >Conheça os descontos</button>
4450 </div>
4451 </div>
4452 </div>
4453
4454 <div class="modal-extensao_content modal-pergunta-aluno-ext d-none">
4455
4456 <i class="fal fa-times modal-extensao-voltar-icon" style="font-size:25px;"></i>
4457 <h1 class="modal-extensao-condicoes__title">Você é nosso aluno?</h1>
4458 <div class="row">
4459 <div class="col-6 text-right">
4460
4461 <button class="btn btn-primary modal-extensao-btn-aluno-sim-nao sim mt-3">Sim</button>
4462
4463 </div>
4464 <div class="col-6 text-left">
4465
4466 <button class="btn btn-primary modal-extensao-btn-aluno-sim-nao nao mt-3">Não</button>
4467
4468 </div>
4469 </div>
4470 <div class="row d-none msg-alunoSim">
4471 <div class="col-12 text-center mt-10">
4472 <i class="fas fa-check-circle modal-extensao-ico-check"></i>
4473 <h2 class="modal-extensao-condicoes__subtitle">Boa notícia!</h2>
4474 <p class="modal-extensao-aluno_txtcontent">Você tem 20% de desconto neste curso.<br> Faça seu login e preencha os dados solicitados.</p>
4475 <p class="mb-0">
4476 <a target="_blank" href="#">
4477 <button class="btn modal-extensao-aluno__btn ok mt-3">Fazer Inscrição</button>
4478 </a>
4479 </p>
4480 <p class="mt-0">
4481 <a href="https://www.sp.senac.br/descontos-e-parcelamentos/pos-e-extensao-universitaria">
4482 <button class="btn btn-primary modal-extensao-btn-conferir mt-3" id="btn-conferir-regras">Conferir Regras</button>
4483 </a>
4484 </p>
4485 </div>
4486 </div>
4487 <div class="row d-none msg-alunoNao">
4488 <div class="col-12 text-center mt-10">
4489 <i class="fas fa-percentage modal-extensao-ico-percent"></i>
4490 <h2 class="modal-extensao-condicoes__subtitle">Poxa! Não fique triste...</h2>
4491 <p class="modal-extensao-aluno_txtcontent">Você não tem direito ao desconto de 20% neste curso. Mas você tem direito ao desconto de pontualidade (melhorar texto)</p>
4492 <p class="mb-0">
4493 <a target="_blank" href="#">
4494 <button class="btn modal-extensao-aluno__btn not mt-3">Fazer Inscrição</button>
4495 </a>
4496 </p>
4497 <p class="mt-0">
4498 <a href="https://www.sp.senac.br/descontos-e-parcelamentos/pos-e-extensao-universitaria">
4499 <button class="btn btn-primary modal-extensao-btn-conferir mt-3" id="btn-conferir-regras">Conferir Regras</button>
4500 </a>
4501 </p>
4502 </div>
4503 </div>
4504 </div>
4505 </section>
4506
4507
4508 <!-- Modal Descontos e Parcelamento EMED -->
4509 <div id="modalPagtoEmed" class="ssp-modal">
4510
4511 <div class="ssp-card-modal-forma-pagamento">
4512
4513 <div class="ssp-card-modal-forma-pagamento__header">
4514 <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold text-center" style="color:#454F63">Descontos e parcelamentos</h6>
4515 <div class="ssp-modal-emed-btfechar">
4516 <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_0"></i>
4517 <span>Fechar</span>
4518 </div>
4519 </div>
4520
4521 <div class="ssp-card-modal-forma-pagamento__body">
4522
4523 <p class="ssp-modal-emed-info-valor-matricula"><span class="ssp-modal-emed-info-txt-matricula">1ª parcela de R$ <span class="precoParcelaEmedModal"></span> <span>+ <span class="numParcelaEmedModal"></span> mensalidades de R$ <span class="precoParcelaEmedModal"></span></span></p>
4524
4525 <p class="ssp-card-modal-forma-pagamento__valor-desconto ssp-modal-emed-valor-total-txt"> <span class="ssp-modal-emed-txtValor">Valor total:</span> <span class="precoVendaOferta ssp-modal-emed-valor-total">R$ 414,40</span>
4526 <span class="ssp-card-modal-emed-ano">/ano</span></p>
4527
4528 <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito text-center" style="border-bottom: 0px;"><i class="fas fa-badge-percent"></i> <span class="txt-pague-vista">Pague à vista e</span> <span class="txt-ganhe-mais" style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
4529 <div class="ssp-card-modal-emed-lineou"><span>ou</span></div>
4530
4531 <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:14px;text-align: center;">Ganhe fôlego: parcele seu curso!</small>
4532
4533 <div class="ssp-card-modal-forma-pagamento__tipos">
4534
4535 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" >
4536 <i class="ssp-card-modal-forma-pagamento__icon-boleto-cartao"></i>
4537 <div class="ssp-card-modal-forma-pagamento__info-cartao">
4538 <p><strong>Pix + Boleto Bancário</strong></p>
4539 <p>1ª parcela no Pix</p>
4540 <p>Valor restante em <span>até <span class="numParcelaCartoesBoleto"></span>x de <br>R$ <span class="precoParcelaCartoesBoleto"></span></span> sem juros no boleto</p>
4541 </div>
4542 </div>
4543
4544 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" >
4545 <i class="ssp-card-modal-forma-pagamento__icon-boleto-cartao"></i>
4546 <div class="ssp-card-modal-forma-pagamento__info-cartao">
4547 <p><strong>Cartão de Crédito +</strong></p>
4548 <p><strong>Boleto Bancário</strong></p>
4549 <!-- <p>1ª parcela em <span>até 4x de R$ <span class="valorParcelaEntradaCartoesBoleto">265,50</span></span> sem juros no cartão</p> -->
4550 <p>1ª parcela no cartão</p>
4551 <p>Valor restante em <span>até <span class="numParcelaCartoesBoleto"></span>x de <br>R$ <span class="precoParcelaCartoesBoleto"></span></span> sem juros no boleto</p>
4552 </div>
4553 </div>
4554
4555 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4 ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" id="content_boleto_0">
4556 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
4557 <div class="ssp-card-modal-forma-pagamento__info-cartao">
4558 <p><strong>Boleto Bancário</strong></p>
4559 <p>Em até <span><span class="numParcelaBoleto">12</span>x de R$ <span class="precoParcelaBoleto">34,53</span></span> sem juros</p>
4560 </div>
4561 </div>
4562
4563 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" >
4564 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
4565 <div class="ssp-card-modal-forma-pagamento__info-cartao">
4566 <p><strong>Cartão de Crédito</strong></p>
4567 <p>(<span class="textoCartoesAceitos">Mastercard, Visa, Elo, American Express, Hipercard</span>)</p>
4568 <p>Em até <span><span class="numParcelaCartoes">12</span>x de R$ <span class="precoParcelaCartoes">34,53</span></span> sem juros</p>
4569 </div>
4570 </div>
4571
4572 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4 ssp-card-modal-emed-centralizaPagtos" style="margin:0 auto" id="content_boleto_0">
4573 <i class="fa-brands fa-pix" style="margin-right:15px;font-size:18px"></i>
4574 <div class="ssp-card-modal-forma-pagamento__info-cartao">
4575 <p><strong>Pix</strong></p>
4576 <p>Valor total à vista com desconto</p>
4577 </div>
4578 </div>
4579
4580 <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito ssp-modal-emed-boxoito" data-info="data-para-matricula" style="margin:16px 0"><span class="ssp-card-modal-emed-valorObs obsspan"><i class="fas fa-exclamation-circle"></i>As vagas são limitadas e por ordem de chegada!</span>Garanta seu lugar! Matricule-se agora.</p>
4581
4582 <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito ssp-card-modal-emed-boxDesconto" data-info="msg-20-desconto"><strong>E você ainda tem</strong><span style="color:#FC7834;font-weight:bold"> 20% desconto na mensalidade se:</span><br>
4583 - Estuda ou estudou no Senac<br>
4584 - É dependente de quem trabalha em empresa contribuinte do Senac<br>
4585 - Estuda ou estudou na rede pública de ensino
4586 </p>
4587
4588 </div>
4589
4590 </div>
4591
4592
4593 <a href="#a" class="btn btn-lg w-100 ssp-btn-emed__voltar-curso" style="margin-top: 20px;font-weight:600" id="" data-espaco-ex="true" data-unidade="" data-evento="" data-destino-compra="" data-index=""><span class="">Voltar para página do curso</span></a>
4594
4595
4596
4597 </div>
4598 </div>
4599
4600 <#if isEMED>
4601 <div id="modalAntesCompraEmed" class="ssp-modal">
4602 <div class="ssp-modal-local-realizacao">
4603 <div class="ssp-modal-local-realizacao__title-content">
4604 <h6 class="ssp-modal-local-realizacao__title" style="padding-left:10%;">IMPORTANTE!</h6>
4605 <i class="ssp-card-modal-antes-compra__btn-close ssp-card-modal-forma-pagamento__btn-close"></i>
4606 </div>
4607 <div class="ssp-modal-local-realizacao__texto">
4608 <p class="texto-modal-emed textoEmedModalAntesCompra0010 d-none">
4609
4610 Esta matrícula é válida apenas para a compra do curso de acordo com a escola e o horário já selecionados.<br/>
4611
4612 </p>
4613 <p class="texto-modal-emed textoEmedModalAntesCompra0010Espera d-none">
4614
4615 Saiba como funciona a inscrição para a lista de espera:<br/><br/>
4616 - É válida somente para a <b>compra do curso</b><br/>
4617 - Não garante vaga para o estudante<br/>
4618 - É válida apenas para o curso, horário e escola selecionados<br/>
4619 - Caso surjam vagas, você receberá um e-mail para fazer a matrícula<br/>
4620
4621 </p>
4622 <p class="texto-modal-emed textoEmedModalAntesCompra0020e0030 d-none">
4623
4624 - Essa inscrição é para uma lista de espera de transferência para 2º ou 3º ano do Ensino Médio Técnico, por isso, ao realizá-la não garantimos a vaga<br/><br/>
4625 - A inscrição só pode ser solicitada para quem deseja estudar no Senac realizando a compra do curso<br/><br/>
4626 - Se a turma escolhida tiver vagas, você receberá um e-mail com orientações sobre a entrega de documentos e as formas de pagamento para efetivar a transferência
4627
4628 </p>
4629 <div class="btn ssp-modal-local-realizacao__btn-content">
4630 <button class="btn btn-lg btn-success w-100 mt-3" offercode="" id="btnCompraLocalEmed">Continuar para compra</button>
4631 <a class="ssp-modal-local-realizacao__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close" href="#a">Voltar para o curso</a>
4632 </div>
4633 </div>
4634 </div>
4635 </div>
4636
4637 </#if>
4638
4639
4640
4641
4642 <script>
4643 let showedFilters = false
4644 var groupId = themeDisplay.getScopeGroupId();
4645
4646 var urlSearchCursosPorCategory = '/o/senac-curso-services/cursosPorCategoryIds/{groupId}?categoryIds={categoryId}&start=0&end={limit}';
4647
4648 var urlSearchOferta = '/o/senac-oferta-services/ofertasPorCategoryIds/' + groupId
4649
4650 var urlSearchUnidade = '/o/senacsearch/Unidade/{companyId}/{groupId}/{userId}?q=codigoUnidade_pt_BR:{codigoUnidade}';
4651 var urlUnidadeInfoDetalhe = '/o/senac-content-services/unidadeInfoDetalhe/{companyId}/{codigoUnidade}';
4652 var urlSearchCursosPodeGostar = '/o/senac-content-services/cursosVocePodeGostar/{companyId}/{groupId}/{userId}/{articleId}/{limit}';
4653 var urlSearchCursoInfo = '/o/senac-content-services/cursosInfoDetalhe/{groupId}/{cursosInfo}?inscricaoAberta={inscricaoAberta}&bolsaAberta={bolsaAberta}&buscarUnidadesComOferta={buscarUnidadesComOferta}';
4654 var urlRegistroInteresse = '/o/senac-content-services/registroInteresse/';
4655 var urlRegistroInteresseEmailInteressado = '/o/senac-content-services/envioEmailRegistroInteresse/';
4656 var cntSelectUnidades = 1;
4657 var urlPlanoCurso = 'https://www.sp.senac.br/jsp/includeMatdid.jsp?file=/ha1shared/projects/matdid/{codigoFT}-{dataEfetiva}.html';
4658 var urlGetServerT = '/o/senac-content-services/getServerTime';
4659 var urlSearchCursosPodeGostarEmed = '/o/senac-curso-services/cursosPorCategoryIdsFilterAndOr/{groupId}/?categoryIdsOr={tiposDeCurso}&start=0&end={limit}&articleId={articleId}';
4660 var todayG = '';
4661 var codigoFTCursoAprendizagem = 18984;
4662 var globalGroupId = Liferay.ThemeDisplay.getCompanyGroupId();
4663 var isAoVivo = 0;
4664 var nomeFormatoAoVivoDxp = 'Senac Online - ao vivo';
4665 var ofertaUnidadeMap = new Map();
4666 var ultimaUnidade = 0;
4667 var regIndex = new RegExp('\{index\}', 'g');
4668 var linkBotaoCompra = 'http://www.sp.senac.br/login/Login?destino=/ecommerceFrontEnd/?vcw_unidade={codigoUnidade}&vcw_evento={codigoOferta}';
4669 var carregouUltimaOferta = false;
4670 var ofertasMap = new Map();
4671 var codUnidadeSenacAoVivo = '108';
4672 var ofertasComBolsa = false;
4673
4674 //funcao para pegar host do ambiente, se eh teste ou prod (utilizado no servico da bolsa)- 9546
4675 function getServiceEnvironmentHost(){
4676 if(!isAmbienteTeste())
4677 return window.location.origin
4678 else
4679 return 'https://gesportal.sp.senac.br'
4680 }
4681
4682 var hostBolsa = getServiceEnvironmentHost()
4683
4684 // Montar object push - google tag manager - 1
4685 let itensEcommerce = null;
4686 let ofertaSelecionada = null;
4687
4688 const today = new Date;
4689
4690 //categoryId -> cod unidade
4691 var mapUnidadesIds = new Map();
4692 var objsTela = {
4693 unidades: [],
4694 unidadesRegistroInteresse: [],
4695 categoriesIds:[],
4696 ofertasAoVivoTodasUnidades: [],
4697 primeiroChange: true
4698 };
4699 var startOfertaParam = 0;
4700 var endOfertaParam = 25;
4701
4702 var ehCursoTrampolim = false;
4703
4704 const isHibrido = $('input[name="formato"]').data('formato') === 'Presencial + EAD';
4705
4706 var textoFormatoHibrido = "";
4707 var temTextoParaFormatoHibrido = false;
4708
4709 //Validar se o campo textoFormatoHibrido existe e se não está vazio
4710 if(isHibrido){
4711 textoFormatoHibrido = $('input[name="textoFormatoHibrido"]').val();
4712 if(typeof textoFormatoHibrido !== 'undefined'){
4713 if (textoFormatoHibrido.trim() !== '' ) {
4714 temTextoParaFormatoHibrido = true;
4715 textoFormatoHibrido += '<br>';
4716 }
4717 }
4718 }
4719
4720 const HOST = window.location.origin;
4721 const URLGeral = window.location.href;
4722
4723 //EMED
4724 const anoTurmaEmed = '2026';
4725
4726 const tipoCursoNome = function(){ return $('.ssp-header-curso__tag-formato').text().trim(); }
4727
4728 const isEmed = (tipoCursoNome().indexOf('Ensino Médio Técnico') > -1);
4729
4730 const statusEmed = Object.freeze({
4731 NAO_ENCONTRADA: 0,
4732 INSCRICAO: 1,
4733 ESPERA: 2,
4734 ESGOTADO: 3
4735 });
4736
4737 let unidadesToURL = []
4738
4739 const loadPoliticaPrivacidade = async function() {
4740
4741 if(PortalService !== 'undefined') {
4742 const politicaContent = await PortalService.getPoliticaPrivacidade();
4743 document.querySelectorAll('.ssp-card-registro-interesse__card-politica').forEach(el => {
4744 el.innerHTML = politicaContent;
4745 });
4746 }
4747
4748 }
4749
4750 const localLivreOnline = function(textoLocal){
4751 textoLocal = textoLocal || ''
4752 textoLocal = textoLocal.replaceAll('online', 'on-line')
4753
4754 const textoOnline = 'Nesta turma, todas as aulas serão on-line e ao vivo pela plataforma digital Microsoft Teams';
4755
4756 return textoLocal.toUpperCase().includes(textoOnline.toUpperCase());
4757 }
4758
4759 const linkBolsa = function(oferta){
4760
4761 let tiposCurso = new Map();
4762 tiposCurso.set('livre', 'L');
4763 tiposCurso.set('tecnico', 'T');
4764 tiposCurso.set('aprendizagem', 'A');
4765 let letraTipoCurso = tiposCurso.get($('[name="tipoCurso"]').val()) || '';
4766
4767 // verifica o campo destinoBolsa da oferta - 9546
4768 var destinoBolsa = ""
4769 if(oferta.destinoBolsa){
4770 destinoBolsa = parseInt(oferta.destinoBolsa,10)
4771 }
4772
4773 return hostBolsa+'/login/Login?origem=bolsas&destino=/jsp/default.jsp?template=2464.dwt&testeira=1540&idcourse='+
4774 $('[name="codigoFT"]').val()+
4775 '&cod_evento='+
4776 oferta.codigoOferta+
4777 '&cod_u='+
4778 codigoUnidade+
4779 '&nvg='+
4780 oferta.qtdeTotalVagasPSG+
4781 '&type='+
4782 letraTipoCurso+
4783 '&sel_unit=&ft=y'+
4784 (destinoBolsa ? '&destino='+destinoBolsa : '');
4785 }
4786
4787
4788 $('.ssp-ofertas-emed__filtro-content .btn').on('click', function(){
4789
4790 var classAtivo = 'btn--filtro-ativo';
4791
4792 if(!$(this).hasClass(classAtivo)){
4793
4794 $(this).siblings().removeClass(classAtivo);
4795
4796 $(this).addClass(classAtivo);
4797
4798 const $cardTransferencias = $('.card-transferencias-emed');
4799
4800 if($(this).val() == '0'){
4801 hideCardSemTurmas(true);
4802 $('.ssp-slick-ofertas-emed').empty();
4803 if(!$('.ssp-slick-ofertas-emed').hasClass('d-none')) $('.ssp-slick-ofertas-emed').addClass('d-none');
4804 $('.prev-mobile, .next-mobile').addClass('d-none');
4805 $cardTransferencias.removeClass('d-none');
4806 } else{
4807 if(!$cardTransferencias.hasClass('d-none')) $cardTransferencias.addClass('d-none');
4808 $('.ssp-slick-ofertas-emed').removeClass('d-none');
4809 populaOfertas(objsTela.ofertas);
4810 }
4811
4812 }
4813
4814 });
4815
4816 //Cronometro
4817 var hidden, visibilityChange;
4818 var restartTimeout = null;
4819 var interval01, interval15;
4820
4821 if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
4822 hidden = "hidden";
4823 visibilityChange = "visibilitychange";
4824 } else if (typeof document.msHidden !== "undefined") {
4825 hidden = "msHidden";
4826 visibilityChange = "msvisibilitychange";
4827 } else if (typeof document.webkitHidden !== "undefined") {
4828 hidden = "webkitHidden";
4829 visibilityChange = "webkitvisibilitychange";
4830 }
4831
4832 // Verifica suporte a Visibility API
4833 if (typeof document.addEventListener === "undefined" || hidden === undefined) {
4834 console.log("Navegador incompativel com page visibility api");
4835 } else {
4836 // Evento para quando a visibilidade da pagina mudar
4837 document.addEventListener(visibilityChange, handleVisibilityChange, false);
4838 }
4839
4840 $(".ssp-saiba-mais-curso-accordion").on("click", ".ssp-saiba-mais-curso-accordion__heading", function() {
4841
4842 $(this).toggleClass("active").next().slideToggle();
4843
4844 $(".sp-saiba-mais-curso-accordion__contents").not($(this).next()).slideUp(300);
4845
4846 $(this).siblings().removeClass("active");
4847 });
4848
4849 function loadUnidadesRegistroInteresse(urlCursoInfo) {
4850 if(objsTela.unidadesRegistroInteresse && objsTela.unidadesRegistroInteresse.length)
4851 return
4852
4853 let urlUnidades = new URL(window.location.origin + urlCursoInfo)
4854 let paramsUnidades = new URLSearchParams(urlUnidades.search)
4855 paramsUnidades.delete('inscricaoAberta')
4856 paramsUnidades.delete('bolsaAberta')
4857 paramsUnidades.delete('buscarUnidadesComOferta')
4858 urlUnidades.search = '?' + paramsUnidades.toString()
4859 urlUnidades = urlUnidades.href
4860
4861 $.ajax({
4862 url: urlUnidades,
4863 method:'get',
4864 async: false
4865 }).done(function(data){
4866 if(data.length > 0){
4867 const cursoInfo = JSON.parse(data);
4868 const unidadesOfertantes = cursoInfo.unidadesOfertantes;
4869
4870 $.each(unidadesOfertantes, function(k,item){
4871 var unidade = {};
4872 unidade['categoryId'] = item['categoryId'];
4873 unidade['codigoUnidade'] = item['codigoUnidade'];
4874 unidade['nome'] = item['nomeUnidade'];
4875 unidade['enderecoUnidade'] =item['enderecoUnidade'];
4876 unidade['numero'] =item['numEnderecoUnidade'];
4877 unidade['complemento'] = item['complementoEnderecoUnidade'];
4878 unidade['bairro'] = item['bairroUnidade'];
4879 unidade['googlemapsUnidade'] = item['googlemapsUnidade'];
4880 unidade['friendlyURL'] = item['friendlyURL'];
4881 unidade['selecionado'] = false;
4882 unidade['selectSelecionado'] = "";
4883 unidade['ofertas'] = [];
4884
4885 if(!objsTela.unidadesRegistroInteresse.filter(uni => uni['categoryId'] == unidade['categoryId']).length)
4886 objsTela.unidadesRegistroInteresse.push(unidade)
4887 });
4888 }
4889 });
4890 }
4891
4892 function loadUnidades(showOptions, unidadeValue){
4893 //Busca as unidades do curso
4894 let buscarUnidadesComOferta = false;
4895
4896 if( !isEmed && ( !$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked')))
4897 buscarUnidadesComOferta = true;
4898
4899 const urlCursoInfo = urlSearchCursoInfo
4900 .replace('\{groupId\}', groupId)
4901 .replace('\{cursosInfo\}', $('[name="articleId"]').val())
4902 .replace('\{inscricaoAberta\}', $('#chkInscricao').prop('checked'))
4903 .replace('\{bolsaAberta\}', $('#chkBolsa').prop('checked'))
4904 .replace('\{buscarUnidadesComOferta\}', buscarUnidadesComOferta);
4905
4906 loadUnidadesRegistroInteresse(urlCursoInfo)
4907
4908 $.ajax({
4909 url:urlCursoInfo,
4910 method:'get',
4911 async: false,
4912 beforeSend: function () {
4913 loading('.oferta-slick-area');
4914 }
4915 }).done(
4916 function(data){
4917
4918 if(data.length > 0){
4919
4920 const cursoInfo = JSON.parse(data);
4921
4922 const unidades = buscarUnidadesComOferta ? cursoInfo.unidadesComOferta : cursoInfo.unidadesOfertantes;
4923
4924 if(!isAoVivo && (!buscarUnidadesComOferta || unidades.length > 0))
4925 $('.ssp-container-selecione-unidade').removeClass('d-none')
4926
4927 objsTela.unidades = []
4928 mapUnidadesIds = new Map();
4929
4930 $.each(unidades, function(k,item){
4931
4932 var unidade = cloneObj(item)
4933 unidade['nome'] = item['nomeUnidade'];
4934 unidade['numero'] =item['numEnderecoUnidade'];
4935 unidade['complemento'] = item['complementoEnderecoUnidade'];
4936 unidade['bairro'] = item['bairroUnidade'];
4937 unidade['ofertas'] = [];
4938
4939 objsTela.unidades.push(unidade);
4940
4941 mapUnidadesIds.set(unidade['categoryId'], unidade['codigoUnidade']);
4942
4943 objsTela.unidades.forEach(unidade => unidadesToURL.filter(u => u.friendlyURL == unidade.friendlyURL).length ? '' : unidadesToURL.push(unidade))
4944 });
4945
4946
4947 populaSelectUnidades(undefined, showOptions, unidadeValue);
4948
4949 }
4950 });
4951
4952 }
4953
4954function getOfertaObjectFromJson(ofertaJSON,index){
4955
4956
4957 var oferta = {};
4958 var xml = $($.parseXML(ofertaJSON.content));
4959 oferta['ordenar'] = paramOrdem(xml);
4960 oferta['vagasTotal'] = xml.find('[name="vagasTotal"]').text().trim();
4961 var dataInicio = xml.find('[name="dataInicioOferta"]').text().split('-');
4962 var dataFim =xml.find('[name="dataFimOferta"]').text().split('-');
4963 oferta['dataInicio'] = dataInicio[2].trim()+'/'+dataInicio[1].trim()+'/'+dataInicio[0].trim();
4964 oferta['dataFim'] = dataFim[2].trim()+'/'+dataFim[1].trim()+'/'+dataFim[0].trim();
4965 oferta['horaInicio'] = xml.find('[name="horaInicioOferta"]').text();
4966 oferta['codigoOferta'] = xml.find('[name="codigoOferta"]').text().trim();
4967 var dias = [];
4968 oferta['horaFimOferta'] = xml.find('[name="horaFimOferta"]').text().trim();
4969 xml.find('[name="diasDaSemanaOferta"]').find('option').each(function(index,dia){
4970 dias.push($(dia).text());
4971 });
4972 oferta['diasDaSemanaOferta'] = dias;
4973 oferta['periodoDiaOferta'] = xml.find('[name="periodoDiaOferta"]').text().trim();
4974 oferta['precoCheioOferta'] = xml.find('[name="precoCheioOferta"]').text().trim();
4975 oferta['precoVendaOferta'] = xml.find('[name="precoVendaOferta"]').text().trim();
4976 oferta['numeroMaxParcelasOferta'] = xml.find('[name="numeroMaxParcelasOferta"]').text().trim();
4977
4978 oferta['textoCartoesAceitos'] = pegarTextoCartoesAceitos(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
4979 oferta['numParcelaCartoes'] = pegaNumParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
4980 oferta['precoParcelaCartoes'] = pegaValorParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
4981 oferta['numParcelaBoleto'] = pegaNumParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim());
4982 oferta['precoParcelaBoleto'] = pegaValorParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim());
4983
4984 oferta['precoVendaMaxParcelaOferta'] = xml.find('[name="precoVendaMaxParcelaOferta"]').text().trim();
4985 oferta['formaDePagamentoOferta'] = xml.find('[name="formaDePagamentoOferta"]').text().trim();
4986 oferta['botaoCompraOferta'] = xml.find('[name="botaoCompraOferta"]').text().trim();
4987 oferta['vagasParaCompraOferta'] = xml.find('[name="vagasParaCompraOferta"]').text().trim();
4988 oferta['botaoBolsaOferta'] = xml.find('[name="botaoBolsaOferta"]').text().trim();
4989 oferta['vagasBolsaOferta'] = xml.find('[name="vagasBolsaOferta"]').text().trim();
4990 oferta['dataAberturaBolsaOferta'] = xml.find('[name="dataAberturaBolsaOferta"]').text().trim();
4991 oferta['horaAberturaBolsaOferta'] = xml.find('[name="horaAberturaBolsaOferta"]').text().trim();
4992 oferta['espacoExterno'] = xml.find('[name="espacoExterno"]').text().trim();
4993 oferta['localEspacoExterno'] = xml.find('[name="localEspacoExterno"]').text().trim();
4994 oferta['ruaEspacoExterno'] = xml.find('[name="ruaEspacoExterno"]').text().trim();
4995 oferta['numeroEspacoExterno'] = xml.find('[name="numeroEspacoExterno"]').text().trim();
4996 oferta['complementoEspacoExterno'] = xml.find('[name="complementoEspacoExterno"]').text().trim();
4997 oferta['bairroEspacoExterno'] = xml.find('[name="bairroEspacoExterno"]').text().trim();
4998 oferta['cidadeEspacoExterno'] = xml.find('[name="cidadeEspacoExterno"]').text().trim();
4999 oferta['ufEspacoExterno'] = xml.find('[name="ufEspacoExterno"]').text().trim();
5000 oferta['cepEspacoExterno'] = xml.find('[name="cepEspacoExterno"]').text().trim();
5001 oferta['qtdeTotalVagas'] = xml.find('[name="qtdeTotalVagas"]').text().trim();
5002 oferta['qtdeTotalVagasPSG'] = xml.find('[name="qtdeTotalVagasPSG"]').text().trim();
5003 oferta['horariosAllOferta'] = xml.find('[name="horariosAllOferta"]').text().trim();
5004 oferta['formaDePagamentoCartaoOferta'] = xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim();
5005 oferta['formaDePagamentoBoletoOferta'] = xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim();
5006 oferta['dtLimiteMatricula'] = xml.find('[name="dtLimiteMatricula"]').text().trim();
5007 oferta['dataAberturaMatricula'] = xml.find('[name="dataAberturaMatricula"]').text().trim();
5008 oferta['etapa'] = xml.find('[name="etapa"]').text().trim();
5009 oferta['destinoCompra'] = xml.find('[name="destinoCompra"]').text().trim();
5010 //adicao do destinoBolsa na oferta - 9546 - 11/07/2022
5011 oferta['destinoBolsa'] = xml.find('[name="destinoBolsa"]').text().trim();
5012
5013 // 18/07/2025 - Removido o dataAberturaBolsaOferta recebendo o dataAberturaMatricula
5014 // devido a mudança de regra que recebemos da área
5015
5016 return oferta;
5017 }
5018
5019 const getStatusEmed = (oferta) => {
5020
5021 const urlStatusEsperaEmed = () => {
5022 let url = (isAmbienteTeste()) ?
5023 'https://hinscricao-educacional-backend.sp.senac.br/api/lista-espera/'
5024 : 'https://inscricao-educacional-ms.sp.senac.br/api/lista-espera/';
5025
5026 return url + oferta.codigoOferta;
5027 }
5028
5029 const callTl = async () => {
5030 if(getCookie('tl') == null){
5031 return await $.ajax({
5032 url: '/o/senac-content-services/geraTokenServicosSenac',
5033 method: 'GET'
5034 });
5035 }
5036 return getCookie('tl');
5037 }
5038
5039 const callListaEspera = async () => {
5040 var tl = '';
5041 try{
5042 tl = await callTl();
5043 if(getCookie('tl') == null){
5044 tl = JSON.parse(tl).token;
5045 writeCookie('tl', tl, 6, '');
5046 }
5047 }catch(err){
5048 console.error(err);
5049 return {};
5050 }
5051
5052 return $.ajax({
5053 url: urlStatusEsperaEmed(),
5054 method: 'GET',
5055 beforeSend: function (xhr) {
5056 xhr.setRequestHeader("Authorization", tl);
5057 }
5058 })
5059 }
5060
5061 return new Promise(async function (resolve, reject) {
5062 const resp = await callListaEspera();
5063 if(typeof resp !== 'object') resp = JSON.parse(resp);
5064 let status = resp.STATUS;
5065 resolve(status);
5066 });
5067
5068 }
5069
5070 function getOfertasAoVivo(codigoFT, dataEfetivaOferta, categoryIds){
5071
5072 if(categoryIds && categoryIds.length) {
5073 var params = new URLSearchParams();
5074 params.set('codigoFTOferta',codigoFT)
5075 params.set('dataEfetivaOferta',dataEfetivaOferta)
5076 params.set('categoryIds',categoryIds)
5077 params.set('start',startOfertaParam)
5078 params.set('end',endOfertaParam)
5079 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
5080 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
5081 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
5082
5083 if($('#chkBolsa').prop('checked')){
5084 params.set('considerarDataBolsaFutura', true)
5085 }
5086 const url = urlSearchOferta + '?' + params.toString()
5087
5088 $.ajax({
5089 url:url,
5090 method:'get',
5091 dataType:'json',
5092 async: false
5093 }).done(
5094 function(data){
5095
5096 if(data.length > 0){
5097 $('#ssp-alternadores').show()
5098 showedFilters = true
5099
5100 objsTela.ofertasAoVivoTodasUnidades = []
5101
5102 data.forEach(function(ofertaJSON,index){
5103
5104 var oferta = getOfertaObjectFromJson(ofertaJSON,index);
5105
5106 //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo
5107 ofertaUnidadeMap.set(oferta['codigoOferta'],mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));
5108 objsTela.ofertasAoVivoTodasUnidades.push(oferta);
5109
5110 });
5111 } else {
5112 loadAlternadores(data)
5113 }
5114
5115 populaOfertas(objsTela.ofertasAoVivoTodasUnidades);
5116 addEventBolsa()
5117 }
5118 ).fail(function(e) {
5119 console.error(e)
5120 populaOfertas(objsTela.ofertasAoVivoTodasUnidades = []);
5121 })
5122 } else {
5123 loadAlternadores([])
5124 populaOfertas(objsTela.ofertasAoVivoTodasUnidades = [])
5125 }
5126
5127 if(isAoVivo) {
5128 if(objsTela.ofertasAoVivoTodasUnidades && objsTela.ofertasAoVivoTodasUnidades.length)
5129 hideCardSemTurmas(true)
5130 else
5131 hideCardSemTurmas(false)
5132 }
5133 }
5134
5135 function mudouToggleOferta(ofertas) {
5136 const oferta = ofertas && ofertas[0]
5137 if(!oferta)
5138 return true
5139
5140 const selecaoInscricao = $('#chkInscricao').prop('checked')
5141 const selecaoBolsa = $('#chkBolsa').prop('checked')
5142
5143 return oferta.selecaoInscricao != selecaoInscricao || oferta.selecaoBolsa != selecaoBolsa
5144 }
5145
5146 function loadAlternadores(ofertas) {
5147 if(showedFilters) {
5148 $('#ssp-alternadores').show()
5149 return
5150 }
5151
5152 if($('#unidades-ofertas').is(":hidden") || $('#unidades-ofertas option').length <= 1) {
5153 if(isAoVivo) {
5154 if(ofertas && ofertas.length)
5155 $('#ssp-alternadores').show()
5156 else {
5157 if(!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked'))
5158 $('#ssp-alternadores').hide()
5159 else
5160 $('#ssp-alternadores').show()
5161 }
5162 } else {
5163 if(!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked'))
5164 $('#ssp-alternadores').hide()
5165 else
5166 $('#ssp-alternadores').show()
5167 }
5168 } else
5169 $('#ssp-alternadores').show()
5170
5171 showedFilters = showedFilters || $('#ssp-alternadores').is(":visible")
5172 }
5173
5174 function getOfertas(codigoFT, dataEfetivaOferta, categoryId){
5175
5176 var indiceUnidade = -1;
5177 const selecaoInscricao = $('#chkInscricao').prop('checked')
5178 const selecaoBolsa = $('#chkBolsa').prop('checked')
5179
5180 for(var i = 0; i < objsTela.unidades.length; i++)
5181 if(objsTela.unidades[i].categoryId == categoryId)
5182 indiceUnidade = i;
5183
5184 ultimaUnidade = indiceUnidade;
5185
5186 if( !objsTela.categoriesIds.includes(categoryId) || mudouToggleOferta(objsTela.unidades[indiceUnidade]['ofertas'])){
5187 objsTela.unidades[indiceUnidade]['ofertas'] = []
5188
5189 var params = new URLSearchParams();
5190 params.set('codigoFTOferta',codigoFT)
5191 params.set('dataEfetivaOferta',dataEfetivaOferta)
5192 params.set('categoryIds',categoryId)
5193 params.set('start',startOfertaParam)
5194 params.set('end',endOfertaParam)
5195 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
5196 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
5197 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
5198
5199 if($('#chkBolsa').prop('checked')){
5200 params.set('considerarDataBolsaFutura', true)
5201 }
5202
5203 const url = urlSearchOferta + '?' + params.toString()
5204
5205 $.ajax({
5206 url:url,
5207 method:'get',
5208 dataType:'json',
5209 async: false
5210 }).done(
5211 function(data){
5212
5213 if(data.length > 0){
5214 $('#ssp-alternadores').show()
5215 showedFilters = true
5216
5217 $('.ssp-container-selecione-unidade').show();
5218
5219 data.forEach(function(ofertaJSON,index){
5220
5221 var oferta = getOfertaObjectFromJson(ofertaJSON,index);
5222
5223 //Preenche as ofertas da unidade
5224 objsTela.unidades[indiceUnidade]['ofertas'].push(oferta);
5225 objsTela.unidades[indiceUnidade]['ofertas'].forEach(o => {
5226 o.selecaoInscricao = selecaoInscricao
5227 o.selecaoBolsa = selecaoBolsa
5228 })
5229
5230 });
5231 } else {
5232 loadAlternadores()
5233 }
5234 objsTela.categoriesIds.push(categoryId);
5235 populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']);
5236 addEventBolsa()
5237 }
5238 )
5239
5240 //Se estiver na cache, valida as ofertas
5241 }else{
5242
5243 populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']);
5244
5245 }
5246 }
5247
5248 function populaSelectUnidades(unidades, showOptions, unidadeValue){
5249 var unidadePreSelecionada = false;
5250 var categoryIdUnidadePreSelecionada = '';
5251
5252 //Oredenacao
5253 objsTela.unidades.sort(function (a, b) {
5254 return ordenar(a, b, 'nome');
5255 });
5256
5257 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
5258 return ordenar(a, b, 'nome');
5259 });
5260
5261 //console.log(objsTela.unidades);
5262
5263 $.each(objsTela.unidades, function(k,item){
5264
5265 if(getURLData().includes('/'+item.friendlyURL+'/')){
5266 unidadePreSelecionada= true;
5267 categoryIdUnidadePreSelecionada = item['categoryId'];
5268 }
5269 });
5270
5271 //console.log('Unidade Pre '+unidadePreSelecionada);
5272
5273 if(objsTela.unidades.length == 0){
5274 if(!showOptions)
5275 $('.ssp-container-selecione-unidade').addClass('d-none');
5276 $('.oferta-slick-area').empty();
5277 $('.prev-mobile').addClass('d-none');
5278 $('.next-mobile').addClass('d-none');
5279 //EMED remove msg registro interesse
5280 //if(isEmed) $('.ssp-card-oferta-curso__sem-vaga-description').addClass('d-none');
5281 }
5282
5283 if(isAoVivo){
5284
5285 const codigoFT = $('[name="codigoFT"]').val();
5286 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
5287
5288 var unidadesCategoryAll = '';
5289
5290 $.each(objsTela.unidades, function(k,unidade){
5291 unidadesCategoryAll += unidade['categoryId']+',';
5292 });
5293
5294 //tirando ultima virgula
5295 unidadesCategoryAll = unidadesCategoryAll.substring(0,unidadesCategoryAll.length - 1);
5296
5297 getOfertasAoVivo(codigoFT, dataEfetivaOferta, unidadesCategoryAll);
5298
5299 }else{
5300 $('#unidades-ofertas').empty()
5301
5302 if(objsTela.unidades && objsTela.unidades.length){
5303 if(isEmed)
5304 $('#unidades-ofertas').append($('<option value="">Selecione uma unidade</option>'))
5305 else
5306 $('#unidades-ofertas').append($('<option value="">Clique na unidade de interesse</option>'))
5307
5308 } else
5309 $('#unidades-ofertas').append($('<option value="">Nenhum resultado encontrado</option>'))
5310
5311 let unidadeFounded = criarOptionUnidadesPorRegiao(objsTela.unidades)
5312
5313 //Dispara o evento para primeira unidade ou pela friendlyURl da unidade
5314 if(unidadeValue) {
5315 $('#unidades-ofertas').val(unidadeValue);
5316 $('#unidades-ofertas').change();
5317 } else if(unidadeFounded){
5318 $('#unidades-ofertas').val(unidadeFounded['categoryId']+"@"+unidadeFounded['codigoUnidade']);
5319 $('#unidades-ofertas').change();
5320 } else if(!unidadePreSelecionada) {
5321 $('#unidades-ofertas').change();
5322 }
5323
5324 $('.ssp-card-registro-interesse__select.unidades').empty()
5325 $('.ssp-card-registro-interesse__select.unidades').append('<option value="" disabled selected>Selecione uma unidade</option>')
5326 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
5327
5328 $('.ssp-card-registro-interesse__select.unidades').append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>');
5329 });
5330 }
5331
5332 }
5333
5334 function excecaoCursoGratuito(oferta){
5335 return $('[name="modalidadeName"]').val() == 'acoes-educ.-curta-duracao' && $('[name="tipoCurso"]').val() == 'livre' && (strToFloat(oferta.precoVendaOferta) == 0);
5336 }
5337
5338
5339 function mudarUnidade(ev){
5340 startOfertaParam = 0;
5341 endOfertaParam = 25;
5342 carregouUltimaOferta = false;
5343
5344 var elem = $(ev.target);
5345 var unidades = objsTela.unidades;
5346
5347 //verifica se selecionou alguma unidade
5348 if(!elem.val()){
5349 $('#informe-novas-turmas, .ssp-ofertas-emed__section, .ssp-ofertas__box-endereco-unidade').addClass('d-none');
5350
5351 if(isEmed)
5352 $('#ssp-section-response').addClass('d-none')
5353
5354 hideCardSemTurmas($('#unidades-ofertas option').length > 1)
5355
5356 elem.val('')
5357 habilitarRegistroInteresse(false)
5358 //Zera variável que controla existência de ofertas com bolsa
5359 ofertasComBolsa = false;
5360 controlaPaginaBolsa();
5361
5362 return;
5363 }
5364
5365 $('#informe-novas-turmas, .ssp-ofertas__box-endereco-unidade').removeClass('d-none');
5366 hideCardSemTurmas(true)
5367 if(isEmed){
5368 $('.ssp-ofertas-emed__section').removeClass('d-none');
5369 $('#ssp-section-response').removeClass('d-none')
5370 $('.ssp-card-oferta-curso__section-title').addClass('d-none');
5371 $('.prev-mobile, .next-mobile').addClass('d-none');
5372 var nomeUnidade = $('#unidades-ofertas option:selected').text();
5373 let tamScreen = $(window).width();
5374
5375 if(tamScreen < 1024)
5376 $('#titulo-emed').text('Turmas ' + anoTurmaEmed );
5377 else
5378 $('#titulo-emed').text('Turmas ' + anoTurmaEmed + ' - ' + nomeUnidade);
5379
5380 }
5381
5382 const codigoFT = $('[name="codigoFT"]').val();
5383 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
5384
5385 //colocamos dentro do option categoryId@codUnidade
5386 splitted = elem.val().split("@");
5387 var categoryIdUnidade = splitted[0];
5388 var codUnidade = splitted[1];
5389
5390 for(var i = 0; unidades.length > i ; i++){
5391
5392 if(unidades[i].categoryId == categoryIdUnidade){
5393
5394 var unidade = unidades[i];
5395
5396 //Exibe o endereco da unidade
5397 const urlBuscaUnidade = urlUnidadeInfoDetalhe
5398 .replace('\{companyId\}',themeDisplay.getCompanyId())
5399 .replace('\{codigoUnidade\}', unidade.codigoUnidade);
5400
5401 $.ajax({
5402 url : urlBuscaUnidade,
5403 type : 'get',
5404 dataType: 'json',
5405 success: function( unidadeInfo ) {
5406 if(unidadeInfo != null && typeof unidadeInfo !== 'undefined'){
5407
5408 var endereco = concatSTR(unidadeInfo.enderecoUnidade,unidadeInfo.numEnderecoUnidade,', ');
5409 endereco = concatSTR(endereco,unidadeInfo.complementoEnderecoUnidade, ' - ');
5410 endereco = concatSTR(endereco,unidadeInfo.bairroUnidade, ' - ');
5411
5412 $('.ssp-ofertas__endereco-unidade').text(endereco);
5413 $('.ssp-ofertas__endereco-unidade').attr('href',unidadeInfo.googlemapsUnidade);
5414 }
5415 },
5416 error: function(data){
5417 $('.ssp-ofertas__endereco-unidade').text('');
5418 $('.ssp-ofertas__endereco-unidade').attr('href','#a');
5419 console.log('Unidade não encontrada');
5420 }
5421 })
5422
5423 getOfertas(codigoFT, dataEfetivaOferta, unidades[i].categoryId);
5424
5425 habilitarRegistroInteresse(!!(unidades && unidades.length));
5426
5427 }
5428 }
5429 }
5430
5431 function pegarTextoCartoesAceitos(campo){
5432 indice = campo.indexOf(' em até ');
5433 inicio = 0;
5434 fim = indice;
5435
5436 return campo.substring(inicio, fim);
5437 }
5438
5439 function pegaNumParcela(campo){
5440
5441 indice = campo.indexOf('até ');
5442 inicio = indice + 4;
5443 fim = indice + 6;
5444
5445 return campo.substring(inicio, fim);
5446
5447 }
5448
5449 function pegaValorParcela(campo){
5450
5451 indice = campo.indexOf('R$');
5452 inicio = indice+2;
5453 valorAmericano = campo.substring(inicio)
5454
5455 return formataValor(valorAmericano);
5456
5457 }
5458
5459 function montaHTMLOferta(oferta, index, codigoUnidade, posLoad){
5460
5461 var retornoDiasHorarios = processaDiasHorariosOferta(oferta.horariosAllOferta);
5462 diasSemanaHTML = "";
5463
5464 for(var diaDaOferta of retornoDiasHorarios){
5465 diasSemanaHTML += htmlSlickAreaDiasSemana.replace('\{diasSemana\}',diaDaOferta.dias);
5466 diasSemanaHTML = diasSemanaHTML.replace('\{horasSemana\}',diaDaOferta.horario)
5467 }
5468
5469 var ofertaHTML = "";
5470
5471 if(isEmed){
5472
5473 ofertaHTML = htmlSlickAreaEmed(oferta);
5474 $('[name="codUnidadeSelecionada"]').val(codigoUnidade);
5475
5476 if(!posLoad) $('.ssp-slick-ofertas-emed').append(ofertaHTML)
5477 else $('.ssp-slick-ofertas-emed').slick('slickAdd', ofertaHTML);
5478 }else{
5479
5480
5481 ofertaHTML = htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade)
5482
5483 if(!posLoad)
5484 $('.oferta-slick-area').append(ofertaHTML);
5485 else
5486 $('.oferta-slick-area').slick('slickAdd', ofertaHTML);
5487
5488 ajustaTextoDiasHorarioOferta(oferta.codigoOferta);
5489
5490 }
5491
5492 if(turmasIniciadas(oferta.dataInicio))
5493 $("#aviso-turma-iniciada-"+index).show();
5494
5495 //remove os botões/itens de compra/bolsa caso seja preciso
5496 $('.oferta-slick-area').find('.d-none-btn').remove();
5497 }
5498
5499
5500 //RECEBE A STRING DE HORARIOS E RETORNA UMA LISTA DE OBJETOS COM OS DIAS E HORARIOS FORMATADOS
5501 //@horariosAllOferta String com os dias da semana em sigla seguido do horario da aula e separados por virgula EX: "Qui 12h às 13, Sex 12h às 13h"
5502 function processaDiasHorariosOferta(horariosAllOferta){
5503
5504 var dias = horariosAllOferta.trim().split(',');
5505 let arrayDiasSemana = [{"Seg":"Segunda"},{"Ter":"Terça"},{"Qua":"Quarta"},{"Qui":"Quinta"},{"Sex":"Sexta"},{"Sab":"Sábado"},{"Dom":"Domingo"}]
5506
5507 var arrayDia = [];
5508 if(dias.length >= 1){
5509 for(var k=0; dias.length > k; k++){
5510 var diasSplit = dias[k].trim().split(' ');
5511 var diasSemana = diasSplit.shift()
5512 var ultimaPos = diasSplit.length-1;
5513 var horasStr = diasSplit[0] + ' às ' + diasSplit[ultimaPos]
5514 arrayDia.push({horasStr,diasSemana});
5515 }
5516 }
5517
5518 arrayDia = groupByArray(arrayDia, 'horasStr','diasSemana');
5519 arrayDia = orderByArray(arrayDia,arrayDiasSemana);
5520
5521 var ret = diaHorarioOfertaFormatado(arrayDia,arrayDiasSemana);
5522 return ret;
5523 }
5524
5525 //cria um array de objetos Agrupando de acordo ao campo informado como chave.
5526 //@arr = Array multidimensional que tenha os campos key e valueAdd
5527 //@key = campo que será chave nesse array
5528 //@valueAdd = campo que será agrupado caso tenha a mesma informação passada no campo key
5529 const groupByArray = (arr, key,valueAdd) => {
5530 const initialValue = [];
5531 const retornoValue = [];
5532 arr.forEach((acc, cval) => {
5533 const myAttribute = cval[key];
5534 acc[key] in retornoValue ? retornoValue[acc[key]].push(acc[valueAdd]):retornoValue[acc[key]]=[acc[valueAdd]];
5535 return acc;
5536 }, initialValue);
5537 return retornoValue;
5538 };
5539
5540
5541 //Cria um array de objetos a partir do primeiro array inserido e ordenados de acordo a ordem do segundo array informado.
5542 //@arrayOrdena = Array de objetos que tenha os campos que precisa ser ordenados
5543 //@ordem = array com a sequencia que queira ordenar - ex: seg, ter, qua, qua
5544 const orderByArray = (arrayOrdena, ordem) => {
5545
5546 let diasSem = [];
5547 const arrayOrdenado = [];
5548 let controle;
5549
5550 //percorre cada campo existente no ordem e busca o mesmo no arrayOrdena, encontrando insere no arrayOrdenado
5551 for(let campo of ordem){
5552 Object.entries(arrayOrdena).forEach(([key, value]) => {
5553 for(let diaOferta of value){
5554 if(diaOferta===Object.keys(campo)[0]){
5555 arrayOrdenado[key]=arrayOrdena[key];
5556 }
5557 }
5558 })
5559 }
5560 return arrayOrdenado;
5561 };
5562
5563 //retorna o valor de um objeto dentro de um array
5564 //@objetoBusca = array de objetos que sera buscado o valor
5565 //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor
5566 function findValueInObject(objetoBusca, keyBusca){
5567 var retorno = "";
5568 Object.entries(objetoBusca).forEach(([horario, dias]) => {
5569 Object.entries(dias).forEach(([key,val]) => {
5570 if(key.trim()==keyBusca.trim()){
5571 retorno = val;
5572 }
5573 });
5574 });
5575 return retorno;
5576 }
5577
5578 //Recebe um objeto com valores dos dias da semana e define se sao dias seguidos ou alternados.
5579 //@arrayComDiasDaSemana = array com os dias da semana a serem validados - exemplo ['Qua','Qui','Sex']
5580 //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor
5581 function diasSequenciaisOuAlternados(arrayComDiasDaSemana, arrayDiasDaSemana){
5582
5583 let arrayValidador = [];
5584
5585 //cria um array com o index dos dias das semanas encontrados [0 = seg, 1 = ter ... 6 = dom]
5586 for(let diaOferta of arrayComDiasDaSemana){
5587 for(let i = 0; i < arrayDiasDaSemana.length; i++){
5588 if(diaOferta === Object.keys(arrayDiasDaSemana[i])[0]){
5589 arrayValidador[i] = true;
5590 }
5591 }
5592 }
5593
5594 let keyCompair = 99;
5595 var sequencial = true;
5596
5597 //verifica quais posições foram criadas no array, e se os valores delas estão em sequencia.
5598 for(let keyValidator of Object.keys(arrayValidador)){
5599 keyValidator = parseInt(keyValidator);
5600 if(keyCompair!==99){
5601 if(keyValidator===keyCompair){
5602 sequencial = true;
5603 }else{
5604 sequencial = false;
5605 break;
5606 }
5607 }
5608 keyCompair = keyValidator+1;
5609 }
5610 return sequencial;
5611 }
5612
5613
5614 //Exibe as informações de dia e horario de oferta de acordo a sua estrutura
5615 //Caso os dias sejam sequenciais exibe a primeiro e ultimo dia da semana ligados com a letra 'a' Ex: Segunda a Quinta
5616 //Caso os dias Nao sejam sequenciais exibem todos os dias separados por virgula Ex: Segunda, terça, sexta e domingo
5617 //@arrayAgrupadoEOrdenado = array de objetos que sera exibido
5618 //@arrayDiasDaSemana = array com os dias da semana, sendo chave a sigla da semana (ex: Qua) e o valor o nome esperado (ex: Quarta)
5619 function diaHorarioOfertaFormatado(arrayAgrupadoEOrdenado, arrayDiasDaSemana){
5620
5621 var stringAux = "";
5622 var listRetorno = [];
5623
5624 Object.entries(arrayAgrupadoEOrdenado).forEach(([key, value]) => {
5625
5626 var sequencial = diasSequenciaisOuAlternados(value, arrayDiasDaSemana);
5627 var stringAux = "";
5628 var diaOferta = {};
5629
5630 if(sequencial){
5631 switch (value.length) {
5632 case 1:
5633 stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+": ";
5634 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
5635 diaOferta.horario = key;
5636 break;
5637 case 2:
5638 stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" e "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": ";
5639 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
5640 diaOferta.horario = key;
5641 break;
5642 default:
5643 stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" a "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": ";
5644
5645 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
5646 diaOferta.horario = key;
5647 break;
5648 }
5649 }else{
5650 switch (value.length) {
5651 case 2:
5652 stringAux = stringAux+findValueInObject(arrayDiasDaSemana,value[0])+" e "+findValueInObject(arrayDiasDaSemana,value[value.length-1])+": ";
5653 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
5654 diaOferta.horario = key;
5655 break;
5656 default:
5657 var ct = 0;
5658 var stringDias="";
5659 for(let v of value){
5660 ct++;
5661 ct==value.length ? stringDias=stringDias.substring(0,stringDias.length - 2)+" e "+findValueInObject(arrayDiasDaSemana,v) : stringDias+=findValueInObject(arrayDiasDaSemana,v)+", ";
5662 }
5663 stringAux = stringAux+stringDias+": ";
5664 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
5665 diaOferta.horario = key;
5666 break;
5667 }
5668 }
5669
5670 listRetorno.push(diaOferta);
5671 })
5672 return listRetorno;
5673 };
5674
5675
5676 //Distribui dia e horario com quebra de linha entre eles ou nao dependendo da resolução de tela e tamanho da string
5677 function ajustaTextoDiasHorarioOferta(codOferta){
5678
5679 var classOferta = ".codigoOferta_"+codOferta;
5680 let oferta = $(classOferta);
5681
5682 let ofertaDiasSemana = $(oferta).find('*[data-dia-hora="dias-semana"]');
5683
5684 let widthDevice = window.screen.width;
5685 let tamLimDesktop = 185;
5686
5687 if(widthDevice <= 1024){
5688 tamLimDesktop = 180;
5689 }
5690
5691 ofertaDiasSemana.each(function(index){
5692
5693
5694 let widthDiaSemana = $(this).width();
5695
5696 let contentDiaHora = $(this).parent().parent().parent();
5697
5698 if(!(widthDiaSemana <= tamLimDesktop)){
5699 $(this).css("display","block");
5700 }
5701
5702 if(ofertaDiasSemana.length == parseInt(index+1)){
5703 contentDiaHora.css("opacity","1");
5704 }
5705
5706 })
5707 }
5708
5709 function getObjBtnComprar(oferta){
5710 let obj = {};
5711 obj['dataEspacoEx'] = (oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) ? 'true' : 'false';
5712 if($('#manutencao-compra').val()){
5713 obj['classeBotao'] = 'disabled manutencao';
5714 obj['textoBotao'] = $('#manutencao-compra').val();
5715 }
5716 else{
5717 obj['classeBotao'] = oferta.botaoCompraOferta == 'true' ? (oferta.vagasParaCompraOferta == 'true' ? '' : 'disabled') : 'd-none-btn';
5718 obj['textoBotao'] = oferta.vagasParaCompraOferta == 'true' ? 'COMPRAR' : 'Vagas esgotadas para compra';
5719 }
5720 return obj;
5721 }
5722
5723 function getObjFormaPagto(oferta,index,tipoCurso,codigoUnidade){
5724
5725 var formaPagtoObj = {};
5726
5727 var regNumMaxParce = new RegExp('\{numeroMaxParcelasOferta\}', 'g');
5728 var regPrecMaxParce = new RegExp('\{precoVendaMaxParcelaOferta\}', 'g')
5729
5730 formaPagtoObj['regIndex'] = index;
5731 formaPagtoObj['precoCheioOferta'] = formataValor(oferta.precoCheioOferta);
5732 formaPagtoObj['textoCartoesAceitos'] = oferta.textoCartoesAceitos;
5733
5734 formaPagtoObj['numParcelaCartoes'] = oferta.numParcelaCartoes;
5735 formaPagtoObj['precoParcelaCartoes'] = oferta.precoParcelaCartoes;
5736 formaPagtoObj['numParcelaBoleto'] = oferta.numParcelaBoleto;
5737 formaPagtoObj['precoParcelaBoleto'] = oferta.precoParcelaBoleto;
5738 formaPagtoObj['precoVendaOferta'] = formataValor(oferta.precoVendaOferta);
5739
5740 formaPagtoObj['economia'] = formataValor(parseFloat(oferta.precoCheioOferta).toFixed(2) - parseFloat(oferta.precoVendaOferta).toFixed(2));
5741 formaPagtoObj['espacoExterno'] = oferta.espacoExterno == 'true' ? 'true' : 'false';
5742 formaPagtoObj['dataUnidade'] = codigoUnidade;
5743 formaPagtoObj['dataEvento'] = oferta.codigoOferta;
5744 formaPagtoObj['destinoCompra '] = oferta.destinoCompra;
5745
5746 //EMED nao restringe o botao
5747 if(isEmed){
5748 let manutencao = $('#manutencao-compra').val();
5749 formaPagtoObj['textoBotaoComprar'] = manutencao || 'COMPRAR';
5750 formaPagtoObj['classeBotaoComprar'] = manutencao ? 'disabled manutencao' : '';
5751 }else{
5752 let btnComprar = getObjBtnComprar(oferta);
5753 formaPagtoObj['textoBotaoComprar'] = btnComprar.textoBotao;
5754 formaPagtoObj['classeBotaoComprar'] = btnComprar.classeBotao;
5755 }
5756
5757 formaPagtoObj['regNumMaxParce'] = oferta.numeroMaxParcelasOferta;
5758 formaPagtoObj['regPrecMaxParce'] = formataValor(oferta.precoVendaMaxParcelaOferta);
5759
5760 //valores extensao - como o modal de livre e tec nao tem as classes especificas de extensao, nao há problema criar os valores abaixo para qualquer tipo de curso
5761 formaPagtoObj['precoAVistaPadraoExt'] = formataValor(oferta.precoVendaOferta);
5762 var precoContribuinteExtensao = (parseFloat(oferta.precoVendaOferta).toFixed(2) * 0.80).toFixed(2);
5763 formaPagtoObj['precoContrExt'] = formataValor(precoContribuinteExtensao);
5764 formaPagtoObj['economiaExt'] = formataValor(parseFloat(oferta.precoVendaOferta).toFixed(2) - precoContribuinteExtensao);
5765 formaPagtoObj['precoParcelaBoletoExt'] = formataValor( (precoContribuinteExtensao / oferta.numParcelaBoleto).toFixed(2));
5766 formaPagtoObj['precoParcelaCartoesExt'] = formataValor( (precoContribuinteExtensao / oferta.numParcelaCartoes).toFixed(2));
5767 formaPagtoObj['precoAVistaContrExt'] = formataValor( (precoContribuinteExtensao * 0.92).toFixed(2));
5768
5769 return formaPagtoObj;
5770 }
5771
5772 function calculaPrecoAvista(precoVendaOferta){
5773 return (parseFloat(precoVendaOferta).toFixed(2) * 0.92).toFixed(2);
5774 }
5775
5776 function getParcelasEntradaCartao(dataInicioCurso){
5777
5778 const dCurso = new Date(dataInicioCurso.split("/").reverse().join("-"));
5779 const dHoje = new Date();
5780
5781 let diffAnos = dCurso.getUTCFullYear() - dHoje.getUTCFullYear();
5782 let diffMeses = dCurso.getUTCMonth() - dHoje.getUTCMonth();
5783 diffMeses = diffAnos * 12 + diffMeses;
5784
5785 return (diffMeses > 4) ? 4 : ((diffMeses<=0) ? 1 : diffMeses);
5786
5787 }
5788
5789 function createModalFormaPagto(formaPagtoObj, oferta, index) {
5790 let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio)
5791 temDesconto = temDesconto && !possuiMensalidadeCampanha(oferta)
5792
5793 result = `
5794 <div id="modalFormaPagto" class="ssp-modal">
5795 <div class="ssp-card-modal-forma-pagamento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `">
5796 <div class="ssp-card-modal-forma-pagamento__header" style="border: 0; margin-bottom: 0 !important;">
5797 <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold" style="color:#454F63">Descontos e ` + (temDesconto ? 'pagamento' : 'parcelamento') + `</h6>
5798 <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_` + index + `"></i>
5799 </div>
5800 `
5801 + (temDesconto ? '' : '<div class="ssp-card-oferta-curso__line-divider mt-0 mb-5 mb-md-8"></div>') +
5802 `
5803 <div class="ssp-card-modal-forma-pagamento__body">
5804 `
5805 if(temDesconto) {
5806 result = result + `
5807 <div>
5808 <p class="my-0"><strong>Valor com </strong>
5809 <span class="ssp-card-oferta-curso__valor-desconto mt-0 mb-0">50% de desconto*</span>
5810 </p>
5811 </div>
5812 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar((strToFloat(oferta.precoVendaOferta)/strToFloat(oferta.numeroMaxParcelasOferta))/2, 2)) + `*</h6>`
5813
5814 if($('[name="tipoCurso"]').val() == 'extensao') {
5815 result = result + `<p class="modal-extensao_txteconomiza my-0">*Desconto válido para quem tem ou trabalha em empresa do setor de comércio e serviços, estudantes ou ex-estudantes de cursos técnicos no Senac ou para quem já finalizou o Ensino Médio Técnico no Senac.</p>`
5816 } else {
5817 result = result + `<p class="modal-extensao_txteconomiza my-0">*Desconto válido para quem tem ou trabalha em empresa do setor de comércio e serviços.</p>`
5818 }
5819
5820
5821 result = result + `
5822 <div class="ssp-card-oferta-curso__line-divider mb-5 mb-md-2 mt-2"></div>
5823 <p class="my-0"><strong>Valor:</strong></p>
5824 <h6 class="ssp-card-oferta-curso__item-valor-investimento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
5825 <p class="mt-0 mb-0"><strong>Valor Total: </strong> ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</p>
5826 <div class="ssp-card-oferta-curso__line-divider mt-4 mb-md-3 mb-4"></div>
5827 <p class="my-0"><strong>Parcele e garanta mais tempo para pagar:</strong></p>
5828 `
5829 } else {
5830 if(formaPagtoObj.precoCheioOferta == formaPagtoObj.precoVendaOferta) {
5831 result = result + `
5832 <p class="ssp-card-modal-forma-pagamento__valor-desconto mt-n3">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p>
5833 <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
5834 <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px">Se preferir, parcele e garanta muito mais tempo para pagar:</small>
5835 </div>
5836 `
5837 } else {
5838 const textoDesc = temDesconto ? 'Valor com 30% de desconto:' : 'Valor com desconto:'
5839
5840 result = result + `
5841 <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px;">` + textoDesc + `</small>
5842 <p class="ssp-card-modal-forma-pagamento__valor-cheio">R$ <span class="precoCheioOferta">` + formaPagtoObj.precoCheioOferta + `</span></p>
5843 <p class="ssp-card-modal-forma-pagamento__valor-desconto">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p>
5844 <p class="ssp-card-modal-forma-pagamento__total-economia">Você economiza <span>R$ <span class="economia">` + formaPagtoObj.economia + `</span></span></p>
5845 <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
5846 <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px">Se preferir, parcele e garanta muito mais tempo para pagar:</small>
5847 </div>
5848 `
5849 }
5850 }
5851
5852 let textoParcelaCartoes, textoParcelaBoleto, textoParcelaCartaoComBoleto, textoPix, textoParcelaPixComBoleto
5853 if(temDesconto) {
5854 const precoParcelaCartoes = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaCartoes)/2, 2))
5855 const precoParcelaBoleto = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaBoleto)/2, 2))
5856
5857 if(formaPagtoObj.numParcelaCartoes)
5858 textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x</span> sem juros</p>`
5859
5860 if(formaPagtoObj.numParcelaBoleto){
5861 textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x</span> sem juros</p>`
5862 textoPix = `<p>Valor total à vista com desconto</p>`
5863 textoParcelaPixComBoleto = `<p>1ª parcela no Pix + valor restante em até <span><span class="numParcelaPixBoleto">` + (formaPagtoObj.numParcelaBoleto - 1) + `</span>x</span> sem juros no boleto bancário</p>`
5864 }
5865
5866
5867 } else {
5868 if(formaPagtoObj.numParcelaCartoes)
5869 textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x de R$ <span class="precoParcelaCartoes">` + formaPagtoObj.precoParcelaCartoes + `</span></span> sem juros</p>`
5870
5871 if(formaPagtoObj.numParcelaBoleto){
5872 textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x de R$ <span class="precoParcelaBoleto">` + formaPagtoObj.precoParcelaBoleto + `</span></span> sem juros</p>`
5873 textoPix = `<p>Valor total à vista com desconto</p>`
5874 textoParcelaPixComBoleto = `<p>1ª parcela no Pix + valor restante em até <span><span class="numParcelaPixBoleto">` + (formaPagtoObj.numParcelaBoleto - 1) + `</span>x</span> sem juros no boleto bancário</p>`
5875 }
5876 }
5877
5878 if(formaPagtoObj.numParcelaBoleto){
5879 textoParcelaCartaoComBoleto = `<p>1ª parcela em até <span><span class="numParcelaCartoes">` + getParcelasEntradaCartao(oferta.dataInicio) + `</span>x</span> sem juros no cartão + valor restante em até <span><span class="numParcelaBoleto">` + (parseInt(formaPagtoObj.numParcelaBoleto) - 1) + `</span>x</span> sem juros no boleto bancário</p>`;
5880 }
5881
5882 let cardPix = (textoPix) => `
5883 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
5884 <i class="fa-brands fa-pix" style="margin-right:15px;font-size:18px"></i>
5885 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5886 <p><strong>Pix</strong></p>`
5887 + textoPix +
5888 `</div>
5889 </div>`;
5890
5891 let cardPixBoleto = (textoParcelaPixComBoleto) => `
5892 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
5893 <div style="display:flex;gap:5px;margin-right:6px">
5894 <i class="fa-brands fa-pix" style="font-size:14px"></i>
5895 <i class="fa-sharp-duotone fa-light fa-barcode" style="font-size:14px"></i>
5896 </div>
5897 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5898 <p><strong>Pix + boleto bancário</strong></p>`
5899 + textoParcelaPixComBoleto +
5900 `</div>
5901 </div>
5902 `;
5903
5904 if(temDesconto) {
5905 result = result + `
5906 <div class="ssp-card-modal-forma-pagamento__tipos">`
5907
5908 if(textoPix && $('[name="tipoCurso"]').val() == 'livre')
5909 result = result + cardPix(textoPix)
5910
5911 if(textoParcelaBoleto)
5912 result = result + `
5913 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
5914 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
5915 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5916 <p><strong>Boleto Bancário</strong></p>`
5917 + textoParcelaBoleto +
5918 `</div>
5919 </div>`
5920
5921 if(textoParcelaCartoes)
5922 result = result + `
5923 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
5924 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
5925 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5926 <p><strong>Cartões</strong></p>
5927 <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>`
5928 + textoParcelaCartoes +
5929 `</div>
5930 </div>
5931 </div>
5932 `
5933
5934 if(textoParcelaPixComBoleto && $('[name="tipoCurso"]').val() == 'livre')
5935 result = result + cardPixBoleto(textoParcelaPixComBoleto)
5936
5937
5938 if(textoParcelaCartaoComBoleto)
5939 result = result + `
5940 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
5941 <div style="display:flex;gap:5px;margin-right:6px">
5942 <i class="fa-regular fa-credit-card" style="font-size:14px"></i>
5943 <i class="fa-sharp-duotone fa-light fa-barcode" style="font-size:14px"></i>
5944 </div>
5945 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5946 <p><strong>Cartão + boleto bancário</strong></p>`
5947 + textoParcelaCartaoComBoleto +
5948 `</div>
5949 </div>`
5950
5951 if(textoPix && $('[name="tipoCurso"]').val() != 'livre')
5952 result = result + cardPix(textoPix)
5953
5954 if(textoParcelaPixComBoleto && $('[name="tipoCurso"]').val() != 'livre')
5955 result = result + cardPixBoleto(textoParcelaPixComBoleto)
5956
5957 } else {
5958 result = result + `
5959 <div class="ssp-card-modal-forma-pagamento__tipos">`
5960
5961 if(textoPix)
5962 result = result + cardPix(textoPix)
5963
5964 if(textoParcelaBoleto)
5965 result = result + `
5966 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
5967 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
5968 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5969 <p><strong>Boleto Bancário</strong></p>`
5970 + textoParcelaBoleto +
5971 `</div>
5972 </div>
5973 </div>
5974 `
5975
5976 if(textoParcelaCartoes)
5977 result = result + `
5978 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
5979 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
5980 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5981 <p><strong>Cartões</strong></p>
5982 <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>`
5983 + textoParcelaCartoes +
5984 `</div>
5985 </div>`
5986
5987 if(textoParcelaPixComBoleto )
5988 result = result + cardPixBoleto(textoParcelaPixComBoleto)
5989
5990 if(textoParcelaCartaoComBoleto)
5991 result = result + `
5992 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
5993 <i class="ssp-card-modal-forma-pagamento__icon-boleto-e-cartao fa-solid fa-money-check-dollar"></i>
5994 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5995 <p><strong>Cartão + boleto bancário</strong></p>`
5996 + textoParcelaCartaoComBoleto +
5997 `</div>
5998 </div>`
5999 }
6000
6001
6002
6003 if(temDesconto) {
6004 result = result + `
6005 <p class="txt-desconto-oito my-0">Pague à vista e ganhe <span style="color:#5ACC75;font-weight:bold">8% de desconto.</span></p>
6006 `
6007 }
6008
6009 result = result + `
6010 <a href="#a" class="btn btn-lg btn-success w-100" style="margin-top: 20px;font-weight:600"><span class="textoBotaoComprar">` + formaPagtoObj.textoBotaoComprar + `</span></a>`
6011
6012 if(temDesconto) {
6013 result = result + `
6014 <a class="btn btn-primary modal-extensao-btn-conheca mt-3" href="/descontos-e-parcelamentos" target="_blank">Conheça os descontos</a>
6015 `
6016 }
6017
6018 result = result + `
6019 </div>
6020 </div>
6021 `
6022
6023 return result;
6024 }
6025
6026 function montaHTMLModalFormaPgto(oferta, index, codigoUnidade){
6027
6028 var tipoCurso = $('[name="tipoCurso"]').val();
6029
6030 var formaPagtoObj = getObjFormaPagto(oferta,index,tipoCurso,codigoUnidade);
6031
6032 var modalFormaPagto
6033 if(tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)) {
6034 modalFormaPagto = $('#modalFormaPagtoExt').clone();
6035
6036 $.each(formaPagtoObj, function(k,v){
6037 if(modalFormaPagto.find('.'+k).length > 0)
6038 modalFormaPagto.find('.'+k).text(v);
6039 })
6040 } else if(isEmed) {
6041 modalFormaPagto = $('#modalPagtoEmed').clone();
6042
6043 $.each(formaPagtoObj, function(k,v){
6044 if(modalFormaPagto.find('.'+k).length > 0)
6045 modalFormaPagto.find('.'+k).text(v);
6046 })
6047 } else
6048 modalFormaPagto = $(createModalFormaPagto(formaPagtoObj, oferta, index));
6049
6050 modalFormaPagto.removeAttr('id');
6051 modalFormaPagto.removeClass('d-none');
6052 modalFormaPagto.attr('id','myModal_'+index);
6053
6054 if(tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)){
6055
6056 var botoaoCompraOk = modalFormaPagto.find('.modal-extensao-aluno__btn.ok');
6057 botoaoCompraOk.attr('id','btnComprarConhecaDescontoOk_'+index);
6058
6059 botoaoCompraOk.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6060 botoaoCompraOk.attr('data-unidade', formaPagtoObj.dataUnidade);
6061 botoaoCompraOk.attr('data-evento', formaPagtoObj.dataEvento);
6062 botoaoCompraOk.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6063 botoaoCompraOk.attr('data-index', index);
6064 botoaoCompraOk.addClass(formaPagtoObj.classeBotaoComprar);
6065
6066 var botoaoCompraNot =modalFormaPagto.find('.modal-extensao-aluno__btn.not');
6067 botoaoCompraNot.attr('id','btnComprarConhecaDescontoNot_'+index);
6068
6069 botoaoCompraNot.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6070 botoaoCompraNot.attr('data-unidade', formaPagtoObj.dataUnidade);
6071 botoaoCompraNot.attr('data-evento', formaPagtoObj.dataEvento);
6072 botoaoCompraNot.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6073 botoaoCompraNot.attr('data-index', index);
6074 botoaoCompraNot.addClass(formaPagtoObj.classeBotaoComprar);
6075
6076 modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.sim').attr('id','btn-aluno-sim_'+index);
6077 modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.nao').attr('id','btn-aluno-nao_'+index);
6078
6079 modalFormaPagto.find('.modal-extensao-voltar-icon').addClass('ssp-card-modal-forma-pagamento__btn-close_'+index);
6080
6081 modalFormaPagto.find('.modal-extensao-btn-conheca').attr('id','btnModalExtConheca_'+index);
6082
6083 modalFormaPagto.find('.modal-pergunta-aluno-ext').attr('id','modalExtAluno_'+index);
6084
6085 modalFormaPagto.find('.msg-alunoSim').attr('id','msg-alunoSim_'+index);
6086 modalFormaPagto.find('.msg-alunoNao').attr('id','msg-alunoNao_'+index);
6087
6088 var botaoCompra = modalFormaPagto.find('.modal-extensao__btn.mt-3');
6089
6090 }else{
6091
6092 modalFormaPagto.find('.mt-4').attr('id','content_boleto_'+index);
6093 modalFormaPagto.find('.ssp-card-modal-forma-pagamento__btn-close').addClass('ssp-card-modal-forma-pagamento__btn-close_'+index);
6094
6095 var botaoCompra = modalFormaPagto.find('.btn.w-100');
6096
6097 }
6098
6099 if(isEmed){
6100
6101 var elementoPai = modalFormaPagto.find('.ssp-card-modal-forma-pagamento');
6102
6103 //Cria botao inscreva-se ajustado ao modal
6104 var dadosAbertura = calculaTempoAberturaBolsa(oferta.dataAberturaMatricula, oferta.horaAberturaBolsaOferta);
6105 if($('#manutencao-compra').val()){
6106 textoBotao = $('#manutencao-compra').val();
6107 classeBotao = 'disabled manutencao';
6108 }else{
6109 if(oferta.permiteListaEspera == statusEmed.ESPERA && dadosAbertura.bolsaJaAberta){
6110 textoBotao = 'Lista de espera';
6111 classeBotao = 'btn-emed-lista-espera';
6112 }else{
6113 if (dadosAbertura.bolsaJaAberta || !oferta.dataAberturaMatricula || oferta.dataAberturaMatricula == ''){
6114 if(oferta.etapa == '0020' || oferta.etapa == '0030'){
6115 textoBotao = 'Lista de espera';
6116 classeBotao = 'btn-emed-lista-espera';
6117 }else{
6118 textoBotao = 'Fazer matrícula';
6119 classeBotao = '';
6120 }
6121 }else{
6122 textoBotao = 'Matrícula em '+formataDataAberturaBolsa(oferta.dataAberturaMatricula, oferta.horaAberturaBolsaOferta);
6123 classeBotao = 'disabled';
6124 }
6125 }
6126 }
6127 criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, 'btnComprarEmedModal_' + index, elementoPai, index);
6128 preencheDadosEmedModal(oferta, modalFormaPagto);
6129
6130 }else{
6131 botaoCompra.attr('id', "btnComprarFormaPgto_"+index);
6132 botaoCompra.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6133 botaoCompra.attr('data-unidade', formaPagtoObj.dataUnidade);
6134 botaoCompra.attr('data-evento', formaPagtoObj.dataEvento);
6135 botaoCompra.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6136 botaoCompra.attr('data-index', index);
6137 botaoCompra.addClass(formaPagtoObj.classeBotaoComprar);
6138 }
6139
6140 $('.oferta-slick-area_modal').append(modalFormaPagto);
6141 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6142
6143 //Evita o erro de exibição de Nan
6144 if(oferta.numParcelaBoleto.length == 0){
6145 $('#content_boleto_'+index).remove();
6146 }
6147 }
6148
6149 function verificaTerminoDia(dataInicio, dataFim){
6150 if (dataInicio === dataFim) {
6151 return true;
6152 }
6153 return false;
6154 }
6155
6156
6157 function montaHTMLModalLocalRealizacao(oferta, index){
6158
6159 // Lógica para decidir o texto (Singular ou Plural)
6160 // Assume que oferta.dataInicio e oferta.dataFim existem
6161 var textoTitulo = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
6162 "ONDE A AULA IRÁ ACONTECER?" : // True: Mesmo dia (Singular)
6163 "ONDE AS AULAS VÃO ACONTECER?"; // False: Dias diferentes (Plural)
6164
6165 var tituloLocalRealizacao = (localLivreOnline(oferta.localEspacoExterno) && !isHibrido) ?
6166 '<i class="fas fa-wifi icon-wifi-title__modal"></i> <h6 class="title-idioma-online__modal"> Aulas Online - ao vivo</h6>'
6167 : '<i class="ssp-modal__local-realizacao-content__icon-wifi"></i> <i class="ssp-modal__local-realizacao-content__icon-chalkboard-teacher"></i> <h6 class="ssp-modal-local-realizacao__title">' + textoTitulo + '</h6>';
6168
6169 if(textoFormatoHibrido.length>0 && oferta.espacoExterno=="true")
6170 textoFormatoHibrido += '</br>';
6171
6172 var localRealizacaoHTMLModal = htmlModalLocalRealizacao
6173 .replace('\{nomeUnidade\}',$('#unidades-ofertas option:selected').text())
6174 .replace('\{textoFormatoHibrido\}', textoFormatoHibrido )
6175 .replace('\{localEspacoExterno\}', oferta.espacoExterno=="true"? oferta.localEspacoExterno: "" )
6176 .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none")
6177 .replace('\{classeEnderecoRealizacao\}',oferta.ruaEspacoExterno != "" ? "" : "d-none")
6178 .replace('\{ruaEspacoExterno\}',oferta.ruaEspacoExterno)
6179 .replace('\{numeroEspacoExterno\}',oferta.numeroEspacoExterno)
6180 .replace('\{complementoEspacoExterno\}',oferta.complementoEspacoExterno)
6181 .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6182 .replace('\{bairroEspacoExterno\}',oferta.bairroEspacoExterno)
6183 .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6184 .replace('\{cidadeEspacoExterno\}',oferta.cidadeEspacoExterno)
6185 .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6186 .replace('\{cepEspacoExterno\}',oferta.cepEspacoExterno)
6187 .replace(regIndex, index)
6188 .replace('\{tituloLocalRealizacao\}', tituloLocalRealizacao)
6189 .replace('\{classeEntendi\}', (localLivreOnline(oferta.localEspacoExterno)) ? "btn-modal-entendi__idioma-online" : "");
6190
6191 $('.oferta-slick-area_modal').append(localRealizacaoHTMLModal);
6192 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6193
6194 if(oferta.ruaEspacoExterno == "")
6195 $('.localEspacoExternoTexto_'+index).removeClass('ssp-modal-local-realizacao__subtitle');
6196 }
6197
6198 function montaHTMLModalAntesCompra(oferta, index, codigoUnidade){
6199
6200 if(isEmed){
6201
6202 $('#modalAntesCompraEmed_' + oferta.indice).remove();
6203 const antesCompraHTMLModal = $('#modalAntesCompraEmed').clone();
6204 antesCompraHTMLModal.attr('id', 'modalAntesCompraEmed_' + oferta.indice);
6205 antesCompraHTMLModal.find('.ssp-card-modal-antes-compra__btn-close').addClass('ssp-card-modal-antes-compra__btn-close_'+oferta.indice);
6206 antesCompraHTMLModal.find('.ssp-card-modal-selecionar-outro__btn-close').addClass('ssp-card-modal-selecionar-outro__btn-close_'+oferta.indice);
6207 antesCompraHTMLModal.insertAfter('#modalAntesCompraEmed');
6208
6209 if(oferta.etapa == '0010'){
6210 if(oferta.permiteListaEspera == statusEmed.ESPERA){
6211 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010Espera').removeClass('d-none');
6212 antesCompraHTMLModal.find('#btnCompraLocalEmed').text('Ir para lista de espera');
6213 }else{
6214 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010').removeClass('d-none');
6215 }
6216 }else{
6217 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0020e0030').removeClass('d-none');
6218 }
6219
6220 const btnCompra = antesCompraHTMLModal.find('#btnCompraLocalEmed');
6221 btnCompra.attr('id', 'btnCompraLocalEmed_' + oferta.indice);
6222 btnCompra.attr('offercode', oferta.codigoOferta);
6223
6224 btnCompra.on('click', function(ev){
6225 ev.preventDefault();
6226 execCompraEmed(oferta);
6227 });
6228
6229 }else{
6230
6231 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val());
6232
6233
6234 var antesCompraHTMLModal = htmlModalAntesCompra
6235 .replace('\{nomeUnidade\}',$('#unidades-ofertas option:selected').text())
6236 .replace('\{textoFormatoHibrido\}', textoFormatoHibrido )
6237 .replace('\{localEspacoExterno\}', oferta.espacoExterno=="true"? oferta.localEspacoExterno:"" )
6238 .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none")
6239 .replace('\{classeEnderecoRealizacao\}', oferta.ruaEspacoExterno != "" ? "" : "d-none")
6240 .replace('\{ruaEspacoExterno\}',oferta.ruaEspacoExterno)
6241 .replace('\{numeroEspacoExterno\}',oferta.numeroEspacoExterno)
6242 .replace('\{complementoEspacoExterno\}',oferta.complementoEspacoExterno)
6243 .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6244 .replace('\{bairroEspacoExterno\}',oferta.bairroEspacoExterno)
6245 .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6246 .replace('\{cidadeEspacoExterno\}',oferta.cidadeEspacoExterno)
6247 .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6248 .replace('\{cepEspacoExterno\}',oferta.cepEspacoExterno)
6249 .replace('\{componentBuyConfirmation\}', componentBuyConfirmation(codigoUnidade, oferta, dataEfetivaFormat))
6250 .replace('\{linkBtnBolsa\}', linkBolsa(oferta))
6251 .replace(regIndex, index);
6252
6253 $('.oferta-slick-area_modal').append(antesCompraHTMLModal);
6254 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6255 }
6256 }
6257
6258 async function populaOfertas(ofertas){
6259
6260 //Zera variável que controla existência de ofertas com bolsa
6261 ofertasComBolsa = false;
6262
6263 objsTela.ofertas = ofertas;
6264
6265 if(ofertas && ofertas.length)
6266 $('#ssp-h3-turmas').show()
6267 else
6268 $('#ssp-h3-turmas').hide()
6269
6270 if(ofertas && ofertas.length > 1){
6271 //remove dupl
6272 const ofertasDistintas = [];
6273 ofertas.forEach(oferta => {
6274 if(ofertasDistintas.filter(dist => dist.codigoOferta == oferta.codigoOferta).length == 0){
6275 ofertasDistintas.push(oferta);
6276 }
6277 });
6278 ofertas = ofertasDistintas;
6279 }
6280
6281 if(isEmed){
6282
6283 $('.btn-filtro[value="0"]').attr('disabled','');
6284 $('.ssp-slick-ofertas-emed').empty();
6285 // executa a class do slick slider
6286 $('.ssp-slick-ofertas-emed').removeClass('slick-initialized slick-slider slick-dotted');
6287 ofertas = filtraOfertasEtapa(getEtapaSelecionadaEmed(), ofertas);
6288
6289 }
6290
6291 if(ofertas.length == 0){
6292
6293 if($('#unidades-ofertas').val() || $('#chkInscricao').prop('checked') || $('#chkBolsa').prop('checked'))
6294 hideCardSemTurmas(false)
6295
6296 $('.oferta-slick-area').empty();
6297 $('.prev-mobile, .next-mobile').addClass('d-none');
6298
6299 //Mostrar section registro interesse quando nao tiver oferta
6300 habilitarRegistroInteresse(true);
6301
6302 controlaPaginaBolsa()
6303 if(isEmed) $('.btn-filtro[value="0"]').removeAttr('disabled');
6304 return;
6305 }
6306 hideCardSemTurmas(true)
6307 if(!isEmed) $('.prev-mobile, .next-mobile').removeClass('d-none');
6308 habilitarRegistroInteresse(false);
6309
6310 $('.oferta-slick-area').empty();
6311 $('.oferta-slick-area_modal').empty();
6312 ofertas = ofertas.sort(function(a, b){
6313 return ordenar(a, b, 'ordenar');
6314 });
6315 // executa a class do slick slider
6316 $('.oferta-slick-area').removeClass('slick-initialized slick-slider slick-dotted');
6317
6318 //busca o codigoUnidade para o link do ecommerce
6319 if(!isAoVivo){
6320 var selectedUnidade = $('#unidades-ofertas').val().split('@')[0];
6321 for(var i=0;objsTela.unidades.length > i ;i++){
6322 if(selectedUnidade == objsTela.unidades[i].categoryId)
6323 codigoUnidade = objsTela.unidades[i].codigoUnidade;
6324 }
6325 }
6326
6327 // Montar object push - google tag manager - 2
6328 itensEcommerce = criaItensEcommerce(ofertas);
6329 sendEventEcommerce("view_item_list", Array.from(itensEcommerce.values()));
6330
6331 for(var i=0;ofertas.length > i ;i++){
6332
6333 var oferta = ofertas[i];
6334 var ofertaGratuita = excecaoCursoGratuito(oferta);
6335
6336 //guardando a oferta no map para chamar ajax com infos de bolsa em tempo real
6337 oferta['indice'] = i;
6338 ofertasMap.set(oferta.codigoOferta, oferta);
6339
6340 if(isAoVivo)
6341 codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta);
6342
6343 if(isEmed && oferta.etapa == '0010'){
6344 try{
6345 let status = await getStatusEmed(oferta);
6346 oferta['permiteListaEspera'] = status;
6347 }catch(err){
6348 console.log(err);
6349 }
6350 }
6351 montaHTMLOferta(oferta, i, codigoUnidade, false);
6352
6353 if(!ofertaGratuita)
6354 montaHTMLModalFormaPgto(oferta, i, codigoUnidade);
6355
6356 montaHTMLModalLocalRealizacao(oferta, i);
6357 montaHTMLModalAntesCompra(oferta, i, codigoUnidade);
6358
6359 if(!ofertaGratuita)
6360 verificaBotaoBolsaSS(oferta);
6361
6362 verificaCursoAprendizagem(i, oferta.codigoOferta);
6363 verificaCursoTrampolim(i, oferta.codigoOferta);
6364
6365 if(!ofertaGratuita)
6366 associaEventoBtnFormaPagamento(i);
6367
6368 associaEventoBtnComprar(i);
6369
6370 if(!ofertaGratuita)
6371 associaEventoBtnComprarDentroFormaPgto(i);
6372
6373 associaEventoBtnLocalRealizacao(i);
6374 associaEventosFecharModal(i);
6375
6376 if($('[name="tipoCurso"]').val() == 'extensao'){
6377 associaEventoBtnConheca(i);
6378 associaEventoBtnComprarConhecaDescontoOk(i);
6379 associaEventoBtnComprarConhecaDescontoNot(i);
6380 associaEventoBtnAlunoNao(i);
6381 associaEventoBtnAlunoSim(i);
6382 }
6383
6384 }
6385
6386 if(isEmed){
6387 sliderOfertasEmed();
6388 $('.btn-filtro[value="0"]').removeAttr('disabled');
6389 }
6390 else sliderOfertas();
6391
6392 controlaPaginaBolsa()
6393
6394 }
6395
6396 function hideCardSemTurmas(hide){
6397 if(!isEmed){
6398 if(hide)
6399 $('.ssp-card-oferta-curso__sem-vaga').addClass('d-none');
6400 else
6401 $('.ssp-card-oferta-curso__sem-vaga').removeClass('d-none');
6402 } else {
6403
6404
6405 if(hide || getEtapaSelecionadaEmed() == "0"){
6406 $('.sem-vaga-emed').addClass('d-none');
6407 }else{
6408 $('.sem-vaga-emed').removeClass('d-none');
6409 if($('.sem-vaga-emed.emed-transferencias-space:not(.d-none)').length ) return;
6410 var tamScreen = $(window).width();
6411 if(tamScreen < 768){
6412 $('.slick-area-emed').slick({
6413 slidesToShow: 2,
6414 slidesToScroll: 2,
6415 autoplay: false,
6416 infinite: false,
6417 dots: false,
6418 arrows: false,
6419 centerPadding: 0,
6420 centerMode: false,
6421 responsive: [
6422 {
6423 breakpoint: 768,
6424 settings: {
6425 slidesToShow: 1,
6426 slidesToScroll: 1,
6427 variableWidth: false,
6428 infinite: false,
6429 centerPadding: 0,
6430 centerMode: false,
6431 dots: true,
6432 }
6433 }
6434 ]
6435 });
6436 }
6437 }
6438 }
6439 }
6440
6441 function verificaCursoAprendizagem(i, codigoOferta){
6442
6443 //Esconde elementsos quando o curso é aprendizagem
6444 if($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem){
6445 $('#btnComprar_'+i).remove();
6446 $('#container_investimento_'+i).remove();
6447 $('#container_forma_pgto_'+i).remove();
6448
6449 var avisoAprendizagem = $('#aviso-curso-aprendizagem').clone();
6450 let btnFormAprendizagem = '<button class="btn btn-lg btn-success w-100 mt-3 btnModalAprendizagem" data-codigo-oferta="'+ codigoOferta +'" data-modal="open-modal" style="font-size:16px;background:#1FC923;font-weight: 600;">Preencher formulário</button>'
6451 avisoAprendizagem.removeAttr('id');
6452 avisoAprendizagem.removeClass('d-none');
6453 $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(avisoAprendizagem);
6454 $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(btnFormAprendizagem);
6455 }
6456 }
6457
6458 function verificaCursoTrampolim(i, codOferta){
6459 if(ehCursoTrampolim){
6460 $('#btnComprar_'+i).remove();
6461 $('#container_investimento_'+i).remove();
6462 $('#container_forma_pgto_'+i).remove();
6463 $('.ssp-card-oferta-curso .codigoOferta_'+codOferta).hide();
6464
6465 var avisoTrampolim = $('#avisoTrampolim').clone();
6466 avisoTrampolim.removeAttr('id');
6467 avisoTrampolim.removeClass('d-none');
6468 $('.card_oferta_'+i+ ' .ssp-card-oferta-curso').append(avisoTrampolim);
6469 }
6470 }
6471
6472 function verificaBotoesEmed(dadosOferta, verificaBolsa) {
6473
6474 var elementoPai = $('.codigoOferta_' + dadosOferta.codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
6475
6476 //INICIO - Logica para Matricula
6477
6478 //adicionamos uma nova variável em 18/07/2025 quando surgiu a necessidade de uma data diferente de matricula em relação a data de bolsa
6479 var dadosAberturaMatricula = calculaTempoAberturaBolsa(dadosOferta.dataAberturaMatricula, dadosOferta.horaAberturaBolsaOferta);
6480
6481 var textoBotaoMatricula = '';
6482 var exibirBotaoMatricula = true;
6483 var classeBotaoMatricula = '';
6484 var htmlBotaoMatricula = '';
6485
6486 if (dadosAberturaMatricula.exibirContador) {
6487 textoBotaoMatricula = dadosAberturaMatricula.textoContador;
6488 exibirBotaoMatricula = false;
6489 }
6490
6491 //exibe o botão sem cronômetro
6492 if (exibirBotaoMatricula) {
6493 if ($('#manutencao-compra').val()) {
6494 textoBotaoMatricula = $('#manutencao-compra').val();
6495 classeBotaoMatricula = 'disabled manutencao';
6496 } else {
6497
6498 if (dadosOferta.permiteListaEspera == statusEmed.ESPERA && dadosAberturaMatricula.bolsaJaAberta) {
6499 textoBotaoMatricula = 'Lista de espera';
6500 classeBotaoMatricula = 'btn-emed-lista-espera';
6501 } else {
6502 classeBotaoMatricula = '';
6503 if (dadosAberturaMatricula.bolsaJaAberta || !dadosOferta.dataAberturaMatricula || dadosOferta.dataAberturaMatricula == '') {
6504 textoBotaoMatricula = 'Fazer matrícula';
6505
6506 if (dadosOferta.etapa == '0020' || dadosOferta.etapa == '0030') {
6507 textoBotaoMatricula = 'Lista de espera';
6508 classeBotaoMatricula = 'btn-emed-lista-espera';
6509 }
6510 } else {
6511 textoBotaoMatricula = 'Matrícula em ' + formataDataAberturaBolsa(dadosOferta.dataAberturaMatricula, dadosOferta.horaAberturaBolsaOferta);
6512 }
6513 if (!dadosAberturaMatricula.bolsaJaAberta)
6514 classeBotaoMatricula = 'disabled';
6515 }
6516 }
6517
6518 criaBotaoInscreverEmed(dadosOferta, textoBotaoMatricula, classeBotaoMatricula, 'btnComprarEmed_' + dadosOferta.indice, elementoPai);
6519
6520 } else { //exibe o cronometro para matricula
6521
6522 //codigoOferta como index para usar o ofertasMap
6523 htmlBotaoMatricula = '<button id="btnContadorComprar_' + dadosOferta.indice + '" data-index="' + dadosOferta.codigoOferta + '" class="btn btn-card-investimento --inscreva-se">Matrícula em <span>' + textoBotaoMatricula + '</span></button>';
6524 elementoPai.append(htmlBotaoMatricula);
6525 }
6526
6527 //INICIO - Logica para Botão Bolsa
6528
6529 if (!verificaBolsa || !dadosOferta.dataAberturaBolsaOferta || dadosOferta.dataAberturaBolsaOferta == '') {
6530 dadosOferta.vagasBolsaOferta = false;
6531 dadosOferta.botaoBolsaOferta = false;
6532 }
6533
6534 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
6535 var dadosAberturaBolsa = calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
6536
6537 var textoBotaoBolsa = '';
6538 var classeBotaoBolsa = '';
6539 var exibirBotaoBolsa = false;
6540 var exibirContadorBolsa = false;
6541 var htmlBotaoBolsa = '';
6542
6543 //verifica se o botão de concorrer a bolsa deve aparecer
6544 //Oferta EMED possui bolsa apenas no 1o ano
6545 if (dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta && !dadosAberturaBolsa.exibirContador) {
6546 exibirBotaoBolsa = true;
6547 if ($('#manutencao-bolsa').val()) {
6548 classeBotaoBolsa = 'disabled manutencao';
6549 textoBotaoBolsa = $('#manutencao-bolsa').val();
6550 } else {
6551 if (dadosOferta.vagasBolsaOferta) {
6552 classeBotaoBolsa = dadosAberturaBolsa.bolsaJaAberta ? '' : 'disabled';
6553 textoBotaoBolsa = dadosAberturaBolsa.bolsaJaAberta ? 'Bolsa de estudo' : 'Bolsa em ' + formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
6554 } else {
6555 classeBotaoBolsa = 'disabled';
6556 textoBotaoBolsa = 'Bolsas de Estudo Esgotadas';
6557 }
6558 }
6559 }
6560
6561 //Verifica se o botão do cronômetro deve aparecer
6562 if (dadosAberturaBolsa.exibirContador) {
6563 textoBotao = dadosAberturaBolsa.textoContador;
6564 textoBotaoBolsa = dadosAberturaBolsa.textoContador;
6565 exibirContadorBolsa = true;
6566 exibirBotaoBolsa = false;
6567 }
6568
6569 if (exibirBotaoBolsa) {
6570
6571 if (!ofertasComBolsa) ofertasComBolsa = true;
6572
6573 criaBotaoBolsaEmed(dadosOferta, textoBotaoBolsa, classeBotaoBolsa);
6574
6575 } else if (exibirContadorBolsa) {
6576
6577 if (!ofertasComBolsa && dadosOferta.etapa == '0010') ofertasComBolsa = true;
6578
6579 if (dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta) {
6580 htmlBotaoBolsa = '<button id="btnContadorBolsa_' + dadosOferta.indice + '" data-index="' + dadosOferta.codigoOferta + '" class="btn btn-card-investimento --bolsas">Bolsa em <span>' + textoBotaoBolsa + '</span></button>';
6581 elementoPai.append(htmlBotaoBolsa);
6582 }
6583 }
6584 }
6585
6586 function criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, idBotao, elementoPai, index){
6587 criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai);
6588 var btnInscr = elementoPai.find('#btnComprarEmedModal_' + index);
6589 btnInscr.removeClass(btnInscr.classList);
6590 btnInscr.addClass('btn btn-lg btn-success w-100');
6591 btnInscr.attr('style', 'margin-top: 20px;font-weight:600');
6592
6593 //Reposiciona o botao voltar
6594 var btnVoltar = elementoPai.find('.ssp-btn-emed__voltar-curso');
6595 elementoPai.find('.ssp-btn-emed__voltar-curso').remove();
6596 elementoPai.append(btnVoltar);
6597 btnVoltar.addClass('ssp-btn-emed__voltar-curso_'+index);
6598 btnVoltar.click(() => {
6599 $('[id^="myModal_"]').each(function(index,modal){
6600 modal.style.display = "none";
6601 })
6602 });
6603 }
6604
6605 function preencheDadosEmedModal(oferta,$modal){
6606 const parcelaEntrada = 1;
6607 $modal.find('.numParcelaCartoesBoleto').text(oferta.numeroMaxParcelasOferta - parcelaEntrada);
6608 $modal.find('.precoParcelaCartoesBoleto').text(formataValor(oferta.precoVendaMaxParcelaOferta));
6609 $modal.find('.numParcelaEmedModal').text(oferta.numeroMaxParcelasOferta - parcelaEntrada);
6610 $modal.find('.precoParcelaEmedModal').text(formataValor(oferta.precoVendaMaxParcelaOferta));
6611 }
6612
6613
6614 function criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai){
6615 if(oferta.permiteListaEspera && oferta.permiteListaEspera == statusEmed.NAO_ENCONTRADA) return;
6616 var htmlBotao = '<button id="'+ idBotao +'" data-index="'+ oferta.indice +'" class="btn btn-card-investimento --inscreva-se '+ classeBotao +'"><span>'+textoBotao+'</span></button>';
6617 elementoPai.append(htmlBotao);
6618
6619 if(!classeBotao.includes('disabled')){
6620
6621 elementoPai.on("click", '#'+ idBotao, function(ev){
6622 ev.preventDefault();
6623 const _modal = $('#modalAntesCompraEmed_'+$(this).data('index'));
6624 _modal.css('display','flex');
6625
6626
6627 });
6628
6629 }
6630
6631 }
6632
6633 function criaBotaoBolsaEmed(oferta, textoBotaoBolsa, classeBotaoBolsa=""){
6634
6635 var htmlBotao = '<a id="btnBolsa_'+ oferta.indice +'" data-index="'+ oferta.indice +'" class="btn btn-card-investimento --bolsas '+ classeBotaoBolsa +'">'+ textoBotaoBolsa +'</a>';
6636 $('.codigoOferta_'+oferta.codigoOferta+' .ssp-ofertas-emed__card-info-investimento').append(htmlBotao);
6637
6638 if(!classeBotaoBolsa.includes('disabled')){
6639 // Associa o evento de clique no botão de bolsa
6640 $('#btnBolsa_'+oferta.indice).attr('href', linkBolsa(oferta));
6641 $('#btnBolsa_'+oferta.indice).attr('target', '_blank');
6642 //$('#btnBolsa_'+oferta.indice).attr('style', 'text-transform:uppercase;');
6643
6644 }
6645 }
6646
6647 function criaBotaoBolsa(oferta, textoBotaoBolsa, classeBotaoBolsa=""){
6648
6649 const botao = $('<a>'+ textoBotaoBolsa +'</a>');
6650 botao.attr('id', 'btnBolsa_' + oferta.indice);
6651 botao.attr('data-index', oferta.indice);
6652 botao.attr('class', 'btn btn-lg btn-info w-100 mt-3 ' + (classeBotaoBolsa || ''));
6653 botao.css('font-size', '14px');
6654 botao.css('font-weight', '600');
6655 botao.css('background-color', '#004EFF');
6656 if(!classeBotaoBolsa.includes('disabled')){
6657 if(oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)){
6658 botao.attr('data-espaco-ex', 'true');
6659 botao.click((ev)=>{
6660 ev.preventDefault();
6661 $('#btnCompraLocal_'+oferta.indice).hide();
6662 $('#btnBolsaLocal_'+oferta.indice).show();
6663 const _modal = $('#modalAntesCompra_'+oferta.indice);
6664 _modal.css('display','flex');
6665 });
6666 }else{
6667 botao.attr('href', linkBolsa(oferta));
6668 botao.attr('target', '_blank');
6669 }
6670 }
6671
6672 return botao;
6673
6674 }
6675
6676 function verificaBotaoBolsaSS(oferta, codigoUnidade){
6677
6678
6679 if(!isEmed && (!oferta.dataAberturaBolsaOferta || oferta.dataAberturaBolsaOferta == '') ) return;
6680
6681 if(!ehCursoTrampolim){
6682 $.ajax({
6683 url : getUrlConsultaBolsa(oferta),
6684 type : 'get',
6685 dataType: 'json',
6686 beforeSend: function (xhr) {
6687 xhr.setRequestHeader ("Authorization", "KGG4KMW5s0CVowr7d6y6Ww==");
6688 },
6689 })
6690 .done(function(infosBolsa){
6691
6692
6693 if(infosBolsa != null && typeof infosBolsa !== 'undefined'){
6694
6695 var codigoOfertaRetornoBolsa = infosBolsa.DATA[0].COD_EVENTO;
6696 var retornoOfertaBolsaSenac = infosBolsa.DATA[0];
6697
6698 //Sobrescreve as flags de bolsa com o retorno do serviço SS
6699 ofertasMap.get(codigoOfertaRetornoBolsa).vagasBolsaOferta = retornoOfertaBolsaSenac.TEM_VAGA_BOLSA;
6700 ofertasMap.get(codigoOfertaRetornoBolsa).botaoBolsaOferta = retornoOfertaBolsaSenac.BOTAO_BOLSA;
6701
6702 var dadosOferta = ofertasMap.get(codigoOfertaRetornoBolsa);
6703
6704 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
6705 var dadosAberturaBolsa = calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta, dadosOferta.botaoBolsaOferta);
6706 var textoBotaoBolsa = '';
6707 var classeBotaoBolsa = '';
6708 var textoBotaoContadorBolsa = '';
6709 var exibirBotaoBolsa = false;
6710 var exibirContadorBolsa = false;
6711
6712 //EMED
6713 if(isEmed){
6714 verificaBotoesEmed(ofertasMap.get(codigoOfertaRetornoBolsa), true);
6715 return;
6716 }
6717
6718 //Verifica o texto do botão de bolsa
6719 if($('#manutencao-bolsa').val()) textoBotaoBolsa = $('#manutencao-bolsa').val();
6720 else{
6721
6722 if(retornoOfertaBolsaSenac.TEM_VAGA_BOLSA){
6723
6724 if(dadosAberturaBolsa.bolsaJaAberta)
6725 textoBotaoBolsa = "Inscrever para bolsa de estudo";
6726
6727 else
6728 textoBotaoBolsa = "Inscrições para bolsas a partir de "+formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
6729
6730 if(!ofertasComBolsa){ ofertasComBolsa = true;
6731 }
6732 }else
6733 textoBotaoBolsa = "Vagas esgotadas para bolsas de estudo";
6734 }
6735
6736 //verifica se o botão de concorrer a bolsa deve aparecer
6737 if(retornoOfertaBolsaSenac.BOTAO_BOLSA && !dadosAberturaBolsa.exibirContador){
6738
6739 exibirBotaoBolsa = true;
6740
6741 if(!ofertasComBolsa) ofertasComBolsa = true;
6742
6743 if(retornoOfertaBolsaSenac.TEM_VAGA_BOLSA && dadosAberturaBolsa.bolsaJaAberta && !$('#manutencao-bolsa').val()){
6744 classeBotaoBolsa = '';
6745 }else{
6746 classeBotaoBolsa = 'disabled';
6747 }
6748 }
6749
6750 //Verifica se o botão do cronômetro deve aparecer
6751 if(dadosAberturaBolsa.exibirContador && !$('#manutencao-bolsa').val()){
6752 textoBotaoContadorBolsa = dadosAberturaBolsa.textoContador;
6753 exibirContadorBolsa = true;
6754 }
6755
6756 if(exibirBotaoBolsa)
6757 $('.codigoOferta_'+codigoOfertaRetornoBolsa+' .ssp-card-oferta-curso .ssp-container-botao-bolsa').append( criaBotaoBolsa(dadosOferta, textoBotaoBolsa, classeBotaoBolsa) )
6758 else if(exibirContadorBolsa)
6759 $('.codigoOferta_'+codigoOfertaRetornoBolsa+' .ssp-card-oferta-curso .ssp-container-botao-bolsa').append('<a id="btnContadorBolsa_'+dadosOferta.indice+'" data-index="'+dadosOferta.indice+'" class="btn btn-lg btn-info w-100 mt-3" >Você poderá se inscrever para bolsa em <span>'+textoBotaoContadorBolsa+'</span></a>')
6760 else {
6761 $('.codigoOferta_'+codigoOfertaRetornoBolsa+'.content-btn-bolsa').hide()
6762 $('.show-price-content.codigoOferta_'+oferta.codigoOferta + ' .ou-separator-desconto').hide()
6763 }
6764
6765 }else{
6766 //EMED
6767 if(isEmed){
6768 verificaBotoesEmed(oferta, false);
6769 }
6770 }
6771
6772 controlaPaginaBolsa()
6773 })
6774 .fail(function(){
6775 $('.content-btn-bolsa.codigoOferta_'+oferta.codigoOferta).hide()
6776 $('.show-price-content.codigoOferta_'+oferta.codigoOferta + ' .ou-separator-desconto').hide()
6777
6778 //EMED
6779 if(isEmed){
6780 verificaBotoesEmed(oferta, false);
6781 }
6782 });
6783
6784
6785 }
6786
6787 }
6788
6789 function controlaPaginaBolsa(){
6790 if(ofertasComBolsa)
6791 $("#ssp-abrir-pagina-bolsa").removeClass("d-none")
6792 else
6793 $("#ssp-abrir-pagina-bolsa").addClass("d-none")
6794 }
6795
6796 function associaEventoBtnFormaPagamento(i){
6797 var modal = document.getElementById("myModal_"+i);
6798
6799 var btn = document.getElementById("myBtn_"+i);
6800
6801 if(btn!=null){
6802 btn.onclick = function(ev) {
6803 event.preventDefault()
6804
6805 $('#modalExtAluno_'+i).addClass('d-none');
6806
6807 var elem = $(ev.target);
6808 var _modal = document.getElementById(
6809 'myModal_'+elem.data('index'));
6810 _modal.style.display = "block";
6811 $('#myModal_'+i).find('.modal-extensao_content:first-child').removeClass('d-none');
6812
6813 }
6814 }
6815
6816
6817
6818
6819 }
6820
6821
6822 function actionBtnComprar(elem){
6823
6824 // Montar object push - google tag manager - 3
6825 ofertaSelecionada = itensEcommerce.get(elem.attr('data-evento'))
6826 sendEventEcommerce("select_item", ofertaSelecionada);
6827 sendEventEcommerce("view_item", ofertaSelecionada);
6828
6829 //Verifica se deve exibir o modal com a localização
6830 if(elem.attr('data-espaco-ex') == 'true'){
6831 $('#btnCompraLocal_'+elem.data('index')).show();
6832
6833 //Limpa onclicks para nao repetir execucao
6834 $('#modalAntesCompra_'+elem.data('index')).off('click', '#btnCompraLocal_'+elem.data('index'))
6835 $('#modalAntesCompra_'+elem.data('index')).on('click', '#btnCompraLocal_'+elem.data('index'), function () {
6836 // Montar object push - google tag manager - 4
6837 sendEventEcommerce("add_to_cart", ofertaSelecionada);
6838 if( elem.attr('data-destino-compra') != '2' )
6839 sendEventEcommerce("begin_checkout", ofertaSelecionada);
6840 })
6841 $('#btnBolsaLocal_'+elem.data('index')).hide();
6842 const _modal = $('#modalAntesCompra_'+elem.data('index'));
6843 _modal.css('display','flex');
6844 }else{
6845 var urlCompra = linkBotaoCompra.replace('\{codigoUnidade\}', elem.attr('data-unidade')).replace('\{codigoOferta\}', elem.attr('data-evento'));
6846
6847 if( elem.attr('data-destino-compra') == '2' ){
6848 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val());
6849
6850 addItemBackpack(elem.attr('data-evento'), '#' + elem.attr('id'),elem.attr('data-unidade'), dataEfetivaFormat);
6851
6852 }else{
6853 window.open(urlCompra, '_blank');
6854 }
6855 }
6856
6857
6858
6859 }
6860
6861 function associaEventoBtnComprar(i){
6862 var btnComprar = document.getElementById("btnComprar_"+i);
6863
6864 if(btnComprar != null && !btnComprar.classList.contains('disabled')){
6865 btnComprar.onclick = function(ev) {
6866
6867 ev.preventDefault()
6868 var elem = $(ev.target);
6869 actionBtnComprar(elem);
6870
6871 }
6872 }
6873 }
6874
6875 function associaEventoBtnComprarDentroFormaPgto(i){
6876 var btnComprarFormaPgto = document.getElementById("btnComprarFormaPgto_"+i);
6877
6878 if(btnComprarFormaPgto != null && !btnComprarFormaPgto.classList.contains('disabled')){
6879 btnComprarFormaPgto.onclick = function(ev) {
6880 event.preventDefault()
6881 var elem = $('#btnComprarFormaPgto_'+i);
6882 actionBtnComprar(elem);
6883 }
6884 }
6885 }
6886
6887 function associaEventoBtnComprarConhecaDescontoOk(i){
6888 var btnComprarConhecaDescontoOk = document.getElementById("btnComprarConhecaDescontoOk_"+i);
6889
6890 if(btnComprarConhecaDescontoOk != null){
6891 btnComprarConhecaDescontoOk.onclick = function(ev) {
6892 event.preventDefault()
6893 var elem = $(ev.target);
6894 actionBtnComprar(elem);
6895 }
6896 }
6897 }
6898
6899 function associaEventoBtnComprarConhecaDescontoNot(i){
6900 var btnComprarConhecaDescontoNot = document.getElementById("btnComprarConhecaDescontoNot_"+i);
6901
6902 if(btnComprarConhecaDescontoNot != null){
6903 btnComprarConhecaDescontoNot.onclick = function(ev) {
6904 event.preventDefault()
6905 var elem = $(ev.target);
6906 actionBtnComprar(elem);
6907 }
6908 }
6909 }
6910
6911 function associaEventoBtnAlunoNao(i){
6912 var btnAlunoNao = document.getElementById("btn-aluno-nao_"+i);
6913
6914 if(btnAlunoNao != null){
6915 btnAlunoNao.onclick = function(ev) {
6916 event.preventDefault()
6917 var elem = $(ev.target);
6918 elem.addClass('modal-extensao-btn-aluno-sim-ativo'),
6919 elem.closest('.sim').removeClass('modal-extensao-btn-aluno-sim-ativo');
6920 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo')
6921 $('#msg-alunoNao_'+i).removeClass('d-none');
6922 $('#msg-alunoSim_'+i).addClass('d-none');
6923 }
6924 }
6925 }
6926
6927 function associaEventoBtnAlunoSim(i){
6928 var btnAlunoSim = document.getElementById("btn-aluno-sim_"+i);
6929
6930 if(btnAlunoSim != null){
6931 btnAlunoSim.onclick = function(ev) {
6932 event.preventDefault()
6933 var elem = $(ev.target);
6934 elem.addClass('modal-extensao-btn-aluno-sim-ativo'),
6935 elem.closest('.nao').removeClass('modal-extensao-btn-aluno-sim-ativo');
6936 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo')
6937 $('#msg-alunoSim_'+i).removeClass('d-none');
6938 $('#msg-alunoNao_'+i).addClass('d-none');
6939
6940 }
6941 }
6942 }
6943
6944 function associaEventoBtnConheca(i){
6945 var btnModalExtConheca = document.getElementById("btnModalExtConheca_"+i);
6946
6947 if(btnModalExtConheca != null){
6948 btnModalExtConheca.onclick = function(ev) {
6949 event.preventDefault();
6950 var elem = $(ev.target);
6951 elem.closest('.modal-extensao_content').addClass('d-none');
6952 $('#modalExtAluno_'+i).removeClass('d-none');
6953 $('#msg-alunoSim_'+i).addClass('d-none');
6954 $('#msg-alunoNao_'+i).addClass('d-none');
6955 $('#btn-aluno-sim_'+i).removeClass('modal-extensao-btn-aluno-sim-ativo');
6956 $('#btn-aluno-nao_'+i).removeClass('modal-extensao-btn-aluno-sim-ativo');
6957
6958 }
6959 }
6960 }
6961
6962 function associaEventoBtnLocalRealizacao(i){
6963 var btnLocalRealizacao = document.getElementById("btnLocalRealizacao_"+i);
6964
6965 if(btnLocalRealizacao!=null){
6966 btnLocalRealizacao.onclick = function(ev) {
6967 event.preventDefault();
6968 var elem = $(ev.target);
6969 var _modal = document.getElementById(
6970 'modalLocalRealizacao_'+elem.data('index'));
6971 _modal.style.display = "flex";
6972 }
6973 }
6974 }
6975
6976 function associaEventosFecharModal(i){
6977
6978 var span = document.getElementsByClassName("ssp-card-modal-forma-pagamento__btn-close_"+i);
6979 var closeModalLocalRealizacao = document.getElementsByClassName("ssp-card-modal-local-realizacao__btn-close_"+i)[0];
6980 var closeModalAntesCompra = document.getElementsByClassName("ssp-card-modal-antes-compra__btn-close_"+i)[0];
6981 var closeModalSelecionarOutro = document.getElementsByClassName("ssp-card-modal-selecionar-outro__btn-close_"+i)[0];
6982 var btnEntendiLocalRealizacao = document.getElementsByClassName("ssp-modal-local-realizacao__btn_"+i)[0];
6983 var closeModalBotaoBolsa = document.getElementById("btnBolsaLocal_"+i)
6984
6985 if(isEmed){
6986 var closeModalFormaPagamento = document.getElementsByClassName("ssp-btn-emed__voltar-curso_"+i);
6987 for (const val of closeModalFormaPagamento) {
6988
6989 val.onclick = function() {
6990 $('[id^="myModal_"]').each(function(index,modal){
6991 modal.style.display = "none";
6992 });
6993 }
6994 };
6995 }
6996
6997 //event close modal
6998 for (const val of span) {
6999
7000 val.onclick = function() {
7001 $('[id^="myModal_"]').each(function(index,modal){
7002 modal.style.display = "none";
7003 });
7004 }
7005 };
7006
7007 closeModalLocalRealizacao.onclick = function() {
7008
7009 $('[id^="modalLocalRealizacao_"]').each(function(index,modal){
7010 modal.style.display = "none";
7011
7012 });
7013 }
7014
7015 closeModalAntesCompra.onclick = function() {
7016
7017 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){
7018 modal.style.display = "none";
7019 });
7020 }
7021
7022 closeModalSelecionarOutro.onclick = function() {
7023
7024 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){
7025 modal.style.display = "none";
7026 });
7027 }
7028
7029 btnEntendiLocalRealizacao.onclick = function() {
7030
7031 $('[id^="modalLocalRealizacao_"]').each(function(index,modal){
7032 modal.style.display = "none";
7033 });
7034 }
7035
7036 if(closeModalBotaoBolsa != null){
7037 closeModalBotaoBolsa.onclick = function() {
7038
7039 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,modal){
7040 modal.style.display = "none";
7041 });
7042 }
7043 }
7044
7045 // When the user clicks anywhere outside of the modal, close it
7046 window.onclick = function(event) {
7047
7048 $('[id^="myModal_"]').each(function(index,_modal){
7049 if (event.target == _modal)
7050 _modal.style.display = "none";
7051 });
7052 $('[id^="modalLocalRealizacao_"]').each(function(index,_modal){
7053 if (event.target == _modal)
7054 _modal.style.display = "none";
7055 });
7056
7057 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function(index,_modal){
7058 if (event.target == _modal)
7059 _modal.style.display = "none";
7060 });
7061 }
7062 }
7063
7064 function turmasIniciadas(dataInicioCurso){
7065
7066 var hoje = new Date();
7067 var dataInicioPartes = dataInicioCurso.split('/');
7068 var dataInicioCursoOferta = new Date(dataInicioPartes[2], dataInicioPartes[1] - 1, dataInicioPartes[0] , hoje.getHours(),hoje.getMinutes(),hoje.getSeconds(),hoje.getMilliseconds());
7069
7070 return dataInicioCursoOferta.getTime() <= hoje.getTime();
7071 }
7072
7073
7074 function concatSTR(str1, str2, separador){
7075
7076 if(str2){
7077
7078 return str1+separador+str2;
7079 }
7080 return str1;
7081 }
7082
7083 //Formata exibicao de datas conforme especificacao GCR
7084 function formataPeriodo(dataInicio, dataFim){
7085
7086 // Se as datas são iguais, retornar apenas a data final
7087 if (dataInicio === dataFim) {
7088 return dataFim;
7089 }
7090
7091 var dtInicioPartes = dataInicio.split('/');
7092 var dtFimPartes = dataFim.split('/');
7093
7094 //Não exibir o número zero antes dos números e o dia 1 como 1º
7095 var dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim())) +'/'+parseInt(dtInicioPartes[1].trim())+'/'+dtInicioPartes[2].trim();
7096 var dFimFormatada = (parseInt(dtFimPartes[0].trim()) == 1 ? '1º' : parseInt(dtFimPartes[0].trim())) +'/'+parseInt(dtFimPartes[1].trim())+'/'+dtFimPartes[2].trim();
7097
7098 //Quando um curso inicia e finaliza dentro do mesmo ano: 17/2 a 25/4/2020
7099 if(dtInicioPartes[2].trim() == dtFimPartes[2].trim()){
7100
7101 dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim()))+'/'+parseInt(dtInicioPartes[1].trim());
7102
7103 //Quando um curso inicia e finaliza dentro do mesmo mês: 5 a 30/4/2020
7104 if(dtInicioPartes[1].trim() == dtFimPartes[1].trim())
7105 dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim()));
7106 }
7107
7108 return dInicioFormatada + ' a ' + dFimFormatada;
7109 }
7110
7111 //Decrementa os contadores de abertudas de bolsa
7112 function atualizaTempoAberturasBolsas() {
7113
7114 var btnsContador = (isEmed) ? $('[id^="btnContadorBolsa_"], [id^="btnContadorComprar_"]') : $('[id^="btnContadorBolsa_"]');
7115
7116 btnsContador.each(function() {
7117
7118 var index = $(this).data('index');
7119 var elId = $(this).attr('id');
7120 var btnContent = $(this).parent('.ssp-btn-group__content');
7121
7122 if(isEmed){
7123 //EMED filtra ofertas e usa outra lista para referenciar as ofertas carregadas
7124 var dadosAberturaBolsa = calculaTempoAberturaBolsa((elId.indexOf('btnContadorBolsa') >= 0) ? ofertasMap.get('' +index).dataAberturaBolsaOferta : ofertasMap.get('' +index).dataAberturaMatricula, ofertasMap.get('' + index).horaAberturaBolsaOferta);
7125 }else{
7126 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
7127 var dadosAberturaBolsa = calculaTempoAberturaBolsa(objsTela.ofertas[index].dataAberturaBolsaOferta, objsTela.ofertas[index].horaAberturaBolsaOferta, objsTela.ofertas[index].botaoBolsaOferta);
7128 }
7129
7130 $(this).find('span').text(dadosAberturaBolsa.hours+':'+dadosAberturaBolsa.minutes+':'+dadosAberturaBolsa.seconds);
7131
7132 //Se esgotou o contador
7133 if(dadosAberturaBolsa.hours == 0 && dadosAberturaBolsa.minutes == 0 && dadosAberturaBolsa.seconds == 0){
7134
7135 //remove o contador
7136 $(this).remove();
7137
7138 //Habilitar inscrição EMED
7139 if(isEmed){
7140 var ofertaEmed = ofertasMap.get('' +index);
7141 var btnIndex = elId.slice(elId.indexOf('_')+1);
7142 var elementoPai = $('.codigoOferta_'+ofertaEmed.codigoOferta+' .ssp-ofertas-emed__card-info-investimento');
7143
7144 if(elId.indexOf('btnContadorBolsa') >= 0){
7145 if($('#manutencao-bolsa').val())
7146 criaBotaoBolsaEmed(ofertaEmed, $('#manutencao-bolsa').val(), 'disabled manutencao');
7147 else if(ofertaEmed.vagasBolsaOferta == true || ofertaEmed.vagasBolsaOferta == "true")
7148 criaBotaoBolsaEmed(ofertaEmed, 'Bolsa de estudo', '');
7149 else
7150 criaBotaoBolsaEmed(ofertaEmed, 'Bolsas de Estudo Esgotadas', 'disabled');
7151 }else if(elId.indexOf('btnContadorComprar') >= 0){
7152
7153 var textoBotao, classeBotao;
7154
7155 textoBotao = $('#manutencao-compra').val() || 'Fazer matrícula';
7156 classeBotao = $('#manutencao-compra').val() ? 'disabled manutencao' : '';
7157
7158 //Garante a ordenação dos botoes (matricula depois bolsa)
7159 const botaoBolsa = document.getElementById('btnBolsa_' + btnIndex) || document.getElementById('btnContadorBolsa_' + btnIndex);
7160
7161 botaoBolsa?.remove(); // Remove se existir
7162
7163 criaBotaoInscreverEmed(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmed_' + ofertaEmed.indice, elementoPai);
7164
7165 if (botaoBolsa) {
7166 elementoPai.append(botaoBolsa);
7167 }
7168
7169 //Altera o botao do modal de pagamento
7170 var modal = $('#myModal_' + btnIndex).find('.ssp-card-modal-forma-pagamento');
7171 var btnModal = modal.find('#btnComprarEmedModal_' + btnIndex);
7172 if(btnModal){
7173 btnModal.remove();
7174 criaBotaoInscreverEmedModal(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmedModal_' + btnIndex, modal, btnIndex);
7175 preencheDadosEmedModal(ofertaEmed,modal);
7176 }
7177
7178
7179 }
7180
7181 }else{
7182
7183 //Checa as condições das vagas do botão de bolsa
7184 var btnBolsaHTML = null;
7185 if($('#manutencao-bolsa').val())
7186 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], $('#manutencao-bolsa').val(), 'disabled manutencao');
7187 else if(objsTela.ofertas[index].vagasBolsaOferta == true || objsTela.ofertas[index].vagasBolsaOferta == "true")
7188 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Inscrever para bolsa de estudo');
7189 else
7190 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Vagas esgotadas para bolsas de estudo', 'disabled');
7191
7192 $('.codigoOferta_'+ objsTela.ofertas[index].codigoOferta +'.ssp-container-botao-bolsa').append(btnBolsaHTML);
7193
7194
7195 }
7196 }
7197
7198 });
7199
7200 }
7201
7202 // Retorna um objeto com o tempo de abertura da bolsa, em horas, minutos e segundos
7203 function calculaTempoAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, botaoBolsa){
7204
7205 var dadosAberturaBolsa = {
7206 days : '',
7207 hours : '',
7208 minutes : '',
7209 seconds : '',
7210 bolsaJaAberta: false,
7211 exibirContador: false,
7212 textoContador: ''
7213 };
7214
7215 if(dataAberturaBolsa.length == 0 || horaAberturaBolsa.length == 0)
7216 return dadosAberturaBolsa;
7217
7218 var now = todayG;
7219 var dia = now.getDate();
7220 var horarioDia = now.getHours();
7221
7222 var tempoRestante= tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa);
7223
7224 //console.log('tempo restante '+tempoRestante);
7225
7226 var diaAberturaBolsa = dataAberturaBolsa.split('-')[2];
7227
7228 var delta = tempoRestante / 1000;
7229
7230 var days = Math.floor(delta / 86400);
7231
7232 delta -= days * 86400;
7233
7234 var hours = Math.floor(delta / 3600) % 24;
7235 delta -= hours * 3600;
7236
7237 var minutes = Math.floor(delta / 60) % 60;
7238 delta -= minutes * 60;
7239
7240 var seconds = Math.floor(delta % 60);
7241
7242 //Zerar contador para data que ja passou
7243 if(days < 0){
7244 dadosAberturaBolsa.days = 0;
7245 dadosAberturaBolsa.hours = '00';
7246 dadosAberturaBolsa.minutes = '00';
7247 dadosAberturaBolsa.seconds = '00';
7248 }else{
7249 dadosAberturaBolsa.days = days;
7250 dadosAberturaBolsa.hours = hours < 10 ? '0'+hours : hours;
7251 dadosAberturaBolsa.minutes = minutes < 10 ? '0'+minutes : minutes;
7252 dadosAberturaBolsa.seconds = seconds < 10 ? '0'+seconds : seconds;
7253 }
7254
7255 dadosAberturaBolsa.bolsaAberta = days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0;
7256 var horaExibeContador = 8;
7257 if(!isEmed && botaoBolsa == false){
7258 dadosAberturaBolsa.exibirContador = false;
7259 }else{
7260 dadosAberturaBolsa.exibirContador = days == 0 && horarioDia >= horaExibeContador && !dadosAberturaBolsa.bolsaAberta && (diaAberturaBolsa == dia);
7261 dadosAberturaBolsa.textoContador = dadosAberturaBolsa.hours + ':' + dadosAberturaBolsa.minutes + ":"+ dadosAberturaBolsa.seconds;
7262 }
7263 dadosAberturaBolsa.bolsaJaAberta = tempoRestante < 0;
7264
7265 return dadosAberturaBolsa;
7266
7267 }
7268
7269 // Verifica se uma oferrta já chegou sua data de abertura
7270 function tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa){
7271 // console.log(dataAberturaBolsa);
7272 // console.log(horaAberturaBolsa);
7273
7274 //var today = new Date();
7275
7276
7277 //console.log( "TodayG "+ todayG);
7278
7279 //Precisa fazer formatação nos horários pois pode estar como 9h ou 9h30
7280 var partesHora = horaAberturaBolsa.split('h');
7281
7282 var partesHora = partesHora.filter(function (el) {
7283 return el != "";
7284 });
7285
7286 //formato 9h
7287 if(partesHora.length == 1)
7288 var aberturaBolsa = new Date(dataAberturaBolsa+'T'+horaAberturaBolsa.replace('h', '').trim()+":00");
7289
7290 else{
7291
7292 //format 9h3
7293 if(partesHora[1].length == 1)
7294 var aberturaBolsa = new Date(dataAberturaBolsa+'T'+partesHora[0].replace('h', '').trim()+':'+partesHora[1] +'0');
7295
7296 //formato 9h30
7297 else
7298 var aberturaBolsa = new Date(dataAberturaBolsa+'T'+partesHora[0].replace('h', '').trim()+':'+partesHora[1]);
7299 }
7300
7301 // console.log(aberturaBolsa);
7302 return aberturaBolsa - todayG;
7303 }
7304
7305 function formataDataAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa){
7306 var dataPartes = dataAberturaBolsa.split('-');
7307
7308 return dataPartes[2]+'/'+dataPartes[1]+ ' às '+horaAberturaBolsa.replace('h', '').trim()+' horas';
7309
7310 }
7311
7312 function formataValor(valor){
7313
7314 if(!valor.toString().includes(".")){
7315 valor = parseFloat(valor).toLocaleString('pt-BR')+",00";
7316 }else{
7317 valor = parseFloat(valor).toLocaleString('pt-BR');
7318
7319 if(valor.split(",").length == 2){
7320
7321 if(valor.split(",")[1].length == 1)
7322 valor += "0";
7323
7324 }else
7325 valor += ",00";
7326 }
7327
7328 return valor;
7329 }
7330
7331 function ajustarCasasDecimaisSemArredondar(numero, casas) {
7332 const str = numero + ''
7333 const arr = str.split('.')
7334 return parseFloat(arr[0].concat('.').concat(arr[1] ? arr[1].substring(0, casas) : '0'))
7335 }
7336
7337 function possuiCriteriosDesconto2022(dt) {
7338 return dt.substring(dt.lastIndexOf('/') + 1) >= 2022
7339 && (
7340 $('[name="tipoCurso"]').val() == 'livre'
7341 || ($('[name="tipoCurso"]').val() == 'tecnico' && $('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio')
7342 || $('[name="tipoCurso"]').val() == 'extensao'
7343 )
7344 }
7345
7346 function strToFloat(str) {
7347 const separator = str.includes(',') ? ',' : '.'
7348
7349 const numArr = str.split(separator)
7350 const inteiro = numArr[0].replaceAll('.', '').replaceAll(',', '.')
7351 const decimal = numArr[1] ? numArr[1].replaceAll('.', '').replaceAll(',', '.') : ''
7352 return parseFloat(inteiro.concat('.').concat(decimal ? decimal : '0'))
7353 }
7354
7355 /**
7356 * Compare date formatted as "YYYY-MM-DD" with the current date
7357 * Return:
7358 * -1 if dateStr < today
7359 * 0 if dateStr == today
7360 * 1 if dateStr > today
7361 */
7362 function compareDates(dateStr1, dateStr2) {
7363
7364 const convertDate = (dateStr) => {
7365 if (typeof dateStr !== 'string') throw new TypeError('dateStr must be a string with format YYYY-MM-DD');
7366 const match = dateStr.match(/^(\d{4})-(\d{2})-(\d{2})$/);
7367 if (!match) throw new Error('invalid format. Use YYYY-MM-DD');
7368 const [, yy, mm, dd] = match;
7369 return Date.UTC(Number(yy), Number(mm) - 1, Number(dd));
7370 }
7371
7372 const date1 = convertDate(dateStr1);
7373 const date2 = convertDate(dateStr2);
7374 if (date1 < date2) return -1;
7375 if (date1 > date2) return 1;
7376 return 0;
7377 }
7378
7379
7380 function possuiMensalidadeCampanha(oferta) {
7381
7382 const dataInicio = oferta.dataInicio.split('/').reverse().join('-');
7383 const precoParcelaCartoes = parseFloat(oferta.precoParcelaCartoes.replace(',','.'));
7384 const precoParcelaBoleto = parseFloat(oferta.precoParcelaBoleto.replace(',','.'));
7385
7386 if(!oferta.precoVendaMaxParcelaOferta
7387 || (oferta.precoVendaMaxParcelaOferta != 99 && precoParcelaCartoes != 99 && precoParcelaBoleto != 99 && compareDates(dataInicio, '2025-12-31') <= 0)
7388 || (oferta.precoVendaMaxParcelaOferta != 109 && precoParcelaCartoes != 109 && precoParcelaBoleto != 109 && compareDates(dataInicio, '2026-01-01') >= 0)
7389 )
7390 return false
7391
7392 if($('[name="modalidades"]').val() == 'hab.-tecnica-de-nivel-medio')
7393 return true
7394
7395 if($('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio')
7396 return true
7397
7398 if($('[name="modalidades"]').val() == 'qualificacao-profissional')
7399 return true
7400
7401 return false
7402 }
7403
7404 function htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade) {
7405 let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio)
7406 temDesconto = temDesconto && !possuiMensalidadeCampanha(oferta)
7407
7408 // Define o texto singular ou plural
7409 var textoHorario = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
7410 "Horário e dia da aula:" :
7411 "Horário e dias das aulas:";
7412
7413 const btnLocalReal = function(oferta){
7414
7415 // NOVA LÓGICA: Define o texto (Singular/Plural)
7416 var textoOndeAcontece = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
7417 "Onde a aula irá acontecer?" :
7418 "Onde as aulas vão acontecer?";
7419
7420 var btn = `<div class="container-local-realizacao ` + ((oferta.espacoExterno == 'true'|| (isHibrido && temTextoParaFormatoHibrido)) ? '' : 'd-none-btn') + (localLivreOnline(oferta.localEspacoExterno) ? ' idioma-online' : '') + `">`;
7421
7422 btn += (localLivreOnline(oferta.localEspacoExterno)) ?
7423 `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="btn-idiomas__aula-online" href="#">
7424 <i class="fas fa-wifi"></i>Aulas Online - ao vivo</a>`
7425 : `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="ssp-card-oferta-curso__local-realizacao-content__title" href="#">
7426 <i class="fas fa-user"></i>` + textoOndeAcontece + `</a>`;
7427
7428 btn += `</div>`;
7429
7430 return btn;
7431
7432 }
7433
7434 // Card Oferta
7435
7436 let result = `
7437 <div class="slick-area__item card_oferta_` + index + ` codigoOferta_` + oferta.codigoOferta + ` ` + (temDesconto ? 'ssp-desconto-2022' : '') + `">
7438
7439 <div class="ssp-card-oferta-curso">
7440
7441 <div class="content-data-dias">
7442
7443 <div class="ssp-card-oferta__info-turma-iniciada" id="aviso-turma-iniciada-` + index + `" style="display:none">
7444 <h6 style="color:white;background-color:#ff7157;border-radius: 5px;padding: 8px 0px;width: 60%;font-size: 12px;margin-top: 0;"><strong>Turma iniciada, comece já!</strong></h6>
7445 </div>
7446
7447
7448 <div>
7449 <small class="ssp-card-oferta-curso__title-item">Período:</small>
7450 <h6 class="ssp-card-oferta-curso__item-data-periodo item-data-periodo_` + index + `">` + formataPeriodo(oferta.dataInicio, oferta.dataFim) + `</h6>
7451 </div>
7452
7453 <div class="content-horario-dias-semana">
7454
7455 <div class="horario">
7456 <small class="ssp-card-oferta-curso__title-item">` + textoHorario + `</small>
7457 </div> ` +
7458
7459 `<div class="ssp-card-oferta-curso__dia-hora_content">
7460 ` + diasSemanaHTML + `
7461 </div>
7462
7463 </div>
7464
7465 ` + btnLocalReal(oferta);
7466
7467 result = result + `
7468 </div>
7469 `
7470
7471 if(excecaoCursoGratuito(oferta)){
7472 result += montaRestanteHTMLexcecaoCursoGratuito(index,oferta);
7473 return result;
7474 }
7475
7476 //Regra adicionada em 04/01/22 devido aos cursos de Garçon e Cozinheiro. Definimos como regra geral que caso botaoCompra seja falso, não faz sentido mostrar os valores
7477 //Adicionada a validação dos preços da oferta em 07/06/2022 - Tarefa 9498
7478 const estaSemValorOferta = oferta.botaoCompraOferta == ''
7479 || oferta.botaoCompraOferta == 'false'
7480 || !oferta.precoVendaOferta
7481 || !oferta.precoCheioOferta
7482 || !oferta.precoVendaMaxParcelaOferta
7483 || strToFloat(oferta.precoVendaOferta) == 0
7484 || strToFloat(oferta.precoCheioOferta) == 0
7485 || strToFloat(oferta.precoVendaMaxParcelaOferta) == 0
7486
7487 //Trecho inicial do Bolsa de estudo
7488 result += `<div class="content-btn-bolsa codigoOferta_` + oferta.codigoOferta + (estaSemValorOferta ? ' pb-0' : '') + `">
7489 <div class="ssp-card-oferta__info-turma-content">
7490 <h6 class="ssp-card-oferta__info-turma mb-0">Bolsas de estudo</h6>
7491 </div>
7492 <div class="codigoOferta_` + oferta.codigoOferta + ` ssp-container-botao-bolsa"></div>
7493 </div>
7494 `
7495
7496 if(estaSemValorOferta) {
7497 result = result + `
7498 <div class="content-buttons hide">
7499 </div>
7500 `
7501 return result;
7502 }
7503
7504
7505 //Trecho final do Bolsa de estudo e inclusao de botao de expansao do "Valores para compra"
7506 result += ` <div class="show-price-content codigoOferta_` + oferta.codigoOferta + `">
7507 <div class="ou-separator-desconto">Ou</div>
7508 <button type="button" class="btn-show-price">
7509 <p>Saiba mais sobre:</p>
7510 <div onclick="togglePriceCard('codigoOferta_` + oferta.codigoOferta + `')">
7511 <i class="fas fa-money-bill"></i>
7512 <span>Valores para compra</span>
7513 </div>
7514 </button>
7515 </div>
7516 `
7517
7518 result = result + `
7519 <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `">
7520 `
7521
7522 if( temDesconto && !ehCursoTrampolim ) {
7523 result = result + `
7524 <div class="ssp-card-oferta__info-turma-content">
7525 <h6 class="ssp-card-oferta__info-turma">Valores para compra</h6>
7526 </div>
7527
7528 <div class="block-valor-desconto">
7529
7530 <div class="tag-label-desconto">
7531 <small class="ssp-card-oferta-curso__title-item">Valor com </small>
7532 <span class="ssp-card-oferta-curso__valor-desconto">50% de desconto*</span>
7533 </div>
7534
7535 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar((strToFloat(oferta.precoVendaOferta)/strToFloat(oferta.numeroMaxParcelasOferta))/2, 2)) + `</h6>
7536
7537 <div class="ssp-card-oferta-curso__desconto-content">
7538 <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</span></p>
7539 <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta)/2, 2)) + `</span></p>
7540 </div>
7541 `
7542
7543 if($('[name="tipoCurso"]').val() == 'extensao') {
7544 result = result + `<p class="modal-extensao_txteconomiza my-2">* Válido para quem trabalha ou tem sua própria empresa no setor de comércio e serviços, estudantes ou ex-estudantes de cursos técnicos no Senac ou para quem já finalizou o Ensino Médio Técnico no Senac.</p></div>`
7545 } else {
7546 result = result + `<p class="modal-extensao_txteconomiza my-2">*Válido para quem trabalha ou tem sua própria empresa no setor de comércio e serviços.</p></div>`
7547 }
7548
7549 result = result + `
7550 <div class="ou-separator-desconto">Ou</div>
7551
7552 <div class="block-valor-total">
7553
7554 <small class="ssp-card-oferta-curso__title-item">Valor sem desconto:</small>
7555
7556 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
7557
7558 <div class="ssp-card-oferta-curso__desconto-content">
7559 <p>Valor total: <strong>R$ ` + formataValor(strToFloat(oferta.precoVendaOferta)) + `</strong></p>
7560 </div>
7561
7562 </div>
7563 `
7564 }else{
7565
7566 // itens que são diferentes entre técnico e livres comprado a extensão
7567 if($('[name="tipoCurso"]').val() == 'extensao'){
7568 result = result + `
7569
7570 <div class="block-valor-total">
7571
7572 <div class="investimento" id="container_investimento_` + index + `">
7573
7574 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
7575
7576 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaMaxParcelaOferta))) + `</h6>
7577
7578 <div class="ssp-card-oferta-curso__desconto-content">
7579 <p>Ou: <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span> à vista</p>
7580 </div>
7581
7582 </div>
7583
7584 </div>
7585 `
7586 } else {
7587 result = result + `
7588 <div class="block-valor-total">
7589 <div class="investimento" id="container_investimento_` + index + `">
7590 `
7591
7592 // Não mostrar mensagem de 30% de desconto em casos especificos
7593 if(temDesconto){
7594 result = result + `
7595 <small class="ssp-card-oferta-curso__title-item font-weight-bold">Valor com 30% de desconto:</small>
7596 `
7597 }
7598
7599 if(oferta.precoCheioOferta == oferta.precoVendaOferta) {
7600 result = result + `
7601 <small class="ssp-card-oferta-curso__title-item">Valor do curso:</small>
7602 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
7603
7604 <div class="ssp-card-oferta-curso__desconto-content">
7605 <p>Ou <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p>
7606 </div>
7607 </div>
7608 </div>
7609 `
7610 } else {
7611 result = result + `
7612 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
7613 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
7614
7615 <div class="ssp-card-oferta-curso__desconto-content">
7616 <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(oferta.precoCheioOferta) + `</span></p>
7617 <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p>
7618 </div>
7619 </div>
7620 </div>
7621 `
7622 }
7623 }
7624 }
7625
7626 let dataBtnComprar = getObjBtnComprar(oferta);
7627
7628 // itens que são diferentes entre técnico e livres comprado a extensão
7629 result = result + `
7630
7631 <div class="ssp-card-oferta-curso__formas-pagamento-content" id="container_forma_pgto_` + index + `">
7632
7633 <span>Saiba mais sobre:</span>
7634
7635 <div>
7636 <i class="ssp-card-oferta-curso__formas-pagamento-content__icon-credit-card"></i>
7637 <a id="myBtn_` + index + `" data-index="` + index + `" class="ssp-card-oferta-curso__formas-pagamento-content__title" style="font-weight: 600;" href="#">` + (temDesconto ? 'Descontos e pagamento' : 'Descontos e parcelamento') + `</a>
7638 </div>
7639
7640 </div>
7641
7642 <div class="content-buttons">
7643
7644 <div class="ssp-btn-group__content botoes-oferta-container_` + index + `">
7645
7646 <a href="#a" id="btnComprar_` + index + `" data-espaco-ex="` + dataBtnComprar.dataEspacoEx + `" data-unidade="` + codigoUnidade + `" data-evento="` + oferta.codigoOferta + `" data-destino-compra="` + oferta.destinoCompra + `" data-index="` + index + `" class="btn btn-lg btn-success w-100 mt-3 ` + dataBtnComprar.classeBotao + `" style="font-size:16px;font-weight: 600;">` + dataBtnComprar.textoBotao + `</a>
7647
7648 </div>
7649
7650 </div>
7651
7652 </div>
7653
7654 </div>
7655 `
7656
7657 return result
7658 }
7659
7660 function montaRestanteHTMLexcecaoCursoGratuito(index, oferta){
7661
7662 let dataBtnComprarExcecao = getObjBtnComprar(oferta);
7663 let resultModalidade =
7664 `
7665 <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `">
7666 <div class="ssp-card-oferta__info-turma-content">
7667 <h6 class="ssp-card-oferta__info-turma">Curso gratuito</h6>
7668 </div>
7669 <div class="block-valor-total">
7670 <div class="investimento" id="container_investimento_` + index + `">
7671 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>R$ 0,00</h6>
7672 </div>
7673 </div>
7674 <div class="content-buttons">
7675
7676 <div class="ssp-btn-group__content botoes-oferta-container_` + index + `">
7677
7678 <a href="#a" id="btnComprar_` + index + `" data-espaco-ex="` + dataBtnComprarExcecao.dataEspacoEx + `" data-unidade="` + codigoUnidade + `" data-evento="` + oferta.codigoOferta + `" data-destino-compra="` + oferta.destinoCompra + `" data-index="` + index + `" class="btn btn-lg btn-success w-100 mt-3 ` + dataBtnComprarExcecao.classeBotao + `" style="font-size:16px;font-weight: 600;">FAZER MATRÍCULA</a>
7679
7680 </div>
7681
7682 </div>
7683 </div>
7684 </div>
7685 `
7686 ;
7687 return resultModalidade;
7688
7689 }
7690
7691
7692 var htmlModalLocalRealizacao = '<div id="modalLocalRealizacao_{index}" class="ssp-modal">'
7693 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao">'
7694 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__title-content">'
7695
7696 htmlModalLocalRealizacao += '{tituloLocalRealizacao}'
7697
7698 htmlModalLocalRealizacao += '<i class="ssp-card-modal-local-realizacao__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>'
7699 htmlModalLocalRealizacao += '</div>'
7700 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__texto">'
7701 htmlModalLocalRealizacao += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>'
7702 htmlModalLocalRealizacao += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>'
7703 htmlModalLocalRealizacao += '<address>'
7704 htmlModalLocalRealizacao += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>'
7705 htmlModalLocalRealizacao += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>'
7706 htmlModalLocalRealizacao += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>'
7707 htmlModalLocalRealizacao += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>'
7708 htmlModalLocalRealizacao += '</address>'
7709 htmlModalLocalRealizacao += '<div class="btn ssp-modal-local-realizacao__btn-content">'
7710 htmlModalLocalRealizacao += '<a class="btn ssp-modal-local-realizacao__btn {classeEntendi} ssp-modal-local-realizacao__btn_{index}" href="#a">Entendi</a>'
7711 htmlModalLocalRealizacao +='</div>'
7712 htmlModalLocalRealizacao +='</div>'
7713 htmlModalLocalRealizacao +='</div>'
7714 htmlModalLocalRealizacao +='</div>';
7715
7716 var htmlModalAntesCompra = '<div id="modalAntesCompra_{index}" class="ssp-modal">'
7717 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao">'
7718 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__title-content">'
7719 htmlModalAntesCompra += '<h6 class="ssp-modal-local-realizacao__title"> LEMBRETE IMPORTANTE!</h6>'
7720 htmlModalAntesCompra += '<i class="ssp-card-modal-antes-compra__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>'
7721 htmlModalAntesCompra += '</div>'
7722 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__texto">'
7723 htmlModalAntesCompra += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>'
7724 htmlModalAntesCompra += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>'
7725 htmlModalAntesCompra += '<address>'
7726 htmlModalAntesCompra += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>'
7727 htmlModalAntesCompra += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>'
7728 htmlModalAntesCompra += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>'
7729 htmlModalAntesCompra += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>'
7730 htmlModalAntesCompra += '</address>'
7731 htmlModalAntesCompra += '<div class="btn ssp-modal-local-realizacao__btn-content">'
7732 htmlModalAntesCompra += '{componentBuyConfirmation}'
7733 htmlModalAntesCompra += '<a id="btnBolsaLocal_{index}" class="btn btn-lg btn-info w-100 mt-3" href="{linkBtnBolsa}" target="_blank" style="display:none;">OK, inscrever para bolsa</a>'
7734 htmlModalAntesCompra += '<a class="ssp-modal-local-realizacao__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close_{index}" href="#a" >Selecionar outra turma</a>'
7735 htmlModalAntesCompra +='</div>'
7736 htmlModalAntesCompra +='</div>'
7737 htmlModalAntesCompra +='</div>'
7738 htmlModalAntesCompra +='</div>';
7739
7740 var htmlSlickAreaDiasSemana = '<div class="ssp-card-oferta-curso__dia-hora-item">'
7741 htmlSlickAreaDiasSemana +='<p class="ssp-card-oferta-curso__dia-hora-item__dia">'
7742 htmlSlickAreaDiasSemana += '<span data-dia-hora="dias-semana">{diasSemana}</span>'
7743 htmlSlickAreaDiasSemana += '<span data-dia-hora="horário">{horasSemana}</span>'
7744 htmlSlickAreaDiasSemana += '</p>'
7745 htmlSlickAreaDiasSemana += '</div>';
7746
7747
7748 //Montar object push - google tag manager - 5
7749 function criaItensEcommerce(ofertas){
7750
7751 let nomeUnidadeSelecionada = objsTela.unidades[ultimaUnidade].nome
7752
7753 let dadosCurso = {
7754 //Pegar do freemarker
7755 tituloComercial : $('[name="tituloComercial"]').val(),
7756 tipoCurso : $('[name="nomeCategoriaTipoCurso"]').val(),
7757 formato : $('[name="formato"]').data("formato")
7758 }
7759
7760 let ecommerceObject = {
7761
7762 item_id: "", //codOferta - oferta,
7763 item_name: "", //Nome do curso - curso,
7764 affiliation: "", //nome da unidade - oferta,
7765 currency: "BRL", //Moeda - "BRL",
7766 discount: "", //desconto - oferta,
7767 index: "", //indice da lista - i,
7768 item_brand: "Senac SP", //"Senac SP",
7769 item_category: "", //categoria do curso - curso,
7770 item_list_id: "", //"60",
7771 item_list_name: "", //"São Carlos" - Oferta,
7772 item_variant: "", //modalidade - curso,
7773 price: "", //preco cheio - oferta,
7774 quantity: 1
7775
7776 }
7777
7778 let itensEcommerce = new Map();
7779
7780 for(var i = 0; i < ofertas.length; i++){
7781
7782 itensEcommerce.set(ofertas[i].codigoOferta, {
7783
7784 item_id: ofertas[i].codigoOferta, //codOferta - oferta,
7785 item_name: dadosCurso.tituloComercial, //Nome do curso - curso,
7786 affiliation: nomeUnidadeSelecionada, //nome da unidade - oferta,
7787 currency: "BRL", //Moeda - "BRL",
7788 discount: parseFloat(ofertas[i].precoCheioOferta - ofertas[i].precoVendaOferta).toFixed(2), //desconto - oferta,
7789 index: i, //indice da lista - i,
7790 item_brand: "Senac SP", //"Senac SP",
7791 item_category: dadosCurso.tipoCurso, //categoria do curso - curso,
7792 item_list_id: objsTela.unidades[ultimaUnidade].codigoUnidade, //"60",
7793 item_list_name: nomeUnidadeSelecionada, //"São Carlos" - Oferta,
7794 item_variant: dadosCurso.formato, //modalidade - curso,
7795 price: parseFloat(ofertas[i].precoCheioOferta).toFixed(2), //preco cheio - oferta,
7796 quantity: 1
7797
7798 }
7799 )
7800 }
7801
7802 return itensEcommerce;
7803 }
7804
7805 //EMED - ELEMENTOS DINAMICOS
7806 const htmlSlickAreaEmed = function(oferta){
7807 var btnid = 'myBtn_' + oferta.indice;
7808 const diasHorarios = function(oferta){
7809 return oferta.diasDaSemanaOferta.join(', ').toLowerCase();
7810
7811 }
7812
7813
7814 return `
7815 <div class="ssp-ofertas-emed__card codigoOferta_`+ oferta.codigoOferta + `">
7816
7817 <div class="ssp-ofertas-emed__card-info-turma">
7818
7819 <div class="item-content">
7820 <i class="fas fa-calendar-alt calendar-icon-turma"></i>
7821 <p class="title-turma">`+ oferta.titulo +`</p>
7822 <span class="text-default" data-info="info-turma">Alunos na turma: <strong>até `+ oferta.qtdeTotalVagas +`</strong></span>
7823 </div>
7824
7825 <div class="content-previsao-inicio-termino">
7826
7827 <div class="item-content">
7828 <span class="text-default">Previsão de início:</span>
7829 <span class="text-default-lg">`+ formatarDataEmed(oferta.dataInicio,oferta.etapa,false) +`</span>
7830 </div>
7831
7832 <div class="item-divisor"></div>
7833
7834 <div class="item-content">
7835 <span class="text-default">Previsão de término:</span>
7836 <span class="text-default-lg">`+ formatarDataEmed(oferta.dataFim,oferta.etapa,true) +`</span>
7837 </div>
7838
7839 </div>
7840
7841
7842 <div class="item-divisor"></div>
7843
7844 <div class="item-content">
7845 <span class="text-default">Dias e horários das aulas:</span>
7846 <span class="text-default-lg" style="text-transform: capitalize;">`+ diasHorarios(oferta) +`</span>
7847 <span class="text-default-lg">`+ oferta.horaInicio.replace(':', 'h') + ' às ' + oferta.horaFimOferta.replace(':', 'h') +`</span>
7848 </div>
7849
7850 </div>
7851
7852 <div class="ssp-ofertas-emed__card-info-investimento">
7853 <p class="title-investimento">Investimento anual:</p>
7854
7855 <div class="item-content-investimento">
7856 <span class="txt-parcelas">Até `+ oferta.numeroMaxParcelasOferta +`x</span>
7857 <span class="txt-valor-parcela">R$ `+ formataValor(oferta.precoVendaMaxParcelaOferta) +`</span>
7858 </div>
7859
7860 <div class="item-content-investimento">
7861 <p class="txt-boleto-cartao">(boleto bancário ou cartão de crédito)</p>
7862 </div>
7863
7864 <div class="item-content-investimento">
7865 <i class="fas fa-credit-card icon-cartao-credito"></i>
7866 <a id="`+ btnid +`" data-index="`+ oferta.indice +`" href="#" class="link-descontos-parcelamentos">Descontos e Parcelamentos</a>
7867 </div>
7868
7869 </div>
7870
7871 </div>
7872
7873 `;
7874 }
7875
7876
7877 function loadCursosVocePodeGostar(){
7878
7879 if(isEmed){
7880 var url = urlSearchCursosPodeGostarEmed
7881 .replace('\{groupId\}', groupId)
7882 .replace('\{tiposDeCurso\}',$('[name="idTipoCurso"]').val())
7883 .replace('\{limit\}', 12)
7884 .replace('\{articleId\}', $('[name="articleId"]').val());
7885 }else{
7886 var url = urlSearchCursosPodeGostar
7887 .replace('\{companyId\}',themeDisplay.getCompanyId())
7888 .replace('\{groupId\}', groupId)
7889 .replace('\{userId\}',themeDisplay.getUserId())
7890 .replace('\{articleId\}',$('[name="articleId"]').val())
7891 .replace('\{limit\}', 12);
7892 }
7893
7894
7895 $.ajax({
7896 url : url,
7897 type : 'get',
7898 beforeSend: function(){
7899 loading('#slider-curso');
7900 }
7901 })
7902 .done(function(cursos){
7903
7904 if(cursos.length > 0){
7905
7906 cursos = JSON.parse(cursos);
7907
7908 if(isEmed) cursos = cursos['cursos'];
7909
7910 if(cursos.length > 0) $('#section-cursos-voce-pode-gostar').removeClass('d-none');
7911 else {
7912 $('#section-cursos-voce-pode-gostar').addClass('d-none');
7913 return;
7914 }
7915
7916 var articles = [];
7917
7918 $.each(cursos, function(k, c){
7919 articles.push(c.articleId);
7920 });
7921
7922 //Verifica a situação dos botoes de inscrições e bolsa
7923 $.ajax({
7924 url : '/o/senac-content-services/verificaBotoesInscricaoEBolsa/'+groupId+'/'+articles.join(','),
7925 type : 'get'
7926 })
7927 .done(function(infoBotoes){
7928
7929 if(infoBotoes.length > 0) {
7930
7931 infoBotoes = JSON.parse(infoBotoes);
7932
7933 $('#slider-curso').empty();
7934
7935 $.each(cursos, function(k, c){
7936 $('#slider-curso').append(buildCardCurso(c, infoBotoes));
7937
7938 });
7939
7940 $('#slider-curso').addClass(
7941 'slick-area slick-area--md-bleed slider-container slick-area-cursos-pode-gostar');
7942
7943 sliderCurso('.slick-area-cursos-pode-gostar');
7944 }
7945 });
7946 }
7947
7948 })
7949 .fail(function(jqXHR, textStatus, msg){
7950 // alert(msg);
7951 });
7952
7953 }
7954
7955 /*
7956 * Armazena a navegação em cookies, se habilitado
7957 */
7958 $(document).on("click", ".ck-curso", function() {
7959
7960 //Verifica se o cookie está habilitado
7961 if(getCookie('portalSenacCookie') != null){
7962
7963 var articleId = $(this).data('ck');
7964 manageCookieArray('ck-cursos', articleId);
7965
7966 }
7967
7968 });
7969
7970
7971
7972
7973
7974 $(function(){
7975
7976 if($('#unidades-ofertas').find('option').length ==0){
7977
7978 $('.ssp-container-selecione-unidade').addClass('d-none')
7979
7980 }
7981
7982 });
7983
7984 function avisoNovasTurmas(){
7985
7986
7987 window.event.preventDefault()
7988
7989 //var unidadeSelecionada = $('#select-registro-interesse').val();
7990 //este select tem 2 valores separados por @ -> categoryId@codUnidade
7991 // var unidadeSelecionada = $('#unidades-ofertas').val();
7992
7993 //Código fixo quando Senac Ao Vivo
7994 var codUnidadeSelectRegInt = (isAoVivo) ? codUnidadeSenacAoVivo : $('#unidades-ofertas').val().split("@")[1];
7995
7996 // if(codUnidadeSelectRegInt && codUnidadeSelectRegInt.length){
7997
7998 //Se ja tiver logado , redireciona para o registro
7999 if(getCookie('ticket') == null){
8000
8001 //Abre modal login
8002 $('#modal-login').removeClass('d-none');
8003
8004 }else{
8005
8006 abrirModalRegistroInteresse(codUnidadeSelectRegInt);
8007
8008 verificaBtnEnviarRegistroInteresseAtivo();
8009 }
8010
8011 window.onclick = function(event) {
8012 $('[id="modal-registro-interesse"]').each(function(index,_modal){
8013 if (event.target == _modal) {
8014 $('#modal-registro-interesse').addClass('d-none');
8015 $("body").removeClass("overflow-hidden")
8016 }
8017 });
8018 }
8019
8020 // }
8021 }
8022 function login(){
8023 var unidadeSelecionada
8024 var codUnidadeSelectRegInt
8025 doLogin({
8026 user: $('#login-email-modal').val(),
8027 pass: $('#login-password-modal').val(),
8028 btnLoadingSelector: '#btnLogin',
8029 before: () => {
8030 $('#mensagem-erro-login').addClass('d-none')
8031
8032 unidadeSelecionada = $('#unidades-ofertas').val();
8033 codUnidadeSelectRegInt = (isAoVivo) ? codUnidadeSenacAoVivo : $('#unidades-ofertas').val().split("@")[1];
8034 },
8035 done: (data) => {
8036 var loginData = JSON.parse(data);
8037
8038 if(loginData.status == 200 || loginData.status == 201){
8039 //Após logar-se, exibe o modal p/registro de interesse
8040 abrirModalRegistroInteresse(codUnidadeSelectRegInt);
8041 verificaBtnEnviarRegistroInteresseAtivo();
8042 //esconde o modal de login
8043 $('#modal-login').addClass('d-none');
8044 }
8045 },
8046 errorMessageSelector: '#mensagem-erro-login',
8047 error: (err) => console.error(err)
8048 })
8049 }
8050
8051 function registroSelecionaTodosDias(){
8052
8053 if($(this).hasClass('ssp-week-day-active')){
8054 $(this).removeClass('ssp-week-day-active')
8055 $('.ssp-week-day').removeClass('ssp-week-day-active')
8056 }else{
8057 $(this).addClass('ssp-week-day-active')
8058 $('.ssp-week-day').addClass('ssp-week-day-active')
8059 }
8060
8061 verificaBtnEnviarRegistroInteresseAtivo();
8062 }
8063
8064 function registroSelecionaTodosPeriodos(){
8065
8066 if($(this).is(':checked')){
8067 $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', true);
8068 }else{
8069 $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', false);
8070 }
8071
8072 verificaBtnEnviarRegistroInteresseAtivo();
8073 }
8074 $('.turmas-registro-interesse input[type=checkbox]').on('click', function() {
8075 var $selecionado = $(this);
8076 if ($selecionado.is(":checked")) {
8077 $('.turmas-registro-interesse input[type=checkbox]').prop("checked", false);
8078 $selecionado.prop("checked", true);
8079 } else {
8080 $selecionado.prop("checked", false);
8081 }
8082});
8083 function enviarRegistroInteresse(){
8084
8085 const codigoUsr = getCookie('codigo');
8086
8087 if(codigoUsr == null){
8088 //Sem o cookie refaz o login
8089 $('#modal-registro-interesse').addClass('d-none');
8090 $('body').removeClass('overflow-hidden');
8091 $('#modal-login').removeClass('d-none');
8092 return;
8093 }
8094
8095 var codigoFT = $('[name="codigoFT"]').val();
8096
8097 var unidades = new Set();
8098
8099 var diasSemana = '';
8100
8101 //Senac ao vivo nao tem opçao de dias da semana nem unidades
8102 if(isAoVivo){
8103 unidades.add(codUnidadeSenacAoVivo);
8104 }else{
8105 $.each($('.ssp-week-day').not('#todosDias'), function(k, v){
8106 if($(this).hasClass('ssp-week-day-active')){
8107 diasSemana += $(this).text()+',';
8108 }
8109 });
8110
8111 if(diasSemana.length > 0) diasSemana = diasSemana.slice(0, -1);
8112
8113 $.each($('.ssp-card-registro-interesse__select'), function(k,item){
8114
8115 unidades.add(item.value);
8116 });
8117 }
8118
8119
8120 var periodos = '';
8121
8122 $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){
8123 if($(this).is(':checked')){
8124 periodos += $(this).val()+',';
8125 }
8126 });
8127
8128 var turmas = '';
8129
8130 $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k, v) {
8131 if ($(this).is(':checked')) {
8132 turmas += $(this).val() + ',';
8133 }
8134 });
8135
8136 if (periodos.length > 0) periodos = periodos.slice(0, -1);
8137 if (turmas.length > 0) turmas = turmas.slice(0, -1);
8138
8139 var usuarioNotificado = false;
8140
8141 loadingSubmitButton('#enviar-registro-interesse-btn');
8142
8143 unidades.forEach(function(codigoUnidade) {
8144 var data = {
8145 codigoFT: codigoFT,
8146 codigo: codigoUsr,
8147 diasSemana: diasSemana,
8148 periodos: periodos,
8149 turmas, turmas,
8150 codigoUnidade: codigoUnidade,
8151 interesseBolsa: 'N',
8152 isEmed: isEmed ? 'S' : 'N'
8153 };
8154
8155 const url = urlRegistroInteresse;
8156
8157 $.ajax({
8158 url: url,
8159 method: 'POST',
8160 data: JSON.stringify(data),
8161 headers: {
8162 'Accept': 'application/json',
8163 'Content-Type': 'application/json'
8164 },
8165 }).done(
8166 function(retornoData) {
8167
8168 var retornoData = JSON.stringify(retornoData);
8169
8170 if (retornoData.length > 0) {
8171
8172 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
8173
8174 var retorno = JSON.parse(retornoData);
8175
8176 if (retorno.status == 200 || retorno.status == 201) {
8177
8178 //Evita que o usuário recebe um email para cada unidade de interesse
8179 if(usuarioNotificado) return;
8180
8181 //Mensagem de sucesso registro interesse
8182 $('#modal-registro-interesse-sucesso').removeClass('d-none');
8183
8184 var prefixUrl = themeDisplay.getLayoutRelativeURL();
8185
8186 if (prefixUrl.indexOf('staging/') > 1)
8187 prefixUrl = prefixUrl.substring(0, prefixUrl.lastIndexOf('staging/') + 8);
8188 else
8189 prefixUrl = HOST;
8190
8191 $('#btn-voltar-home').attr('href', prefixUrl);
8192
8193 //Busca os dados do nome do usuário logado
8194 var username = getCookie('name').split(' ')[0];
8195
8196 //Prioridade para nomeSocial
8197 if (getCookie('nome_social') != null) {
8198 var nomeSocial = getCookie('nome_social').replace(/['"]+/g, '');
8199
8200 if (nomeSocial.length > 0) username = getCookie('nome_social');
8201
8202 }
8203
8204 username = username.replace(/['"]+/g, '');
8205
8206 var unidadesSel = getUnidadesSelecionadasRI();
8207
8208 //Disara um email para o usuário interessado
8209 var data = {
8210 emailInteressado: getCookie('email'),
8211 nomeInteressado: username,
8212 tituloCurso: $('.ssp-card-detalhe-curso__title').text(),
8213 unidades: unidadesSel.unidades,
8214 unidadesPrefix: unidadesSel.unidadesPrefix
8215 };
8216
8217 $.ajax({
8218 url: urlRegistroInteresseEmailInteressado,
8219 method: 'POST',
8220 data: JSON.stringify(data),
8221 headers: {
8222 'Accept': 'application/json',
8223 'Content-Type': 'application/json'
8224 },
8225 }).done(function(retornoData) {});
8226
8227 usuarioNotificado = true;
8228
8229 window.onclick = function(event) {
8230 $('[id="modal-registro-interesse-sucesso"]').each(function(index, _modal) {
8231 if (event.target == _modal){
8232 $('#modal-registro-interesse-sucesso').addClass('d-none');
8233 $('#modal-registro-interesse').addClass('d-none');
8234 $("body").removeClass("overflow-hidden");
8235 }
8236 });
8237 }
8238
8239 } else {
8240 //Mensagem de erro registro interesse
8241 $('#modal-registro-interesse-erro').removeClass('d-none');
8242 }
8243 } else {
8244 //Mensagem de erro registro interesse
8245 $('#modal-registro-interesse-erro').removeClass('d-none');
8246 }
8247 }).fail(function(){
8248 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
8249 $('#modal-registro-interesse-erro').removeClass('d-none');
8250 });
8251 });
8252 }
8253
8254 function verificaBtnEnviarRegistroInteresseAtivo(){
8255
8256 var diasSemanaSelecionado = false;
8257 var periodoSelecionado = false;
8258 var turmaSelecionada = false;
8259 var politicaPrivacidadeSelecionado = false;
8260
8261
8262 $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){
8263 if($(this).is(':checked'))
8264 periodoSelecionado = true;
8265 });
8266
8267 $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function(k,v){
8268 if($(this).is(':checked'))
8269 turmaSelecionada = true;
8270 });
8271
8272 if($('#check-politica-privacidade').is(':checked')) politicaPrivacidadeSelecionado = true;
8273
8274 var ativo = true
8275
8276 //Caso tenha algum dos selects de unidade sem uma opção válida selecionada
8277 if(!isAoVivo)
8278 ativo = ativo && !Array.from($('.ssp-card-registro-interesse__select.unidades')).filter(sel => !$(sel).val()).length
8279
8280 ativo = ativo && periodoSelecionado && politicaPrivacidadeSelecionado;
8281
8282 if(!isAoVivo && !isEmed){
8283
8284 $.each($('.ssp-week-day').not('#todosDias'), function(k, v){
8285 if($(this).hasClass('ssp-week-day-active'))
8286 diasSemanaSelecionado = true;
8287 });
8288 ativo = ativo && diasSemanaSelecionado;
8289
8290 }
8291
8292 if(isEmed)
8293 ativo = ativo && turmaSelecionada;
8294
8295 if(ativo)
8296 $('#enviar-registro-interesse-btn').attr("disabled", false);
8297 else
8298 $('#enviar-registro-interesse-btn').attr("disabled", true);
8299 }
8300
8301 function loadPlanoCurso(){
8302
8303 const urlGetPlanoCurso = urlPlanoCurso
8304
8305 .replace('\{codigoFT\}', $('[name="codigoFT"]').val())
8306 .replace('\{dataEfetiva\}', $('[name="dataEfetivaSTR"]').val());
8307
8308 $.ajax({
8309 url:urlGetPlanoCurso,
8310 method:'get',
8311 crossDomain: true,
8312 dataType: 'html',
8313 success: function( data ) {
8314
8315
8316 //Atualiza o link com o plano de curso do servi¿o (ja retorna o texto)
8317 $('#plano-curso').append('<br/>'+data);
8318 },
8319 error: function(data){
8320
8321 console.log('Não existe a URL do plano de curso');
8322
8323 }
8324
8325 });
8326 }
8327
8328 function checkCursoTrampolim(){
8329 return $('[name="codigoFT"]').val() == "24493";
8330 }
8331
8332 /*function verificaOfertaValida(oferta){
8333
8334 if(oferta['precoCheioOferta'] == '' || oferta['precoVendaOferta'] == '' || oferta['numeroMaxParcelasOferta'] == '' || oferta['precoVendaMaxParcelaOferta'] == '')
8335 return false;
8336
8337 var atual = new Date();
8338
8339 var dataOfertaPartes = oferta['dataInicio'].split('/');
8340
8341 var dataOferta = new Date(dataOfertaPartes[2], dataOfertaPartes[1] - 1, dataOfertaPartes[0]);
8342
8343 var dataLimiteMatriculaOfertaPartes = "";
8344 var dataLimiteMatriculaOferta = "";
8345
8346 if(oferta['dtLimiteMatricula'] != ""){
8347 dataLimiteMatriculaOfertaPartes = oferta['dtLimiteMatricula'].split('-');
8348 dataLimiteMatriculaOferta = new Date(dataLimiteMatriculaOfertaPartes[0], dataLimiteMatriculaOfertaPartes[1] - 1, dataLimiteMatriculaOfertaPartes[2] ,atual.getHours(),atual.getMinutes(),atual.getSeconds(),atual.getMilliseconds());
8349
8350 }
8351
8352
8353 //Só deve aparecer ofertas D-1 . Se ela iniciou, aparece se o campo dtLimiteMatr estiver preenchido e com data até o dia de hoje
8354 if(dataOferta <= atual)
8355 if(dataLimiteMatriculaOferta == "" || (dataLimiteMatriculaOferta != "" && atual.getTime() > dataLimiteMatriculaOferta.getTime()))
8356 return false;
8357
8358 return true;
8359 }*/
8360
8361
8362 function loadServerDate(){
8363
8364 $.ajax({
8365 url:urlGetServerT,
8366 method:'get',
8367 dataType: 'json',
8368 cache: 'false',
8369 headers: {
8370 'Cache-Control': 'no-store, no-cache, max-age=0',
8371 'Expires': '0',
8372 'Pragma': 'no-cache'
8373 },
8374 success: function( data ) {
8375 todayG = new Date(data.year,(data.month - 1),data.day,(data.hour),data.minutes,data.seconds);
8376 startTimer();
8377 }
8378 });
8379
8380 }
8381
8382 function handleVisibilityChange() {
8383
8384 if (!document[hidden] ){
8385 restartTimer();
8386 }
8387
8388 }
8389
8390 function restartTimer(){
8391
8392 if(restartTimeout == null){
8393 loadServerDate();
8394 restartTimeout = setTimeout(function(){
8395 restartTimeout = null;
8396 }, 5000);
8397 }
8398
8399 }
8400
8401 function startTimer(){
8402
8403 var mSeconds = todayG.getTime();
8404 if(interval01 != null){
8405 clearInterval(interval01);
8406 }
8407 interval01 = setInterval(function(){
8408 todayG.setTime(todayG.getTime() + 1000);
8409 }, 1000);
8410
8411 if(interval15 != null){
8412 clearInterval(interval15);
8413 }
8414 interval15 = setInterval(function(){
8415 mSeconds = mSeconds + 15000;
8416 todayG.setTime(mSeconds);
8417 }, 15000);
8418
8419 }
8420
8421 function checkIsAoVivo(){
8422 isAoVivo = $("input[name='formato']").attr("data-formato") == nomeFormatoAoVivoDxp;
8423 }
8424
8425
8426 //Ao clicar na setinha next do slider, busca dinamicamente uma proxima oferta
8427 function buscaProximaOferta(){
8428 //Zera variável que controla existência de ofertas com bolsa
8429 //ofertasComBolsa = false;
8430
8431 //Verificamos se a ultima oferta já foi exibida, para evitar de fazer novas buscas
8432 if(carregouUltimaOferta)
8433 return;
8434
8435 //Fazemos o cálculo do que está sendo exibido, para verificar se existe apenas um card 'escondido'. Caso tenha apenas um, a busca deve ser executada, caso contrário não.
8436 var totalOfertasSlick = $('#turmas-container .slick-area__item').length;
8437 //Pegamos o índice da oferta do meio (central)
8438 var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));
8439
8440 var totalOfertasADireita = totalOfertasSlick - currentSliderIndex;
8441
8442 //Se o total de ofertas à direita for maior a 2 não precisa realizar a busca
8443 if(totalOfertasADireita > 2)
8444 return;
8445
8446 startOfertaParam = endOfertaParam;
8447 endOfertaParam += 16;
8448
8449 const codigoFT = $('[name="codigoFT"]').val();
8450 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
8451
8452 var unidadeCategoryId = '';
8453 var unidadeCodigoSelect = '';
8454
8455 if(isAoVivo){
8456
8457 $.each(objsTela.unidades, function(k,unidade){
8458 unidadeCategoryId += unidade['categoryId']+',';
8459 });
8460
8461 //tirando ultima virgula
8462 unidadeCategoryId = unidadeCategoryId.substring(0,unidadeCategoryId.length - 1);
8463
8464 }else{
8465 var splitted = $('#unidades-ofertas').val().split("@");
8466 unidadeCategoryId = splitted[0];
8467 unidadeCodigoSelect = splitted[1];
8468 }
8469
8470 var params = new URLSearchParams();
8471 params.set('codigoFTOferta',codigoFT)
8472 params.set('dataEfetivaOferta',dataEfetivaOferta)
8473 params.set('categoryIds',unidadeCategoryId)
8474 params.set('start',startOfertaParam)
8475 params.set('end',endOfertaParam)
8476 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
8477 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
8478 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
8479
8480 if($('#chkBolsa').prop('checked')){
8481 params.set('considerarDataBolsaFutura', true)
8482 }
8483
8484 const url = urlSearchOferta + '?' + params.toString()
8485
8486 $.ajax({
8487 url:url,
8488 method:'get',
8489 dataType:'json'
8490 }).done(
8491 function(data){
8492
8493 if(data.length > 0){
8494 var indiceOferta = startOfertaParam;
8495
8496 for (var index = 0; index < data.length; index++) {
8497
8498 var ofertaJSON = data[index];
8499 var oferta = getOfertaObjectFromJson(ofertaJSON,index);
8500
8501 //Verificamos se a oferta buscada já existe na tela (que ocorre quando chega na última oferta)
8502 if($('.codigoOferta_'+oferta.codigoOferta).length > 0){
8503 console.log('Ja tem a oferta '+oferta.codigoOferta);
8504 carregouUltimaOferta = true;
8505 break;
8506 }
8507
8508 //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo
8509 ofertaUnidadeMap.set(oferta['codigoOferta'],mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));
8510
8511 ofertasMap.set(oferta.codigoOferta, oferta);
8512
8513 if(isAoVivo)
8514 objsTela.ofertasAoVivoTodasUnidades.push(oferta);
8515
8516 //O indice é igual ao ultimo elemento buscado - 1
8517 var i = indiceOferta;
8518 oferta['indice'] = i;
8519
8520 if(isAoVivo)
8521 codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta);
8522 else codigoUnidade = unidadeCodigoSelect;
8523
8524
8525 montaHTMLOferta(oferta, i, codigoUnidade, true);
8526 montaHTMLModalFormaPgto(oferta, i, codigoUnidade);
8527
8528 montaHTMLModalLocalRealizacao(oferta, i);
8529 montaHTMLModalAntesCompra(oferta, i, codigoUnidade);
8530 verificaBotaoBolsaSS(oferta);
8531 verificaCursoAprendizagem(i, oferta.codigoOferta);
8532 verificaCursoTrampolim(i);
8533
8534 associaEventoBtnFormaPagamento(i);
8535 associaEventoBtnComprar(i);
8536 associaEventoBtnComprarDentroFormaPgto(i);
8537 associaEventoBtnLocalRealizacao(i);
8538 associaEventosFecharModal(i);
8539
8540 if($('[name="tipoCurso"]').val() == 'extensao'){
8541 associaEventoBtnConheca(i);
8542 associaEventoBtnComprarConhecaDescontoOk(i);
8543 associaEventoBtnComprarConhecaDescontoNot(i);
8544 associaEventoBtnAlunoNao(i);
8545 associaEventoBtnAlunoSim(i);
8546
8547 }
8548
8549 indiceOferta++;
8550 }
8551
8552 controlaPaginaBolsa();
8553 }
8554 }
8555 );
8556
8557 }
8558
8559 function setUrlParam(key, value) {
8560 const url = new URL(window.location.href)
8561
8562 if(value)
8563 url.searchParams.set(key, value);
8564 else
8565 url.searchParams.delete(key);
8566
8567 window.history.pushState({}, '', url.toString())
8568 }
8569
8570 function selectFilter(paramkey, el) {
8571 setUrlParam(paramkey, el.prop("checked"))
8572 const currentUnidadeFriendlyURLSelected = $('#unidades-ofertas').find('option').filter(':selected').attr('data-unidade-friendly-url')
8573 loadUnidades(!isAoVivo, $('[data-unidade-friendly-url="' + currentUnidadeFriendlyURLSelected + '"]').val())
8574
8575 if($('#chkInscricao').prop("checked") || $('#chkBolsa').prop("checked")) $('#msgFiltroAplicado').show()
8576 else $('#msgFiltroAplicado').hide()
8577 }
8578
8579 function defineCurrentUrl(ev) {
8580 const currentUnidadeFriendlyURLSelected = $(ev.target).find('option').filter(':selected').attr('data-unidade-friendly-url')
8581
8582 const hasPathWeb = window.location.pathname.includes('/web')
8583 const hasPathGuest = window.location.pathname.includes('/guest')
8584
8585 let currentPath = window.location.pathname
8586 currentPath = hasPathWeb ? currentPath.substring(4) : currentPath
8587 currentPath = hasPathGuest ? currentPath.substring(6) : currentPath
8588
8589 objsTela.unidadesRegistroInteresse.forEach(unidade => currentPath = currentPath.replace('/' + unidade.friendlyURL, ''))
8590
8591 currentPath = (currentUnidadeFriendlyURLSelected ? '/' + currentUnidadeFriendlyURLSelected : '') + currentPath
8592 currentPath = hasPathGuest ? '/guest' + currentPath : currentPath
8593 currentPath = hasPathWeb ? '/web' + currentPath : currentPath
8594
8595 if(keepURL())
8596 window.history.replaceState(window.history.state, '', currentPath + window.location.search)
8597 }
8598
8599 let isKeepURL = true
8600 /** Verifica se é para manter a URL atual. Isso deve acontecer somente ao iniciar a página #9674 */
8601 function keepURL() {
8602 const aux = isKeepURL
8603 isKeepURL = false
8604 return !aux
8605 }
8606
8607 loadServerDate();
8608 $(document).ready(function(){
8609
8610 if("${normalizedCategoryName}" == "graduacao" || "${normalizedCategoryName}" == "pos-graduacao"){
8611 document.location.href = '/erro-404'
8612 }
8613
8614 ehCursoTrampolim = checkCursoTrampolim();
8615 checkIsAoVivo();
8616 loadPlanoCurso();
8617 loadCursosVocePodeGostar();
8618 loadPoliticaPrivacidade();
8619
8620 if(!isAoVivo) {
8621 $('#unidades-ofertas').change(ev => {
8622 mudarUnidade(ev)
8623 defineCurrentUrl(ev)
8624 });
8625 }
8626
8627 const urlParams = new URLSearchParams(window.location.search)
8628 $('#chkInscricao').prop("checked", urlParams.get('inscricao') == 'true')
8629 $('#chkInscricao').change(ev => selectFilter('inscricao', $('#chkInscricao')) )
8630
8631 if($('#chkBolsa').length) {
8632 $('#chkBolsa').prop("checked", urlParams.get('bolsa') == 'true')
8633 $('#chkBolsa').change(ev => selectFilter('bolsa', $('#chkBolsa')) )
8634 loadUnidades(!isAoVivo);
8635 } else {
8636 selectFilter('bolsa', $('#chkBolsa'))
8637 }
8638
8639 //Função para Montar breadcrumb Mobile
8640
8641 function breadcrumbMobile(){
8642
8643 const linkEl = $('.ssp-card-detalhe-curso__secunday-info-back-link');
8644
8645 if ( $.trim(linkEl.html()) === 'Técnico'){
8646
8647 linkEl.attr("href", "/cursos-tecnicos");
8648
8649 } else if ( $.trim(linkEl.html()) === 'Livre'){
8650
8651 if(isAoVivo){
8652 linkEl.html('Senac Online<i class="fas fa-signal-stream icon-ao-vivo" aria-hidden="true"></i>ao vivo')
8653 linkEl.attr("href", "/cursos-livres-senac-online-ao-vivo");
8654 }else{
8655 linkEl.attr("href", "/cursos-livres");
8656 }
8657 } else if ( $.trim(linkEl.html()) === 'Aprendizagem'){
8658
8659 linkEl.attr("href", "/jovem-aprendiz");
8660
8661 }else if ( $.trim(linkEl.html()) === 'Extensão Universitária'){
8662
8663 linkEl.attr("href", "/extensao-universitaria");
8664
8665 }else if ( $.trim(linkEl.html()) === 'Ensino Médio Técnico'){
8666
8667 linkEl.attr("href", "/ensino-medio-tecnico");
8668 }
8669
8670 }
8671
8672 breadcrumbMobile()
8673
8674 //Esconde elementos quando o curso é aprendizagem
8675 if($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem){
8676 $('.ssp-section-novas-turmas').remove();
8677 $("div[class^='botoes-oferta-container_']").remove();
8678 }
8679
8680 //retira os itens de dentro do container
8681 $('.bg-').css('background-color','#e4e4e4')
8682 $('.container.py-3').removeClass('container py-3')
8683 //ajuste para versao 7.4
8684 $('.lfr-layout-structure-item-container.container-fluid.container-fluid-max-xl').removeClass()
8685
8686
8687 //Fecha modal registro de interesse
8688
8689 $('#btn-close-Modal-registro-interesse').click(function(){
8690
8691 $('#modal-registro-interesse').addClass('d-none')
8692 $("body").removeClass("overflow-hidden")
8693
8694 })
8695
8696 $( "#modal-registro-interesse" ).click( function(event) {
8697
8698 if(event.target.id==$('#modal-registro-interesse')[0].id){
8699 $(this).addClass('d-none')
8700 }
8701
8702 });
8703
8704
8705 //Aviso sobre interesse em turmas
8706 $('.ssp-card-registro-interesse').on('click', '#enviar-registro-interesse-btn', enviarRegistroInteresse);
8707 if(!isEmed){
8708 $('.ssp-aviso-novas-turmas__content').on('click', '#btn-aviso-novas-turmas', avisoNovasTurmas);
8709 $('.ssp-card-registro-interesse').on('click', '#todosDias', registroSelecionaTodosDias);
8710 } else {
8711 $('.ssp-emed__card-slider-body').on('click', '#btnOptin', avisoNovasTurmas)
8712 }
8713 $('#div-campo-todos').on('change', 'input[type=checkbox]', registroSelecionaTodosPeriodos);
8714
8715 $('#btnLogin').click(function(){
8716
8717 login()
8718
8719 });
8720
8721 $('#btn-close-loginModal').click(function(){
8722 $('#modal-login').addClass('d-none')
8723 });
8724
8725 $('.ssp-week-day').not('#todosDias').click(function(){
8726
8727 $(this).toggleClass('ssp-week-day-active');
8728 verificaBtnEnviarRegistroInteresseAtivo();
8729
8730 });
8731
8732 $('#add-unidade-regsitro-interesse').click(function(e){
8733 var element = $('.ssp-card-registro-interesse__select.unidades').first().clone();
8734 element.empty();
8735 element.append('<option value="" disabled selected>Selecione uma unidade</option>')
8736 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
8737
8738 if(!unidade['selecionado']){
8739 element.append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>');
8740 }
8741
8742 });
8743 element.change(changeSelectUnidades)
8744
8745
8746 element.css('margin-top', '10px');
8747
8748 if(element.find("option").length > 1 && $('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length){
8749 element.attr("id", "select_" + cntSelectUnidades++)
8750 $('#select-unidades-registro-interesse').append(element);
8751 }
8752
8753 if($('.ssp-card-registro-interesse__select.unidades').length == objsTela.unidadesRegistroInteresse.length){
8754 $('#add-unidade-regsitro-interesse').addClass("d-none")
8755 }
8756
8757 verificaBtnEnviarRegistroInteresseAtivo();
8758 });
8759
8760 $('#remove-unidade-regsitro-interesse').click(function(e){
8761
8762 if($('.ssp-card-registro-interesse__select').length > 1){
8763
8764 var element = $('.ssp-card-registro-interesse__select').last();
8765
8766 var valueSelecionado = element.val();
8767
8768 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
8769
8770 if(unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado){
8771 unidade['selecionado'] = false;
8772 unidade['selectSelecionado'] = "";
8773 }
8774
8775 });
8776 element.val("");
8777 cntSelectUnidades--;
8778 element.change()
8779
8780 element.remove();
8781 }
8782
8783 if($('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length){
8784 $('#add-unidade-regsitro-interesse').removeClass("d-none")
8785 }
8786
8787 verificaBtnEnviarRegistroInteresseAtivo();
8788 })
8789
8790 $('.ssp-card-registro-interesse__check-item').on('change', 'input[type=checkbox]', function(){
8791 verificaBtnEnviarRegistroInteresseAtivo();
8792 });
8793
8794 //Contador em ofertas de bolsas proximas
8795 var cancel = setInterval(atualizaTempoAberturasBolsas, 1000);
8796
8797 // Manipua o breadcrumb para as regras do Senac
8798
8799 if($('ol.breadcrumb').find('li:first').text().trim() == "Cursos Pai")
8800 $('ol.breadcrumb').find('li:first').remove();
8801
8802 var li = $('ol.breadcrumb').find('li:first');
8803
8804 if(li.text().trim() == 'Cursos'){
8805
8806 var primeiro = li.clone();
8807 primeiro.html(htmlBreadcrumb('/', 'Cursos', 'Home'));
8808 li.parent().prepend(primeiro);
8809
8810 var tipoCurso = $('.ssp-header-curso__tag-formato').text().trim();
8811 var tipoBreadcrumb = '';
8812
8813 const isPresencialEad = (tipoCurso.toLowerCase().includes("presencial + ead"))
8814
8815 if(tipoCurso.includes("Cursos Livres")){
8816 if(isPresencialEad) {
8817 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#cursos-livres', tipoCurso);
8818 } else {
8819 tipoBreadcrumb = htmlBreadcrumb(
8820 isAoVivo ? '/cursos-livres-senac-online-ao-vivo' : '/cursos-livres',
8821 isAoVivo ? nomeFormatoAoVivoDxp : tipoCurso);
8822 }
8823 }else if(tipoCurso.includes("Extensão")){
8824 if(isPresencialEad) {
8825 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#extensao-universitaria', tipoCurso);
8826 } else {
8827 tipoBreadcrumb = htmlBreadcrumb('/extensao-universitaria', tipoCurso);
8828 }
8829 }else if(tipoCurso.includes("Ensino Médio Técnico")){
8830 if(isPresencialEad) {
8831 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#ensino-medio-tecnico', tipoCurso);
8832 } else {
8833 tipoBreadcrumb = htmlBreadcrumb('/ensino-medio-tecnico', tipoCurso);
8834 }
8835 }else if(tipoCurso.includes("Jovem Aprendiz")){
8836 if(isPresencialEad) {
8837 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#jovem-aprendiz', tipoCurso);
8838 } else {
8839 tipoBreadcrumb = htmlBreadcrumb('/jovem-aprendiz', tipoCurso);
8840 }
8841 }else{
8842 if(isPresencialEad) {
8843 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#cursos-tecnicos', tipoCurso);
8844 } else {
8845 tipoBreadcrumb = htmlBreadcrumb('/cursos-tecnicos', tipoCurso);
8846 }
8847 }
8848
8849 li.html(tipoBreadcrumb);
8850
8851 if($('ol.breadcrumb').find('li').length == 4) $('ol.breadcrumb').find('li:last').remove();
8852
8853 }
8854
8855 $('#turmas-container').on('click', 'a.slick-next', function(e){
8856
8857 e.preventDefault();
8858 buscaProximaOferta();
8859
8860 });
8861
8862 $('#turmas-container').on('click', 'button.slick-dots', function(){
8863
8864
8865
8866 });
8867
8868 $(".next-mobile").on("click",function(e){
8869 e.preventDefault();
8870
8871 acoesMobileSliderOfertas("left");
8872 });
8873
8874 $(".prev-mobile").on("click",function(e){
8875 e.preventDefault();
8876
8877 acoesMobileSliderOfertas("right");
8878 });
8879
8880 //ação de drag do card de ofertas no mobile
8881 $('.oferta-slick-area').on('swipe', function(event, slick, direction){
8882 acoesMobileSliderOfertas(direction);
8883 });
8884
8885 loadAlternadores()
8886 let modalFormAprendizagem = document.querySelector('#modal-form');
8887 if(modalFormAprendizagem){
8888 // Create dinamic close buttom form
8889 let btnCloseModalForm = document.querySelector('[data-modal="close-form-modal"]');
8890 btnCloseModalForm.addEventListener('click',closeModalFormAprendizagem);
8891
8892 }
8893
8894 $(".oferta-slick-area").on("click", ".btnModalAprendizagem",openModalFormAprendizagem);
8895
8896 });
8897
8898 function htmlBreadcrumb(link, title, display){
8899
8900 return '<a class="breadcrumb-link" href="'+link+'" title="'+title+'"><span class="breadcrumb-text-truncate">'+(display || title)+'</span></a>';
8901
8902 }
8903
8904 function acoesMobileSliderOfertas(direcao){
8905
8906 if(direcao == "right"){
8907 $("a.slick-prev").click();
8908
8909 if($('.slick-current').attr('data-slick-index') == "0")
8910 $('.prev-mobile').addClass('nextPrevOpacity');
8911
8912 if($(".next-mobile").hasClass('nextPrevOpacity'))
8913 $('.next-mobile').removeClass('nextPrevOpacity');
8914 }
8915
8916
8917 if(direcao == "left"){
8918 $("a.slick-next").click();
8919
8920 if($(".prev-mobile").hasClass('nextPrevOpacity'))
8921 $('.prev-mobile').removeClass('nextPrevOpacity');
8922
8923 if(carregouUltimaOferta){
8924 var totalCardOfertas = $('#turmas-container .slick-area__item').length;
8925 var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));
8926
8927 //o card do meio é o último
8928 if(totalCardOfertas == (currentSliderIndex + 1))
8929 $('.next-mobile').addClass('nextPrevOpacity');
8930 }
8931 }
8932 }
8933
8934 //habilitar/desabilitar registro de interesse
8935 function habilitarRegistroInteresse(habilitar){
8936 var sectionRI = $('#section-registro-interesse')
8937
8938 if(isEmed) {
8939 sectionRI.hide()
8940 return;
8941 }
8942
8943 //Redmine #9309 - sempre irá mostrar
8944 habilitar = true
8945
8946 if(habilitar) sectionRI.show()
8947 else sectionRI.hide()
8948 }
8949
8950 function abrirModalRegistroInteresse(codUnidadeSelect){
8951 $('#modal-registro-interesse').removeClass('d-none');
8952 $("body").addClass("overflow-hidden")
8953 if(!isEmed){
8954 $('.ssp-card-registro-interesse__nome-curso').text($('.ssp-card-detalhe-curso__title').text());
8955 } else {
8956 $(".transferencia-emed-link").find('a').attr("href", "/ensino-medio-tecnico#onde-estudar")
8957 $('.ssp-card-registro-interesse__title-modal').text($('.ssp-card-detalhe-curso__title').text());
8958 }
8959
8960 $('.ssp-card-registro-interesse__select:not(#select_0)').remove();
8961 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
8962 if(unidade['codigoUnidade'] == codUnidadeSelect){
8963 unidade['selecionado'] = true;
8964 unidade['selectSelecionado'] = 'select_0';
8965 } else {
8966 unidade['selecionado'] = false;
8967 unidade['selectSelecionado'] = "";
8968 }
8969
8970 });
8971 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
8972 return ordenar(a, b, 'nome');
8973 });
8974
8975 $('#select_0').empty();
8976 $('#select_0').append('<option value="" disabled>Selecione uma unidade</option>')
8977 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
8978
8979 $('#select_0').append('<option value="'+unidade['codigoUnidade']+'" >'+unidade['nome']+'</option>');
8980
8981 });
8982 $('#select_0').val(codUnidadeSelect);
8983
8984 if(isAoVivo){
8985 $('#unidades-registro-interesse, #dias-registro-interesse').addClass('d-none');
8986 }
8987 if(objsTela.unidadesRegistroInteresse.length > 1) {
8988 $('#add-unidade-regsitro-interesse').removeClass("d-none")
8989 $('#add-unidade-regsitro-interesse').show()
8990 $('#remove-unidade-regsitro-interesse').show()
8991 } else {
8992 $('#add-unidade-regsitro-interesse').hide()
8993 $('#remove-unidade-regsitro-interesse').hide()
8994 }
8995 }
8996
8997 $('.ssp-card-registro-interesse__select.unidades').on('change', changeSelectUnidades)
8998
8999 function changeSelectUnidades() {
9000 var codUnidadeSelecionada = $(this).val();
9001 var idSelectSelecionado = $(this).attr('id')
9002 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
9003 if(unidade['codigoUnidade'] == codUnidadeSelecionada){
9004 unidade['selecionado'] = true;
9005 unidade['selectSelecionado'] = idSelectSelecionado;
9006 } else if(unidade['selectSelecionado'] == idSelectSelecionado && unidade['selecionado']){
9007 unidade['selecionado'] = false;
9008 unidade['selectSelecionado'] = "";
9009 }
9010
9011 });
9012
9013 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
9014 return ordenar(a, b, 'nome');
9015 });
9016
9017 $('.ssp-card-registro-interesse__select.unidades:not(#'+idSelectSelecionado+')').each(function() {
9018 var valueSelecionado = $(this).val();
9019 var idActualSelect = $(this).attr('id');
9020 $(this).empty();
9021 $(this).append('<option value="" disabled>Selecione uma unidade</option>')
9022 $.each(objsTela.unidadesRegistroInteresse, function(k,unidade){
9023
9024 if(unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado){
9025 $("#"+idActualSelect).append('<option value="'+unidade['codigoUnidade']+'" >'+unidade['nome']+'</option>');
9026 }else if(!unidade['selecionado']){
9027 $("#"+idActualSelect).append('<option value="'+unidade['codigoUnidade']+'">'+unidade['nome']+'</option>');
9028 }
9029
9030 });
9031 $(this).val(valueSelecionado)
9032 });
9033
9034 verificaBtnEnviarRegistroInteresseAtivo();
9035 }
9036
9037
9038 function ordenar(objA, objB, nomeAtributo){
9039 let a = (nomeAtributo) ? objA[nomeAtributo] : objA;
9040 let b = (nomeAtributo) ? objB[nomeAtributo] : objB;
9041
9042 return a.toString().localeCompare(b.toString());
9043 }
9044
9045 function paramOrdem(xml){
9046 if(isEmed){
9047 var ordemPeriodo = ['MA', 'TA', 'NO'];
9048 return $.inArray(xml.find('[name="periodoDiaOferta"]').text().trim(), ordemPeriodo);
9049 }else{
9050 return xml.find('[name="dataInicioOferta"]').text();
9051 }
9052 }
9053
9054 function getEtapaSelecionadaEmed(){
9055 var btnEtapa = $('.ssp-ofertas-emed__filtro-content .btn--filtro-ativo');
9056 if(!btnEtapa) return '';
9057 return btnEtapa.val();
9058 }
9059
9060 function filtraOfertasEtapa(etapa, ofertas){
9061 if(!etapa) return [];
9062 var ofertasEtapa = [];
9063 var turmas = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];
9064 var periodos = {['MA'] : 'Manhã', ['TA'] : 'Tarde', ['NO'] : 'Noite'};
9065 var ultimoPeriodo = null, indexPeriodo;
9066 ofertas = ofertas.sort(function(a, b){
9067 return ordenar(a, b, 'periodoDiaOferta');
9068 });
9069
9070 $.each(ofertas, async (index, oferta)=> {
9071 if(oferta['etapa'] == etapa){
9072 if(oferta['periodoDiaOferta'] != ultimoPeriodo) indexPeriodo = 0;
9073 ultimoPeriodo = oferta['periodoDiaOferta'];
9074 oferta['titulo'] = 'Turma ' + turmas[indexPeriodo++] + ' - ' + (periodos[ultimoPeriodo] || '');
9075 ofertasEtapa.push(oferta);
9076 }
9077 });
9078
9079 return ofertasEtapa;
9080 }
9081
9082 function formatarDataEmed(data, etapa, isDataFim){
9083
9084 try{
9085
9086 var splitdata = data.split('/');
9087 var meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
9088 var mes = meses[parseInt(splitdata[1])-1];
9089
9090 var ano = splitdata[2];
9091
9092 if(isDataFim){
9093 ano = parseInt(splitdata[2]);
9094 }
9095
9096 return mes + '/' + ano;
9097 }catch(err){
9098 return data;
9099 }
9100
9101 }
9102
9103 //EMED Mobile
9104 function sliderOfertasEmed(){
9105
9106 var tamScreen = $(window).width();
9107 if(tamScreen < 1024){
9108 $('.ssp-slick-ofertas-emed').slick({
9109 slidesToShow: 1,
9110 slidesToScroll: 1,
9111 dots: false,
9112 infinite: false,
9113 adaptiveHeight: true,
9114 prevArrow:'<button class="btn slick-prev" type="button"><i class="fal fa-chevron-left"></i><span class="sr-only">Anterior</span></button>',
9115 nextArrow:'<button class="btn slick-next" type="button"><i class="fal fa-chevron-right"></i><span class="sr-only">Próximo</span></button>',
9116 responsive: [
9117
9118 {
9119 breakpoint: 1200,
9120 settings: {
9121 slidesToShow: 1,
9122 slidesToScroll: 1,
9123 prevArrow: '<button class="btn slick-prev ssp-slider-control-mobile__item-prev"><i class="fal fa-chevron-left mr-1"></i><span>Anterior</span></button>',
9124 nextArrow: '<button class="btn slick-next ssp-slider-control-mobile__item-next"><span>Próximo</span><i class="fal fa-chevron-right ml-1"></i></button>',
9125
9126 }
9127 },
9128 {
9129 breakpoint: 768,
9130 settings: {
9131 slidesToShow: 1,
9132 slidesToScroll: 1,
9133 prevArrow: '<button class="btn slick-prev ssp-slider-control-mobile__item-prev"><i class="fal fa-chevron-left mr-1"></i><span>Anterior</span></button>',
9134 nextArrow: '<button class="btn slick-next ssp-slider-control-mobile__item-next"><span>Próximo</span><i class="fal fa-chevron-right ml-1"></i></button>',
9135 }
9136 }
9137
9138 ]
9139
9140 });
9141
9142 }
9143
9144 }
9145
9146function addItemBackpack(codOferta, originElemSelector, codUnidade, dataEfetiva){
9147
9148 let backpackPostRequest = {};
9149 backpackPostRequest.codOferta = codOferta;
9150 backpackPostRequest.codUnidade = codUnidade;
9151 backpackPostRequest.dt_efetiva = dataEfetiva;
9152
9153
9154 mochila.requestAccess(function(backpackPostRequest){
9155
9156 let urlMochila = '/o/senac-backpack-services/backpack';
9157
9158 if(getCookie("codMochila") != null){
9159 backpackPostRequest.codMochila = getCookie("codMochila");
9160 urlMochila = '/o/senac-backpack-services/updateBackpack';
9161 }
9162 $.ajax({
9163 type: 'POST',
9164 url: urlMochila,
9165 headers: {
9166 "Content-Type":"application/json"
9167 },
9168 beforeSend: function(xhr){
9169 xhr.setRequestHeader("Authorization", "Bearer " + getCookie("tokenMochila"));
9170 loadingSubmitButton(originElemSelector);
9171 $(originElemSelector + ' .loading-icon-button').css('height', 'unset');
9172 if($(window).width() < 1024){
9173 $(originElemSelector + ' .loading-icon-button span').css('margin-left', '10%');
9174 }
9175 },
9176 data : JSON.stringify(backpackPostRequest)
9177 }).done(function(data) {
9178
9179 let domain = '';
9180 if(getAmbiente() == 'hom' || getAmbiente() == 'prod')
9181 domain = '.sp.senac.br';
9182
9183 writeCookie(
9184 'codMochila',
9185 (getCookie("codMochila") == null) ? data.backpackCode : JSON.parse(data).backpackCode,
9186 24,
9187 domain
9188 );
9189 addItemSuccessMochila();
9190
9191 }).fail(function(xhr, status, error) {
9192
9193 $('#modal-backpack-error').removeClass('d-none');
9194
9195 }).always(function(){
9196
9197 cleanLoadingSubmitButton(
9198 originElemSelector,
9199 originElemSelector.indexOf('backpack') > 0 ? 'OK, desejo comprar' : 'COMPRAR'
9200 );
9201 $('[id^="modalAntesCompra_"]').each(function(index, modal) {
9202 modal.style.display = "none";
9203 });
9204
9205 });
9206
9207 }, backpackPostRequest);
9208
9209}
9210
9211function componentBuyConfirmation(codigoUnidade, oferta, dataEfetiva){
9212
9213 var comp = null;
9214
9215 if((oferta.destinoCompra !== null) && oferta.destinoCompra == "2" && !excecaoCursoGratuito(oferta)){
9216
9217 comp = $("<button>")
9218 .addClass("btn btn-lg btn-success w-100 mt-3 btn-backpack")
9219 .attr("offerCode",oferta.codigoOferta)
9220 .attr("unitCode",codigoUnidade)
9221 .attr("effectiveDate",dataEfetiva)
9222 .text("OK, desejo comprar");
9223
9224 }else {
9225 var textoBotaoConfirmacao = "OK, desejo comprar";
9226
9227 if(excecaoCursoGratuito(oferta))
9228 textoBotaoConfirmacao = "Ok, desejo fazer a matrícula";
9229
9230 comp = $("<a>")
9231 .addClass("btn btn-lg btn-success w-100 mt-3")
9232 .text(textoBotaoConfirmacao)
9233 .attr("href", linkBotaoCompra.replace('\{codigoUnidade\}', codigoUnidade).replace('\{codigoOferta\}', oferta.codigoOferta))
9234 .attr("target","_blank");
9235 }
9236
9237 comp.attr('id', 'btnCompraLocal_' + oferta.indice);
9238
9239 return comp[0].outerHTML;
9240
9241}
9242
9243function getUnidadesSelecionadasRI(){
9244 var unidadesRI = [];
9245
9246 try{
9247
9248 $('#select-unidades-registro-interesse').find('select').each((i,select) =>{
9249 var unidadeSel = select.selectedOptions[0].innerText;
9250 if(!unidadesRI.includes(unidadeSel)) unidadesRI.push(unidadeSel);
9251 });
9252
9253 var unidadesExt = unidadesRI.join(', ');
9254
9255 const lastIndex = unidadesExt.lastIndexOf(',');
9256
9257 if(lastIndex > 0) unidadesExt = unidadesExt.substring(0, lastIndex) + ' ou ' + unidadesExt.substring(lastIndex + 1);
9258
9259 return {
9260 'unidadesPrefix' : (unidadesRI.length > 1 ? ', nas unidades ' : (unidadesRI.length == 1 ? ', na unidade ' : '')),
9261 'unidades' : unidadesExt
9262 };
9263
9264 }catch(err){
9265
9266 return {
9267 'unidadesPrefix' : '',
9268 'unidades' : ''
9269 };
9270
9271 }
9272
9273 }
9274
9275
9276
9277
9278function addItemSuccessMochila(){
9279
9280 mochila.check();
9281 $('#modal-backpack-success__nome-curso').html($('.ssp-card-detalhe-curso__title').text());
9282 $('#modal-backpack-success').removeClass('d-none');
9283
9284}
9285
9286$(document).on('click', '.btn-backpack', function(e){
9287
9288 addItemBackpack(event.target.getAttribute("offerCode"), '.btn-backpack',event.target.getAttribute("unitCode"),event.target.getAttribute("effectiveDate"));
9289
9290});
9291
9292$('#btn-voltar-modal-backpack-error').click(function () {
9293 $('#modal-backpack-error').addClass('d-none');
9294});
9295
9296$('#btn-voltar-modal-backpack-error').click(function () {
9297 $('#modal-backpack-error').addClass('d-none');
9298});
9299
9300$('.btn-mochila-continuar-site-success, .modal-btn-close').click(function () {
9301 $('#modal-backpack-success').addClass('d-none');
9302});
9303
9304$('.btn-mochila-finalizar-compra-success').click(function () {
9305 // Montar object push - google tag manager - 6
9306 sendEventEcommerce("begin_checkout", ofertaSelecionada);
9307
9308 mochila.verificaLogin();
9309 $('#modal-backpack-success').addClass('d-none');
9310 $('[id^="myModal_"]').each((i,modal)=>modal.style.display = "none");
9311});
9312
9313 function closeModalFormAprendizagem(){
9314 let modal = document.querySelector('#modal-form');
9315 modal.close();
9316 }
9317
9318
9319 function openModalFormAprendizagem(ev){
9320
9321 const $container = document.getElementById('modal-form');
9322 if(!$container || !$container.nodeName == 'DIALOG') return;
9323
9324 const ofertaSel = ofertasMap.get(ev.target.getAttribute('data-codigo-oferta'));
9325
9326 function getUnidadeSelecionada() {
9327 const categoryUnidade = $('#unidades-ofertas').val().split('@')[0];
9328 return objsTela.unidades.find(u => u.categoryId == categoryUnidade) || {};
9329 }
9330
9331 async function request(url, { method = 'GET', headers = {}, body, beforeSend } = {}) {
9332 const init = { method, headers, body, credentials: 'same-origin' };
9333 const resp = await fetch(url, init);
9334 if (!resp.ok) throw new Error('Erro status ' + resp.status);
9335 return resp.text();
9336 }
9337
9338 async function loadHTMLForm () {
9339
9340 if($container.querySelectorAll('form').length) {
9341 FormControl.changeCursoInfo(ofertaSel, getUnidadeSelecionada());
9342 return;
9343 }
9344
9345 const url = Liferay.ThemeDisplay.getPortalURL().concat('/documents/d/global/html-formulario-aprendizagem?cb=' + Date.now());
9346
9347 const formHTML = await request(url);
9348
9349 $container.innerHTML += formHTML;
9350
9351 let script = document.createElement('script');
9352 script.src = '/documents/d/global/js-aprendizagem-formulario';
9353 script.async = true;
9354
9355 script.onload = () => {
9356 console.log(`script loaded successfully.`);
9357 init(ofertaSel, getUnidadeSelecionada());
9358 };
9359
9360 script.onerror = () => {
9361 console.error(`Error loading script`);
9362 };
9363
9364 document.head.appendChild(script);
9365
9366 }
9367
9368 loadHTMLForm();
9369
9370 $container.showModal();
9371
9372 }
9373
9374 function addEventBolsa() {
9375 // Mostra o preco
9376 const btnShowPrices = document.querySelectorAll('.btn-show-price')
9377
9378 btnShowPrices.forEach(btnShowPrice => btnShowPrice.addEventListener('click',togglePriceCard))
9379
9380 if(!$('#chkBolsa').prop('checked'))
9381 togglePriceCard()
9382 }
9383
9384 function togglePriceCard(selector){
9385 if(selector instanceof PointerEvent) return
9386
9387 if(!selector) selector = ''
9388 else selector = '.' + selector
9389
9390 const btnPrices = document.querySelectorAll('.show-price-content'+selector)
9391 const contentPrices = document.querySelectorAll('.content-valores-descontos'+selector)
9392 const contentBtnBolsas = document.querySelectorAll('.content-btn-bolsa'+selector)
9393
9394 btnPrices.forEach(btnPrice => btnPrice.classList.toggle('hide'))
9395 contentBtnBolsas.forEach(contentBtnBolsa => contentBtnBolsa.classList.toggle('modifier-content-show'))
9396 contentPrices.forEach(contentPrice => contentPrice.classList.toggle('hide-price'))
9397 }
9398
9399 function getRegiaoName(key) {
9400 switch (key) {
9401 case "C":
9402 return "Capital";
9403 case "I":
9404 return "Interior";
9405 case "GS":
9406 return "Grande São Paulo e Litoral";
9407 default:
9408 return "Sem Região";
9409 }
9410 }
9411
9412 function criarOptionUnidadesPorRegiao(unidades) {
9413 let regioes = {}
9414 let unidadeFounded
9415
9416 unidades.forEach(unidade => {
9417 if(!regioes[unidade.codRegiaoUnidade || 'N'])
9418 regioes[unidade.codRegiaoUnidade || 'N'] = []
9419
9420 regioes[unidade.codRegiaoUnidade || 'N'].push(unidade)
9421 })
9422
9423 Array.from(['C', 'I', 'GS', 'N'])
9424 .filter(key => Object.keys(regioes).includes(key))
9425 .forEach(key => {
9426 const unidadesDaRegiao = regioes[key]
9427
9428 const optionDisabled = $('<option>')
9429 optionDisabled.attr('label', getRegiaoName(key))
9430 optionDisabled.text(getRegiaoName(key));
9431 optionDisabled.attr('disabled', true)
9432 optionDisabled.addClass('ssp-option-group')
9433 $('#unidades-ofertas').append(optionDisabled)
9434
9435 $.each(unidadesDaRegiao, function(k,unidade){
9436 if($('#unidades-ofertas').find('[value="'+unidade['categoryId']+'"]').length == 0){
9437 var option = $('<option>');
9438 option.val(unidade['categoryId']+"@"+unidade['codigoUnidade']);
9439 option.text(unidade['nome']);
9440 option.attr('data-unidade-friendly-url', unidade.friendlyURL)
9441 option.addClass('ssp-option')
9442
9443 $('#unidades-ofertas').append(option);
9444
9445 unidadeFounded = !unidadeFounded && getURLData().includes('/'+unidade.friendlyURL+'/') ? unidade : unidadeFounded
9446 }
9447 })
9448 })
9449
9450 return unidadeFounded
9451 }
9452
9453 function getURLData() {
9454 return URLGeral.replace(HOST, '')
9455 }
9456
9457 /**
9458 * Copia um objeto JSON
9459 */
9460 function cloneObj(original) {
9461 return JSON.parse(JSON.stringify(original));
9462 }
9463
9464 function getUrlConsultaBolsa(oferta){
9465
9466 let url = '';
9467 if (isAmbienteTeste()) {
9468 if(oferta.destinoBolsa=='1') {
9469 url = 'https://hwse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO='+oferta.codigoOferta
9470 } else {
9471 url = 'https://hom-wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/'+oferta.codigoOferta;
9472 }
9473 } else {
9474 if(oferta.destinoBolsa=='1') {
9475 url = 'https://wse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO='+oferta.codigoOferta
9476 } else {
9477 url = 'https://wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/'+oferta.codigoOferta;
9478 }
9479
9480 }
9481
9482 return url;
9483 }
9484
9485 function execCompraEmed(oferta){
9486 let linkInscricaoEmed = '', linkInscricaoEmedHml = '';
9487 if(oferta.etapa == '0010'){
9488 linkInscricaoEmed = 'https://www.sp.senac.br/login/Login?destino=https://inscricao-educacional-ms.sp.senac.br/?oferta={codOferta}';
9489 linkInscricaoEmedHml = 'https://gesportal.sp.senac.br/login/Login?destino=https://hinscricao-educacional-backend.sp.senac.br/?oferta={codOferta}';
9490 }
9491
9492 var ambTeste = ['localhost', 'hom', 'dev'];
9493 var link = linkInscricaoEmed;
9494 $.each(ambTeste, function(i, a){
9495 if(location.hostname.indexOf(a) >= 0){
9496 link = linkInscricaoEmedHml;
9497 return false;
9498 }
9499 });
9500
9501 // Montar object push - google tag manager - 3
9502 ofertaSelecionada = itensEcommerce.get(oferta.codigoOferta)
9503 sendEventEcommerce("select_item", ofertaSelecionada);
9504 sendEventEcommerce("view_item", ofertaSelecionada);
9505 sendEventEcommerce("add_to_cart", ofertaSelecionada);
9506 sendEventEcommerce("begin_checkout", ofertaSelecionada);
9507
9508 var urlCompra = link.replace('\{codOferta\}', oferta.codigoOferta);
9509 window.open(urlCompra, '_blank');
9510 }
9511
9512 function formataDataComBarra(dataInvertidaComTraco){
9513 return dataInvertidaComTraco.split('-').reverse().join('/');
9514 }
9515
9516
9517 let ctrlPressed = false;
9518 $(window).keydown(function (ev) {
9519 if(ev.which == 17){
9520 ctrlPressed = true;
9521 return false;
9522 }
9523 if(ev.which == 82 && ctrlPressed){
9524 return false;
9525 }
9526 return (ev.which != 116); // F5
9527 }).keyup(function(ev) {
9528 if (ev.which == 17){
9529 ctrlPressed = false;
9530 }
9531 return true;
9532 });
9533
9534
9535 </script>
9536
9537</#if>