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