Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> isEMED [in template "20102#20129#438394" at line 4530, 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 4530, 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@media (min-width: 375px) and (max-width: 767px) {
2905
2906 .ssp:not(.liferay-instance) .oferta-slick-area--md-bleed {
2907 width: 100vw;
2908 }
2909
2910}
2911
2912
2913
2914/* ==========================================================================
2915 Tags de modalidade da ficha de curso (Ensino Superior)
2916 Figma: Integração EAD > ficha de curso (node 3284:2390)
2917 "Presencial" = tag informativa | "Conferir curso EAD" = tag clicável
2918 ========================================================================== */
2919.ssp-modalidade-curso {
2920 /* Tokens por nível (padrão: pós-graduação, conforme protótipo) */
2921 --_tag-presencial-bg: #8280fe; /* niveis/pos/pos-300 */
2922 --_tag-ead-bg: #e1e0fe; /* niveis/pos/pos-50 */
2923 --_tag-color: #000; /* neutros/neutro-900 */
2924
2925 display: flex;
2926 flex-wrap: wrap;
2927 align-items: center;
2928 gap: 16px;
2929 margin: 20px 0 40px;
2930
2931 &.ssp-modalidade-curso--graduacao {
2932 --_tag-presencial-bg: #6eacea; /* tipocurso/graduacao-300 */
2933 --_tag-ead-bg: #dcebf9; /* tipocurso/graduacao-50 */
2934 }
2935
2936 &.ssp-modalidade-curso--extensao {
2937 --_tag-presencial-bg: #68d7b8; /* tipocurso/extensao-300 */
2938 --_tag-ead-bg: #ddf6ef; /* TODO: confirmar tipocurso/extensao-50 */
2939 }
2940
2941 .ssp-modalidade-curso__tag {
2942 display: inline-flex;
2943 align-items: center;
2944 gap: 8px;
2945 padding: 16px;
2946 border-radius: 20px;
2947 font-family: "Montserrat", sans-serif;
2948 font-size: 16px;
2949 font-weight: 500;
2950 line-height: 24px;
2951 color: var(--_tag-color);
2952 white-space: nowrap;
2953
2954 &.ssp-modalidade-curso__tag--presencial {
2955 background-color: var(--_tag-presencial-bg);
2956 }
2957
2958 &.ssp-modalidade-curso__tag--ead {
2959 /* Reset de <button> (abrirá modal futuramente) */
2960 appearance: none;
2961 margin: 0;
2962 border: 0;
2963 text-align: left;
2964 background-color: var(--_tag-ead-bg);
2965 text-decoration: none !important;
2966 cursor: pointer;
2967
2968 /* Sem hover: neutraliza estilos globais do tema */
2969 &:hover,
2970 &:focus,
2971 &:active {
2972 color: var(--_tag-color) !important;
2973 font-weight: 500 !important;
2974 text-decoration: none !important;
2975 background-color: var(--_tag-ead-bg);
2976 }
2977
2978 &:focus-visible {
2979 outline: 2px solid var(--_tag-color);
2980 outline-offset: 2px;
2981 }
2982 }
2983 }
2984
2985 .ssp-modalidade-curso__icon {
2986 flex-shrink: 0;
2987 width: 20px;
2988 height: 20px;
2989 }
2990
2991 @media (max-width: 767px) {
2992 gap: 12px;
2993 margin: 16px 0 24px;
2994
2995 .ssp-modalidade-curso__tag {
2996 padding: 12px 16px;
2997 font-size: 14px;
2998 line-height: 20px;
2999 }
3000 }
3001}
3002
3003</style>
3004
3005
3006 <#assign
3007
3008 prefix = "ssp"
3009 nomeVocabularioTipoCurso = 'tipo-de-curso'
3010
3011
3012 nomeVocabularioUnidades = 'unidades'
3013
3014 nomeVocabularioFormato = 'formato'
3015
3016 nomeFormato = ""
3017 nomeVocabularioModalidade = 'modalidade'
3018
3019 nomeModalidade = ""
3020
3021 normalizer = serviceLocator.findService("com.liferay.portal.kernel.util.FriendlyURLNormalizer")
3022
3023 journalArticle = getJournalArticle()
3024 />
3025
3026 <#if journalArticle?contains("#erro#")>
3027 erro
3028 <#else>
3029
3030 <#assign
3031
3032 categories = getCategorias(journalArticle.getResourcePrimKey())
3033
3034 document = saxReaderUtil.read(journalArticle.getContent()).getRootElement()
3035
3036 xPathSelector = saxReaderUtil.createXPath("dynamic-element[@field-reference='dataEfetivaFTFieldSet']")
3037 dataEfetivaFTFieldSet = xPathSelector.selectSingleNode(document)
3038
3039 xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='dataEfetivaFT']")
3040 dataEfetiva = xPathSelector.selectSingleNode(document)
3041
3042 dataEfetivaSTR = dataEfetiva.elementText("dynamic-content")?string
3043
3044 articleId = journalArticle.getArticleId()
3045
3046 codigoFT = getStringValue(document,'codigoFT')
3047
3048 tituloComercial = journalArticle.getTitle()
3049
3050 objetivo = getStringValue(dataEfetivaFTFieldSet, 'objetivoComercial')
3051
3052 cargaHoraria = getStringValue(dataEfetivaFTFieldSet, 'cargaHorariaTotalFT')
3053
3054 oQueVouAprenderComercial = getStringValue(dataEfetivaFTFieldSet, 'oQueVouAprenderComercial')
3055
3056 comoVouAprenderComercial = getStringValue(dataEfetivaFTFieldSet, 'comoVouAprenderComercial')
3057
3058 possoFazerEsteCursoComercial = getStringValue(dataEfetivaFTFieldSet, 'possoFazerEsteCursoComercial')
3059
3060 tereiCertificadoComercial = getStringValue(dataEfetivaFTFieldSet, 'tereiCertificadoComercial')
3061
3062 tereiDiplomaComercial = getStringValue(dataEfetivaFTFieldSet, 'tereiDiplomaComercial')
3063
3064 precisoEstagiarComercial = getStringValue(dataEfetivaFTFieldSet, 'precisoEstagiarComercial')
3065
3066 comoMeMatricularComercial = getStringValue(dataEfetivaFTFieldSet, 'comoMeMatricularComercial')
3067
3068 oQueMaisPrecisoSaberComercial = getStringValue(dataEfetivaFTFieldSet, 'oQueMaisPrecisoSaberComercial')
3069
3070 normalizedModalidadeName = ""
3071
3072 />
3073
3074 <div style="display: none;">ElasticSearchNaoRetornarFiltro </div>
3075 <input type="hidden" name="codigoFT" value="${codigoFT}" />
3076 <input type="hidden" name="articleId" value="${articleId}" />
3077
3078 <input type="hidden" name="dataEfetivaSTR" value="${dataEfetivaSTR}" />
3079
3080 <input type="hidden" name="codUnidadeSelecionada" value="" />
3081
3082 <#list categories as category>
3083
3084 <#assign
3085 vocabulary = getVocabulary(category.getVocabularyId())
3086 />
3087
3088 <#if normalizer.normalize(vocabulary.getName()) == nomeVocabularioTipoCurso>
3089
3090 <#assign
3091 categoriaTipoCurso = category
3092 normalizedCategoryName = normalizer.normalize(category.getName())
3093 />
3094
3095 <input type="hidden" name="tipoCurso" value="${normalizedCategoryName}" />
3096
3097 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioUnidades>
3098
3099 <input type="hidden" name="unidades" value="${category.getCategoryId()}" data-unidade="${category.getName()}" />
3100
3101 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioModalidade>
3102
3103 <#assign
3104 categoriaModalidade = category
3105 normalizedModalidadeName = normalizer.normalize(category.getName())
3106
3107 />
3108 <input type="hidden" name="modalidadeName" value="${normalizedModalidadeName}" />
3109 <input type="hidden" name="modalidades" value="${normalizedModalidadeName}" />
3110
3111 <#elseif normalizer.normalize(vocabulary.getName()) == nomeVocabularioFormato>
3112 <#assign
3113 nomeFormato = category.getName()
3114 />
3115
3116
3117 <#assign idFormato = category.getCategoryId() />
3118 <#if nomeFormato == "Presencial + EAD" >
3119 <input type="hidden" name="formato" value="${category.getCategoryId()}" data-formato="Presencial + EAD" />
3120 <#else>
3121 <input type="hidden" name="formato" value="${category.getCategoryId()}" data-formato="${category.getName()}" />
3122 </#if>
3123 </#if>
3124 </#list>
3125
3126 <#assign xPathSelector = saxReaderUtil.createXPath("//dynamic-element[@field-reference='imagemComercial']")>
3127 <#assign imagemAlt = "">
3128 <#assign imagemUrl = "">
3129
3130 <#if xPathSelector.selectSingleNode(dataEfetivaFTFieldSet)?? >
3131
3132 <#assign imagemStr = xPathSelector.selectSingleNode(dataEfetivaFTFieldSet).getStringValue()>
3133 <#if imagemStr?contains("{") >
3134 <#attempt>
3135 <#assign imagemJson = jsonFactoryUtil.createJSONObject(imagemStr) />
3136 <#assign imagemId = getterUtil.getInteger(imagemJson.get('fileEntryId')) />
3137 <#if imagemId?? && imagemId gt 0 >
3138 <#assign dl = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppService")
3139 dlURLHelper = serviceLocator.findService("com.liferay.document.library.util.DLURLHelper")
3140 fileEntry = dl.getFileEntry(imagemId) />
3141 <#if fileEntry??>
3142 <#assign imagemAlt = imagemJson.get('alt') />
3143 <#assign imagemUrl = dlURLHelper.getDownloadURL(fileEntry, fileEntry.getFileVersion(), themeDisplay,null) />
3144 </#if>
3145 </#if>
3146 <#recover>
3147 <#assign
3148 imagemAlt = ""
3149 imagemUrl = ""
3150 />
3151 </#attempt>
3152 </#if>
3153
3154 </#if>
3155
3156 <#assign URLCodec=staticUtil["com.liferay.portal.kernel.util.URLCodec"]
3157 HtmlUtil=staticUtil["com.liferay.portal.kernel.util.HtmlUtil"]
3158 StringPool=staticUtil["com.liferay.petra.string.StringPool"]
3159 dlFileEntryLocalService=serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")
3160 xPathSelector=saxReaderUtil.createXPath("//dynamic-element[@field-reference='quaisMateriaisComercial'
3161 ]")
3162 quaisMateriaisComercialPDFStr=xPathSelector.selectSingleNode(dataEfetivaFTFieldSet).getStringValue() />
3163
3164 <#if quaisMateriaisComercialPDFStr?contains('classPK')>
3165
3166 <#assign PDFJson=jsonFactoryUtil.createJSONObject(quaisMateriaisComercialPDFStr)
3167 classPKNumber=PDFJson.classPK?number fileEntry=dlFileEntryLocalService.getDLFileEntry(classPKNumber)
3168 folderId=fileEntry.getFolderId() title=fileEntry.getTitle()
3169 quaisMateriaisComercialPDFUrl=themeDisplay.getPortalURL() + themeDisplay.getPathContext()
3170 + "/documents/" + themeDisplay.getScopeGroupId() + StringPool.SLASH + folderId + StringPool.SLASH +
3171 URLCodec.encodeURL(HtmlUtil.unescape(title)) />
3172
3173 <#else>
3174 <#assign quaisMateriaisComercialPDFUrl="">
3175 </#if>
3176
3177 <#function getStatusListaEsperaEMED>
3178 <#attempt>
3179 <#local controlService=serviceLocator.findService("br.senac.services.api.BooleanControl") />
3180 <#if controlService??>
3181 <#return controlService.isEnabled("listaEsperaEMED") />
3182 </#if>
3183 <#recover>
3184 </#attempt>
3185 <#return false />
3186 </#function>
3187
3188 <#function getFirstArticleStructure categoryId structureName>
3189 <#attempt>
3190 <#assign searchImpl=serviceLocator.findService("br.senac.search.api.Search")>
3191 <#assign companyId=themeDisplay.getCompanyId()>
3192 <#assign groupId=themeDisplay.getScopeGroupId()>
3193 <#assign articles=searchImpl.findArticlesByCategoryIds(companyId, groupId, structureName,
3194 (categoryId gt 0)?then([categoryId],[]), true, 0, 1)>
3195 <#if articles?size gt 0>
3196 <#return articles?first>
3197 </#if>
3198 <#return ''>
3199 <#recover>
3200 <#return ''>
3201 </#attempt>
3202 </#function>
3203
3204
3205 <#assign nomeTipoCurso=categoriaTipoCurso.getName() nomeCategoriaTipoCurso=categoriaTipoCurso.getName()
3206 idTipoCurso=categoriaTipoCurso.getCategoryId() />
3207 <input type="hidden" name="nomeCategoriaTipoCurso" value="${nomeCategoriaTipoCurso}" />
3208
3209 <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
3210
3211 <#assign nomeTipoCurso=categoriaTipoCurso.getName() />
3212
3213 <input type="hidden" name="idTipoCurso" value="${idTipoCurso}" />
3214
3215 <#elseif (nomeTipoCurso?contains("cnico") && !nomeTipoCurso?contains("EAD") ) ||
3216 nomeTipoCurso?contains("Livre")>
3217
3218 <#assign nomeTipoCurso="Cursos " + categoriaTipoCurso.getName() + "s" />
3219
3220 <#else>
3221 <#assign nomeTipoCurso=categoriaTipoCurso.getName() />
3222 <#assign nomeTipoCurso=categoriaTipoCurso.getName() />
3223
3224 </#if>
3225
3226 <#-- Caso o curso seja do formato hibrido, busca o webcontent da pasta Onde as aulas vão acontecer -
3227 hibrido -->
3228 <#if nomeFormato=="Presencial + EAD">
3229 <#assign hibridoStructure=getFirstArticleStructure(idFormato,"formato-hibrido")
3230 documentHibrido=saxReaderUtil.read(hibridoStructure.getContent())
3231 rootElement=documentHibrido.getRootElement()
3232 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='textoFormatoHibrido'
3233 ]") />
3234 <#if xPathSelector.selectSingleNode(rootElement)??>
3235 <#assign txtHibrido=xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3236 <input type="hidden" name="textoFormatoHibrido" value="${txtHibrido}" />
3237 </#if>
3238 </#if>
3239
3240
3241 <#-- dados de compartilhamento -->
3242 <@liferay_util["html-top"]>
3243 <meta name="image" property="og:image" content="${imagemUrl}">
3244 <meta property="og:image:width" content="1024">
3245 </@>
3246 <#-- dados de compartilhamento -->
3247
3248
3249 <#assign
3250 webContentServiceUtil=serviceLocator.findService("br.senac.services.service.WebContentServiceUtil")
3251 temasMercadologicos=webContentServiceUtil.getTemasPorArticleId(themeDisplay.getScopeGroupId(),
3252 journalArticle) categoriesIdiomas=temasMercadologicos?filter(c ->
3253 c.getName()?lower_case?contains("idioma"))
3254 hasIdiomas = categoriesIdiomas?has_content
3255 hasEMED = normalizedModalidadeName?contains("ensino-medio")
3256 />
3257
3258 <#function getManutencao>
3259
3260 <#assign manutencaoStructure=getFirstArticleStructure(idTipoCurso,"manutencoes") />
3261 <#if manutencaoStructure=="">
3262 <#return {"bolsa":"", "compra" :"", "rodape" :""} />
3263 </#if>
3264 <#assign txtBolsa="" txtCompra="" txtRodape=""
3265 content=saxReaderUtil.read(manutencaoStructure.getContent())
3266 rootElement=content.getRootElement() />
3267 <#assign
3268 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='chkManutencaoBolsa'
3269 ]") />
3270 <#if xPathSelector.selectSingleNode(rootElement).getStringValue()?trim=="true">
3271 <#assign
3272 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoBolsa'
3273 ]") />
3274 <#assign txtBolsa=xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3275 </#if>
3276 <#assign
3277 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='chkManutencaoCompra'
3278 ]") />
3279 <#if xPathSelector.selectSingleNode(rootElement).getStringValue()?trim=="true">
3280 <#assign
3281 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoCompra'
3282 ]") />
3283 <#assign txtCompra=xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3284 </#if>
3285 <#if txtCompra !="" || txtBolsa !="">
3286 <#assign
3287 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='txtManutencaoRodape'
3288 ]") />
3289 <#assign txtRodape=xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3290 </#if>
3291
3292 <#return {"bolsa": txtBolsa, "compra" : txtCompra, "rodape" : txtRodape} />
3293
3294 </#function>
3295
3296 <#assign listaEsperaAtiva=getStatusListaEsperaEMED() />
3297
3298 <#assign manutencao=getManutencao() />
3299 <input type="hidden" id="manutencao-compra" value="${manutencao.compra}" />
3300 <input type="hidden" id="manutencao-bolsa" value="${manutencao.bolsa}" />
3301
3302 <div class="${prefix}-header-curso__image">
3303 <#if imagemUrl?contains(".webp")>
3304 <#-- Remove midias adaptaveis -->
3305 <picture>
3306 <img class="ssp-image-opacity" src="${imagemUrl}" <#if imagemAlt?length !=0>
3307 alt="${imagemAlt}"
3308 </#if> loading="lazy">
3309 </picture>
3310 <#else>
3311 <img class="ssp-image-opacity" src="${imagemUrl}" <#if imagemAlt?length !=0>
3312 alt="${imagemAlt}"
3313 </#if> loading="lazy">
3314</#if>
3315<div class="${prefix}-header-curso__tag-formato bg-nivel-${normalizedCategoryName}">
3316 <#if hasIdiomas>
3317 <span>${nomeTipoCurso}</span>
3318 <#else>
3319 <span>${nomeTipoCurso} | ${nomeFormato}</span>
3320 </#if>
3321</div>
3322</div>
3323
3324<section id="curso-info">
3325 <div class="ssp-card-detalhe-curso__container">
3326
3327 <div class="ssp-card-detalhe-curso">
3328
3329 <div class="ssp-card-detalhe-curso__tag-color-tipo bg-nivel-${normalizedCategoryName}"></div>
3330
3331 <div class="container">
3332
3333 <#if nomeFormato?contains("ao-vivo")>
3334 <span class="ssp-card-detalhe-curso__tag-ao-vivo">Senac Online<i class="fas fa-signal-stream icon-ao-vivo"
3335 aria-hidden="true"></i>ao vivo</span>
3336
3337 </#if>
3338
3339 <div class="ssp-card-detalhe-curso__content">
3340 <div>
3341
3342 <!-- <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
3343
3344 <p class="ssp-txt-emed__inscricoes-aberta">Inscrições abertas</p>
3345
3346 </#if> -->
3347
3348 <!-- rever a lógica da chama de inscricoes abertas -->
3349
3350 <h1 class="ssp-card-detalhe-curso__title">${tituloComercial}</h1>
3351 <input type="hidden" name="tituloComercial" value="${tituloComercial}" />
3352
3353 <#-- Tags de modalidade: Presencial (informativa) + Conferir curso EAD -->
3354 <#-- getStringValue casa por @name (autogerado nos campos novos do Form Builder atual);
3355 linkCursoEad guarda o identificador em @field-reference, mesmo padrão
3356 já usado no resto deste arquivo pra imagemComercial/quaisMateriaisComercial.
3357 A existência de curso EAD semelhante é validada só pelo linkCursoEad preenchido. -->
3358 <#assign xPathSelector_linkCursoEad = saxReaderUtil.createXPath("//dynamic-element[@field-reference='linkCursoEad']") />
3359 <#assign linkCursoEad = ((xPathSelector_linkCursoEad.selectSingleNode(document).getStringValue())!"")?trim />
3360 <#-- Artigos salvos antes da criação do campo trazem o texto "null" -->
3361 <#if linkCursoEad?lower_case == "null">
3362 <#assign linkCursoEad = "" />
3363 </#if>
3364 <#if normalizedCategoryName == "extensao"
3365 && linkCursoEad?has_content>
3366 <div class="ssp-modalidade-curso ssp-modalidade-curso--${normalizedCategoryName}">
3367 <span class="ssp-modalidade-curso__tag ssp-modalidade-curso__tag--presencial">Presencial</span>
3368 <button type="button" class="ssp-modalidade-curso__tag ssp-modalidade-curso__tag--ead" data-url-ead="${linkCursoEad}">
3369 Conferir curso EAD
3370 <svg class="ssp-modalidade-curso__icon" width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true" focusable="false">
3371 <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"/>
3372 <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"/>
3373 </svg>
3374 </button>
3375 </div>
3376
3377 <script>
3378 (() => {
3379 document.querySelectorAll('.ssp-modalidade-curso__tag--ead').forEach((el) => {
3380 el.addEventListener('click', (event) => {
3381 const url = el.dataset.urlEad;
3382 if (!url) return;
3383 event.preventDefault();
3384 Templates.SenacEad.openWithUrl(url, 'modal-senac-ead');
3385 });
3386 });
3387 })();
3388 </script>
3389 </#if>
3390
3391 <div class="ssp-card-detalhe-curso__description">${objetivo}</div>
3392 </div>
3393 <div class="ssp-card-detalhe-curso__secunday-info-content">
3394
3395 <#if nomeFormato?contains("ao-vivo")>
3396 <span class="d-md-none">
3397 <a class="ssp-card-detalhe-curso__secunday-info-back-link" href="#"
3398 style="color: #ff9057;">${categoriaTipoCurso.getName()}</a>
3399 <#if !hasIdiomas>
3400 <span> | ${nomeFormato}</span>
3401 </#if>
3402 </span>
3403
3404 <#else>
3405 <span class="d-md-none">
3406 <a class="ssp-card-detalhe-curso__secunday-info-back-link"
3407 href="#">${categoriaTipoCurso.getName()}</a>
3408 <#if !hasIdiomas>
3409 <span> | ${nomeFormato}</span>
3410 </#if>
3411 </span>
3412
3413 </#if>
3414
3415 <p class="ssp-card-detalhe-curso__secundary-info-carga-horaria">${cargaHoraria} horas</p>
3416 </div>
3417 </div>
3418 <div class="ssp-saiba-mais-curso-accordion">
3419
3420 <#if (possoFazerEsteCursoComercial?length> 0)>
3421 <div class="ssp-saiba-mais-curso-accordion__body">
3422 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Posso fazer este curso?</div>
3423 <div class="ssp-saiba-mais-curso-accordion__contents">${possoFazerEsteCursoComercial}</div>
3424 </div>
3425
3426 </#if>
3427
3428 <#if (oQueVouAprenderComercial?length> 0) >
3429 <div class="ssp-saiba-mais-curso-accordion__body">
3430 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">O que vou aprender?</div>
3431 <div class="ssp-saiba-mais-curso-accordion__contents" id="plano-curso">${oQueVouAprenderComercial}</div>
3432 </div>
3433 </#if>
3434
3435 <#if (comoVouAprenderComercial?length> 0)>
3436 <div class="ssp-saiba-mais-curso-accordion__body">
3437 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Como vou aprender?</div>
3438 <div class="ssp-saiba-mais-curso-accordion__contents">${comoVouAprenderComercial}</div>
3439 </div>
3440 </#if>
3441
3442
3443 <div class="ssp-saiba-mais-curso-accordion__body">
3444 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Quais materiais vou precisar?</div>
3445 <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
3446 <div class="ssp-saiba-mais-curso-accordion__contents">
3447 Desenvolvemos os materiais e disponibilizamos tudo para você!<br /><br />Também temos bibliotecas
3448 físicas e virtuais, além de parceria com a Microsoft, que garante acesso à plataforma Teams para
3449 conferir aulas, avisos e materiais da sua turma.
3450 </div>
3451 <#else>
3452 <#if (quaisMateriaisComercialPDFUrl?length> 0)>
3453 <div class="ssp-saiba-mais-curso-accordion__contents">
3454 <a href="${quaisMateriaisComercialPDFUrl}" target="_blank"><i class="fa fa-download"
3455 aria-hidden="true"></i> Confira os materiais que você precisará.</a>
3456 </div>
3457 <#else>
3458 <div class="ssp-saiba-mais-curso-accordion__contents">Inicialmente, não há lista de materiais para
3459 este curso. Mas confirme em aula se será necessário comprar algum item.</div>
3460 </#if>
3461 </#if>
3462 </div>
3463
3464 <#if (tereiDiplomaComercial?length> 0)>
3465 <div class="ssp-saiba-mais-curso-accordion__body">
3466 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Terei diploma?</div>
3467 <div class="ssp-saiba-mais-curso-accordion__contents">${tereiDiplomaComercial}</div>
3468 </div>
3469 </#if>
3470
3471 <#if (tereiCertificadoComercial?length> 0)>
3472 <div class="ssp-saiba-mais-curso-accordion__body">
3473 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Terei certificado?</div>
3474 <div class="ssp-saiba-mais-curso-accordion__contents">${tereiCertificadoComercial}</div>
3475 </div>
3476 </#if>
3477
3478 <#if (comoMeMatricularComercial?length> 0)>
3479 <div class="ssp-saiba-mais-curso-accordion__body">
3480 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Como me matricular?</div>
3481 <div class="ssp-saiba-mais-curso-accordion__contents">${comoMeMatricularComercial}</div>
3482 </div>
3483 </#if>
3484
3485 <#if (precisoEstagiarComercial?length> 0)>
3486 <div class="ssp-saiba-mais-curso-accordion__body">
3487 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Preciso estagiar?</div>
3488 <div class="ssp-saiba-mais-curso-accordion__contents">${precisoEstagiarComercial}</div>
3489 </div>
3490 </#if>
3491
3492
3493 <#if (oQueMaisPrecisoSaberComercial?length> 0)>
3494 <div class="ssp-saiba-mais-curso-accordion__body">
3495 <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
3496 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">Estudo em outra escola, como funciona
3497 a transferência?</div>
3498 <#else>
3499 <div class="ssp-saiba-mais-curso-accordion__heading" role="button">O que mais preciso saber?</div>
3500 </#if>
3501 <div class="ssp-saiba-mais-curso-accordion__contents">${oQueMaisPrecisoSaberComercial}</div>
3502 </div>
3503 </#if>
3504
3505 <!-- Info para EMED -->
3506
3507 <#if nomeTipoCurso?contains("Ensino Médio Técnico")>
3508
3509 <div class="ssp-emed__vantagens-content">
3510
3511 <p>Conheça <span>mais vantagens</span> do Ensino Médio Técnico no Senac.</p>
3512 <a href="/ensino-medio-tecnico" class="btn">Saiba mais</a>
3513
3514 </div>
3515
3516 <#elseif nomeFormato?contains("Presencial") && nomeFormato?contains("EAD") &&
3517 !nomeTipoCurso?contains("Idioma")>
3518
3519 <!-- Info para híbrido -->
3520
3521 <div class="ssp-emed__vantagens-content ${normalizedCategoryName}">
3522
3523 <p>Quer saber mais sobre nossos <span>cursos com aulas presenciais e a distância</span>?</p>
3524 <a href="/presencial-ead" class="btn">Saiba mais</a>
3525
3526 </div>
3527
3528 <#else>
3529
3530 <!-- <div class="ssp-emed__vantagens-content ${normalizedCategoryName}">
3531
3532 <p>Conheça <span>mais vantagens</span>?</p>
3533 <a href="#" class="btn">Saiba mais</a>
3534
3535 </div> -->
3536
3537 </#if>
3538
3539
3540 <!-- Slider para cursos de Cozinheiro e Garçom -->
3541
3542 <#if codigoFT=="14125">
3543
3544 <div>
3545
3546 <h6
3547 style="font-family: Montserrat;font-size: 20px;font-weight: 600;color: #2a2e43;padding: 15px;border-top: 1px solid #e7e7e7;">
3548 Quer participar do processo seletivo? Confira todas as etapas:</h6>
3549
3550
3551 <div class="slider-passo-passo__cursos-cozinha">
3552
3553 <div class="ssp-passo-passo-cozinheiro_card">
3554
3555 <div>
3556
3557 <h6 class="ssp-passo-passo-cozinheiro_card-title">Abertura do processo</h6>
3558
3559 <p class="ssp-passo-passo-cozinheiro_card-txt">Primeiro, confirme se você atende aos pré-requisitos
3560 para se inscrever em <a class="ssp-passo-passo-cozinheiro_card-link"
3561 href="/bolsas-de-estudo">bolsas de estudo</a>. Depois, confira no campo "Como me matricular?" o
3562 cronograma de abertura das inscrições do processo seletivo. </p>
3563
3564 </div>
3565
3566
3567 </div>
3568
3569 <div class="ssp-passo-passo-cozinheiro_card">
3570
3571 <div>
3572
3573 <h6 class="ssp-passo-passo-cozinheiro_card-title">Inscrições</h6>
3574
3575 <p class="ssp-passo-passo-cozinheiro_card-txt">Quando o processo seletivo abrir, faça login no site,
3576 acesse a página do curso, selecione a unidade e realize a inscrição, que é gratuita. As inscrições
3577 podem ser encerradas antes da data divulgada, quando alcançarmos 3 inscrições por vaga.</p>
3578
3579 </div>
3580
3581 </div>
3582
3583 <div class="ssp-passo-passo-cozinheiro_card">
3584
3585 <div>
3586
3587 <h6 class="ssp-passo-passo-cozinheiro_card-title">Convocação para entrevista</h6>
3588
3589 <p class="ssp-passo-passo-cozinheiro_card-txt">
3590 Ao finalizar sua inscrição no processo seletivo, você receberá uma confirmação no e-mail que
3591 cadastrou no nosso site. Também vamos enviar para o seu e-mail o convite para a entrevista e as
3592 orientações sobre envio dos documentos necessários.
3593 </p>
3594
3595
3596 </div>
3597
3598 </div>
3599
3600 <div class="ssp-passo-passo-cozinheiro_card">
3601
3602 <div>
3603
3604 <h6 class="ssp-passo-passo-cozinheiro_card-title">Entrevista</h6>
3605
3606 <p class="ssp-passo-passo-cozinheiro_card-txt">A entrevista poderá ser on-line ou presencial nos
3607 hotéis-escola Senac. Se você não participar, sua inscrição é cancelada automaticamente. Antes da
3608 entrevista, não esqueça de enviar os documentos por e-mail.
3609 </p>
3610
3611
3612 </div>
3613
3614 </div>
3615
3616 <div class="ssp-passo-passo-cozinheiro_card">
3617
3618 <div>
3619
3620 <h6 class="ssp-passo-passo-cozinheiro_card-title">Resultado</h6>
3621
3622 <p class="ssp-passo-passo-cozinheiro_card-txt">
3623 Até 7 dias depois de ter feito a entrevista, você receberá a resposta por e-mail sobre o resultado
3624 do processo seletivo.
3625 </p>
3626
3627 </div>
3628
3629 </div>
3630
3631 <div class="ssp-passo-passo-cozinheiro_card">
3632
3633 <div>
3634
3635 <h6 class="ssp-passo-passo-cozinheiro_card-title">Matrícula</h6>
3636
3637 <p class="ssp-passo-passo-cozinheiro_card-txt">
3638 Se receber a aprovação, a próxima etapa é fazer a matrícula. Lembre-se de enviar os documentos,
3639 inclusive os exames solicitados no e-mail.
3640 </p>
3641
3642 </div>
3643
3644 </div>
3645
3646 <div class="ssp-passo-passo-cozinheiro_card">
3647
3648 <div>
3649
3650 <h6 class="ssp-passo-passo-cozinheiro_card-title">Início do curso!</h6>
3651
3652 <p class="ssp-passo-passo-cozinheiro_card-txt">
3653 Teve aprovação em todas as etapas? Parabéns!
3654
3655 Sua jornada de transformação profissional
3656
3657 começará com o início das aulas. Mas se não
3658
3659 conseguiu dessa vez, não desanime. Sempre estamos com
3660
3661 vagas abertas para diversos cursos.
3662 </p>
3663
3664 </div>
3665
3666 </div>
3667
3668
3669 </div>
3670
3671 </div>
3672
3673 <#elseif codigoFT=="15390">
3674
3675 <div>
3676
3677 <h6
3678 style="font-family: Montserrat;font-size: 20px;font-weight: 600;color: #2a2e43;padding: 15px;border-top: 1px solid #e7e7e7;">
3679 Quer participar do processo seletivo? Confira todas as etapas:</h6>
3680
3681 <div class="slider-passo-passo__cursos-cozinha">
3682
3683 <div class="ssp-passo-passo-cozinheiro_card">
3684
3685 <div>
3686
3687 <h6 class="ssp-passo-passo-cozinheiro_card-title">Abertura do processo</h6>
3688
3689 <p class="ssp-passo-passo-cozinheiro_card-txt">Primeiro, confirme se você atende aos
3690 pré-requisitos para se inscrever em <a class="ssp-passo-passo-cozinheiro_card-link"
3691 href="/bolsas-de-estudo">bolsas de estudo</a>. Depois, confira no campo "Como me matricular?"
3692 o cronograma de abertura das inscrições do processo seletivo. </p>
3693
3694 </div>
3695
3696
3697 </div>
3698
3699 <div class="ssp-passo-passo-cozinheiro_card">
3700
3701 <div>
3702
3703 <h6 class="ssp-passo-passo-cozinheiro_card-title">Inscrições</h6>
3704
3705 <p class="ssp-passo-passo-cozinheiro_card-txt">Quando o processo seletivo abrir, faça login no
3706 site, acesse a página do curso, selecione a unidade e realize a inscrição, que é gratuita. As
3707 inscrições podem ser encerradas antes da data divulgada, quando alcançarmos 3 inscrições por
3708 vaga.</p>
3709
3710 </div>
3711
3712 </div>
3713
3714 <div class="ssp-passo-passo-cozinheiro_card">
3715
3716 <div>
3717
3718 <h6 class="ssp-passo-passo-cozinheiro_card-title">Convocação para entrevista</h6>
3719
3720 <p class="ssp-passo-passo-cozinheiro_card-txt">
3721 Ao finalizar sua inscrição no processo seletivo, você receberá uma confirmação no e-mail que
3722 cadastrou no nosso site. Também vamos enviar para o seu e-mail o convite para a entrevista e as
3723 orientações sobre envio dos documentos necessários.
3724 </p>
3725
3726
3727 </div>
3728
3729 </div>
3730
3731 <div class="ssp-passo-passo-cozinheiro_card">
3732
3733 <div>
3734
3735 <h6 class="ssp-passo-passo-cozinheiro_card-title">Entrevista</h6>
3736
3737 <p class="ssp-passo-passo-cozinheiro_card-txt">A entrevista poderá ser on-line ou presencial nos
3738 hotéis-escola Senac. Se você não participar, sua inscrição é cancelada automaticamente. Antes da
3739 entrevista, não esqueça de enviar os documentos por e-mail.
3740 </p>
3741
3742
3743 </div>
3744
3745 </div>
3746
3747 <div class="ssp-passo-passo-cozinheiro_card">
3748
3749 <div>
3750
3751 <h6 class="ssp-passo-passo-cozinheiro_card-title">Resultado</h6>
3752
3753 <p class="ssp-passo-passo-cozinheiro_card-txt">
3754 Até 7 dias depois de ter feito a entrevista, você receberá a resposta por e-mail sobre o
3755 resultado do processo seletivo.
3756 </p>
3757
3758 </div>
3759
3760 </div>
3761
3762 <div class="ssp-passo-passo-cozinheiro_card">
3763
3764 <div>
3765
3766 <h6 class="ssp-passo-passo-cozinheiro_card-title">Matrícula</h6>
3767
3768 <p class="ssp-passo-passo-cozinheiro_card-txt">
3769 Se receber a aprovação, a próxima etapa é fazer a matrícula. Lembre-se de enviar os documentos,
3770 inclusive os exames solicitados no e-mail.
3771 </p>
3772
3773 </div>
3774
3775 </div>
3776
3777 <div class="ssp-passo-passo-cozinheiro_card">
3778
3779 <div>
3780
3781 <h6 class="ssp-passo-passo-cozinheiro_card-title">Início do curso!</h6>
3782
3783 <p class="ssp-passo-passo-cozinheiro_card-txt">
3784 Teve aprovação em todas as etapas? Parabéns!
3785
3786 Sua jornada de transformação profissional
3787
3788 começará com o início das aulas. Mas se não
3789
3790 conseguiu dessa vez, não desanime. Sempre estamos com
3791
3792 vagas abertas para diversos cursos.
3793 </p>
3794
3795 </div>
3796
3797 </div>
3798
3799
3800 </div>
3801
3802 </div>
3803
3804 </#if>
3805
3806 <!-- Final Slider para cursos de Cozinheiro e Garçom -->
3807
3808 </div>
3809 </div>
3810 </div>
3811 </div>
3812</section>
3813<#assign dNoneSelectUnidade='' mostrarUnidades=!nomeFormato?contains("ao-vivo")
3814 isEMED=normalizedCategoryName?contains("ensino-medio-tecnico")
3815 isAprendizagem=normalizedCategoryName?contains("jovem-aprendiz") />
3816
3817<#if nomeFormato?contains("ao-vivo")>
3818 <#assign dNoneSelectUnidade='d-none' />
3819</#if>
3820
3821<#-- Obter data matricula emed -->
3822 <#if isEMED>
3823 <#function getMatriculaEMED>
3824 <#assign emedTags=getFirstArticleStructure(0,"emed-tags") document=saxReaderUtil.read(emedTags.getContent())
3825 rootElement=document.getRootElement()
3826 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='dataInicioPeriodoMatricula' ]") />
3827 <#if xPathSelector.selectSingleNode(rootElement)??>
3828 <#assign dataInicio=xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3829 </#if>
3830 <#assign xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='horaInicioMatricula' ]") />
3831 <#if xPathSelector.selectSingleNode(rootElement)??>
3832 <#assign horaInicio=xPathSelector.selectSingleNode(rootElement).getStringValue()?trim />
3833 </#if>
3834
3835 <#setting time_zone="America/Sao_Paulo">
3836 <#assign today=.now?datetime />
3837 <#assign emeddatetime=(dataInicio + " " + horaInicio)?datetime["yyyy-MM-dd HH:mm"] />
3838 <#assign matriculaAberta=today gt emeddatetime />
3839
3840 <#return {"dataInicio" : dataInicio, "horaInicio" : horaInicio, "aberta" : matriculaAberta}>
3841 </#function>
3842
3843 <#assign matriculaEMED=getMatriculaEMED() />
3844
3845 </#if>
3846
3847 <#if isEMED || isAprendizagem>
3848 <section class="ssp-section-selecione-unidade ssp-section ${dNoneSelectUnidade}" style="background:#2B2E41">
3849 <div class="container">
3850
3851 <div class="ssp-container-selecione-unidade" style="max-width: 815px; margin: auto;">
3852 <div class="ssp-container_ofertas__title">
3853 <h3 class="ssp-aviso-novas-turmas__title selecione-unidade-title-custom">
3854
3855 Selecione uma unidade para conhecer as próximas turmas:
3856
3857 </h3>
3858 </div>
3859
3860 <div class="ssp-container__form-select">
3861 <select id="unidades-ofertas" class="form-control" name="unidades-ofertas">
3862 <option value="">Selecione uma unidade</option>
3863 </select>
3864 </div>
3865
3866 </div>
3867
3868 <div class="ssp-ofertas__box-endereco-unidade">
3869 <i class="icon-map-adress"></i>
3870 <a href="" target="_blank" class="ssp-ofertas__endereco-unidade"></a>
3871 </div>
3872
3873 </div>
3874
3875 </section>
3876 <#else>
3877 <section class="ssp-section-selecione-unidade ssp-section" style="background:#2B2E41">
3878 <div class="container">
3879 <div class="ssp-container-selecione-unidade ${dNoneSelectUnidade} row no-gutters mb-lg-8">
3880 <div class="ssp-container_ofertas__title">
3881 <h2 class="ssp-aviso-novas-turmas__title selecione-unidade-title-custom ssp-detalhe-curso-titulo-filter">
3882 Escolha a unidade e conheça as turmas disponíveis:</h2>
3883 </div>
3884 </div>
3885 <div class="row ssp-filters-px justify-content-center">
3886 <div class="col-12 col-lg ${dNoneSelectUnidade} px-md-0 order-1">
3887 <div class="ssp-container-selecione-unidade row no-gutters">
3888 <div class="col-12">
3889 <div class="ssp-container__form-select mx-auto">
3890 <label for="unidades-ofertas"
3891 class="ssp-switch-label ssp-switch-label-section mx-0 d-none d-lg-block">Selecione uma
3892 unidade:</label>
3893 <select id="unidades-ofertas" class="form-control" name="unidades-ofertas"></select>
3894 </div>
3895 </div>
3896 </div>
3897 </div>
3898
3899 <div id="ssp-alternadores"
3900 class="col mt-5 mt-lg-0 ${(isEMED || isAprendizagem)?then('d-none', '')} px-md-0 order-3 order-lg-2"
3901 style="max-width: 480px; display: none;">
3902 <div class="row no-gutters ssp-switch-label ssp-switch-label-section mx-0">Filtre por:</div>
3903 <div class="row no-gutters mt-4">
3904 <#assign mostrarFiltroInscricao=(nomeTipoCurso?contains("Técnico") && !nomeTipoCurso?contains("Ensino
3905 Médio")) || nomeTipoCurso?contains("Livre") || nomeTipoCurso?contains("Extensão")
3906 mostrarFiltroBolsa=(nomeTipoCurso?contains("Técnico") && !nomeTipoCurso?contains("Ensino Médio")) ||
3907 (nomeTipoCurso?contains("Livre") && !normalizedModalidadeName?contains("acoes-educ.-curta-duracao"))
3908 textoFiltroCompra=(nomeTipoCurso?contains("Livre") &&
3909 normalizedModalidadeName?contains("acoes-educ.-curta-duracao"))?then("Matrículas
3910 abertas", "Comprar agora" ) />
3911
3912
3913 <#if mostrarFiltroInscricao && mostrarFiltroBolsa>
3914 <div class="ssp-switch-divider d-md-none my-4"></div>
3915 </#if>
3916
3917 <#if mostrarFiltroInscricao>
3918 <div class="col-12 col-lg">
3919 <div class="d-flex justify-content-between justify-content-lg-start">
3920 <label class="ssp-switch order-2 order-lg-1">
3921 <input type="checkbox" id="chkInscricao">
3922 <span class="ssp-switch-slider round"></span>
3923 </label>
3924 <label for="chkInscricao" class="ssp-switch-label order-1 order-lg-2">${textoFiltroCompra}</label>
3925 </div>
3926 </div>
3927 </#if>
3928
3929
3930 <#if mostrarFiltroBolsa>
3931 <div class="col-12 col-lg">
3932 <div class="d-flex justify-content-between justify-content-lg-start">
3933 <label class="ssp-switch order-2 order-lg-1">
3934 <input type="checkbox" id="chkBolsa">
3935 <span class="ssp-switch-slider ssp-switch-slider-secondary round"></span>
3936 </label>
3937 <label for="chkBolsa" class="ssp-switch-label order-1 order-lg-2">Bolsas de estudo</label>
3938 </div>
3939 </div>
3940 </#if>
3941 </div>
3942 </div>
3943
3944 <div class="col-12 order-2 order-lg-3">
3945 <div class="row ${mostrarUnidades?then('text-center text-lg-left', 'text-center')}">
3946 <div id="msgFiltroAplicado" class="col-12 ssp-switch-label-message" style="display: none;">
3947 <div class="row no-gutters">
3948 <span class="col-12 ssp-col-lg-without ${mostrarUnidades?then('', 'ml-auto')}">Filtro aplicado com
3949 sucesso. </span>
3950 <span class="col-12 ssp-col-lg-without ${mostrarUnidades?then('', 'mr-auto')}">Confira o
3951 resultado.</span>
3952 </div>
3953 </div>
3954 </div>
3955 </div>
3956 </div>
3957
3958 <div class="ssp-ofertas__box-endereco-unidade ${dNoneSelectUnidade}">
3959 <i class="icon-map-adress"></i>
3960 <a href="" target="_blank" class="ssp-ofertas__endereco-unidade"></a>
3961 </div>
3962
3963 </div>
3964
3965 </section>
3966 </#if>
3967
3968
3969 <!-- EMED -->
3970 <section class="ssp-ofertas-emed__section d-none">
3971
3972 <h2 class="title-section-white" id="titulo-emed"></h2>
3973
3974 <div class="ssp-ofertas-emed__filtro-content container">
3975
3976 <button type="button" value="0010" class="btn btn-filtro btn--filtro-ativo">Turmas - 1º ano</button>
3977
3978 <button type="button" value="0" class="btn btn-filtro">Transferências</button>
3979
3980 </div>
3981
3982 <div class="ssp-ofertas-emed__card-container">
3983
3984 <div class="ssp-slick-ofertas-emed">
3985
3986 </div>
3987
3988 </div>
3989
3990 </section>
3991
3992 <!-- FIM EMED -->
3993
3994 <section id="ssp-section-response" class="ssp-section" style="background: #2a2e43; position: relative;">
3995
3996 <div id="turmas-container">
3997
3998 <div id="informe-novas-turmas">
3999 <div style="display: flex; flex-wrap: nowrap;">
4000
4001 <a class="prev-mobile d-lg-none d-xl-none nextPrevOpacity" href="#">
4002 <i class="fas fa-chevron-left"></i>
4003 </a>
4004
4005 <h2 id="ssp-h3-turmas" class="ssp-section-title ssp-card-oferta-curso__section-title text-capitalize"
4006 style="font-weight: bold;text-transform: uppercase; display: none;">Turmas</h2>
4007
4008 <a href="#" class="next-mobile d-lg-none d-xl-none">
4009 <i class="fas fa-chevron-right"></i>
4010 </a>
4011
4012 </div>
4013
4014
4015 <div class="oferta-slick-area oferta-slick-area--md-bleed slider-container">
4016
4017 </div>
4018 </div>
4019
4020 <#if !isEMED>
4021 <div class="ssp-card-oferta-curso__sem-vaga d-none" style="margin: auto;">
4022
4023 <h2 class="ssp-card-oferta-curso__sem-vaga-title">
4024 Estude com a gente na próxima turma!
4025 </h2>
4026
4027 <p class="ssp-card-oferta-curso__sem-vaga-description">
4028 Registre seu interesse e avisaremos você quando surgirem novas vagas.
4029 </p>
4030 </div>
4031 <#else>
4032
4033 <div class="card-transferencias-emed p-0 d-none emed-transferencias-space">
4034
4035 <div class="slick-area__item">
4036
4037 <div class="ssp-emed__card-slider-transferencias">
4038
4039 <div class="card-slider-body">
4040 <h2 class="ssp-h3">
4041 Confira as regras para solicitar uma transferência
4042 </h2>
4043 <p class="ssp-p-m">As solicitações são enviadas apenas via formulário on-line e para ingresso de
4044 estudantes de 1º e 2º ano.</p>
4045 <p class="ssp-p-m">As vagas são remanescentes e limitadas.</p>
4046 <a href="/ensino-medio-tecnico/transferencias" class="ssp-button btn-transferencia">Saber mais sobre
4047 transferência </a>
4048 </div>
4049 </div>
4050
4051 </div>
4052
4053 </div>
4054
4055 <#if matriculaEMED.aberta>
4056 <div class="sem-vaga-emed container p-0 d-none">
4057 <#else>
4058 <div class="sem-vaga-emed container p-0 d-none emed-transferencias-space">
4059 </#if>
4060 <div>
4061 <div class="col-md-12 col-xs-12 pb-10">
4062
4063 <!--slick slider-->
4064 <div class="slick-area-emed slick-area-emed--md-bleed">
4065
4066 <#if matriculaEMED.aberta>
4067 <div class="slick-area__item">
4068
4069 <div class="ssp-emed__card-slider">
4070
4071 <div class="ssp-emed__card-slider-body">
4072 <h2 class="ssp-emed__section__titleCard">
4073 <i class="fal fa-users-class"></i>
4074 <div><lfr-editable type="rich-text">Turmas</lfr-editable></div>
4075 </h2>
4076 <lfr-editable type="rich-text">
4077 <div class="ssp-emed__section__introCard"><strong>Estude com a gente na próxima
4078 turma!</strong></div>
4079 <div class="ssp-emed__section__textCard">
4080 <span class="texto">
4081 Registre seu interesse e avisaremos você sobre a abertura das inscrições para o próximo
4082 ano.
4083 </span>
4084 <span
4085 class="ssp-emed__iconWrapper animate__animated animate__fadeOutRight animate__infinite"><i
4086 class="fas fa-chevron-right"></i></span>
4087 </div>
4088 </lfr-editable>
4089 </a>
4090 </div>
4091
4092 </div>
4093
4094 </div>
4095
4096 <div class="slick-area__item">
4097
4098 <div class="ssp-emed__card-slider">
4099 <div class="ssp-emed__card-slider-body">
4100
4101 <h2 class="ssp-emed__section__titleCard">
4102 <i class="far fa-envelope"></i>
4103 <div><lfr-editable id="emed-precos-title" type="rich-text">Registro de
4104 Interesse</lfr-editable></div>
4105 </h2>
4106 <lfr-editable id="txt_emed_boleto" type="rich-text">
4107 <div class="ssp-emed__section__introCardCTA">
4108 Quer receber um aviso sobre as turmas do próximo ano?
4109 </div>
4110 </lfr-editable>
4111 </a>
4112 <a class="ssp-emed__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close_10"
4113 id="btnOptin" href="javascript:;">Sim, me avise.</a>
4114 </div>
4115 </div>
4116 </div>
4117 <#else>
4118 <#-- pre inscricao emed -->
4119 <div class="slick-area__item card-pre-inscricao">
4120
4121 <div class="ssp-emed__card-slider">
4122
4123 <div class="ssp-emed__card-slider-body">
4124 <h2 class="ssp-emed__section__titleCard">
4125 <i class="fal fa-users-class"></i>
4126 <div>
4127 <h4 class="ssp-h4" data-lfr-editable-id="ssp-transf-text"
4128 data-lfr-editable-type="rich-text">Confira as datas das próximas turmas</h4>
4129 </div>
4130 </h2>
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;">Inscrições para bolsas</strong></div>
4134 <div class="ssp-emed__section__textCard" style="margin: 0!important;">
4135 <span class="ssp-p-g texto">
4136 A partir de 3/8, às 12h
4137 </span>
4138 </lfr-editable>
4139 <hr style="margin: 24px 0; background: #FFF;" />
4140 <lfr-editable type="rich-text" style="text-align: left;">
4141 <div class="ssp-emed__section__introCard" style="margin: 0;"><strong class="ssp-p-g"
4142 style="font-weight: 700;">Matrículas</strong></div>
4143 <div class="ssp-emed__section__textCard" style="margin: 0!important;">
4144 <span class="ssp-p-g texto">
4145 A partir de 17/8, às 12h
4146 </span>
4147 </div>
4148 </lfr-editable>
4149 </a>
4150 </div>
4151
4152 </div>
4153 <!-- <div class="ssp-emed__card-slider">
4154
4155 <div class="ssp-emed__card-slider-body">
4156 <h2 class="ssp-emed__section__titleCard">
4157 <i class="fal fa-users-class"></i>
4158 <div><lfr-editable id="emed-aulas-title" type="rich-text">Turmas</lfr-editable></div>
4159 </h2>
4160 <lfr-editable id="txt_emed_aulas" type="rich-text">
4161 <div>
4162 <strong>Matrículas e inscrições para bolsas de estudo:</strong><br/>
4163 <span style="font-weight: 400;">
4164 a partir de ${matriculaEMED.dataInicio?split("-")?reverse?join("/")}, às ${matriculaEMED.horaInicio?split(":")?first} horas
4165 <#if matriculaEMED.horaInicio?split(":")?last != "00">
4166 e ${matriculaEMED.horaInicio?split(":")?last} minutos
4167 </#if>
4168 </span>
4169 </div>
4170
4171 <div class="footer-card-card-pre-inscricao">
4172 <strong>
4173 Estude com a gente na próxima turma!<br/>
4174 Esperamos por você!
4175 </strong>
4176 </div>
4177 </lfr-editable>
4178 </a>
4179 </div> -->
4180
4181 </div>
4182
4183 </div>
4184
4185 </#if>
4186
4187 </div>
4188 <!--/slick slider-->
4189
4190 </div>
4191 </div>
4192 </div>
4193
4194 </#if>
4195 <div class="oferta-slick-area_modal">
4196 </div>
4197
4198 <#if manutencao.rodape !="">
4199 <p class="ssp-card-oferta-curso__mensagem-legal">${manutencao.rodape}</p>
4200 <#else>
4201 <#if isEMED>
4202 <p class="ssp-card-oferta-curso__mensagem-legal">O Senac reserva-se o direito de alterar o número de vagas,
4203 datas, horários ou cancelar o programa.</p>
4204 <#else>
4205 <p class="ssp-card-oferta-curso__mensagem-legal">A turma pode ser cancelada ou ter alterações do número de
4206 vagas, datas e horários.</p>
4207 </#if>
4208 </#if>
4209
4210 </div>
4211
4212 <div id="ssp-abrir-pagina-bolsa" class="ssp-card-duvida__bolsa-estudo d-none" style="margin-top: 44px;">
4213
4214 <p>Tem dúvidas sobre bolsas de estudo?</p>
4215 <a href="/bolsas-de-estudo">Saiba como funciona</a>
4216
4217 </div>
4218
4219
4220 </section>
4221
4222 <section id="section-registro-interesse" class="ssp-section-novas-turmas">
4223
4224 <div class="container">
4225
4226 <div class="ssp-aviso-novas-turmas__content">
4227
4228 <!-- <div class="pb-sm-5 pb-md-5" > -->
4229 <div>
4230
4231 <p class="ssp-aviso-novas-turmas__title">Receba um aviso por e-mail se abrirem novas turmas.</p>
4232 <!-- p class="ssp-aviso-novas-turmas__description">Selecione a unidade e registre seu interesse.</p -->
4233
4234 </div>
4235
4236 <!--
4237 <div class="ssp-container__form-select">
4238
4239 <select class="form-control select-large select-registro-interesse" id="select-registro-interesse">
4240 <option value="">Selecione uma unidade</option>
4241 </select>
4242
4243 </div>
4244 -->
4245 <div class="ssp-btn-group__content-teste">
4246
4247 <button type="button" class="btn btn-primary btn-custom" id="btn-aviso-novas-turmas">Registrar
4248 interesse</button>
4249
4250 </div>
4251
4252
4253
4254 </div>
4255
4256
4257 </div>
4258
4259
4260 </section>
4261
4262 <section id="modal-backpack-error" class="ssp-modal-registro-interesse d-none">
4263
4264 <div class="ssp-card-msg-erro">
4265
4266 <div class="ssp-card-msg-sucesso__content">
4267 <i class="fas fa-exclamation-circle" style="color: #ec3a3a;"></i>
4268 <p>Houve um erro ao inserir curso na mochila!</p>
4269 <p>Por favor, tente novamente!</p>
4270 </div>
4271
4272 <div>
4273 <button id="btn-voltar-modal-backpack-error" class="btn btn-nivel ssp-card-msg-sucesso__btn">Voltar</button>
4274 </div>
4275
4276 </div>
4277
4278 </section>
4279
4280 <section id="modal-backpack-success" class="ssp-modal-registro-interesse d-none">
4281
4282 <div class="ssp-modal-mochila-curso">
4283
4284 <div class="ssp-modal-mochila-curso__header">
4285
4286 <button class="modal-btn-close" type="button">
4287
4288 <i class="fal fa-times"></i>
4289
4290 </button>
4291
4292 <h2 class="modal-title">Curso adicionado à mochila!</h2>
4293 <p class="modal-subtitle">Você incluiu na sua mochila de compras o curso
4294 <span id="modal-backpack-success__nome-curso"></span>
4295 </p>
4296
4297 </div>
4298
4299 <div class="ssp-modal-mochila-curso__body">
4300
4301 <p>A sua vaga só é garantida nesta turma quando você finaliza a
4302 compra. Deseja concluir agora?</p>
4303
4304 </div>
4305
4306 <div class="ssp-modal-mochila-curso__block-btn-items block-btn-items">
4307
4308 <a class="btn-finalizar-compra btn-mochila-finalizar-compra-success" href="#">
4309 Finalizar compra
4310 </a>
4311
4312 <button class="btn-continuar-site btn-mochila-continuar-site-success">
4313 Continuar no site
4314 </button>
4315
4316 </div>
4317
4318
4319 </div>
4320
4321 </section>
4322
4323 </#if>
4324
4325 <#if nomeTipoCurso?has_content && nomeTipoCurso?contains("Ensino Médio Técnico")>
4326 <!-- Agende a sua visita -->
4327 <#assign searchImpl=serviceLocator.findService("br.senac.search.api.Search") />
4328 <#assign articles=searchImpl.search("EMED - Agende sua visita", {}, themeDisplay.getCompanyId(),
4329 themeDisplay.getScopeGroupId(), themeDisplay.getUserId(), false) />
4330
4331 <section id="ssp-emed-visita-sector">
4332 <div class="container py-5 pt-lg-0" style="display:none;">
4333 <div data-emed="ssp-emed-visita-wrapper" class="ssp-emed-visita-wrapper">
4334 <#list articles![] as article>
4335 <#assign document=saxReaderUtil.read(article.getContent()) />
4336 <#assign rootElement=document.getRootElement() />
4337
4338 <#assign xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='textoDoBotao' ]")
4339 textoDoBotao=xPathSelector.selectSingleNode(rootElement).getStringValue()
4340 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='linkBotao' ]")
4341 linkBotao=xPathSelector.selectSingleNode(rootElement).getStringValue()
4342 xPathSelector=saxReaderUtil.createXPath("dynamic-element[@field-reference='ativarBotao' ]")
4343 ativarBotao=xPathSelector.selectSingleNode(rootElement).getStringValue() />
4344
4345 <#if ativarBotao?trim=="true">
4346 <script>$('#ssp-emed-visita-sector').children().show()</script>
4347 <div data-emed="ssp-emed-visita-text" class="ssp-emed-visita-text">
4348
4349 <a href="${linkBotao}">${textoDoBotao}</a>
4350
4351 </div>
4352 <div class="ssp-emed-visita-icon">
4353 <i class="fas fa-route"></i>
4354 </div>
4355 </#if>
4356 </#list>
4357 </div>
4358 </div>
4359 </section>
4360
4361
4362 <!-- Como me matricular EMED -->
4363
4364 <section class="ssp-como-me-matricular__section">
4365
4366 <h2 class="title-section-white">Como me matricular?</h2>
4367
4368 <div class="container">
4369
4370 <div class="ssp-como-me-matricular__passo-passo-card">
4371
4372 <div class="item-passo">
4373 <img class="item-passo-icone" src="/o/senac-theme/images/icon-escolha-curso.svg" alt="">
4374 <p class="item-passo-title">Escolha o curso</p>
4375 <span>Selecione o curso, a unidade do seu interesse e confira as turmas disponíveis.</span>
4376 </div>
4377
4378 <img class="item-passo-icone-seta" src="/o/senac-theme/images/icon-seta-passo.svg" alt="">
4379
4380 <div class="item-passo">
4381 <img class="item-passo-icone" src="/o/senac-theme/images/icon-realize-inscricao.svg" alt="">
4382 <p class="item-passo-title">Adicione à Mochila</p>
4383 <span>Faça login ou crie uma conta em nosso site e continue a compra.</span>
4384 </div>
4385
4386 <img class="item-passo-icone-seta" src="/o/senac-theme/images/icon-seta-passo.svg" alt="">
4387
4388 <div class="item-passo">
4389 <img class="item-passo-icone" src="/o/senac-theme/images/icon-aguarde-contato.svg" alt="">
4390 <p class="item-passo-title">Faça a matrícula</p>
4391 <span>Todas as etapas são on-line. Para garantir a vaga, preencha todas as informações.</span>
4392 </div>
4393
4394 </div>
4395
4396
4397 </div>
4398
4399 </section>
4400
4401 </#if>
4402
4403
4404 <section class="ssp-section ssp-section-lg-bottom-slider d-none" id="section-cursos-voce-pode-gostar"
4405 style="background-color: #f2f2f2">
4406 <div class="ssp-container-large">
4407 <h2 class="ssp-section-title">
4408 Cursos que você pode gostar
4409 </h2>
4410 </div>
4411 <div id="slider-curso"></div>
4412 </section>
4413
4414
4415 <#-- Section para o item de curso-->
4416 <div id="curso-item-template" class="d-none slick-area__item">
4417
4418 <div class="ssp-card-curso" style="height: 288px;">
4419
4420 <a class="ssp-absolute-link ck-curso" href="#a"></a>
4421
4422 <div class="ssp-card-curso__image">
4423
4424 <div class="ssp-image-container">
4425 <img src="" />
4426
4427 </div>
4428
4429 </div>
4430
4431 <div class="ssp-card-curso__body">
4432
4433 <div class="ssp-card-curso__color-tag-modalidade"></div>
4434
4435 <div class="ssp-card-curso__tags">
4436
4437 <span class="ssp-card-curso__tag-formato-title"></span>
4438
4439 <span class="tag-modalidade-title__senac-online d-none">Senac Online - ao vivo</span>
4440
4441 </div>
4442
4443 <h6 class="ssp-card-curso__title">
4444
4445 </h6>
4446
4447 <div class="ssp-card-curso__info">
4448
4449 <span
4450 class="ssp-tag bg-white border-nivel-extensao text-nivel-extensao mr-1 btn-inscricoes-abertas">Inscrições
4451 abertas</span>
4452 <span class="ssp-tag bg-white border-primary text-primary btn-bolsas">Bolsas</span>
4453
4454 </div>
4455
4456 </div>
4457
4458 </div>
4459
4460 </div>
4461
4462 <#function getJournalArticle>
4463
4464
4465 <#assign
4466 journalArticleService=serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService") />
4467 <#assign friendlyURL=themeDisplay.getURLCurrent()?split("/")?last?split("?")?first>
4468 <#assign groupId=themeDisplay.getSiteGroupId()>
4469 <#attempt>
4470
4471 <#if !friendlyURL?contains("fragment_collections")>
4472
4473 <#return journalArticleService.getArticleByUrlTitle(groupId,friendlyURL)>
4474 <#else>
4475
4476 <#return '#erro#'>
4477 </#if>
4478
4479 <#recover>
4480
4481 <#return '#erro#'>
4482 </#attempt>
4483 </#function>
4484
4485 <#function getCategorias primaryKey>
4486
4487 <#assign
4488 categoryService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") />
4489 <#attempt>
4490
4491 <#return categoryService.getCategories("com.liferay.journal.model.JournalArticle", primaryKey)>
4492
4493 <#recover>
4494
4495 <#return '#erro#'>
4496 </#attempt>
4497 </#function>
4498
4499 <#function getVocabulary vocabularyId>
4500
4501 <#assign
4502 vocabularyService=serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyService") />
4503 <#attempt>
4504
4505 <#return vocabularyService.getVocabulary(vocabularyId)>
4506
4507 <#recover>
4508
4509 <#return '#erro#'>
4510 </#attempt>
4511 </#function>
4512
4513 <#function getStringValue dom name>
4514 <#assign seletorSTR="dynamic-element[@field-reference='" +name+"']"
4515 xPathSelector=saxReaderUtil.createXPath(seletorSTR) />
4516 <#if xPathSelector.selectSingleNode(dom)??>
4517 <#assign valueSTR=xPathSelector.selectSingleNode(dom).getStringValue()?trim />
4518 <#return valueSTR>
4519 </#if>
4520 <#return ''>
4521 </#function>
4522
4523
4524
4525 <!-- modal registro interesse -->
4526
4527
4528 <section id="modal-registro-interesse" class="ssp-modal-registro-interesse d-none">
4529
4530 <#if !isEMED>
4531 <div class="ssp-card-registro-interesse">
4532
4533 <i id="btn-close-Modal-registro-interesse" class="fas fa-times btn-close__modal-login"></i>
4534
4535 <p class="ssp-card-registro-interesse__label-curso-selecionado">Curso selecionado:</p>
4536 <h3 class="ssp-card-registro-interesse__nome-curso"></h3>
4537
4538 <div id="unidades-registro-interesse">
4539
4540 <h4 class="ssp-card-registro-interesse__title-section-itens">Unidade:</h4>
4541
4542 <div id="select-unidades-registro-interesse">
4543 <select class="ssp-card-registro-interesse__select unidades" id="select_0">
4544 <option value="" disabled="" selected="">Selecione uma unidade</option>
4545 </select>
4546 </div>
4547
4548 <div class="ssp-card-registro-interesse__add-mais">
4549 <a class="" id="add-unidade-regsitro-interesse" href="#a"><i class="fas fa-plus mr-1"></i>Adicionar
4550 unidade</a>
4551
4552
4553
4554 <a class="" id="remove-unidade-regsitro-interesse" href="#a"><i class="fas fa-times mr-1"></i>Remover
4555 unidade</a>
4556 </div>
4557
4558 </div>
4559
4560 <div id="dias-registro-interesse">
4561 <h4 class="ssp-card-registro-interesse__title-section-itens text-center">Dias da Semana</h4>
4562
4563 <div class="ssp-card-registro-interesse__week-content">
4564 <span id="todosDias" class="ssp-week-day">Todos</span>
4565 <span class="ssp-week-day">Seg</span>
4566 <span class="ssp-week-day">Ter</span>
4567 <span class="ssp-week-day">Qua</span>
4568 <span class="ssp-week-day">Qui</span>
4569 <span class="ssp-week-day">Sex</span>
4570 <span class="ssp-week-day">Sab</span>
4571 </div>
4572
4573 </div>
4574
4575 <div id="periodo-registro-interesse">
4576
4577 <h4 class="ssp-card-registro-interesse__title-section-itens text-center">Período:</h4>
4578
4579 <div class="ssp-card-registro-interesse__check-itens-content periodos-registro-interesse">
4580
4581 <div class="ssp-card-registro-interesse__check-item" id="div-campo-todos">
4582 <input type="checkbox" name="" value="" id="check-todos-periodos">
4583 <label for="check-todos-periodos">Todos</label>
4584 </div>
4585
4586 <div class="ssp-card-registro-interesse__check-item">
4587 <input type="checkbox" name="" value="M" id="periodo-m">
4588 <label for="periodo-m">Manhã</label>
4589 </div>
4590
4591 <div class="ssp-card-registro-interesse__check-item">
4592 <input type="checkbox" name="" value="T" id="periodo-t">
4593 <label for="periodo-t">Tarde</label>
4594 </div>
4595
4596 <div class="ssp-card-registro-interesse__check-item">
4597 <input type="checkbox" name="" value="N" id="periodo-n">
4598 <label for="periodo-n" "="">Noite</label>
4599 </div>
4600
4601
4602 </div>
4603
4604 </div>
4605
4606 <div class=" ssp-card-registro-interesse__card-politica">
4607
4608
4609 </div>
4610
4611 <div class="ssp-card-registro-interesse__check-item">
4612 <input type="checkbox" name="" value="" id="check-politica-privacidade">
4613 <label for="check-politica-privacidade">Aceito a Política de Privacidade</label>
4614 </div>
4615
4616 <div class="text-center mt-5">
4617
4618 <button class="btn btn-nivel ssp-card-registro-interesse__btn-enviar btn-with-loading" href="#a"
4619 id="enviar-registro-interesse-btn" disabled="disabled">Enviar</button>
4620
4621 <p class="ssp-card-registro-interesse__aviso"><strong>Importante:</strong> O registro de interesse não
4622 garante a vaga.</p>
4623
4624 </div>
4625
4626 </div>
4627
4628 <#else>
4629
4630 <div class="ssp-card-registro-interesse emed">
4631
4632 <i id="btn-close-Modal-registro-interesse" class="fas fa-times btn-close__modal-login"></i>
4633
4634 <p class="ssp-card-registro-interesse__label-curso-selecionado">Curso selecionado:</p>
4635
4636 <div class="emed-select-group">
4637
4638 <h3 class="ssp-card-registro-interesse__title-modal"></h3>
4639
4640 <div id="unidades-registro-interesse">
4641
4642 <h4 class="ssp-card-registro-interesse__title-section-itens">Escolha uma unidade</h4>
4643
4644 <div id="select-unidades-registro-interesse">
4645 <select class="ssp-card-registro-interesse__select unidades" id="select_0">
4646 <option value="" disabled="" selected="">Selecione uma unidade</option>
4647 </select>
4648 </div>
4649
4650 <div class="ssp-card-registro-interesse__add-mais">
4651 <a class="" id="add-unidade-regsitro-interesse" href="#a"><i
4652 class="fas fa-plus mr-1"></i>Adicionar unidade</a>
4653
4654
4655
4656 <a class="" id="remove-unidade-regsitro-interesse" href="#a"><i
4657 class="fas fa-times mr-1"></i>Remover unidade</a>
4658 </div>
4659
4660 </div>
4661
4662 </div>
4663
4664
4665 <div id="periodo-registro-interesse">
4666
4667 <p class="ssp-card-registro-interesse__title-section-itens">Período:</p>
4668
4669 <div class="ssp-card-registro-interesse__check-itens-content periodos-registro-interesse">
4670 <div class="ssp-card-registro-interesse__check-item">
4671 <input type="checkbox" name="" value="M" id="periodo-m">
4672 <label for="periodo-m">Manhã</label>
4673 </div>
4674
4675 <div class="ssp-card-registro-interesse__check-item">
4676 <input type="checkbox" name="" value="T" id="periodo-t">
4677 <label for="periodo-t">Tarde</label>
4678 </div>
4679
4680 <div class="ssp-card-registro-interesse__check-item" id="div-campo-todos">
4681 <input type="checkbox" name="" value="" id="check-todos-periodos">
4682 <label for="check-todos-periodos">Todos</label>
4683 </div>
4684
4685 </div>
4686
4687 </div>
4688
4689 <div id="turmas-registro-interesse">
4690
4691 <p class="ssp-card-registro-interesse__title-section-itens">Turma:</p>
4692
4693 <div class="ssp-card-registro-interesse__check-itens-content turmas-registro-interesse">
4694
4695 <div class="ssp-card-registro-interesse__check-item">
4696 <input type="checkbox" name="" value="1" id="primeiro">
4697 <label for="primeiro">1º ano</label>
4698 </div>
4699
4700 <div class="ssp-card-registro-interesse__check-item">
4701 <input type="checkbox" name="" value="2" id="segundo">
4702 <label for="segundo">2º ano</label>
4703 </div>
4704
4705 <div class="ssp-card-registro-interesse__check-item">
4706 <input type="checkbox" name="" value="3" id="terceiro">
4707 <label for="terceiro">3º ano</label>
4708 </div>
4709
4710 </div>
4711
4712 </div>
4713
4714 <div id="msg-transferencia-emed">
4715
4716 <div class="transferencia-emed-title">
4717 <i class="fas fa-comment-exclamation"></i>
4718 <p>Quer se transferir de escola?</p>
4719 </div>
4720
4721 <div class="transferencia-emed-link">
4722 <a href="#">Fale direto com a unidade de interesse.</a>
4723 </div>
4724
4725 </div>
4726
4727 <div class="ssp-card-registro-interesse__card-politica">
4728
4729 </div>
4730
4731 <div class="ssp-card-registro-interesse__check-item">
4732 <input type="checkbox" name="" value="" id="check-politica-privacidade">
4733 <label for="check-politica-privacidade">Aceito a Política de Privacidade</label>
4734 </div>
4735
4736 <div class="text-center mt-5">
4737
4738 <button class="btn btn-nivel ssp-card-registro-interesse__btn-enviar btn-with-loading" href="#a"
4739 id="enviar-registro-interesse-btn" disabled="disabled">Enviar</button>
4740
4741 <p class="ssp-card-registro-interesse__aviso"><strong>Importante:</strong> O registro de interesse não
4742 garante a vaga.</p>
4743
4744 </div>
4745
4746 </div>
4747
4748 </#if>
4749 </section>
4750
4751 <section id="modal-registro-interesse-sucesso" class="ssp-modal-registro-interesse d-none">
4752
4753 <div class="ssp-card-msg-sucesso">
4754
4755 <div class="ssp-card-msg-sucesso__content">
4756 <i class="fas fa-exclamation-circle"></i>
4757 <p>Obrigado por registrar seu interesse!</p>
4758 <p>Acompanhe seu e-mail para ficar por dentro das novidades!</p>
4759 </div>
4760
4761 <div>
4762 <a class="btn btn-nivel ssp-card-msg-sucesso__btn" href="#" id="btn-voltar-home">Voltar para a home</a>
4763 </div>
4764
4765 </div>
4766
4767 </section>
4768
4769 <section id="modal-registro-interesse-erro" class="ssp-modal-registro-interesse d-none">
4770
4771 <div class="ssp-card-msg-erro">
4772
4773 <div class="ssp-card-msg-sucesso__content">
4774 <i class="fas fa-exclamation-circle" style="color: #ec3a3a;"></i>
4775 <p>Houve um erro ao registrar seu interesse!</p>
4776 <p>Por favor, tente novamente!</p>
4777 </div>
4778
4779 <div>
4780 <a class="btn btn-nivel ssp-card-msg-sucesso__btn" href="#">Voltar para a home</a>
4781 </div>
4782
4783 </div>
4784
4785 </section>
4786
4787 <!-- Aviso para curso de aprendizagem -->
4788
4789 <div id="aviso-curso-aprendizagem" class="ssp-bolsa-formulario__card-aviso-atencao d-none" style="width: 100%;">
4790
4791 <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i>
4792
4793 <div class="ssp-bolsa-formulario__card-aviso-texto">
4794 <p>Para contratar aprendiz, preencha o formulário e entraremos em contato.</p>
4795 </div>
4796
4797 </div>
4798
4799 <!-- modal form de aprendizagem -->
4800
4801 <#if isAprendizagem>
4802
4803 <#assign resources=themeDisplay.getPortalURL() />
4804 <link href="${resources}/documents/d/global/css-formulario-aprendizagem" rel="stylesheet" type="text/css">
4805
4806 <dialog id="modal-form" class="ssp-modal-ds">
4807
4808 <button type="button" data-modal="close-form-modal">
4809 Fechar
4810 <i class="fas fa-times"></i>
4811 </button>
4812
4813 </dialog>
4814
4815 </#if>
4816
4817 <div id="avisoTrampolim" class="ssp-bolsa-formulario__card-aviso-atencao container text-left d-none"
4818 style="width: 100%;">
4819 <i class="fas fa-exclamation-circle ssp-bolsa-formulario__card-aviso-atencao-icon" aria-hidden="true"></i>
4820 <div class="ssp-bolsa-formulario__card-aviso-texto">
4821 <p>Para informações sobre preço do curso e matrícula, entre em contato a unidade.</p>
4822 </div>
4823
4824 </div>
4825
4826
4827 <!--modal forma pagto extensao-->
4828 <section id="modalFormaPagtoExt" class="modal-extensao ssp-modal">
4829 <div class="modal-extensao_content">
4830 <i class="fas fa-undo modal-extensao-voltar-icon"><span class="modal-extensao-voltar-txticon">Voltar</span></i>
4831 <h1 class="modal-extensao-condicoes__title">Descontos e Parcelamento</h1>
4832 <div class="row">
4833
4834 <!-- <button class="btn-preco-padrao d-xs-flex d-sm-flex d-lg-none d-xl-none">
4835 Preço Padrão
4836 <i class="fas fa-chevron-right custom-icon-right"></i>
4837 </button> -->
4838
4839 <div class="col-lg-6 col-sm-12 col-xs-12">
4840
4841 <h2 class="modal-extensao_subtitle">Investimento</h2>
4842
4843 <span class="modal-extensao_preco">R$ <span class="precoVendaOferta"></span></span>
4844 <span class="modal-extensao_txteconomiza">.<b class="modal-extensao_txtverde"></b></span>
4845 <div class="modal-extensao_ctboleto pt-2 pb-2 mb-3">
4846 <i class="fas fa-barcode" aria-hidden="true"></i>
4847 <span class="modal-extensao_txtPag">Boleto Bancário</span>
4848 <span class="modal-extensao_txtParcela"><b><span class="numParcelaBoleto"></span>x de R$ <span
4849 class="precoParcelaBoleto"></span></b></span>
4850 <span class="modal-extensao_txtParcela">sem juros</span>
4851 </div>
4852 <div class="modal-extensao_ctcard pt-2 pb-2 mb-3">
4853 <i class="far fa-credit-card" aria-hidden="true"></i>
4854 <span class="modal-extensao_txtPag">Cartão de Crédito</span>
4855 <span class="modal-extensao_txtParcela"><b><span class="numParcelaCartoes"></span>x de R$ <span
4856 class="precoParcelaCartoes"></span></b></span>
4857 <span class="modal-extensao_txtParcela">sem juros</span>
4858 </div>
4859 <p class="modal-extensao_txtParcela pt-5"><b>À vista:</b> R$ <span class="precoAVistaPadraoExt"></span>
4860 <span class="modal-extensao_txtporcent">(-8%)</span>
4861 </p>
4862 </div>
4863
4864 <!-- <hr class="ssp-divisor d-xs-block d-sm-block d-lg-none d-xl-none"> -->
4865
4866 <!-- <button class="btn-preco-ex-aluno d-xs-flex d-sm-flex d-lg-none d-xl-none">
4867 Preço para Contribuintes,<br>alunos e ex-alunos*
4868 <i class="fas fa-chevron-right custom-icon-right"></i>
4869 </button> -->
4870
4871 <div class="col-lg-6 col-sm-12 col-xs-12">
4872 <h2 class="modal-extensao_subtitle mt-4">Valor com 20% de desconto para alunos, ex-alunos e contribuintes
4873 Senac</h2>
4874 <span class="modal-extensao_preco">R$ <span class="precoContrExt"></span></span>
4875 <span class="modal-extensao_txteconomiza">Você economiza <b class="modal-extensao_txtverde">R$ <span
4876 class="economiaExt"></span> (-20%)</b></span>
4877 <div class="modal-extensao_ctboleto pt-2 pb-2 mb-3">
4878 <i class="fas fa-barcode" aria-hidden="true"></i>
4879 <span class="modal-extensao_txtPag">Boleto Bancário</span>
4880 <span class="modal-extensao_txtParcela"><b><span class="numParcelaBoleto"></span>x de R$ <span
4881 class="precoParcelaBoletoExt"></span></b></span>
4882 <span class="modal-extensao_txtParcela">sem juros</span>
4883 </div>
4884 <div class="modal-extensao_ctcard pt-2 pb-2 mb-3">
4885 <i class="far fa-credit-card" aria-hidden="true"></i>
4886 <span class="modal-extensao_txtPag">Cartão de Crédito</span>
4887 <span class="modal-extensao_txtParcela"><b><span class="numParcelaCartoes"></span>x de R$ <span
4888 class="precoParcelaCartoesExt"></span></b></span>
4889 <span class="modal-extensao_txtParcela">sem juros</span>
4890 </div>
4891 <p class="modal-extensao_txtParcela pt-5"><b>À vista:</b> R$ <span class="precoAVistaContrExt"></span> <span
4892 class="modal-extensao_txtporcent">(-8%)</span></p>
4893 </div>
4894 <div class="col-lg-6 col-sm-12 col-xs-12">
4895 <a target="_blank" href="#">
4896 <button class="btn modal-extensao__btn mt-3 text-uppercase">Comprar</button>
4897 </a>
4898 </div>
4899 <div class="col-lg-6 col-sm-12 col-xs-12">
4900 <button class="btn btn-primary modal-extensao-btn-conheca mt-3">Conheça os descontos</button>
4901 </div>
4902 </div>
4903 </div>
4904
4905 <div class="modal-extensao_content modal-pergunta-aluno-ext d-none">
4906
4907 <i class="fal fa-times modal-extensao-voltar-icon" style="font-size:25px;"></i>
4908 <h1 class="modal-extensao-condicoes__title">Você é nosso aluno?</h1>
4909 <div class="row">
4910 <div class="col-6 text-right">
4911
4912 <button class="btn btn-primary modal-extensao-btn-aluno-sim-nao sim mt-3">Sim</button>
4913
4914 </div>
4915 <div class="col-6 text-left">
4916
4917 <button class="btn btn-primary modal-extensao-btn-aluno-sim-nao nao mt-3">Não</button>
4918
4919 </div>
4920 </div>
4921 <div class="row d-none msg-alunoSim">
4922 <div class="col-12 text-center mt-10">
4923 <i class="fas fa-check-circle modal-extensao-ico-check"></i>
4924 <h2 class="modal-extensao-condicoes__subtitle">Boa notícia!</h2>
4925 <p class="modal-extensao-aluno_txtcontent">Você tem 20% de desconto neste curso.<br> Faça seu login e
4926 preencha os dados solicitados.</p>
4927 <p class="mb-0">
4928 <a target="_blank" href="#">
4929 <button class="btn modal-extensao-aluno__btn ok mt-3">Fazer Inscrição</button>
4930 </a>
4931 </p>
4932 <p class="mt-0">
4933 <a href="https://www.sp.senac.br/descontos-e-parcelamentos/pos-e-extensao-universitaria">
4934 <button class="btn btn-primary modal-extensao-btn-conferir mt-3" id="btn-conferir-regras">Conferir
4935 Regras</button>
4936 </a>
4937 </p>
4938 </div>
4939 </div>
4940 <div class="row d-none msg-alunoNao">
4941 <div class="col-12 text-center mt-10">
4942 <i class="fas fa-percentage modal-extensao-ico-percent"></i>
4943 <h2 class="modal-extensao-condicoes__subtitle">Poxa! Não fique triste...</h2>
4944 <p class="modal-extensao-aluno_txtcontent">Você não tem direito ao desconto de 20% neste curso. Mas você tem
4945 direito ao desconto de pontualidade (melhorar texto)</p>
4946 <p class="mb-0">
4947 <a target="_blank" href="#">
4948 <button class="btn modal-extensao-aluno__btn not mt-3">Fazer Inscrição</button>
4949 </a>
4950 </p>
4951 <p class="mt-0">
4952 <a href="https://www.sp.senac.br/descontos-e-parcelamentos/pos-e-extensao-universitaria">
4953 <button class="btn btn-primary modal-extensao-btn-conferir mt-3" id="btn-conferir-regras">Conferir
4954 Regras</button>
4955 </a>
4956 </p>
4957 </div>
4958 </div>
4959 </div>
4960 </section>
4961
4962
4963 <!-- Modal Descontos e Parcelamento EMED -->
4964 <div id="modalPagtoEmed" class="ssp-modal">
4965
4966 <div class="ssp-card-modal-forma-pagamento">
4967
4968 <div class="ssp-card-modal-forma-pagamento__header">
4969 <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold text-center" style="color:#454F63">
4970 Descontos e parcelamentos</h6>
4971 <div class="ssp-modal-emed-btfechar">
4972 <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_0"></i>
4973 <span>Fechar</span>
4974 </div>
4975 </div>
4976
4977 <div class="ssp-card-modal-forma-pagamento__body">
4978
4979 <p class="ssp-modal-emed-info-valor-matricula"><span class="ssp-modal-emed-info-txt-matricula">1ª parcela de
4980 R$ <span class="precoParcelaEmedModal"></span> <span>+ <span class="numParcelaEmedModal"></span>
4981 mensalidades de R$ <span class="precoParcelaEmedModal"></span></span></p>
4982
4983 <p class="ssp-card-modal-forma-pagamento__valor-desconto ssp-modal-emed-valor-total-txt"> <span
4984 class="ssp-modal-emed-txtValor">Valor total:</span> <span
4985 class="precoVendaOferta ssp-modal-emed-valor-total">R$ 414,40</span>
4986 <span class="ssp-card-modal-emed-ano">/ano</span>
4987 </p>
4988
4989 <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito text-center" style="border-bottom: 0px;"><i
4990 class="fas fa-badge-percent"></i> <span class="txt-pague-vista">Pague à vista e</span> <span
4991 class="txt-ganhe-mais" style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
4992 <div class="ssp-card-modal-emed-lineou"><span>ou</span></div>
4993
4994 <small class="ssp-card-oferta-curso__title-item font-weight-bold"
4995 style="margin:0;font-size:14px;text-align: center;">Ganhe fôlego: parcele seu curso!</small>
4996
4997 <div class="ssp-card-modal-forma-pagamento__tipos">
4998
4999 <div
5000 class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos"
5001 style="margin:0 auto">
5002 <i class="ssp-card-modal-forma-pagamento__icon-boleto-cartao"></i>
5003 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5004 <p><strong>Pix + Boleto Bancário</strong></p>
5005 <p>1ª parcela no Pix</p>
5006 <p>Valor restante em <span>até <span class="numParcelaCartoesBoleto"></span>x de <br>R$ <span
5007 class="precoParcelaCartoesBoleto"></span></span> sem juros no boleto</p>
5008 </div>
5009 </div>
5010
5011 <div
5012 class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos"
5013 style="margin:0 auto">
5014 <i class="ssp-card-modal-forma-pagamento__icon-boleto-cartao"></i>
5015 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5016 <p><strong>Cartão de Crédito +</strong></p>
5017 <p><strong>Boleto Bancário</strong></p>
5018 <!-- <p>1ª parcela em <span>até 4x de R$ <span class="valorParcelaEntradaCartoesBoleto">265,50</span></span> sem juros no cartão</p> -->
5019 <p>1ª parcela no cartão</p>
5020 <p>Valor restante em <span>até <span class="numParcelaCartoesBoleto"></span>x de <br>R$ <span
5021 class="precoParcelaCartoesBoleto"></span></span> sem juros no boleto</p>
5022 </div>
5023 </div>
5024
5025 <div
5026 class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4 ssp-card-modal-emed-centralizaPagtos"
5027 style="margin:0 auto" id="content_boleto_0">
5028 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
5029 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5030 <p><strong>Boleto Bancário</strong></p>
5031 <p>Em até <span><span class="numParcelaBoleto">12</span>x de R$ <span
5032 class="precoParcelaBoleto">34,53</span></span> sem juros</p>
5033 </div>
5034 </div>
5035
5036 <div
5037 class="ssp-card-modal-forma-pagamento__tipos-content align-items-start ssp-card-modal-emed-centralizaPagtos"
5038 style="margin:0 auto">
5039 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
5040 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5041 <p><strong>Cartão de Crédito</strong></p>
5042 <p>(<span class="textoCartoesAceitos">Mastercard, Visa, Elo, American Express, Hipercard</span>)</p>
5043 <p>Em até <span><span class="numParcelaCartoes">12</span>x de R$ <span
5044 class="precoParcelaCartoes">34,53</span></span> sem juros</p>
5045 </div>
5046 </div>
5047
5048 <div
5049 class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4 ssp-card-modal-emed-centralizaPagtos"
5050 style="margin:0 auto" id="content_boleto_0">
5051 <i class="fa-brands fa-pix" style="margin-right:15px;font-size:18px"></i>
5052 <div class="ssp-card-modal-forma-pagamento__info-cartao">
5053 <p><strong>Pix</strong></p>
5054 <p>Valor total à vista com desconto</p>
5055 </div>
5056 </div>
5057
5058 <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito ssp-modal-emed-boxoito"
5059 data-info="data-para-matricula" style="margin:16px 0"><span
5060 class="ssp-card-modal-emed-valorObs obsspan"><i class="fas fa-exclamation-circle"></i>As vagas são
5061 limitadas e por ordem de chegada!</span>Garanta seu lugar! Matricule-se agora.</p>
5062
5063 <p class="txt-desconto-oito ssp-modal-emed-txt-desconto-oito ssp-card-modal-emed-boxDesconto"
5064 data-info="msg-20-desconto"><strong>E você ainda tem</strong><span style="color:#FC7834;font-weight:bold">
5065 20% desconto na mensalidade se:</span><br>
5066 - Estuda ou estudou no Senac<br>
5067 - É dependente de quem trabalha em empresa contribuinte do Senac<br>
5068 - Estuda ou estudou na rede pública de ensino
5069 </p>
5070
5071 </div>
5072
5073 </div>
5074
5075
5076 <a href="#a" class="btn btn-lg w-100 ssp-btn-emed__voltar-curso" style="margin-top: 20px;font-weight:600" id=""
5077 data-espaco-ex="true" data-unidade="" data-evento="" data-destino-compra="" data-index=""><span
5078 class="">Voltar para página do curso</span></a>
5079
5080
5081
5082 </div>
5083 </div>
5084
5085 <#if isEMED>
5086 <div id="modalAntesCompraEmed" class="ssp-modal">
5087 <div class="ssp-modal-local-realizacao">
5088 <div class="ssp-modal-local-realizacao__title-content">
5089 <h6 class="ssp-modal-local-realizacao__title" style="padding-left:10%;">IMPORTANTE!</h6>
5090 <i class="ssp-card-modal-antes-compra__btn-close ssp-card-modal-forma-pagamento__btn-close"></i>
5091 </div>
5092 <div class="ssp-modal-local-realizacao__texto">
5093 <p class="texto-modal-emed textoEmedModalAntesCompra0010 d-none">
5094
5095 Esta matrícula é válida apenas para a compra do curso de acordo com a escola e o horário já
5096 selecionados.<br />
5097
5098 </p>
5099 <p class="texto-modal-emed textoEmedModalAntesCompra0010Espera d-none">
5100
5101 Saiba como funciona a inscrição para a lista de espera:<br /><br />
5102 - É válida somente para a <b>compra do curso</b><br />
5103 - Não garante vaga para o estudante<br />
5104 - É válida apenas para o curso, horário e escola selecionados<br />
5105 - Caso surjam vagas, você receberá um e-mail para fazer a matrícula<br />
5106
5107 </p>
5108 <p class="texto-modal-emed textoEmedModalAntesCompra0020e0030 d-none">
5109
5110 - Essa inscrição é para uma lista de espera de transferência para 2º ou 3º ano do Ensino Médio Técnico,
5111 por isso, ao realizá-la não garantimos a vaga<br /><br />
5112 - A inscrição só pode ser solicitada para quem deseja estudar no Senac realizando a compra do
5113 curso<br /><br />
5114 - Se a turma escolhida tiver vagas, você receberá um e-mail com orientações sobre a entrega de documentos
5115 e as formas de pagamento para efetivar a transferência
5116
5117 </p>
5118 <div class="btn ssp-modal-local-realizacao__btn-content">
5119 <button class="btn btn-lg btn-success w-100 mt-3" offercode="" id="btnCompraLocalEmed">Continuar para
5120 compra</button>
5121 <a class="ssp-modal-local-realizacao__btn btn btn-lg w-100 mt-3 ssp-card-modal-selecionar-outro__btn-close"
5122 href="#a">Voltar para o curso</a>
5123 </div>
5124 </div>
5125 </div>
5126 </div>
5127
5128 </#if>
5129
5130
5131
5132
5133 <script>
5134 let showedFilters = false
5135 var groupId = themeDisplay.getScopeGroupId();
5136
5137 var urlSearchCursosPorCategory = '/o/senac-curso-services/cursosPorCategoryIds/{groupId}?categoryIds={categoryId}&start=0&end={limit}';
5138
5139 var urlSearchOferta = '/o/senac-oferta-services/ofertasPorCategoryIds/' + groupId
5140
5141 var urlSearchUnidade = '/o/senacsearch/Unidade/{companyId}/{groupId}/{userId}?q=codigoUnidade_pt_BR:{codigoUnidade}';
5142 var urlUnidadeInfoDetalhe = '/o/senac-content-services/unidadeInfoDetalhe/{companyId}/{codigoUnidade}';
5143 var urlSearchCursoInfo = '/o/senac-content-services/cursosInfoDetalhe/{groupId}/{cursosInfo}?inscricaoAberta={inscricaoAberta}&bolsaAberta={bolsaAberta}&buscarUnidadesComOferta={buscarUnidadesComOferta}';
5144 var urlRegistroInteresse = '/o/senac-content-services/registroInteresse/';
5145 var urlRegistroInteresseEmailInteressado = '/o/senac-content-services/envioEmailRegistroInteresse/';
5146 var cntSelectUnidades = 1;
5147 var urlPlanoCurso = 'https://www.sp.senac.br/jsp/includeMatdid.jsp?file=/ha1shared/projects/matdid/{codigoFT}-{dataEfetiva}.html';
5148 var urlGetServerT = '/o/senac-content-services/getServerTime';
5149 var todayG = null;
5150 var serverDateRequest = null;
5151 var codigoFTCursoAprendizagem = 18984;
5152 var globalGroupId = Liferay.ThemeDisplay.getCompanyGroupId();
5153 var isAoVivo = 0;
5154 var nomeFormatoAoVivoDxp = 'Senac Online - ao vivo';
5155 var ofertaUnidadeMap = new Map();
5156 var ultimaUnidade = 0;
5157 var regIndex = new RegExp('\{index\}', 'g');
5158 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';
5159 var carregouUltimaOferta = false;
5160 var ofertasMap = new Map();
5161 var codUnidadeSenacAoVivo = '108';
5162 var ofertasComBolsa = false;
5163
5164 //funcao para pegar host do ambiente, se eh teste ou prod (utilizado no servico da bolsa)- 9546
5165 function getServiceEnvironmentHost() {
5166 if (!isAmbienteTeste())
5167 return window.location.origin
5168 else
5169 return 'https://gesportal.sp.senac.br'
5170 }
5171
5172 var hostBolsa = getServiceEnvironmentHost()
5173
5174 // Montar object push - google tag manager - 1
5175 let itensEcommerce = null;
5176 let ofertaSelecionada = null;
5177
5178 const today = new Date;
5179
5180 //categoryId -> cod unidade
5181 var mapUnidadesIds = new Map();
5182 var objsTela = {
5183 unidades: [],
5184 unidadesRegistroInteresse: [],
5185 categoriesIds: [],
5186 ofertasAoVivoTodasUnidades: [],
5187 primeiroChange: true
5188 };
5189 var startOfertaParam = 0;
5190 var endOfertaParam = 25;
5191
5192 var ehCursoTrampolim = false;
5193
5194 const isHibrido = $('input[name="formato"]').data('formato') === 'Presencial + EAD';
5195
5196 var textoFormatoHibrido = "";
5197 var temTextoParaFormatoHibrido = false;
5198
5199 //Validar se o campo textoFormatoHibrido existe e se não está vazio
5200 if (isHibrido) {
5201 textoFormatoHibrido = $('input[name="textoFormatoHibrido"]').val();
5202 if (typeof textoFormatoHibrido !== 'undefined') {
5203 if (textoFormatoHibrido.trim() !== '') {
5204 temTextoParaFormatoHibrido = true;
5205 textoFormatoHibrido += '<br>';
5206 }
5207 }
5208 }
5209
5210 const HOST = window.location.origin;
5211 const URLGeral = window.location.href;
5212
5213 //EMED
5214 const anoTurmaEmed = '2027';
5215
5216 const tipoCursoNome = function () { return $('.ssp-header-curso__tag-formato').text().trim(); }
5217
5218 const isEmed = (tipoCursoNome().indexOf('Ensino Médio Técnico') > -1);
5219
5220 const statusEmed = Object.freeze({
5221 NAO_ENCONTRADA: 0,
5222 INSCRICAO: 1,
5223 ESPERA: 2,
5224 ESGOTADO: 3
5225 });
5226
5227 let unidadesToURL = []
5228
5229 const loadPoliticaPrivacidade = async function () {
5230
5231 if (PortalService !== 'undefined') {
5232 const politicaContent = await PortalService.getPoliticaPrivacidade();
5233 document.querySelectorAll('.ssp-card-registro-interesse__card-politica').forEach(el => {
5234 el.innerHTML = politicaContent;
5235 });
5236 }
5237
5238 }
5239
5240 const localLivreOnline = function (textoLocal) {
5241 textoLocal = textoLocal || ''
5242 textoLocal = textoLocal.replaceAll('online', 'on-line')
5243
5244 const textoOnline = 'Nesta turma, todas as aulas serão on-line e ao vivo pela plataforma digital Microsoft Teams';
5245
5246 return textoLocal.toUpperCase().includes(textoOnline.toUpperCase());
5247 }
5248
5249 const linkBolsa = function (oferta) {
5250 const hostBolsaUrl = new URL(isAmbienteTeste() ? 'https://hpsgq.sp.senac.br/queue-bootstrap' : 'https://psgq.sp.senac.br/queue-bootstrap');
5251
5252 hostBolsaUrl.searchParams.set('un', codigoUnidade);
5253 hostBolsaUrl.searchParams.set('cs', $('[name="codigoFT"]').val());
5254 hostBolsaUrl.searchParams.set('tu', oferta.codigoOferta);
5255 hostBolsaUrl.searchParams.set('qv', oferta.qtdeTotalVagasPSG);
5256
5257 return hostBolsaUrl.toString();
5258 }
5259
5260 $('.ssp-ofertas-emed__filtro-content .btn').on('click', function () {
5261
5262 var classAtivo = 'btn--filtro-ativo';
5263
5264 if (!$(this).hasClass(classAtivo)) {
5265
5266 $(this).siblings().removeClass(classAtivo);
5267
5268 $(this).addClass(classAtivo);
5269
5270 const $cardTransferencias = $('.card-transferencias-emed');
5271
5272 if ($(this).val() == '0') {
5273 hideCardSemTurmas(true);
5274 $('.ssp-slick-ofertas-emed').empty();
5275 if (!$('.ssp-slick-ofertas-emed').hasClass('d-none')) $('.ssp-slick-ofertas-emed').addClass('d-none');
5276 $('.prev-mobile, .next-mobile').addClass('d-none');
5277 $cardTransferencias.removeClass('d-none');
5278 } else {
5279 if (!$cardTransferencias.hasClass('d-none')) $cardTransferencias.addClass('d-none');
5280 $('.ssp-slick-ofertas-emed').removeClass('d-none');
5281 populaOfertas(objsTela.ofertas);
5282 }
5283
5284 }
5285
5286 });
5287
5288 //Cronometro
5289 var hidden, visibilityChange;
5290 var restartTimeout = null;
5291 var interval01, interval15;
5292
5293 if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
5294 hidden = "hidden";
5295 visibilityChange = "visibilitychange";
5296 } else if (typeof document.msHidden !== "undefined") {
5297 hidden = "msHidden";
5298 visibilityChange = "msvisibilitychange";
5299 } else if (typeof document.webkitHidden !== "undefined") {
5300 hidden = "webkitHidden";
5301 visibilityChange = "webkitvisibilitychange";
5302 }
5303
5304 // Verifica suporte a Visibility API
5305 if (typeof document.addEventListener === "undefined" || hidden === undefined) {
5306 console.log("Navegador incompativel com page visibility api");
5307 } else {
5308 // Evento para quando a visibilidade da pagina mudar
5309 document.addEventListener(visibilityChange, handleVisibilityChange, false);
5310 }
5311
5312 $(".ssp-saiba-mais-curso-accordion").on("click", ".ssp-saiba-mais-curso-accordion__heading", function () {
5313
5314 $(this).toggleClass("active").next().slideToggle();
5315
5316 $(".sp-saiba-mais-curso-accordion__contents").not($(this).next()).slideUp(300);
5317
5318 $(this).siblings().removeClass("active");
5319 });
5320
5321 function loadUnidadesRegistroInteresse(urlCursoInfo) {
5322 if (objsTela.unidadesRegistroInteresse && objsTela.unidadesRegistroInteresse.length)
5323 return
5324
5325 let urlUnidades = new URL(window.location.origin + urlCursoInfo)
5326 let paramsUnidades = new URLSearchParams(urlUnidades.search)
5327 paramsUnidades.delete('inscricaoAberta')
5328 paramsUnidades.delete('bolsaAberta')
5329 paramsUnidades.delete('buscarUnidadesComOferta')
5330 urlUnidades.search = '?' + paramsUnidades.toString()
5331 urlUnidades = urlUnidades.href
5332
5333 $.ajax({
5334 url: urlUnidades,
5335 method: 'get',
5336 async: false
5337 }).done(function (data) {
5338 if (data.length > 0) {
5339 const cursoInfo = JSON.parse(data);
5340 const unidadesOfertantes = cursoInfo.unidadesOfertantes;
5341
5342 $.each(unidadesOfertantes, function (k, item) {
5343 var unidade = {};
5344 unidade['categoryId'] = item['categoryId'];
5345 unidade['codigoUnidade'] = item['codigoUnidade'];
5346 unidade['nome'] = item['nomeUnidade'];
5347 unidade['enderecoUnidade'] = item['enderecoUnidade'];
5348 unidade['numero'] = item['numEnderecoUnidade'];
5349 unidade['complemento'] = item['complementoEnderecoUnidade'];
5350 unidade['bairro'] = item['bairroUnidade'];
5351 unidade['googlemapsUnidade'] = item['googlemapsUnidade'];
5352 unidade['friendlyURL'] = item['friendlyURL'];
5353 unidade['selecionado'] = false;
5354 unidade['selectSelecionado'] = "";
5355 unidade['ofertas'] = [];
5356
5357 if (!objsTela.unidadesRegistroInteresse.filter(uni => uni['categoryId'] == unidade['categoryId']).length)
5358 objsTela.unidadesRegistroInteresse.push(unidade)
5359 });
5360 }
5361 });
5362 }
5363
5364 function loadUnidades(showOptions, unidadeValue) {
5365 //Busca as unidades do curso
5366 let buscarUnidadesComOferta = false;
5367
5368 if (!isEmed && (!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked')))
5369 buscarUnidadesComOferta = true;
5370
5371 const urlCursoInfo = urlSearchCursoInfo
5372 .replace('\{groupId\}', groupId)
5373 .replace('\{cursosInfo\}', $('[name="articleId"]').val())
5374 .replace('\{inscricaoAberta\}', $('#chkInscricao').prop('checked'))
5375 .replace('\{bolsaAberta\}', $('#chkBolsa').prop('checked'))
5376 .replace('\{buscarUnidadesComOferta\}', buscarUnidadesComOferta);
5377
5378 loadUnidadesRegistroInteresse(urlCursoInfo)
5379
5380 $.ajax({
5381 url: urlCursoInfo,
5382 method: 'get',
5383 async: false,
5384 beforeSend: function () {
5385 loading('.oferta-slick-area');
5386 }
5387 }).done(
5388 function (data) {
5389
5390 if (data.length > 0) {
5391
5392 const cursoInfo = JSON.parse(data);
5393
5394 const unidades = buscarUnidadesComOferta ? cursoInfo.unidadesComOferta : cursoInfo.unidadesOfertantes;
5395
5396 if (!isAoVivo && (!buscarUnidadesComOferta || unidades.length > 0))
5397 $('.ssp-container-selecione-unidade').removeClass('d-none')
5398
5399 objsTela.unidades = []
5400 mapUnidadesIds = new Map();
5401
5402 $.each(unidades, function (k, item) {
5403
5404 var unidade = cloneObj(item)
5405 unidade['nome'] = item['nomeUnidade'];
5406 unidade['numero'] = item['numEnderecoUnidade'];
5407 unidade['complemento'] = item['complementoEnderecoUnidade'];
5408 unidade['bairro'] = item['bairroUnidade'];
5409 unidade['ofertas'] = [];
5410
5411 objsTela.unidades.push(unidade);
5412
5413 mapUnidadesIds.set(unidade['categoryId'], unidade['codigoUnidade']);
5414
5415 objsTela.unidades.forEach(unidade => unidadesToURL.filter(u => u.friendlyURL == unidade.friendlyURL).length ? '' : unidadesToURL.push(unidade))
5416 });
5417
5418
5419 populaSelectUnidades(undefined, showOptions, unidadeValue);
5420
5421 }
5422 });
5423
5424 }
5425
5426 function getOfertaObjectFromJson(ofertaJSON, index) {
5427
5428
5429 var oferta = {};
5430 var xml = $($.parseXML(ofertaJSON.content));
5431 oferta['ordenar'] = paramOrdem(xml);
5432 oferta['vagasTotal'] = xml.find('[name="vagasTotal"]').text().trim();
5433 var dataInicio = xml.find('[name="dataInicioOferta"]').text().split('-');
5434 var dataFim = xml.find('[name="dataFimOferta"]').text().split('-');
5435 oferta['dataInicio'] = dataInicio[2].trim() + '/' + dataInicio[1].trim() + '/' + dataInicio[0].trim();
5436 oferta['dataFim'] = dataFim[2].trim() + '/' + dataFim[1].trim() + '/' + dataFim[0].trim();
5437 oferta['horaInicio'] = xml.find('[name="horaInicioOferta"]').text();
5438 oferta['codigoOferta'] = xml.find('[name="codigoOferta"]').text().trim();
5439 var dias = [];
5440 oferta['horaFimOferta'] = xml.find('[name="horaFimOferta"]').text().trim();
5441 xml.find('[name="diasDaSemanaOferta"]').find('option').each(function (index, dia) {
5442 dias.push($(dia).text());
5443 });
5444 oferta['diasDaSemanaOferta'] = dias;
5445 oferta['periodoDiaOferta'] = xml.find('[name="periodoDiaOferta"]').text().trim();
5446 oferta['precoCheioOferta'] = xml.find('[name="precoCheioOferta"]').text().trim();
5447 oferta['precoVendaOferta'] = xml.find('[name="precoVendaOferta"]').text().trim();
5448 oferta['precoDescontoOferta'] = xml.find('[field-reference="precoDescontoOferta"]').text().trim();
5449 oferta['percentualDescontoOferta'] = xml.find('[field-reference="percentualDescontoOferta"]').text().trim();
5450 oferta['numeroMaxParcelasOferta'] = xml.find('[name="numeroMaxParcelasOferta"]').text().trim();
5451
5452 oferta['textoCartoesAceitos'] = pegarTextoCartoesAceitos(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
5453 oferta['numParcelaCartoes'] = pegaNumParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
5454 oferta['precoParcelaCartoes'] = pegaValorParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
5455 oferta['numParcelaBoleto'] = pegaNumParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim());
5456 oferta['precoParcelaBoleto'] = pegaValorParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim());
5457
5458 oferta['precoVendaMaxParcelaOferta'] = xml.find('[name="precoVendaMaxParcelaOferta"]').text().trim();
5459 oferta['formaDePagamentoOferta'] = xml.find('[name="formaDePagamentoOferta"]').text().trim();
5460 oferta['botaoCompraOferta'] = xml.find('[name="botaoCompraOferta"]').text().trim();
5461 oferta['vagasParaCompraOferta'] = xml.find('[name="vagasParaCompraOferta"]').text().trim();
5462 oferta['botaoBolsaOferta'] = xml.find('[name="botaoBolsaOferta"]').text().trim();
5463 oferta['vagasBolsaOferta'] = xml.find('[name="vagasBolsaOferta"]').text().trim();
5464 oferta['dataAberturaBolsaOferta'] = xml.find('[name="dataAberturaBolsaOferta"]').text().trim();
5465 oferta['horaAberturaBolsaOferta'] = xml.find('[name="horaAberturaBolsaOferta"]').text().trim();
5466 oferta['espacoExterno'] = xml.find('[name="espacoExterno"]').text().trim();
5467 oferta['localEspacoExterno'] = xml.find('[name="localEspacoExterno"]').text().trim();
5468 oferta['ruaEspacoExterno'] = xml.find('[name="ruaEspacoExterno"]').text().trim();
5469 oferta['numeroEspacoExterno'] = xml.find('[name="numeroEspacoExterno"]').text().trim();
5470 oferta['complementoEspacoExterno'] = xml.find('[name="complementoEspacoExterno"]').text().trim();
5471 oferta['bairroEspacoExterno'] = xml.find('[name="bairroEspacoExterno"]').text().trim();
5472 oferta['cidadeEspacoExterno'] = xml.find('[name="cidadeEspacoExterno"]').text().trim();
5473 oferta['ufEspacoExterno'] = xml.find('[name="ufEspacoExterno"]').text().trim();
5474 oferta['cepEspacoExterno'] = xml.find('[name="cepEspacoExterno"]').text().trim();
5475 oferta['qtdeTotalVagas'] = xml.find('[name="qtdeTotalVagas"]').text().trim();
5476 oferta['qtdeTotalVagasPSG'] = xml.find('[name="qtdeTotalVagasPSG"]').text().trim();
5477 oferta['horariosAllOferta'] = xml.find('[name="horariosAllOferta"]').text().trim();
5478 oferta['formaDePagamentoCartaoOferta'] = xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim();
5479 oferta['formaDePagamentoBoletoOferta'] = xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim();
5480 oferta['dtLimiteMatricula'] = xml.find('[name="dtLimiteMatricula"]').text().trim();
5481 oferta['dataAberturaMatricula'] = xml.find('[name="dataAberturaMatricula"]').text().trim();
5482 oferta['etapa'] = xml.find('[name="etapa"]').text().trim();
5483 oferta['destinoCompra'] = xml.find('[name="destinoCompra"]').text().trim();
5484 //adicao do destinoBolsa na oferta - 9546 - 11/07/2022
5485 oferta['destinoBolsa'] = xml.find('[name="destinoBolsa"]').text().trim();
5486
5487 // 18/07/2025 - Removido o dataAberturaBolsaOferta recebendo o dataAberturaMatricula
5488 // devido a mudança de regra que recebemos da área
5489
5490 return oferta;
5491 }
5492
5493 const getStatusEmed = (oferta) => {
5494
5495 if ("${listaEsperaAtiva?c}" !== "true") return statusEmed.INSCRICAO;
5496
5497 const urlStatusEsperaEmed = () => {
5498 let url = (isAmbienteTeste()) ?
5499 'https://hinscricao-educacional-backend.sp.senac.br/api/lista-espera/'
5500 : 'https://inscricao-educacional-ms.sp.senac.br/api/lista-espera/';
5501
5502 return url + oferta.codigoOferta;
5503 }
5504
5505 const callTl = async () => {
5506 if (getCookie('tl') == null) {
5507 return await $.ajax({
5508 url: '/o/senac-content-services/geraTokenServicosSenac',
5509 method: 'GET'
5510 });
5511 }
5512 return getCookie('tl');
5513 }
5514
5515 const callListaEspera = async () => {
5516 var tl = '';
5517 try {
5518 tl = await callTl();
5519 if (getCookie('tl') == null) {
5520 tl = JSON.parse(tl).token;
5521 writeCookie('tl', tl, 6, '');
5522 }
5523 } catch (err) {
5524 console.error(err);
5525 return {};
5526 }
5527
5528 return $.ajax({
5529 url: urlStatusEsperaEmed(),
5530 method: 'GET',
5531 beforeSend: function (xhr) {
5532 xhr.setRequestHeader("Authorization", tl);
5533 }
5534 })
5535 }
5536
5537 return new Promise(async function (resolve, reject) {
5538 const resp = await callListaEspera();
5539 if (typeof resp !== 'object') resp = JSON.parse(resp);
5540 let status = resp.STATUS;
5541 resolve(status);
5542 });
5543
5544 }
5545
5546 function getOfertasAoVivo(codigoFT, dataEfetivaOferta, categoryIds) {
5547
5548 if (categoryIds && categoryIds.length) {
5549 var params = new URLSearchParams();
5550 params.set('codigoFTOferta', codigoFT)
5551 params.set('dataEfetivaOferta', dataEfetivaOferta)
5552 params.set('categoryIds', categoryIds)
5553 params.set('start', startOfertaParam)
5554 params.set('end', endOfertaParam)
5555 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
5556 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
5557 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
5558
5559 if ($('#chkBolsa').prop('checked')) {
5560 params.set('considerarDataBolsaFutura', true)
5561 }
5562 const url = urlSearchOferta + '?' + params.toString()
5563
5564 $.ajax({
5565 url: url,
5566 method: 'get',
5567 dataType: 'json',
5568 async: false
5569 }).done(
5570 function (data) {
5571
5572 if (data.length > 0) {
5573 $('#ssp-alternadores').show()
5574 showedFilters = true
5575
5576 objsTela.ofertasAoVivoTodasUnidades = []
5577
5578 data.forEach(function (ofertaJSON, index) {
5579
5580 var oferta = getOfertaObjectFromJson(ofertaJSON, index);
5581
5582 //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo
5583 ofertaUnidadeMap.set(oferta['codigoOferta'], mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));
5584 objsTela.ofertasAoVivoTodasUnidades.push(oferta);
5585
5586 });
5587 } else {
5588 loadAlternadores(data)
5589 }
5590
5591 populaOfertas(objsTela.ofertasAoVivoTodasUnidades);
5592 addEventBolsa()
5593 }
5594 ).fail(function (e) {
5595 console.error(e)
5596 populaOfertas(objsTela.ofertasAoVivoTodasUnidades = []);
5597 })
5598 } else {
5599 loadAlternadores([])
5600 populaOfertas(objsTela.ofertasAoVivoTodasUnidades = [])
5601 }
5602
5603 if (isAoVivo) {
5604 if (objsTela.ofertasAoVivoTodasUnidades && objsTela.ofertasAoVivoTodasUnidades.length)
5605 hideCardSemTurmas(true)
5606 else
5607 hideCardSemTurmas(false)
5608 }
5609 }
5610
5611 function mudouToggleOferta(ofertas) {
5612 const oferta = ofertas && ofertas[0]
5613 if (!oferta)
5614 return true
5615
5616 const selecaoInscricao = $('#chkInscricao').prop('checked')
5617 const selecaoBolsa = $('#chkBolsa').prop('checked')
5618
5619 return oferta.selecaoInscricao != selecaoInscricao || oferta.selecaoBolsa != selecaoBolsa
5620 }
5621
5622 function loadAlternadores(ofertas) {
5623 if (showedFilters) {
5624 $('#ssp-alternadores').show()
5625 return
5626 }
5627
5628 if ($('#unidades-ofertas').is(":hidden") || $('#unidades-ofertas option').length <= 1) {
5629 if (isAoVivo) {
5630 if (ofertas && ofertas.length)
5631 $('#ssp-alternadores').show()
5632 else {
5633 if (!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked'))
5634 $('#ssp-alternadores').hide()
5635 else
5636 $('#ssp-alternadores').show()
5637 }
5638 } else {
5639 if (!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked'))
5640 $('#ssp-alternadores').hide()
5641 else
5642 $('#ssp-alternadores').show()
5643 }
5644 } else
5645 $('#ssp-alternadores').show()
5646
5647 showedFilters = showedFilters || $('#ssp-alternadores').is(":visible")
5648 }
5649
5650 function getOfertas(codigoFT, dataEfetivaOferta, categoryId) {
5651
5652 var indiceUnidade = -1;
5653 const selecaoInscricao = $('#chkInscricao').prop('checked')
5654 const selecaoBolsa = $('#chkBolsa').prop('checked')
5655
5656 for (var i = 0; i < objsTela.unidades.length; i++)
5657 if (objsTela.unidades[i].categoryId == categoryId)
5658 indiceUnidade = i;
5659
5660 ultimaUnidade = indiceUnidade;
5661
5662 if (!objsTela.categoriesIds.includes(categoryId) || mudouToggleOferta(objsTela.unidades[indiceUnidade]['ofertas'])) {
5663 objsTela.unidades[indiceUnidade]['ofertas'] = []
5664
5665 var params = new URLSearchParams();
5666 params.set('codigoFTOferta', codigoFT)
5667 params.set('dataEfetivaOferta', dataEfetivaOferta)
5668 params.set('categoryIds', categoryId)
5669 params.set('start', startOfertaParam)
5670 params.set('end', endOfertaParam)
5671 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
5672 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
5673 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
5674
5675 if ($('#chkBolsa').prop('checked')) {
5676 params.set('considerarDataBolsaFutura', true)
5677 }
5678
5679 const url = urlSearchOferta + '?' + params.toString()
5680
5681 var deferredOfertas = $.Deferred();
5682
5683 $.ajax({
5684 url: url,
5685 method: 'get',
5686 dataType: 'json'
5687 }).done(
5688 async function (data) {
5689
5690 if (data.length > 0) {
5691 $('#ssp-alternadores').show()
5692 showedFilters = true
5693
5694 $('.ssp-container-selecione-unidade').show();
5695
5696 data.forEach(function (ofertaJSON, index) {
5697
5698 var oferta = getOfertaObjectFromJson(ofertaJSON, index);
5699
5700 //Preenche as ofertas da unidade
5701 objsTela.unidades[indiceUnidade]['ofertas'].push(oferta);
5702 objsTela.unidades[indiceUnidade]['ofertas'].forEach(o => {
5703 o.selecaoInscricao = selecaoInscricao
5704 o.selecaoBolsa = selecaoBolsa
5705 })
5706
5707 });
5708 } else {
5709 loadAlternadores()
5710 }
5711 objsTela.categoriesIds.push(categoryId);
5712 await populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']);
5713 addEventBolsa()
5714 deferredOfertas.resolve();
5715 }
5716 ).fail(function () {
5717 console.error('Erro ao buscar ofertas da unidade selecionada.');
5718 hideCardSemTurmas(false)
5719 deferredOfertas.reject();
5720 })
5721
5722 return deferredOfertas.promise()
5723
5724 //Se estiver na cache, valida as ofertas
5725 } else {
5726
5727 var deferredCache = $.Deferred();
5728 Promise.resolve(populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']))
5729 .then(function () {
5730 deferredCache.resolve();
5731 })
5732 .catch(function () {
5733 deferredCache.reject();
5734 });
5735 return deferredCache.promise();
5736
5737 }
5738 }
5739
5740 function populaSelectUnidades(unidades, showOptions, unidadeValue) {
5741 var unidadePreSelecionada = false;
5742 var categoryIdUnidadePreSelecionada = '';
5743
5744 //Oredenacao
5745 objsTela.unidades.sort(function (a, b) {
5746 return ordenar(a, b, 'nome');
5747 });
5748
5749 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
5750 return ordenar(a, b, 'nome');
5751 });
5752
5753 //console.log(objsTela.unidades);
5754
5755 $.each(objsTela.unidades, function (k, item) {
5756
5757 if (getURLData().includes('/' + item.friendlyURL + '/')) {
5758 unidadePreSelecionada = true;
5759 categoryIdUnidadePreSelecionada = item['categoryId'];
5760 }
5761 });
5762
5763 //console.log('Unidade Pre '+unidadePreSelecionada);
5764
5765 if (objsTela.unidades.length == 0) {
5766 if (!showOptions)
5767 $('.ssp-container-selecione-unidade').addClass('d-none');
5768 $('.oferta-slick-area').empty();
5769 $('.prev-mobile').addClass('d-none');
5770 $('.next-mobile').addClass('d-none');
5771 //EMED remove msg registro interesse
5772 //if(isEmed) $('.ssp-card-oferta-curso__sem-vaga-description').addClass('d-none');
5773 }
5774
5775 if (isAoVivo) {
5776
5777 const codigoFT = $('[name="codigoFT"]').val();
5778 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
5779
5780 var unidadesCategoryAll = '';
5781
5782 $.each(objsTela.unidades, function (k, unidade) {
5783 unidadesCategoryAll += unidade['categoryId'] + ',';
5784 });
5785
5786 //tirando ultima virgula
5787 unidadesCategoryAll = unidadesCategoryAll.substring(0, unidadesCategoryAll.length - 1);
5788
5789 getOfertasAoVivo(codigoFT, dataEfetivaOferta, unidadesCategoryAll);
5790
5791 } else {
5792 $('#unidades-ofertas').empty()
5793
5794 if (objsTela.unidades && objsTela.unidades.length) {
5795 if (isEmed)
5796 $('#unidades-ofertas').append($('<option value="">Selecione uma unidade</option>'))
5797 else
5798 $('#unidades-ofertas').append($('<option value="">Clique na unidade de interesse</option>'))
5799
5800 } else
5801 $('#unidades-ofertas').append($('<option value="">Nenhum resultado encontrado</option>'))
5802
5803 let unidadeFounded = criarOptionUnidadesPorRegiao(objsTela.unidades)
5804
5805 //Dispara o evento para primeira unidade ou pela friendlyURl da unidade
5806 if (unidadeValue) {
5807 $('#unidades-ofertas').val(unidadeValue);
5808 $('#unidades-ofertas').change();
5809 } else if (unidadeFounded) {
5810 $('#unidades-ofertas').val(unidadeFounded['categoryId'] + "@" + unidadeFounded['codigoUnidade']);
5811 $('#unidades-ofertas').change();
5812 } else if (!unidadePreSelecionada) {
5813 $('#unidades-ofertas').change();
5814 }
5815
5816 $('.ssp-card-registro-interesse__select.unidades').empty()
5817 $('.ssp-card-registro-interesse__select.unidades').append('<option value="" disabled selected>Selecione uma unidade</option>')
5818 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
5819
5820 $('.ssp-card-registro-interesse__select.unidades').append('<option value="' + unidade['codigoUnidade'] + '">' + unidade['nome'] + '</option>');
5821 });
5822 }
5823
5824 }
5825
5826 function excecaoCursoGratuito(oferta) {
5827 return $('[name="modalidadeName"]').val() == 'acoes-educ.-curta-duracao' && $('[name="tipoCurso"]').val() == 'livre' && (strToFloat(oferta.precoVendaOferta) == 0);
5828 }
5829
5830
5831 function mudarUnidade(ev) {
5832 startOfertaParam = 0;
5833 endOfertaParam = 25;
5834 carregouUltimaOferta = false;
5835
5836 var elem = $(ev.target);
5837 var unidades = objsTela.unidades;
5838
5839 //verifica se selecionou alguma unidade
5840 if (!elem.val()) {
5841 $('#informe-novas-turmas, .ssp-ofertas-emed__section, .ssp-ofertas__box-endereco-unidade').addClass('d-none');
5842
5843 if (isEmed)
5844 $('#ssp-section-response').addClass('d-none')
5845
5846 hideCardSemTurmas($('#unidades-ofertas option').length > 1)
5847
5848 elem.val('')
5849 habilitarRegistroInteresse(false)
5850 //Zera variável que controla existência de ofertas com bolsa
5851 ofertasComBolsa = false;
5852 controlaPaginaBolsa();
5853
5854 return $.Deferred().resolve().promise();
5855 }
5856
5857 $('#informe-novas-turmas, .ssp-ofertas__box-endereco-unidade').removeClass('d-none');
5858 hideCardSemTurmas(true)
5859 if (isEmed) {
5860 $('.ssp-ofertas-emed__section').removeClass('d-none');
5861 $('#ssp-section-response').removeClass('d-none')
5862 $('.ssp-card-oferta-curso__section-title').addClass('d-none');
5863 $('.prev-mobile, .next-mobile').addClass('d-none');
5864 var nomeUnidade = $('#unidades-ofertas option:selected').text();
5865 let tamScreen = $(window).width();
5866
5867 if (tamScreen < 1024)
5868 $('#titulo-emed').text('Turmas ' + anoTurmaEmed);
5869 else
5870 $('#titulo-emed').text('Turmas ' + anoTurmaEmed + ' - ' + nomeUnidade);
5871
5872 }
5873
5874 const codigoFT = $('[name="codigoFT"]').val();
5875 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
5876
5877 //colocamos dentro do option categoryId@codUnidade
5878 splitted = elem.val().split("@");
5879 var categoryIdUnidade = splitted[0];
5880 var codUnidade = splitted[1];
5881 var ofertasPromise = $.Deferred().resolve().promise();
5882
5883 for (var i = 0; unidades.length > i; i++) {
5884
5885 if (unidades[i].categoryId == categoryIdUnidade) {
5886
5887 var unidade = unidades[i];
5888
5889 //Exibe o endereco da unidade
5890 const urlBuscaUnidade = urlUnidadeInfoDetalhe
5891 .replace('\{companyId\}', themeDisplay.getCompanyId())
5892 .replace('\{codigoUnidade\}', unidade.codigoUnidade);
5893
5894 $.ajax({
5895 url: urlBuscaUnidade,
5896 type: 'get',
5897 dataType: 'json',
5898 success: function (unidadeInfo) {
5899 if (unidadeInfo != null && typeof unidadeInfo !== 'undefined') {
5900
5901 var endereco = concatSTR(unidadeInfo.enderecoUnidade, unidadeInfo.numEnderecoUnidade, ', ');
5902 endereco = concatSTR(endereco, unidadeInfo.complementoEnderecoUnidade, ' - ');
5903 endereco = concatSTR(endereco, unidadeInfo.bairroUnidade, ' - ');
5904
5905 $('.ssp-ofertas__endereco-unidade').text(endereco);
5906 $('.ssp-ofertas__endereco-unidade').attr('href', unidadeInfo.googlemapsUnidade);
5907 }
5908 },
5909 error: function (data) {
5910 $('.ssp-ofertas__endereco-unidade').text('');
5911 $('.ssp-ofertas__endereco-unidade').attr('href', '#a');
5912 console.log('Unidade não encontrada');
5913 }
5914 })
5915
5916 ofertasPromise = getOfertas(codigoFT, dataEfetivaOferta, unidades[i].categoryId);
5917
5918 habilitarRegistroInteresse(!!(unidades && unidades.length));
5919 break;
5920 }
5921 }
5922
5923 return ofertasPromise;
5924 }
5925
5926 function toggleUnidadesOfertasLoading(isLoading) {
5927 var section = $('.ssp-ofertas-emed__section');
5928 var selectUnidades = $('#unidades-ofertas');
5929 var loadingHostClass = 'ssp-ofertas-emed__loading-host';
5930
5931 // O bloqueio do select permanece para todos os cursos.
5932 selectUnidades.prop('disabled', isLoading);
5933
5934 // O loading visual global foi substituido por loading por card no fluxo EMED.
5935 if (!isEmed) {
5936 return;
5937 }
5938
5939 section.removeClass('ssp-ofertas-emed--loading');
5940 section.find('.' + loadingHostClass).remove();
5941 section.attr('aria-busy', 'false');
5942 }
5943
5944 function toggleOfertaInvestimentoLoading(codigoOferta, isLoading) {
5945 if (!isEmed || !codigoOferta) {
5946 return;
5947 }
5948
5949 var cardInvestimento = $('.codigoOferta_' + codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
5950 var loadingHostClass = 'ssp-ofertas-emed__card-info-investimento-loading-host';
5951
5952 if (!cardInvestimento.length) {
5953 return;
5954 }
5955
5956 if (isLoading) {
5957 cardInvestimento.attr('aria-busy', 'true');
5958
5959 if (!cardInvestimento.find('.' + loadingHostClass).length) {
5960 cardInvestimento.append('<div class="' + loadingHostClass + '" role="status" aria-live="polite"></div>');
5961 }
5962
5963 loading(cardInvestimento.find('.' + loadingHostClass));
5964 return;
5965 }
5966
5967 cardInvestimento.find('.' + loadingHostClass).remove();
5968 cardInvestimento.attr('aria-busy', 'false');
5969 }
5970
5971 function hasOfertaInvestimentoButtons(codigoOferta) {
5972 var cardInvestimento = $('.codigoOferta_' + codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
5973
5974 if (!cardInvestimento.length) {
5975 return false;
5976 }
5977
5978 return cardInvestimento.find('[id^="btnComprarEmed_"], [id^="btnContadorComprar_"], [id^="btnBolsa_"], [id^="btnContadorBolsa_"]').length > 0;
5979 }
5980
5981 function waitForOfertaInvestimentoButtons(codigoOferta, maxWaitMs) {
5982 var deferred = $.Deferred();
5983 var waitLimit = typeof maxWaitMs === 'number' ? maxWaitMs : 4000;
5984 var intervalMs = 100;
5985 var elapsedMs = 0;
5986
5987 if (hasOfertaInvestimentoButtons(codigoOferta)) {
5988 deferred.resolve(true);
5989 return deferred.promise();
5990 }
5991
5992 var timer = setInterval(function () {
5993 elapsedMs += intervalMs;
5994
5995 if (hasOfertaInvestimentoButtons(codigoOferta)) {
5996 clearInterval(timer);
5997 deferred.resolve(true);
5998 return;
5999 }
6000
6001 if (elapsedMs >= waitLimit) {
6002 clearInterval(timer);
6003 deferred.resolve(false);
6004 }
6005 }, intervalMs);
6006
6007 return deferred.promise();
6008 }
6009
6010 function retryRenderOfertaInvestimentoButtons(codigoOferta) {
6011 var oferta = ofertasMap.get('' + codigoOferta) || ofertasMap.get(codigoOferta);
6012
6013 if (!oferta) {
6014 return;
6015 }
6016
6017 verificaBotoesEmed(oferta, true).catch(function (error) {
6018 console.error('Erro ao atualizar botoes da oferta:', error);
6019 });
6020 }
6021
6022 function pegarTextoCartoesAceitos(campo) {
6023 indice = campo.indexOf(' em até ');
6024 inicio = 0;
6025 fim = indice;
6026
6027 return campo.substring(inicio, fim);
6028 }
6029
6030 function pegaNumParcela(campo) {
6031
6032 indice = campo.indexOf('até ');
6033 inicio = indice + 4;
6034 fim = indice + 6;
6035
6036 return campo.substring(inicio, fim);
6037
6038 }
6039
6040 function pegaValorParcela(campo) {
6041
6042 indice = campo.indexOf('R$');
6043 inicio = indice + 2;
6044 valorAmericano = campo.substring(inicio)
6045
6046 return formataValor(valorAmericano);
6047
6048 }
6049
6050 function montaHTMLOferta(oferta, index, codigoUnidade, posLoad) {
6051
6052 var retornoDiasHorarios = processaDiasHorariosOferta(oferta.horariosAllOferta);
6053 diasSemanaHTML = "";
6054
6055 for (var diaDaOferta of retornoDiasHorarios) {
6056 diasSemanaHTML += htmlSlickAreaDiasSemana.replace('\{diasSemana\}', diaDaOferta.dias);
6057 diasSemanaHTML = diasSemanaHTML.replace('\{horasSemana\}', diaDaOferta.horario)
6058 }
6059
6060 var ofertaHTML = "";
6061
6062 if (isEmed) {
6063
6064 ofertaHTML = htmlSlickAreaEmed(oferta);
6065 $('[name="codUnidadeSelecionada"]').val(codigoUnidade);
6066
6067 if (!posLoad) $('.ssp-slick-ofertas-emed').append(ofertaHTML)
6068 else $('.ssp-slick-ofertas-emed').slick('slickAdd', ofertaHTML);
6069 } else {
6070
6071
6072 ofertaHTML = htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade)
6073
6074 if (!posLoad)
6075 $('.oferta-slick-area').append(ofertaHTML);
6076 else
6077 $('.oferta-slick-area').slick('slickAdd', ofertaHTML);
6078
6079 ajustaTextoDiasHorarioOferta(oferta.codigoOferta);
6080
6081 }
6082
6083 if (turmasIniciadas(oferta.dataInicio))
6084 $("#aviso-turma-iniciada-" + index).show();
6085
6086 //remove os botões/itens de compra/bolsa caso seja preciso
6087 $('.oferta-slick-area').find('.d-none-btn').remove();
6088 }
6089
6090
6091 //RECEBE A STRING DE HORARIOS E RETORNA UMA LISTA DE OBJETOS COM OS DIAS E HORARIOS FORMATADOS
6092 //@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"
6093 function processaDiasHorariosOferta(horariosAllOferta) {
6094
6095 var dias = horariosAllOferta.trim().split(',');
6096 let arrayDiasSemana = [{ "Seg": "Segunda" }, { "Ter": "Terça" }, { "Qua": "Quarta" }, { "Qui": "Quinta" }, { "Sex": "Sexta" }, { "Sab": "Sábado" }, { "Dom": "Domingo" }]
6097
6098 var arrayDia = [];
6099 if (dias.length >= 1) {
6100 for (var k = 0; dias.length > k; k++) {
6101 var diasSplit = dias[k].trim().split(' ');
6102 var diasSemana = diasSplit.shift()
6103 var ultimaPos = diasSplit.length - 1;
6104 var horasStr = diasSplit[0] + ' às ' + diasSplit[ultimaPos]
6105 arrayDia.push({ horasStr, diasSemana });
6106 }
6107 }
6108
6109 arrayDia = groupByArray(arrayDia, 'horasStr', 'diasSemana');
6110 arrayDia = orderByArray(arrayDia, arrayDiasSemana);
6111
6112 var ret = diaHorarioOfertaFormatado(arrayDia, arrayDiasSemana);
6113 return ret;
6114 }
6115
6116 //cria um array de objetos Agrupando de acordo ao campo informado como chave.
6117 //@arr = Array multidimensional que tenha os campos key e valueAdd
6118 //@key = campo que será chave nesse array
6119 //@valueAdd = campo que será agrupado caso tenha a mesma informação passada no campo key
6120 const groupByArray = (arr, key, valueAdd) => {
6121 const initialValue = [];
6122 const retornoValue = [];
6123 arr.forEach((acc, cval) => {
6124 const myAttribute = cval[key];
6125 acc[key] in retornoValue ? retornoValue[acc[key]].push(acc[valueAdd]) : retornoValue[acc[key]] = [acc[valueAdd]];
6126 return acc;
6127 }, initialValue);
6128 return retornoValue;
6129 };
6130
6131
6132 //Cria um array de objetos a partir do primeiro array inserido e ordenados de acordo a ordem do segundo array informado.
6133 //@arrayOrdena = Array de objetos que tenha os campos que precisa ser ordenados
6134 //@ordem = array com a sequencia que queira ordenar - ex: seg, ter, qua, qua
6135 const orderByArray = (arrayOrdena, ordem) => {
6136
6137 let diasSem = [];
6138 const arrayOrdenado = [];
6139 let controle;
6140
6141 //percorre cada campo existente no ordem e busca o mesmo no arrayOrdena, encontrando insere no arrayOrdenado
6142 for (let campo of ordem) {
6143 Object.entries(arrayOrdena).forEach(([key, value]) => {
6144 for (let diaOferta of value) {
6145 if (diaOferta === Object.keys(campo)[0]) {
6146 arrayOrdenado[key] = arrayOrdena[key];
6147 }
6148 }
6149 })
6150 }
6151 return arrayOrdenado;
6152 };
6153
6154 //retorna o valor de um objeto dentro de um array
6155 //@objetoBusca = array de objetos que sera buscado o valor
6156 //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor
6157 function findValueInObject(objetoBusca, keyBusca) {
6158 var retorno = "";
6159 Object.entries(objetoBusca).forEach(([horario, dias]) => {
6160 Object.entries(dias).forEach(([key, val]) => {
6161 if (key.trim() == keyBusca.trim()) {
6162 retorno = val;
6163 }
6164 });
6165 });
6166 return retorno;
6167 }
6168
6169 //Recebe um objeto com valores dos dias da semana e define se sao dias seguidos ou alternados.
6170 //@arrayComDiasDaSemana = array com os dias da semana a serem validados - exemplo ['Qua','Qui','Sex']
6171 //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor
6172 function diasSequenciaisOuAlternados(arrayComDiasDaSemana, arrayDiasDaSemana) {
6173
6174 let arrayValidador = [];
6175
6176 //cria um array com o index dos dias das semanas encontrados [0 = seg, 1 = ter ... 6 = dom]
6177 for (let diaOferta of arrayComDiasDaSemana) {
6178 for (let i = 0; i < arrayDiasDaSemana.length; i++) {
6179 if (diaOferta === Object.keys(arrayDiasDaSemana[i])[0]) {
6180 arrayValidador[i] = true;
6181 }
6182 }
6183 }
6184
6185 let keyCompair = 99;
6186 var sequencial = true;
6187
6188 //verifica quais posições foram criadas no array, e se os valores delas estão em sequencia.
6189 for (let keyValidator of Object.keys(arrayValidador)) {
6190 keyValidator = parseInt(keyValidator);
6191 if (keyCompair !== 99) {
6192 if (keyValidator === keyCompair) {
6193 sequencial = true;
6194 } else {
6195 sequencial = false;
6196 break;
6197 }
6198 }
6199 keyCompair = keyValidator + 1;
6200 }
6201 return sequencial;
6202 }
6203
6204
6205 //Exibe as informações de dia e horario de oferta de acordo a sua estrutura
6206 //Caso os dias sejam sequenciais exibe a primeiro e ultimo dia da semana ligados com a letra 'a' Ex: Segunda a Quinta
6207 //Caso os dias Nao sejam sequenciais exibem todos os dias separados por virgula Ex: Segunda, terça, sexta e domingo
6208 //@arrayAgrupadoEOrdenado = array de objetos que sera exibido
6209 //@arrayDiasDaSemana = array com os dias da semana, sendo chave a sigla da semana (ex: Qua) e o valor o nome esperado (ex: Quarta)
6210 function diaHorarioOfertaFormatado(arrayAgrupadoEOrdenado, arrayDiasDaSemana) {
6211
6212 var stringAux = "";
6213 var listRetorno = [];
6214
6215 Object.entries(arrayAgrupadoEOrdenado).forEach(([key, value]) => {
6216
6217 var sequencial = diasSequenciaisOuAlternados(value, arrayDiasDaSemana);
6218 var stringAux = "";
6219 var diaOferta = {};
6220
6221 if (sequencial) {
6222 switch (value.length) {
6223 case 1:
6224 stringAux = stringAux + findValueInObject(arrayDiasDaSemana, value[0]) + ": ";
6225 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6226 diaOferta.horario = key;
6227 break;
6228 case 2:
6229 stringAux = stringAux + findValueInObject(arrayDiasDaSemana, value[0]) + " e " + findValueInObject(arrayDiasDaSemana, value[value.length - 1]) + ": ";
6230 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6231 diaOferta.horario = key;
6232 break;
6233 default:
6234 stringAux = stringAux + findValueInObject(arrayDiasDaSemana, value[0]) + " a " + findValueInObject(arrayDiasDaSemana, value[value.length - 1]) + ": ";
6235
6236 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6237 diaOferta.horario = key;
6238 break;
6239 }
6240 } else {
6241 switch (value.length) {
6242 case 2:
6243 stringAux = stringAux + findValueInObject(arrayDiasDaSemana, value[0]) + " e " + findValueInObject(arrayDiasDaSemana, value[value.length - 1]) + ": ";
6244 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6245 diaOferta.horario = key;
6246 break;
6247 default:
6248 var ct = 0;
6249 var stringDias = "";
6250 for (let v of value) {
6251 ct++;
6252 ct == value.length ? stringDias = stringDias.substring(0, stringDias.length - 2) + " e " + findValueInObject(arrayDiasDaSemana, v) : stringDias += findValueInObject(arrayDiasDaSemana, v) + ", ";
6253 }
6254 stringAux = stringAux + stringDias + ": ";
6255 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6256 diaOferta.horario = key;
6257 break;
6258 }
6259 }
6260
6261 listRetorno.push(diaOferta);
6262 })
6263 return listRetorno;
6264 };
6265
6266
6267 //Distribui dia e horario com quebra de linha entre eles ou nao dependendo da resolução de tela e tamanho da string
6268 function ajustaTextoDiasHorarioOferta(codOferta) {
6269
6270 var classOferta = ".codigoOferta_" + codOferta;
6271 let oferta = $(classOferta);
6272
6273 let ofertaDiasSemana = $(oferta).find('*[data-dia-hora="dias-semana"]');
6274
6275 let widthDevice = window.screen.width;
6276 let tamLimDesktop = 185;
6277
6278 if (widthDevice <= 1024) {
6279 tamLimDesktop = 180;
6280 }
6281
6282 ofertaDiasSemana.each(function (index) {
6283
6284
6285 let widthDiaSemana = $(this).width();
6286
6287 let contentDiaHora = $(this).parent().parent().parent();
6288
6289 if (!(widthDiaSemana <= tamLimDesktop)) {
6290 $(this).css("display", "block");
6291 }
6292
6293 if (ofertaDiasSemana.length == parseInt(index + 1)) {
6294 contentDiaHora.css("opacity", "1");
6295 }
6296
6297 })
6298 }
6299
6300 function getObjBtnComprar(oferta) {
6301 let obj = {};
6302 obj['dataEspacoEx'] = (oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) ? 'true' : 'false';
6303 if ($('#manutencao-compra').val()) {
6304 obj['classeBotao'] = 'disabled manutencao';
6305 obj['textoBotao'] = $('#manutencao-compra').val();
6306 }
6307 else {
6308 obj['classeBotao'] = oferta.botaoCompraOferta == 'true' ? (oferta.vagasParaCompraOferta == 'true' ? '' : 'disabled') : 'd-none-btn';
6309 obj['textoBotao'] = oferta.vagasParaCompraOferta == 'true' ? 'COMPRAR' : 'Vagas esgotadas para compra';
6310 }
6311 return obj;
6312 }
6313
6314 function getObjFormaPagto(oferta, index, tipoCurso, codigoUnidade) {
6315
6316 var formaPagtoObj = {};
6317
6318 var regNumMaxParce = new RegExp('\{numeroMaxParcelasOferta\}', 'g');
6319 var regPrecMaxParce = new RegExp('\{precoVendaMaxParcelaOferta\}', 'g')
6320
6321 formaPagtoObj['regIndex'] = index;
6322 formaPagtoObj['precoCheioOferta'] = formataValor(oferta.precoCheioOferta);
6323 formaPagtoObj['textoCartoesAceitos'] = oferta.textoCartoesAceitos;
6324
6325 formaPagtoObj['numParcelaCartoes'] = oferta.numParcelaCartoes;
6326 formaPagtoObj['precoParcelaCartoes'] = oferta.precoParcelaCartoes;
6327 formaPagtoObj['numParcelaBoleto'] = oferta.numParcelaBoleto;
6328 formaPagtoObj['precoParcelaBoleto'] = oferta.precoParcelaBoleto;
6329 formaPagtoObj['precoVendaOferta'] = formataValor(oferta.precoVendaOferta);
6330
6331 formaPagtoObj['economia'] = formataValor(parseFloat(oferta.precoCheioOferta).toFixed(2) - parseFloat(oferta.precoVendaOferta).toFixed(2));
6332 formaPagtoObj['espacoExterno'] = oferta.espacoExterno == 'true' ? 'true' : 'false';
6333 formaPagtoObj['dataUnidade'] = codigoUnidade;
6334 formaPagtoObj['dataEvento'] = oferta.codigoOferta;
6335 formaPagtoObj['destinoCompra '] = oferta.destinoCompra;
6336
6337 //EMED nao restringe o botao
6338 if (isEmed) {
6339 let manutencao = $('#manutencao-compra').val();
6340 formaPagtoObj['textoBotaoComprar'] = manutencao || 'COMPRAR';
6341 formaPagtoObj['classeBotaoComprar'] = manutencao ? 'disabled manutencao' : '';
6342 } else {
6343 let btnComprar = getObjBtnComprar(oferta);
6344 formaPagtoObj['textoBotaoComprar'] = btnComprar.textoBotao;
6345 formaPagtoObj['classeBotaoComprar'] = btnComprar.classeBotao;
6346 }
6347
6348 formaPagtoObj['regNumMaxParce'] = oferta.numeroMaxParcelasOferta;
6349 formaPagtoObj['regPrecMaxParce'] = formataValor(oferta.precoVendaMaxParcelaOferta);
6350
6351 //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
6352 formaPagtoObj['precoAVistaPadraoExt'] = formataValor(oferta.precoVendaOferta);
6353 var precoContribuinteExtensao = (parseFloat(oferta.precoVendaOferta).toFixed(2) * 0.80).toFixed(2);
6354 formaPagtoObj['precoContrExt'] = formataValor(precoContribuinteExtensao);
6355 formaPagtoObj['economiaExt'] = formataValor(parseFloat(oferta.precoVendaOferta).toFixed(2) - precoContribuinteExtensao);
6356 formaPagtoObj['precoParcelaBoletoExt'] = formataValor((precoContribuinteExtensao / oferta.numParcelaBoleto).toFixed(2));
6357 formaPagtoObj['precoParcelaCartoesExt'] = formataValor((precoContribuinteExtensao / oferta.numParcelaCartoes).toFixed(2));
6358 formaPagtoObj['precoAVistaContrExt'] = formataValor((precoContribuinteExtensao * 0.92).toFixed(2));
6359
6360 return formaPagtoObj;
6361 }
6362
6363 function calculaPrecoAvista(precoVendaOferta) {
6364 return (parseFloat(precoVendaOferta).toFixed(2) * 0.92).toFixed(2);
6365 }
6366
6367 function getParcelasEntradaCartao(dataInicioCurso) {
6368
6369 const dCurso = new Date(dataInicioCurso.split("/").reverse().join("-"));
6370 const dHoje = new Date();
6371
6372 let diffAnos = dCurso.getUTCFullYear() - dHoje.getUTCFullYear();
6373 let diffMeses = dCurso.getUTCMonth() - dHoje.getUTCMonth();
6374 diffMeses = diffAnos * 12 + diffMeses;
6375
6376 return (diffMeses > 4) ? 4 : ((diffMeses <= 0) ? 1 : diffMeses);
6377
6378 }
6379
6380 function createModalFormaPagto(formaPagtoObj, oferta, index) {
6381 const campanhaMensalidade = possuiMensalidadeCampanha(oferta)
6382
6383 let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio);
6384 temDesconto = temDesconto && (campanhaMensalidade === CampanhaMensalidade.SEM_CAMPANHA);
6385
6386 const title = (campanhaMensalidade === CampanhaMensalidade.CAMPANHA_TECNICO_2027) ?
6387 'Formas de pagamento' :
6388 'Descontos e ' + (temDesconto ? 'pagamento' : 'parcelamento');
6389
6390 result = `
6391 <div id="modalFormaPagto" class="ssp-modal" data-campanha="`+ campanhaMensalidade.toLowerCase() +`">
6392 <div class="ssp-card-modal-forma-pagamento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `">
6393 <div class="ssp-card-modal-forma-pagamento__header" style="border: 0; margin-bottom: 0 !important;">
6394 <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold" style="color:#454F63">`
6395 + title +
6396 `</h6>
6397 <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_` + index + `"></i>
6398 </div>
6399 `
6400 + (temDesconto ? '' : '<div class="ssp-card-oferta-curso__line-divider mt-0 mb-5"></div>') +
6401 `
6402 <div class="ssp-card-modal-forma-pagamento__body">
6403 `
6404 if (campanhaMensalidade === CampanhaMensalidade.CAMPANHA_TECNICO_2027 && formaPagtoObj.numParcelaBoleto) {
6405
6406 result = result + `
6407 <span class="ssp-tag-element ssp-tag-m" data-tag="valor-promocional">
6408 <i class="fa-solid fa-badge-percent" aria-hidden="true"></i> Condição especial de parcelamento
6409 </span>
6410 <p class="my-0 ssp-p-m"><strong>` + formaPagtoObj.numParcelaBoleto + `x sem juros de</strong></p>
6411 <h6 class="ssp-card-oferta-curso__item-valor-investimento ssp-h2-g">R$ ` + formaPagtoObj.precoParcelaBoleto + `</h6>
6412 <p class="mt-0 mb-0 ssp-p-m-strong">no boleto bancário</p>
6413 <p class="ssp-p-p">
6414 <strong>
6415 Valor total:
6416 <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span>`;
6417 if(oferta.precoDescontoOferta && oferta.percentualDescontoOferta){
6418 result = result + ` ou <span class="ssp-card-oferta-curso__valor-desconto text-decoration-none">
6419 R$ ` + formataValor(oferta.precoDescontoOferta) + ` à vista </span> (` + (oferta.percentualDescontoOferta) + `% de desconto)
6420 `;
6421 }
6422 result = result + `</strong></p>
6423 <div class="ssp-card-oferta-curso__line-divider mt-0 mb-5"></div>
6424 <p class="my-0"><strong>Se preferir, parcele e garanta muito mais tempo para pagar:</strong></p>
6425 `;
6426
6427 } else if (temDesconto) {
6428 result = result + `
6429 <div>
6430 <p class="my-0"><strong>Valor com </strong>
6431 <span class="ssp-card-oferta-curso__valor-desconto mt-0 mb-0">50% de desconto*</span>
6432 </p>
6433 </div>
6434 <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>`
6435
6436 if ($('[name="tipoCurso"]').val() == 'extensao') {
6437 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>`
6438 } else {
6439 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>`
6440 }
6441
6442
6443 result = result + `
6444 <div class="ssp-card-oferta-curso__line-divider mb-5 mb-md-2 mt-2"></div>
6445 <p class="my-0"><strong>Valor:</strong></p>
6446 <h6 class="ssp-card-oferta-curso__item-valor-investimento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
6447 <p class="mt-0 mb-0"><strong>Valor Total: </strong> ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</p>
6448 <div class="ssp-card-oferta-curso__line-divider mt-4 mb-md-3 mb-4"></div>
6449 <p class="my-0"><strong>Parcele e garanta mais tempo para pagar:</strong></p>
6450 `
6451 } else {
6452 if (formaPagtoObj.precoCheioOferta == formaPagtoObj.precoVendaOferta) {
6453 result = result + `
6454 <p class="ssp-card-modal-forma-pagamento__valor-desconto mt-n3">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p>
6455 <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
6456 <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>
6457 </div>
6458 `
6459 } else {
6460 const textoDesc = temDesconto ? 'Valor com 30% de desconto:' : 'Valor com desconto:'
6461
6462 result = result + `
6463 <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px;">` + textoDesc + `</small>
6464 <p class="ssp-card-modal-forma-pagamento__valor-cheio">R$ <span class="precoCheioOferta">` + formaPagtoObj.precoCheioOferta + `</span></p>
6465 <p class="ssp-card-modal-forma-pagamento__valor-desconto">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p>
6466 <p class="ssp-card-modal-forma-pagamento__total-economia">Você economiza <span>R$ <span class="economia">` + formaPagtoObj.economia + `</span></span></p>
6467 <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
6468 <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>
6469 </div>
6470 `
6471 }
6472 }
6473
6474 let textoParcelaCartoes, textoParcelaBoleto, textoParcelaCartaoComBoleto, textoPix, textoParcelaPixComBoleto
6475 if (temDesconto) {
6476 const precoParcelaCartoes = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaCartoes) / 2, 2))
6477 const precoParcelaBoleto = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaBoleto) / 2, 2))
6478
6479 if (formaPagtoObj.numParcelaCartoes)
6480 textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x</span> sem juros</p>`
6481
6482 if (formaPagtoObj.numParcelaBoleto) {
6483 textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x</span> sem juros</p>`
6484 textoPix = `<p>Valor total à vista com desconto</p>`
6485 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>`
6486 }
6487
6488
6489 } else {
6490 if (formaPagtoObj.numParcelaCartoes)
6491 textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x de R$ <span class="precoParcelaCartoes">` + formaPagtoObj.precoParcelaCartoes + `</span></span> sem juros</p>`
6492
6493 if (formaPagtoObj.numParcelaBoleto) {
6494 textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x de R$ <span class="precoParcelaBoleto">` + formaPagtoObj.precoParcelaBoleto + `</span></span> sem juros</p>`
6495 textoPix = `<p>Valor total à vista com desconto</p>`
6496 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>`
6497 }
6498 }
6499
6500 if (formaPagtoObj.numParcelaBoleto) {
6501 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>`;
6502 }
6503
6504 let cardPix = (textoPix) => `
6505 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6506 <i class="fa-brands fa-pix" style="margin-right:15px;font-size:18px"></i>
6507 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6508 <p><strong>Pix</strong></p>`
6509 + textoPix +
6510 `</div>
6511 </div>`;
6512
6513 let cardPixBoleto = (textoParcelaPixComBoleto) => `
6514 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
6515 <div style="display:flex;gap:5px;margin-right:6px">
6516 <i class="fa-brands fa-pix" style="font-size:14px"></i>
6517 <i class="fa-sharp-duotone fa-light fa-barcode" style="font-size:14px"></i>
6518 </div>
6519 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6520 <p><strong>Pix + boleto bancário</strong></p>`
6521 + textoParcelaPixComBoleto +
6522 `</div>
6523 </div>
6524 `;
6525
6526 if (temDesconto) {
6527 result = result + `
6528 <div class="ssp-card-modal-forma-pagamento__tipos">`
6529
6530 if (textoPix && $('[name="tipoCurso"]').val() == 'livre')
6531 result = result + cardPix(textoPix)
6532
6533 if (textoParcelaBoleto)
6534 result = result + `
6535 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6536 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
6537 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6538 <p><strong>Boleto Bancário</strong></p>`
6539 + textoParcelaBoleto +
6540 `</div>
6541 </div>`
6542
6543 if (textoParcelaCartoes)
6544 result = result + `
6545 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
6546 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
6547 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6548 <p><strong>Cartões</strong></p>
6549 <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>`
6550 + textoParcelaCartoes +
6551 `</div>
6552 </div>
6553 </div>
6554 `
6555
6556 if (textoParcelaPixComBoleto && $('[name="tipoCurso"]').val() == 'livre')
6557 result = result + cardPixBoleto(textoParcelaPixComBoleto)
6558
6559
6560 if (textoParcelaCartaoComBoleto)
6561 result = result + `
6562 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6563 <div style="display:flex;gap:5px;margin-right:6px">
6564 <i class="fa-regular fa-credit-card" style="font-size:14px"></i>
6565 <i class="fa-sharp-duotone fa-light fa-barcode" style="font-size:14px"></i>
6566 </div>
6567 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6568 <p><strong>Cartão + boleto bancário</strong></p>`
6569 + textoParcelaCartaoComBoleto +
6570 `</div>
6571 </div>`
6572
6573 if (textoPix && $('[name="tipoCurso"]').val() != 'livre')
6574 result = result + cardPix(textoPix)
6575
6576 if (textoParcelaPixComBoleto && $('[name="tipoCurso"]').val() != 'livre')
6577 result = result + cardPixBoleto(textoParcelaPixComBoleto)
6578
6579 } else {
6580 result = result + `
6581 <div class="ssp-card-modal-forma-pagamento__tipos">`
6582
6583 if (textoPix)
6584 result = result + cardPix(textoPix)
6585
6586 if (textoParcelaBoleto)
6587 result = result + `
6588 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
6589 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
6590 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6591 <p><strong>Boleto Bancário</strong></p>`
6592 + textoParcelaBoleto +
6593 `</div>
6594 </div>
6595 </div>
6596 `
6597
6598 if (textoParcelaCartoes)
6599 result = result + `
6600 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6601 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
6602 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6603 <p><strong>Cartões</strong></p>
6604 <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>`
6605 + textoParcelaCartoes +
6606 `</div>
6607 </div>`
6608
6609 if (textoParcelaPixComBoleto)
6610 result = result + cardPixBoleto(textoParcelaPixComBoleto)
6611
6612 if (textoParcelaCartaoComBoleto)
6613 result = result + `
6614 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6615 <i class="ssp-card-modal-forma-pagamento__icon-boleto-e-cartao fa-solid fa-money-check-dollar"></i>
6616 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6617 <p><strong>Cartão + boleto bancário</strong></p>`
6618 + textoParcelaCartaoComBoleto +
6619 `</div>
6620 </div>`
6621 }
6622
6623
6624
6625 if (temDesconto) {
6626 result = result + `
6627 <p class="txt-desconto-oito my-0">Pague à vista e ganhe <span style="color:#5ACC75;font-weight:bold">8% de desconto.</span></p>
6628 `
6629 }
6630
6631 result = result + `
6632 <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>`
6633
6634 if (temDesconto) {
6635 result = result + `
6636 <a class="btn btn-primary modal-extensao-btn-conheca mt-3" href="/descontos-e-parcelamentos" target="_blank">Conheça os descontos</a>
6637 `
6638 }
6639
6640 result = result + `
6641 </div>
6642 </div>
6643 `
6644
6645 return result;
6646 }
6647
6648 async function montaHTMLModalFormaPgto(oferta, index, codigoUnidade) {
6649
6650 var tipoCurso = $('[name="tipoCurso"]').val();
6651
6652 var formaPagtoObj = getObjFormaPagto(oferta, index, tipoCurso, codigoUnidade);
6653
6654 var modalFormaPagto
6655 if (tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)) {
6656 modalFormaPagto = $('#modalFormaPagtoExt').clone();
6657
6658 $.each(formaPagtoObj, function (k, v) {
6659 if (modalFormaPagto.find('.' + k).length > 0)
6660 modalFormaPagto.find('.' + k).text(v);
6661 })
6662 } else if (isEmed) {
6663 modalFormaPagto = $('#modalPagtoEmed').clone();
6664
6665 $.each(formaPagtoObj, function (k, v) {
6666 if (modalFormaPagto.find('.' + k).length > 0)
6667 modalFormaPagto.find('.' + k).text(v);
6668 })
6669 } else
6670 modalFormaPagto = $(createModalFormaPagto(formaPagtoObj, oferta, index));
6671
6672 modalFormaPagto.removeAttr('id');
6673 modalFormaPagto.removeClass('d-none');
6674 modalFormaPagto.attr('id', 'myModal_' + index);
6675
6676 if (tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)) {
6677
6678 var botoaoCompraOk = modalFormaPagto.find('.modal-extensao-aluno__btn.ok');
6679 botoaoCompraOk.attr('id', 'btnComprarConhecaDescontoOk_' + index);
6680
6681 botoaoCompraOk.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6682 botoaoCompraOk.attr('data-unidade', formaPagtoObj.dataUnidade);
6683 botoaoCompraOk.attr('data-evento', formaPagtoObj.dataEvento);
6684 botoaoCompraOk.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6685 botoaoCompraOk.attr('data-index', index);
6686 botoaoCompraOk.addClass(formaPagtoObj.classeBotaoComprar);
6687
6688 var botoaoCompraNot = modalFormaPagto.find('.modal-extensao-aluno__btn.not');
6689 botoaoCompraNot.attr('id', 'btnComprarConhecaDescontoNot_' + index);
6690
6691 botoaoCompraNot.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6692 botoaoCompraNot.attr('data-unidade', formaPagtoObj.dataUnidade);
6693 botoaoCompraNot.attr('data-evento', formaPagtoObj.dataEvento);
6694 botoaoCompraNot.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6695 botoaoCompraNot.attr('data-index', index);
6696 botoaoCompraNot.addClass(formaPagtoObj.classeBotaoComprar);
6697
6698 modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.sim').attr('id', 'btn-aluno-sim_' + index);
6699 modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.nao').attr('id', 'btn-aluno-nao_' + index);
6700
6701 modalFormaPagto.find('.modal-extensao-voltar-icon').addClass('ssp-card-modal-forma-pagamento__btn-close_' + index);
6702
6703 modalFormaPagto.find('.modal-extensao-btn-conheca').attr('id', 'btnModalExtConheca_' + index);
6704
6705 modalFormaPagto.find('.modal-pergunta-aluno-ext').attr('id', 'modalExtAluno_' + index);
6706
6707 modalFormaPagto.find('.msg-alunoSim').attr('id', 'msg-alunoSim_' + index);
6708 modalFormaPagto.find('.msg-alunoNao').attr('id', 'msg-alunoNao_' + index);
6709
6710 var botaoCompra = modalFormaPagto.find('.modal-extensao__btn.mt-3');
6711
6712 } else {
6713
6714 modalFormaPagto.find('.mt-4').attr('id', 'content_boleto_' + index);
6715 modalFormaPagto.find('.ssp-card-modal-forma-pagamento__btn-close').addClass('ssp-card-modal-forma-pagamento__btn-close_' + index);
6716
6717 var botaoCompra = modalFormaPagto.find('.btn.w-100');
6718
6719 }
6720
6721 if (isEmed) {
6722
6723 var elementoPai = modalFormaPagto.find('.ssp-card-modal-forma-pagamento');
6724
6725 //Cria botao inscreva-se ajustado ao modal
6726 try {
6727 var dadosAbertura = await calculaTempoAberturaBolsa(oferta.dataAberturaMatricula, oferta.horaAberturaBolsaOferta, undefined, !$('#manutencao-compra').val());
6728 if ($('#manutencao-compra').val()) {
6729 textoBotao = $('#manutencao-compra').val();
6730 classeBotao = 'disabled manutencao';
6731 } else {
6732 if (oferta.permiteListaEspera == statusEmed.ESPERA && dadosAbertura.bolsaJaAberta) {
6733 textoBotao = 'Lista de espera';
6734 classeBotao = 'btn-emed-lista-espera';
6735 } else {
6736 if (dadosAbertura.bolsaJaAberta || !oferta.dataAberturaMatricula || oferta.dataAberturaMatricula == '') {
6737 if (oferta.etapa == '0020' || oferta.etapa == '0030') {
6738 textoBotao = 'Lista de espera';
6739 classeBotao = 'btn-emed-lista-espera';
6740 } else {
6741 textoBotao = 'Fazer matrícula';
6742 classeBotao = '';
6743 }
6744 } else {
6745 textoBotao = 'Matrícula em ' + formataDataAberturaBolsa(oferta.dataAberturaMatricula, oferta.horaAberturaBolsaOferta);
6746 classeBotao = 'disabled';
6747 }
6748 }
6749 }
6750 } catch (error) {
6751 console.error('Erro ao consultar abertura da matricula:', error);
6752 textoBotao = 'Não foi possível consultar a abertura da matrícula. Recarregue a página.';
6753 classeBotao = 'disabled';
6754 }
6755 criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, 'btnComprarEmedModal_' + index, elementoPai, index);
6756 preencheDadosEmedModal(oferta, modalFormaPagto);
6757
6758 } else {
6759 botaoCompra.attr('id', "btnComprarFormaPgto_" + index);
6760 botaoCompra.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6761 botaoCompra.attr('data-unidade', formaPagtoObj.dataUnidade);
6762 botaoCompra.attr('data-evento', formaPagtoObj.dataEvento);
6763 botaoCompra.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6764 botaoCompra.attr('data-index', index);
6765 botaoCompra.addClass(formaPagtoObj.classeBotaoComprar);
6766 }
6767
6768 $('.oferta-slick-area_modal').append(modalFormaPagto);
6769 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6770
6771 //Evita o erro de exibição de Nan
6772 if (oferta.numParcelaBoleto.length == 0) {
6773 $('#content_boleto_' + index).remove();
6774 }
6775 }
6776
6777 function verificaTerminoDia(dataInicio, dataFim) {
6778 if (dataInicio === dataFim) {
6779 return true;
6780 }
6781 return false;
6782 }
6783
6784
6785 function montaHTMLModalLocalRealizacao(oferta, index) {
6786
6787 // Lógica para decidir o texto (Singular ou Plural)
6788 // Assume que oferta.dataInicio e oferta.dataFim existem
6789 var textoTitulo = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
6790 "ONDE A AULA IRÁ ACONTECER?" : // True: Mesmo dia (Singular)
6791 "ONDE AS AULAS VÃO ACONTECER?"; // False: Dias diferentes (Plural)
6792
6793 var tituloLocalRealizacao = (localLivreOnline(oferta.localEspacoExterno) && !isHibrido) ?
6794 '<i class="fas fa-wifi icon-wifi-title__modal"></i> <h6 class="title-idioma-online__modal"> Aulas Online - ao vivo</h6>'
6795 : '<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>';
6796
6797 if (textoFormatoHibrido.length > 0 && oferta.espacoExterno == "true")
6798 textoFormatoHibrido += '</br>';
6799
6800 var localRealizacaoHTMLModal = htmlModalLocalRealizacao
6801 .replace('\{nomeUnidade\}', $('#unidades-ofertas option:selected').text())
6802 .replace('\{textoFormatoHibrido\}', textoFormatoHibrido)
6803 .replace('\{localEspacoExterno\}', oferta.espacoExterno == "true" ? oferta.localEspacoExterno : "")
6804 .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none")
6805 .replace('\{classeEnderecoRealizacao\}', oferta.ruaEspacoExterno != "" ? "" : "d-none")
6806 .replace('\{ruaEspacoExterno\}', oferta.ruaEspacoExterno)
6807 .replace('\{numeroEspacoExterno\}', oferta.numeroEspacoExterno)
6808 .replace('\{complementoEspacoExterno\}', oferta.complementoEspacoExterno)
6809 .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6810 .replace('\{bairroEspacoExterno\}', oferta.bairroEspacoExterno)
6811 .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6812 .replace('\{cidadeEspacoExterno\}', oferta.cidadeEspacoExterno)
6813 .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6814 .replace('\{cepEspacoExterno\}', oferta.cepEspacoExterno)
6815 .replace(regIndex, index)
6816 .replace('\{tituloLocalRealizacao\}', tituloLocalRealizacao)
6817 .replace('\{classeEntendi\}', (localLivreOnline(oferta.localEspacoExterno)) ? "btn-modal-entendi__idioma-online" : "");
6818
6819 $('.oferta-slick-area_modal').append(localRealizacaoHTMLModal);
6820 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6821
6822 if (oferta.ruaEspacoExterno == "")
6823 $('.localEspacoExternoTexto_' + index).removeClass('ssp-modal-local-realizacao__subtitle');
6824 }
6825
6826 function montaHTMLModalAntesCompra(oferta, index, codigoUnidade) {
6827
6828 if (isEmed) {
6829
6830 $('#modalAntesCompraEmed_' + oferta.indice).remove();
6831 const antesCompraHTMLModal = $('#modalAntesCompraEmed').clone();
6832 antesCompraHTMLModal.attr('id', 'modalAntesCompraEmed_' + oferta.indice);
6833 antesCompraHTMLModal.find('.ssp-card-modal-antes-compra__btn-close').addClass('ssp-card-modal-antes-compra__btn-close_' + oferta.indice);
6834 antesCompraHTMLModal.find('.ssp-card-modal-selecionar-outro__btn-close').addClass('ssp-card-modal-selecionar-outro__btn-close_' + oferta.indice);
6835 antesCompraHTMLModal.insertAfter('#modalAntesCompraEmed');
6836
6837 if (oferta.etapa == '0010') {
6838 if (oferta.permiteListaEspera == statusEmed.ESPERA) {
6839 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010Espera').removeClass('d-none');
6840 antesCompraHTMLModal.find('#btnCompraLocalEmed').text('Ir para lista de espera');
6841 } else {
6842 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010').removeClass('d-none');
6843 }
6844 } else {
6845 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0020e0030').removeClass('d-none');
6846 }
6847
6848 const btnCompra = antesCompraHTMLModal.find('#btnCompraLocalEmed');
6849 btnCompra.attr('id', 'btnCompraLocalEmed_' + oferta.indice);
6850 btnCompra.attr('offercode', oferta.codigoOferta);
6851
6852 btnCompra.on('click', function (ev) {
6853 ev.preventDefault();
6854 execCompraEmed(oferta);
6855 });
6856
6857 } else {
6858
6859 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val());
6860
6861
6862 var antesCompraHTMLModal = htmlModalAntesCompra
6863 .replace('\{nomeUnidade\}', $('#unidades-ofertas option:selected').text())
6864 .replace('\{textoFormatoHibrido\}', textoFormatoHibrido)
6865 .replace('\{localEspacoExterno\}', oferta.espacoExterno == "true" ? oferta.localEspacoExterno : "")
6866 .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none")
6867 .replace('\{classeEnderecoRealizacao\}', oferta.ruaEspacoExterno != "" ? "" : "d-none")
6868 .replace('\{ruaEspacoExterno\}', oferta.ruaEspacoExterno)
6869 .replace('\{numeroEspacoExterno\}', oferta.numeroEspacoExterno)
6870 .replace('\{complementoEspacoExterno\}', oferta.complementoEspacoExterno)
6871 .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6872 .replace('\{bairroEspacoExterno\}', oferta.bairroEspacoExterno)
6873 .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6874 .replace('\{cidadeEspacoExterno\}', oferta.cidadeEspacoExterno)
6875 .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6876 .replace('\{cepEspacoExterno\}', oferta.cepEspacoExterno)
6877 .replace('\{componentBuyConfirmation\}', componentBuyConfirmation(codigoUnidade, oferta, dataEfetivaFormat))
6878 .replace('\{linkBtnBolsa\}', linkBolsa(oferta))
6879 .replace(regIndex, index);
6880
6881 $('.oferta-slick-area_modal').append(antesCompraHTMLModal);
6882 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6883 }
6884 }
6885
6886 async function populaOfertas(ofertas) {
6887
6888 //Zera variável que controla existência de ofertas com bolsa
6889 ofertasComBolsa = false;
6890
6891 objsTela.ofertas = ofertas;
6892
6893 if (ofertas && ofertas.length)
6894 $('#ssp-h3-turmas').show()
6895 else
6896 $('#ssp-h3-turmas').hide()
6897
6898 if (ofertas && ofertas.length > 1) {
6899 //remove dupl
6900 const ofertasDistintas = [];
6901 ofertas.forEach(oferta => {
6902 if (ofertasDistintas.filter(dist => dist.codigoOferta == oferta.codigoOferta).length == 0) {
6903 ofertasDistintas.push(oferta);
6904 }
6905 });
6906 ofertas = ofertasDistintas;
6907 }
6908
6909 if (isEmed) {
6910
6911 $('.btn-filtro[value="0"]').attr('disabled', '');
6912 $('.ssp-slick-ofertas-emed').empty();
6913 // executa a class do slick slider
6914 $('.ssp-slick-ofertas-emed').removeClass('slick-initialized slick-slider slick-dotted');
6915 ofertas = filtraOfertasEtapa(getEtapaSelecionadaEmed(), ofertas);
6916
6917 }
6918
6919 if (ofertas.length == 0) {
6920
6921 if ($('#unidades-ofertas').val() || $('#chkInscricao').prop('checked') || $('#chkBolsa').prop('checked'))
6922 hideCardSemTurmas(false)
6923
6924 $('.oferta-slick-area').empty();
6925 $('.prev-mobile, .next-mobile').addClass('d-none');
6926
6927 //Mostrar section registro interesse quando nao tiver oferta
6928 habilitarRegistroInteresse(true);
6929
6930 controlaPaginaBolsa()
6931 if (isEmed) $('.btn-filtro[value="0"]').removeAttr('disabled');
6932 return;
6933 }
6934 hideCardSemTurmas(true)
6935 if (!isEmed) $('.prev-mobile, .next-mobile').removeClass('d-none');
6936 habilitarRegistroInteresse(false);
6937
6938 $('.oferta-slick-area').empty();
6939 $('.oferta-slick-area_modal').empty();
6940 ofertas = ofertas.sort(function (a, b) {
6941 return ordenar(a, b, 'ordenar');
6942 });
6943 // executa a class do slick slider
6944 $('.oferta-slick-area').removeClass('slick-initialized slick-slider slick-dotted');
6945
6946 //busca o nome e codigoUnidade para o link do ecommerce
6947 var nomeUnidade;
6948 if (!isAoVivo) {
6949 var selectedUnidade = $('#unidades-ofertas').val().split('@')[0];
6950 for (var i = 0; objsTela.unidades.length > i; i++) {
6951 if (selectedUnidade == objsTela.unidades[i].categoryId) {
6952 codigoUnidade = objsTela.unidades[i].codigoUnidade;
6953 nomeUnidade = objsTela.unidades[i].nome;
6954 }
6955 }
6956 }
6957
6958 var pendenciasRenderizacao = [];
6959
6960 // Montar object push - google tag manager - 2
6961 let dadosCurso = {
6962 //Pegar do freemarker
6963 tituloComercial: $('[name="tituloComercial"]').val(),
6964 tipoCurso: $('[name="nomeCategoriaTipoCurso"]').val(),
6965 formato: $('[name="formato"]').data("formato")
6966 }
6967 try {
6968 itensEcommerce = GTMUtil.criaItensEcommerceOfertas(
6969 ofertas, $('[name="codigoFT"]').val(), dadosCurso, nomeUnidade, codigoUnidade
6970 );
6971 sendEventEcommerce("view_item_list", Array.from(itensEcommerce.values()));
6972 } catch (err) {
6973 console.error('[sendEventEcommerce]', err);
6974 itensEcommerce = new Map();
6975 }
6976
6977 for (var i = 0; ofertas.length > i; i++) {
6978
6979 var oferta = ofertas[i];
6980 var ofertaGratuita = excecaoCursoGratuito(oferta);
6981
6982 //guardando a oferta no map para chamar ajax com infos de bolsa em tempo real
6983 oferta['indice'] = i;
6984 ofertasMap.set(oferta.codigoOferta, oferta);
6985
6986 if (isAoVivo)
6987 codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta);
6988
6989 if (isEmed && oferta.etapa == '0010') {
6990 try {
6991 let status = await getStatusEmed(oferta);
6992 oferta['permiteListaEspera'] = status;
6993 } catch (err) {
6994 console.log(err);
6995 }
6996 }
6997 montaHTMLOferta(oferta, i, codigoUnidade, false);
6998
6999 if (!ofertaGratuita)
7000 await montaHTMLModalFormaPgto(oferta, i, codigoUnidade);
7001
7002 montaHTMLModalLocalRealizacao(oferta, i);
7003 montaHTMLModalAntesCompra(oferta, i, codigoUnidade);
7004
7005 if (!ofertaGratuita) {
7006 const codigoOfertaAtual = oferta.codigoOferta;
7007
7008 if (isEmed) {
7009 toggleOfertaInvestimentoLoading(codigoOfertaAtual, true);
7010 }
7011
7012 var pendenciaBolsa = verificaBotaoBolsaSS(oferta);
7013
7014 if (isEmed) {
7015 pendenciasRenderizacao.push(
7016 $.Deferred(function (deferredCard) {
7017 $.when(pendenciaBolsa).always(function () {
7018 $.when(waitForOfertaInvestimentoButtons(codigoOfertaAtual)).always(function (isReady) {
7019 if (isReady) {
7020 toggleOfertaInvestimentoLoading(codigoOfertaAtual, false);
7021 deferredCard.resolve();
7022 } else {
7023 retryRenderOfertaInvestimentoButtons(codigoOfertaAtual);
7024
7025 $.when(waitForOfertaInvestimentoButtons(codigoOfertaAtual, 1200)).always(function () {
7026 toggleOfertaInvestimentoLoading(codigoOfertaAtual, false);
7027 deferredCard.resolve();
7028 });
7029
7030 return;
7031 }
7032 });
7033 });
7034 }).promise()
7035 );
7036 } else {
7037 pendenciasRenderizacao.push(pendenciaBolsa);
7038 }
7039 }
7040
7041 verificaCursoAprendizagem(i, oferta.codigoOferta);
7042 verificaCursoTrampolim(i, oferta.codigoOferta);
7043
7044 if (!ofertaGratuita)
7045 associaEventoBtnFormaPagamento(i);
7046
7047 associaEventoBtnComprar(i);
7048
7049 if (!ofertaGratuita)
7050 associaEventoBtnComprarDentroFormaPgto(i);
7051
7052 associaEventoBtnLocalRealizacao(i);
7053 associaEventosFecharModal(i);
7054
7055 if ($('[name="tipoCurso"]').val() == 'extensao') {
7056 associaEventoBtnConheca(i);
7057 associaEventoBtnComprarConhecaDescontoOk(i);
7058 associaEventoBtnComprarConhecaDescontoNot(i);
7059 associaEventoBtnAlunoNao(i);
7060 associaEventoBtnAlunoSim(i);
7061 }
7062
7063 }
7064
7065 if (pendenciasRenderizacao.length) {
7066 await Promise.all(pendenciasRenderizacao)
7067 }
7068
7069 if (isEmed) {
7070 sliderOfertasEmed();
7071 $('.btn-filtro[value="0"]').removeAttr('disabled');
7072 }
7073 else sliderOfertas();
7074
7075 controlaPaginaBolsa()
7076
7077 }
7078
7079 function hideCardSemTurmas(hide) {
7080 if (!isEmed) {
7081 if (hide)
7082 $('.ssp-card-oferta-curso__sem-vaga').addClass('d-none');
7083 else
7084 $('.ssp-card-oferta-curso__sem-vaga').removeClass('d-none');
7085 } else {
7086
7087
7088 if (hide || getEtapaSelecionadaEmed() == "0") {
7089 $('.sem-vaga-emed').addClass('d-none');
7090 } else {
7091 $('.sem-vaga-emed').removeClass('d-none');
7092 if ($('.sem-vaga-emed.emed-transferencias-space:not(.d-none)').length) return;
7093 var tamScreen = $(window).width();
7094 if (tamScreen < 768) {
7095 $('.slick-area-emed').slick({
7096 slidesToShow: 2,
7097 slidesToScroll: 2,
7098 autoplay: false,
7099 infinite: false,
7100 dots: false,
7101 arrows: false,
7102 centerPadding: 0,
7103 centerMode: false,
7104 responsive: [
7105 {
7106 breakpoint: 768,
7107 settings: {
7108 slidesToShow: 1,
7109 slidesToScroll: 1,
7110 variableWidth: false,
7111 infinite: false,
7112 centerPadding: 0,
7113 centerMode: false,
7114 dots: true,
7115 }
7116 }
7117 ]
7118 });
7119 }
7120 }
7121 }
7122 }
7123
7124 function verificaCursoAprendizagem(i, codigoOferta) {
7125
7126 //Esconde elementsos quando o curso é aprendizagem
7127 if ($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem) {
7128 $('#btnComprar_' + i).remove();
7129 $('#container_investimento_' + i).remove();
7130 $('#container_forma_pgto_' + i).remove();
7131
7132 var avisoAprendizagem = $('#aviso-curso-aprendizagem').clone();
7133 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>'
7134 avisoAprendizagem.removeAttr('id');
7135 avisoAprendizagem.removeClass('d-none');
7136 $('.card_oferta_' + i + ' .ssp-card-oferta-curso').append(avisoAprendizagem);
7137 $('.card_oferta_' + i + ' .ssp-card-oferta-curso').append(btnFormAprendizagem);
7138 }
7139 }
7140
7141 function verificaCursoTrampolim(i, codOferta) {
7142 if (ehCursoTrampolim) {
7143 $('#btnComprar_' + i).remove();
7144 $('#container_investimento_' + i).remove();
7145 $('#container_forma_pgto_' + i).remove();
7146 $('.ssp-card-oferta-curso .codigoOferta_' + codOferta).hide();
7147
7148 var avisoTrampolim = $('#avisoTrampolim').clone();
7149 avisoTrampolim.removeAttr('id');
7150 avisoTrampolim.removeClass('d-none');
7151 $('.card_oferta_' + i + ' .ssp-card-oferta-curso').append(avisoTrampolim);
7152 }
7153 }
7154
7155 async function verificaBotoesEmed(dadosOferta, verificaBolsa) {
7156
7157 var elementoPai = $('.codigoOferta_' + dadosOferta.codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
7158
7159 if (!verificaBolsa || !dadosOferta.dataAberturaBolsaOferta) {
7160 dadosOferta.vagasBolsaOferta = false;
7161 dadosOferta.botaoBolsaOferta = false;
7162 }
7163
7164 var dadosAberturaMatricula = await calculaTempoAberturaBolsa(dadosOferta.dataAberturaMatricula, dadosOferta.horaAberturaBolsaOferta, undefined, !$('#manutencao-compra').val());
7165 var dadosAberturaBolsa = await calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta, dadosOferta.botaoBolsaOferta, dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta && !$('#manutencao-bolsa').val());
7166
7167 // Evita duplicidade quando o fluxo assíncrono reprocessa a mesma oferta.
7168 elementoPai.find('[id^="btnComprarEmed_"], [id^="btnContadorComprar_"], [id^="btnBolsa_"], [id^="btnContadorBolsa_"]').remove();
7169
7170 //INICIO - Logica para Matricula
7171
7172 var textoBotaoMatricula = '';
7173 var exibirBotaoMatricula = true;
7174 var classeBotaoMatricula = '';
7175 var htmlBotaoMatricula = '';
7176
7177 if (dadosAberturaMatricula.exibirContador) {
7178 textoBotaoMatricula = dadosAberturaMatricula.textoContador;
7179 exibirBotaoMatricula = false;
7180 }
7181
7182 //exibe o botão sem cronômetro
7183 if (exibirBotaoMatricula) {
7184 if ($('#manutencao-compra').val()) {
7185 textoBotaoMatricula = $('#manutencao-compra').val();
7186 classeBotaoMatricula = 'disabled manutencao';
7187 } else {
7188
7189 if (dadosOferta.permiteListaEspera == statusEmed.ESPERA && dadosAberturaMatricula.bolsaJaAberta) {
7190 textoBotaoMatricula = 'Lista de espera';
7191 classeBotaoMatricula = 'btn-emed-lista-espera';
7192 } else {
7193 classeBotaoMatricula = '';
7194 if (dadosAberturaMatricula.bolsaJaAberta || !dadosOferta.dataAberturaMatricula || dadosOferta.dataAberturaMatricula == '') {
7195 textoBotaoMatricula = 'Fazer matrícula';
7196
7197 if (dadosOferta.etapa == '0020' || dadosOferta.etapa == '0030') {
7198 textoBotaoMatricula = 'Lista de espera';
7199 classeBotaoMatricula = 'btn-emed-lista-espera';
7200 }
7201 } else {
7202 textoBotaoMatricula = 'Matrícula em ' + formataDataAberturaBolsa(dadosOferta.dataAberturaMatricula, dadosOferta.horaAberturaBolsaOferta);
7203 }
7204 if (!dadosAberturaMatricula.bolsaJaAberta)
7205 classeBotaoMatricula = 'disabled';
7206 }
7207 }
7208
7209 criaBotaoInscreverEmed(dadosOferta, textoBotaoMatricula, classeBotaoMatricula, 'btnComprarEmed_' + dadosOferta.indice, elementoPai);
7210
7211 } else { //exibe o cronometro para matricula
7212
7213 //codigoOferta como index para usar o ofertasMap
7214 htmlBotaoMatricula = '<button id="btnContadorComprar_' + dadosOferta.indice + '" data-index="' + dadosOferta.codigoOferta + '" class="btn btn-card-investimento --inscreva-se">Matrícula em <span>' + textoBotaoMatricula + '</span></button>';
7215 elementoPai.append(htmlBotaoMatricula);
7216 }
7217
7218 //INICIO - Logica para Botão Bolsa
7219
7220 var textoBotaoBolsa = '';
7221 var classeBotaoBolsa = '';
7222 var exibirBotaoBolsa = false;
7223 var exibirContadorBolsa = false;
7224 var htmlBotaoBolsa = '';
7225
7226 //verifica se o botão de concorrer a bolsa deve aparecer
7227 //Oferta EMED possui bolsa apenas no 1o ano
7228 if (dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta && !dadosAberturaBolsa.exibirContador) {
7229 exibirBotaoBolsa = true;
7230 if ($('#manutencao-bolsa').val()) {
7231 classeBotaoBolsa = 'disabled manutencao';
7232 textoBotaoBolsa = $('#manutencao-bolsa').val();
7233 } else {
7234 if (dadosOferta.vagasBolsaOferta) {
7235 classeBotaoBolsa = dadosAberturaBolsa.bolsaJaAberta ? '' : 'disabled';
7236 textoBotaoBolsa = dadosAberturaBolsa.bolsaJaAberta ? 'Bolsa de estudo' : 'Bolsa em ' + formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
7237 } else {
7238 classeBotaoBolsa = 'disabled';
7239 textoBotaoBolsa = 'Bolsas de Estudo Esgotadas';
7240 }
7241 }
7242 }
7243
7244 //Verifica se o botão do cronômetro deve aparecer
7245 if (dadosAberturaBolsa.exibirContador) {
7246 textoBotao = dadosAberturaBolsa.textoContador;
7247 textoBotaoBolsa = dadosAberturaBolsa.textoContador;
7248 exibirContadorBolsa = true;
7249 exibirBotaoBolsa = false;
7250 }
7251
7252 if (exibirBotaoBolsa) {
7253
7254 if (!ofertasComBolsa) ofertasComBolsa = true;
7255
7256 criaBotaoBolsaEmed(dadosOferta, textoBotaoBolsa, classeBotaoBolsa);
7257
7258 } else if (exibirContadorBolsa) {
7259
7260 if (!ofertasComBolsa && dadosOferta.etapa == '0010') ofertasComBolsa = true;
7261
7262 if (dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta) {
7263 htmlBotaoBolsa = '<button id="btnContadorBolsa_' + dadosOferta.indice + '" data-index="' + dadosOferta.codigoOferta + '" class="btn btn-card-investimento --bolsas">Bolsa em <span>' + textoBotaoBolsa + '</span></button>';
7264 elementoPai.append(htmlBotaoBolsa);
7265 }
7266 }
7267
7268 }
7269
7270 function criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, idBotao, elementoPai, index) {
7271 criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai);
7272 var btnInscr = elementoPai.find('#btnComprarEmedModal_' + index);
7273 btnInscr.removeClass(btnInscr.classList);
7274 btnInscr.addClass('btn btn-lg btn-success w-100');
7275 btnInscr.attr('style', 'margin-top: 20px;font-weight:600');
7276
7277 //Reposiciona o botao voltar
7278 var btnVoltar = elementoPai.find('.ssp-btn-emed__voltar-curso');
7279 elementoPai.find('.ssp-btn-emed__voltar-curso').remove();
7280 elementoPai.append(btnVoltar);
7281 btnVoltar.addClass('ssp-btn-emed__voltar-curso_' + index);
7282 btnVoltar.click(() => {
7283 $('[id^="myModal_"]').each(function (index, modal) {
7284 modal.style.display = "none";
7285 })
7286 });
7287 }
7288
7289 function preencheDadosEmedModal(oferta, $modal) {
7290 const parcelaEntrada = 1;
7291 $modal.find('.numParcelaCartoesBoleto').text(oferta.numeroMaxParcelasOferta - parcelaEntrada);
7292 $modal.find('.precoParcelaCartoesBoleto').text(formataValor(oferta.precoVendaMaxParcelaOferta));
7293 $modal.find('.numParcelaEmedModal').text(oferta.numeroMaxParcelasOferta - parcelaEntrada);
7294 $modal.find('.precoParcelaEmedModal').text(formataValor(oferta.precoVendaMaxParcelaOferta));
7295 }
7296
7297
7298 function criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai) {
7299 if (oferta.permiteListaEspera && oferta.permiteListaEspera == statusEmed.NAO_ENCONTRADA) return;
7300 var htmlBotao = '<button id="' + idBotao + '" data-index="' + oferta.indice + '" class="btn btn-card-investimento --inscreva-se ' + classeBotao + '"><span>' + textoBotao + '</span></button>';
7301 elementoPai.append(htmlBotao);
7302
7303 if (!classeBotao.includes('disabled')) {
7304
7305 elementoPai.on("click", '#' + idBotao, function (ev) {
7306 ev.preventDefault();
7307 const _modal = $('#modalAntesCompraEmed_' + $(this).data('index'));
7308 _modal.css('display', 'flex');
7309
7310
7311 });
7312
7313 }
7314
7315 }
7316
7317 function criaBotaoBolsaEmed(oferta, textoBotaoBolsa, classeBotaoBolsa = "") {
7318
7319 var htmlBotao = '<a id="btnBolsa_' + oferta.indice + '" data-index="' + oferta.indice + '" class="btn btn-card-investimento --bolsas ' + classeBotaoBolsa + '">' + textoBotaoBolsa + '</a>';
7320 $('.codigoOferta_' + oferta.codigoOferta + ' .ssp-ofertas-emed__card-info-investimento').append(htmlBotao);
7321
7322 if (!classeBotaoBolsa.includes('disabled')) {
7323 // Associa o evento de clique no botão de bolsa
7324 $('#btnBolsa_' + oferta.indice).attr('href', linkBolsa(oferta));
7325 $('#btnBolsa_' + oferta.indice).attr('target', '_blank');
7326 //$('#btnBolsa_'+oferta.indice).attr('style', 'text-transform:uppercase;');
7327
7328 }
7329 }
7330
7331 function criaBotaoBolsa(oferta, textoBotaoBolsa, classeBotaoBolsa = "") {
7332
7333 const botao = $('<a>' + textoBotaoBolsa + '</a>');
7334 botao.attr('id', 'btnBolsa_' + oferta.indice);
7335 botao.attr('data-index', oferta.indice);
7336 botao.attr('class', 'btn btn-lg btn-info w-100 mt-3 ' + (classeBotaoBolsa || ''));
7337 botao.css('font-size', '14px');
7338 botao.css('font-weight', '600');
7339 botao.css('background-color', '#004EFF');
7340 if (!classeBotaoBolsa.includes('disabled')) {
7341 if (oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) {
7342 botao.attr('data-espaco-ex', 'true');
7343 botao.click((ev) => {
7344 ev.preventDefault();
7345 $('#btnCompraLocal_' + oferta.indice).hide();
7346 $('#btnBolsaLocal_' + oferta.indice).show();
7347 const _modal = $('#modalAntesCompra_' + oferta.indice);
7348 _modal.css('display', 'flex');
7349 });
7350 } else {
7351 botao.attr('href', linkBolsa(oferta));
7352 botao.attr('target', '_blank');
7353 }
7354 }
7355
7356 return botao;
7357
7358 }
7359
7360 function verificaBotaoBolsaSS(oferta, codigoUnidade) {
7361
7362 if (!isEmed && (!oferta.dataAberturaBolsaOferta || oferta.dataAberturaBolsaOferta == '')) return;
7363
7364 if (!ehCursoTrampolim) {
7365 return Promise.resolve($.ajax({
7366 url: getUrlConsultaBolsa(oferta),
7367 type: 'get',
7368 dataType: 'json',
7369 beforeSend: function (xhr) {
7370 xhr.setRequestHeader("Authorization", "KGG4KMW5s0CVowr7d6y6Ww==");
7371 },
7372 }))
7373 .then(async function (infosBolsa) {
7374
7375
7376 if (infosBolsa != null && typeof infosBolsa !== 'undefined') {
7377
7378 var codigoOfertaRetornoBolsa = infosBolsa.DATA[0].COD_EVENTO;
7379 var retornoOfertaBolsaSenac = infosBolsa.DATA[0];
7380
7381 //Sobrescreve as flags de bolsa com o retorno do serviço SS
7382 ofertasMap.get(codigoOfertaRetornoBolsa).vagasBolsaOferta = retornoOfertaBolsaSenac.TEM_VAGA_BOLSA;
7383 ofertasMap.get(codigoOfertaRetornoBolsa).botaoBolsaOferta = retornoOfertaBolsaSenac.BOTAO_BOLSA;
7384
7385 var dadosOferta = ofertasMap.get(codigoOfertaRetornoBolsa);
7386
7387 //EMED
7388 if (isEmed) {
7389 await verificaBotoesEmed(dadosOferta, true);
7390 controlaPaginaBolsa();
7391 return;
7392 }
7393
7394 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
7395 var dadosAberturaBolsa = await calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta, dadosOferta.botaoBolsaOferta, !$('#manutencao-bolsa').val());
7396 var textoBotaoBolsa = '';
7397 var classeBotaoBolsa = '';
7398 var textoBotaoContadorBolsa = '';
7399 var exibirBotaoBolsa = false;
7400 var exibirContadorBolsa = false;
7401
7402 //Verifica o texto do botão de bolsa
7403 if ($('#manutencao-bolsa').val()) textoBotaoBolsa = $('#manutencao-bolsa').val();
7404 else {
7405
7406 if (retornoOfertaBolsaSenac.TEM_VAGA_BOLSA) {
7407
7408 if (dadosAberturaBolsa.bolsaJaAberta)
7409 textoBotaoBolsa = "Inscrever para bolsa de estudo";
7410
7411 else
7412 textoBotaoBolsa = "Inscrições para bolsas a partir de " + formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
7413
7414 if (!ofertasComBolsa) {
7415 ofertasComBolsa = true;
7416 }
7417 } else
7418 textoBotaoBolsa = "Vagas esgotadas para bolsas de estudo";
7419 }
7420
7421 //verifica se o botão de concorrer a bolsa deve aparecer
7422 if (retornoOfertaBolsaSenac.BOTAO_BOLSA && !dadosAberturaBolsa.exibirContador) {
7423
7424 exibirBotaoBolsa = true;
7425
7426 if (!ofertasComBolsa) ofertasComBolsa = true;
7427
7428 if (retornoOfertaBolsaSenac.TEM_VAGA_BOLSA && dadosAberturaBolsa.bolsaJaAberta && !$('#manutencao-bolsa').val()) {
7429 classeBotaoBolsa = '';
7430 } else {
7431 classeBotaoBolsa = 'disabled';
7432 }
7433 }
7434
7435 //Verifica se o botão do cronômetro deve aparecer
7436 if (dadosAberturaBolsa.exibirContador && !$('#manutencao-bolsa').val()) {
7437 textoBotaoContadorBolsa = dadosAberturaBolsa.textoContador;
7438 exibirContadorBolsa = true;
7439 }
7440
7441 if (exibirBotaoBolsa)
7442 $('.codigoOferta_' + codigoOfertaRetornoBolsa + ' .ssp-card-oferta-curso .ssp-container-botao-bolsa').append(criaBotaoBolsa(dadosOferta, textoBotaoBolsa, classeBotaoBolsa))
7443 else if (exibirContadorBolsa)
7444 $('.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>')
7445 else {
7446 $('.codigoOferta_' + codigoOfertaRetornoBolsa + '.content-btn-bolsa').hide()
7447 $('.show-price-content.codigoOferta_' + oferta.codigoOferta + ' .ou-separator-desconto').hide()
7448 }
7449
7450 } else {
7451 //EMED
7452 if (isEmed) {
7453 await verificaBotoesEmed(oferta, false);
7454 }
7455 }
7456
7457 controlaPaginaBolsa()
7458 }, async function () {
7459 $('.content-btn-bolsa.codigoOferta_' + oferta.codigoOferta).hide()
7460 $('.show-price-content.codigoOferta_' + oferta.codigoOferta + ' .ou-separator-desconto').hide()
7461
7462 //EMED
7463 if (isEmed) {
7464 await verificaBotoesEmed(oferta, false);
7465 }
7466 })
7467 .catch(function (error) {
7468 console.error('Erro ao atualizar abertura da bolsa:', error);
7469 $('.content-btn-bolsa.codigoOferta_' + oferta.codigoOferta).hide();
7470 });
7471
7472
7473 }
7474
7475 }
7476
7477 function controlaPaginaBolsa() {
7478 if (ofertasComBolsa)
7479 $("#ssp-abrir-pagina-bolsa").removeClass("d-none")
7480 else
7481 $("#ssp-abrir-pagina-bolsa").addClass("d-none")
7482 }
7483
7484 function associaEventoBtnFormaPagamento(i) {
7485 var modal = document.getElementById("myModal_" + i);
7486
7487 var btn = document.getElementById("myBtn_" + i);
7488
7489 if (btn != null) {
7490 btn.onclick = function (ev) {
7491 event.preventDefault()
7492
7493 $('#modalExtAluno_' + i).addClass('d-none');
7494
7495 var elem = $(ev.target);
7496 var _modal = document.getElementById(
7497 'myModal_' + elem.data('index'));
7498 _modal.style.display = "block";
7499 $('#myModal_' + i).find('.modal-extensao_content:first-child').removeClass('d-none');
7500
7501 }
7502 }
7503
7504
7505
7506
7507 }
7508
7509
7510 function actionBtnComprar(elem) {
7511
7512 // Montar object push - google tag manager - 3
7513 ofertaSelecionada = itensEcommerce.get(elem.attr('data-evento'))
7514 sendEventEcommerce("select_item", ofertaSelecionada);
7515 sendEventEcommerce("view_item", ofertaSelecionada);
7516
7517 //Verifica se deve exibir o modal com a localização
7518 if (elem.attr('data-espaco-ex') == 'true') {
7519 $('#btnCompraLocal_' + elem.data('index')).show();
7520
7521 //Limpa onclicks para nao repetir execucao
7522 $('#modalAntesCompra_' + elem.data('index')).off('click', '#btnCompraLocal_' + elem.data('index'))
7523 $('#modalAntesCompra_' + elem.data('index')).on('click', '#btnCompraLocal_' + elem.data('index'), function () {
7524 // Montar object push - google tag manager - 4
7525 sendEventEcommerce("add_to_cart", ofertaSelecionada);
7526 if (elem.attr('data-destino-compra') != '2')
7527 sendEventEcommerce("begin_checkout", ofertaSelecionada);
7528 })
7529 $('#btnBolsaLocal_' + elem.data('index')).hide();
7530 const _modal = $('#modalAntesCompra_' + elem.data('index'));
7531 _modal.css('display', 'flex');
7532 } else {
7533 var urlCompra = linkBotaoCompra.replace('\{codigoUnidade\}', elem.attr('data-unidade')).replace('\{codigoOferta\}', elem.attr('data-evento'));
7534
7535 if (elem.attr('data-destino-compra') == '2') {
7536 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val());
7537
7538 addItemBackpack(elem.attr('data-evento'), '#' + elem.attr('id'), elem.attr('data-unidade'), dataEfetivaFormat);
7539
7540 } else {
7541 window.open(urlCompra, '_blank');
7542 }
7543 }
7544
7545
7546
7547 }
7548
7549 function associaEventoBtnComprar(i) {
7550 var btnComprar = document.getElementById("btnComprar_" + i);
7551
7552 if (btnComprar != null && !btnComprar.classList.contains('disabled')) {
7553 btnComprar.onclick = function (ev) {
7554
7555 ev.preventDefault()
7556 var elem = $(ev.target);
7557 actionBtnComprar(elem);
7558
7559 }
7560 }
7561 }
7562
7563 function associaEventoBtnComprarDentroFormaPgto(i) {
7564 var btnComprarFormaPgto = document.getElementById("btnComprarFormaPgto_" + i);
7565
7566 if (btnComprarFormaPgto != null && !btnComprarFormaPgto.classList.contains('disabled')) {
7567 btnComprarFormaPgto.onclick = function (ev) {
7568 event.preventDefault()
7569 var elem = $('#btnComprarFormaPgto_' + i);
7570 actionBtnComprar(elem);
7571 }
7572 }
7573 }
7574
7575 function associaEventoBtnComprarConhecaDescontoOk(i) {
7576 var btnComprarConhecaDescontoOk = document.getElementById("btnComprarConhecaDescontoOk_" + i);
7577
7578 if (btnComprarConhecaDescontoOk != null) {
7579 btnComprarConhecaDescontoOk.onclick = function (ev) {
7580 event.preventDefault()
7581 var elem = $(ev.target);
7582 actionBtnComprar(elem);
7583 }
7584 }
7585 }
7586
7587 function associaEventoBtnComprarConhecaDescontoNot(i) {
7588 var btnComprarConhecaDescontoNot = document.getElementById("btnComprarConhecaDescontoNot_" + i);
7589
7590 if (btnComprarConhecaDescontoNot != null) {
7591 btnComprarConhecaDescontoNot.onclick = function (ev) {
7592 event.preventDefault()
7593 var elem = $(ev.target);
7594 actionBtnComprar(elem);
7595 }
7596 }
7597 }
7598
7599 function associaEventoBtnAlunoNao(i) {
7600 var btnAlunoNao = document.getElementById("btn-aluno-nao_" + i);
7601
7602 if (btnAlunoNao != null) {
7603 btnAlunoNao.onclick = function (ev) {
7604 event.preventDefault()
7605 var elem = $(ev.target);
7606 elem.addClass('modal-extensao-btn-aluno-sim-ativo'),
7607 elem.closest('.sim').removeClass('modal-extensao-btn-aluno-sim-ativo');
7608 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo')
7609 $('#msg-alunoNao_' + i).removeClass('d-none');
7610 $('#msg-alunoSim_' + i).addClass('d-none');
7611 }
7612 }
7613 }
7614
7615 function associaEventoBtnAlunoSim(i) {
7616 var btnAlunoSim = document.getElementById("btn-aluno-sim_" + i);
7617
7618 if (btnAlunoSim != null) {
7619 btnAlunoSim.onclick = function (ev) {
7620 event.preventDefault()
7621 var elem = $(ev.target);
7622 elem.addClass('modal-extensao-btn-aluno-sim-ativo'),
7623 elem.closest('.nao').removeClass('modal-extensao-btn-aluno-sim-ativo');
7624 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo')
7625 $('#msg-alunoSim_' + i).removeClass('d-none');
7626 $('#msg-alunoNao_' + i).addClass('d-none');
7627
7628 }
7629 }
7630 }
7631
7632 function associaEventoBtnConheca(i) {
7633 var btnModalExtConheca = document.getElementById("btnModalExtConheca_" + i);
7634
7635 if (btnModalExtConheca != null) {
7636 btnModalExtConheca.onclick = function (ev) {
7637 event.preventDefault();
7638 var elem = $(ev.target);
7639 elem.closest('.modal-extensao_content').addClass('d-none');
7640 $('#modalExtAluno_' + i).removeClass('d-none');
7641 $('#msg-alunoSim_' + i).addClass('d-none');
7642 $('#msg-alunoNao_' + i).addClass('d-none');
7643 $('#btn-aluno-sim_' + i).removeClass('modal-extensao-btn-aluno-sim-ativo');
7644 $('#btn-aluno-nao_' + i).removeClass('modal-extensao-btn-aluno-sim-ativo');
7645
7646 }
7647 }
7648 }
7649
7650 function associaEventoBtnLocalRealizacao(i) {
7651 var btnLocalRealizacao = document.getElementById("btnLocalRealizacao_" + i);
7652
7653 if (btnLocalRealizacao != null) {
7654 btnLocalRealizacao.onclick = function (ev) {
7655 event.preventDefault();
7656 var elem = $(ev.target);
7657 var _modal = document.getElementById(
7658 'modalLocalRealizacao_' + elem.data('index'));
7659 _modal.style.display = "flex";
7660 }
7661 }
7662 }
7663
7664 function associaEventosFecharModal(i) {
7665
7666 var span = document.getElementsByClassName("ssp-card-modal-forma-pagamento__btn-close_" + i);
7667 var closeModalLocalRealizacao = document.getElementsByClassName("ssp-card-modal-local-realizacao__btn-close_" + i)[0];
7668 var closeModalAntesCompra = document.getElementsByClassName("ssp-card-modal-antes-compra__btn-close_" + i)[0];
7669 var closeModalSelecionarOutro = document.getElementsByClassName("ssp-card-modal-selecionar-outro__btn-close_" + i)[0];
7670 var btnEntendiLocalRealizacao = document.getElementsByClassName("ssp-modal-local-realizacao__btn_" + i)[0];
7671 var closeModalBotaoBolsa = document.getElementById("btnBolsaLocal_" + i)
7672
7673 if (isEmed) {
7674 var closeModalFormaPagamento = document.getElementsByClassName("ssp-btn-emed__voltar-curso_" + i);
7675 for (const val of closeModalFormaPagamento) {
7676
7677 val.onclick = function () {
7678 $('[id^="myModal_"]').each(function (index, modal) {
7679 modal.style.display = "none";
7680 });
7681 }
7682 };
7683 }
7684
7685 //event close modal
7686 for (const val of span) {
7687
7688 val.onclick = function () {
7689 $('[id^="myModal_"]').each(function (index, modal) {
7690 modal.style.display = "none";
7691 });
7692 }
7693 };
7694
7695 closeModalLocalRealizacao.onclick = function () {
7696
7697 $('[id^="modalLocalRealizacao_"]').each(function (index, modal) {
7698 modal.style.display = "none";
7699
7700 });
7701 }
7702
7703 closeModalAntesCompra.onclick = function () {
7704
7705 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function (index, modal) {
7706 modal.style.display = "none";
7707 });
7708 }
7709
7710 closeModalSelecionarOutro.onclick = function () {
7711
7712 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function (index, modal) {
7713 modal.style.display = "none";
7714 });
7715 }
7716
7717 btnEntendiLocalRealizacao.onclick = function () {
7718
7719 $('[id^="modalLocalRealizacao_"]').each(function (index, modal) {
7720 modal.style.display = "none";
7721 });
7722 }
7723
7724 if (closeModalBotaoBolsa != null) {
7725 closeModalBotaoBolsa.onclick = function () {
7726
7727 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function (index, modal) {
7728 modal.style.display = "none";
7729 });
7730 }
7731 }
7732
7733 // When the user clicks anywhere outside of the modal, close it
7734 window.onclick = function (event) {
7735
7736 $('[id^="myModal_"]').each(function (index, _modal) {
7737 if (event.target == _modal)
7738 _modal.style.display = "none";
7739 });
7740 $('[id^="modalLocalRealizacao_"]').each(function (index, _modal) {
7741 if (event.target == _modal)
7742 _modal.style.display = "none";
7743 });
7744
7745 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function (index, _modal) {
7746 if (event.target == _modal)
7747 _modal.style.display = "none";
7748 });
7749 }
7750 }
7751
7752 function turmasIniciadas(dataInicioCurso) {
7753
7754 var hoje = new Date();
7755 var dataInicioPartes = dataInicioCurso.split('/');
7756 var dataInicioCursoOferta = new Date(dataInicioPartes[2], dataInicioPartes[1] - 1, dataInicioPartes[0], hoje.getHours(), hoje.getMinutes(), hoje.getSeconds(), hoje.getMilliseconds());
7757
7758 return dataInicioCursoOferta.getTime() <= hoje.getTime();
7759 }
7760
7761
7762 function concatSTR(str1, str2, separador) {
7763
7764 if (str2) {
7765
7766 return str1 + separador + str2;
7767 }
7768 return str1;
7769 }
7770
7771 //Formata exibicao de datas conforme especificacao GCR
7772 function formataPeriodo(dataInicio, dataFim) {
7773
7774 // Se as datas são iguais, retornar apenas a data final
7775 if (dataInicio === dataFim) {
7776 return dataFim;
7777 }
7778
7779 var dtInicioPartes = dataInicio.split('/');
7780 var dtFimPartes = dataFim.split('/');
7781
7782 //Não exibir o número zero antes dos números e o dia 1 como 1º
7783 var dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim())) + '/' + parseInt(dtInicioPartes[1].trim()) + '/' + dtInicioPartes[2].trim();
7784 var dFimFormatada = (parseInt(dtFimPartes[0].trim()) == 1 ? '1º' : parseInt(dtFimPartes[0].trim())) + '/' + parseInt(dtFimPartes[1].trim()) + '/' + dtFimPartes[2].trim();
7785
7786 //Quando um curso inicia e finaliza dentro do mesmo ano: 17/2 a 25/4/2020
7787 if (dtInicioPartes[2].trim() == dtFimPartes[2].trim()) {
7788
7789 dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim())) + '/' + parseInt(dtInicioPartes[1].trim());
7790
7791 //Quando um curso inicia e finaliza dentro do mesmo mês: 5 a 30/4/2020
7792 if (dtInicioPartes[1].trim() == dtFimPartes[1].trim())
7793 dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim()));
7794 }
7795
7796 return dInicioFormatada + ' a ' + dFimFormatada;
7797 }
7798
7799 //Decrementa os contadores de abertudas de bolsa
7800 function atualizaTempoAberturasBolsas() {
7801
7802 var btnsContador = (isEmed) ? $('[id^="btnContadorBolsa_"], [id^="btnContadorComprar_"]') : $('[id^="btnContadorBolsa_"]');
7803
7804 btnsContador.each(async function () {
7805 try {
7806
7807 var index = $(this).data('index');
7808 var elId = $(this).attr('id');
7809 var btnContent = $(this).parent('.ssp-btn-group__content');
7810
7811 if (isEmed) {
7812 //EMED filtra ofertas e usa outra lista para referenciar as ofertas carregadas
7813 var dadosAberturaBolsa = await calculaTempoAberturaBolsa((elId.indexOf('btnContadorBolsa') >= 0) ? ofertasMap.get('' + index).dataAberturaBolsaOferta : ofertasMap.get('' + index).dataAberturaMatricula, ofertasMap.get('' + index).horaAberturaBolsaOferta);
7814 } else {
7815 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
7816 var dadosAberturaBolsa = await calculaTempoAberturaBolsa(objsTela.ofertas[index].dataAberturaBolsaOferta, objsTela.ofertas[index].horaAberturaBolsaOferta, objsTela.ofertas[index].botaoBolsaOferta);
7817 }
7818
7819 $(this).find('span').text(dadosAberturaBolsa.hours + ':' + dadosAberturaBolsa.minutes + ':' + dadosAberturaBolsa.seconds);
7820
7821 //Se esgotou o contador
7822 if (dadosAberturaBolsa.hours == 0 && dadosAberturaBolsa.minutes == 0 && dadosAberturaBolsa.seconds == 0) {
7823
7824 //remove o contador
7825 $(this).remove();
7826
7827 //Habilitar inscrição EMED
7828 if (isEmed) {
7829 var ofertaEmed = ofertasMap.get('' + index);
7830 var btnIndex = elId.slice(elId.indexOf('_') + 1);
7831 var elementoPai = $('.codigoOferta_' + ofertaEmed.codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
7832
7833 if (elId.indexOf('btnContadorBolsa') >= 0) {
7834 if ($('#manutencao-bolsa').val())
7835 criaBotaoBolsaEmed(ofertaEmed, $('#manutencao-bolsa').val(), 'disabled manutencao');
7836 else if (ofertaEmed.vagasBolsaOferta == true || ofertaEmed.vagasBolsaOferta == "true")
7837 criaBotaoBolsaEmed(ofertaEmed, 'Bolsa de estudo', '');
7838 else
7839 criaBotaoBolsaEmed(ofertaEmed, 'Bolsas de Estudo Esgotadas', 'disabled');
7840 } else if (elId.indexOf('btnContadorComprar') >= 0) {
7841
7842 var textoBotao, classeBotao;
7843
7844 textoBotao = $('#manutencao-compra').val() || 'Fazer matrícula';
7845 classeBotao = $('#manutencao-compra').val() ? 'disabled manutencao' : '';
7846
7847 //Garante a ordenação dos botoes (matricula depois bolsa)
7848 const botaoBolsa = document.getElementById('btnBolsa_' + btnIndex) || document.getElementById('btnContadorBolsa_' + btnIndex);
7849
7850 botaoBolsa?.remove(); // Remove se existir
7851
7852 criaBotaoInscreverEmed(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmed_' + ofertaEmed.indice, elementoPai);
7853
7854 if (botaoBolsa) {
7855 elementoPai.append(botaoBolsa);
7856 }
7857
7858 //Altera o botao do modal de pagamento
7859 var modal = $('#myModal_' + btnIndex).find('.ssp-card-modal-forma-pagamento');
7860 var btnModal = modal.find('#btnComprarEmedModal_' + btnIndex);
7861 if (btnModal) {
7862 btnModal.remove();
7863 criaBotaoInscreverEmedModal(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmedModal_' + btnIndex, modal, btnIndex);
7864 preencheDadosEmedModal(ofertaEmed, modal);
7865 }
7866
7867
7868 }
7869
7870 } else {
7871
7872 //Checa as condições das vagas do botão de bolsa
7873 var btnBolsaHTML = null;
7874 if ($('#manutencao-bolsa').val())
7875 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], $('#manutencao-bolsa').val(), 'disabled manutencao');
7876 else if (objsTela.ofertas[index].vagasBolsaOferta == true || objsTela.ofertas[index].vagasBolsaOferta == "true")
7877 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Inscrever para bolsa de estudo');
7878 else
7879 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Vagas esgotadas para bolsas de estudo', 'disabled');
7880
7881 $('.codigoOferta_' + objsTela.ofertas[index].codigoOferta + '.ssp-container-botao-bolsa').append(btnBolsaHTML);
7882
7883
7884 }
7885 }
7886
7887 } catch (error) {
7888 console.error('Erro ao atualizar contador da oferta:', error);
7889 }
7890 });
7891
7892 }
7893
7894 // Sincroniza com o servidor apenas quando a avaliacao preliminar permite contador.
7895 async function calculaTempoAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, botaoBolsa, permitirContador = true) {
7896 var dadosAberturaBolsa = calcularDadosAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, botaoBolsa, permitirContador);
7897
7898 if (dadosAberturaBolsa.exibirContador && !todayG) {
7899 await loadServerDate();
7900 dadosAberturaBolsa = calcularDadosAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, botaoBolsa, permitirContador);
7901 }
7902
7903 return dadosAberturaBolsa;
7904 }
7905
7906 // Usa o horario local ate a primeira sincronizacao e o mesmo relogio em todo o calculo.
7907 function calcularDadosAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, botaoBolsa, permitirContador) {
7908
7909 var dadosAberturaBolsa = {
7910 days: '',
7911 hours: '',
7912 minutes: '',
7913 seconds: '',
7914 bolsaJaAberta: false,
7915 exibirContador: false,
7916 textoContador: ''
7917 };
7918
7919 if (!dataAberturaBolsa || !horaAberturaBolsa)
7920 return dadosAberturaBolsa;
7921
7922 var now = todayG || new Date();
7923 var dia = now.getDate();
7924 var horarioDia = now.getHours();
7925
7926 var tempoRestante = tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, now);
7927
7928 //console.log('tempo restante '+tempoRestante);
7929
7930 var diaAberturaBolsa = dataAberturaBolsa.split('-')[2];
7931
7932 var delta = tempoRestante / 1000;
7933
7934 var days = Math.floor(delta / 86400);
7935
7936 delta -= days * 86400;
7937
7938 var hours = Math.floor(delta / 3600) % 24;
7939 delta -= hours * 3600;
7940
7941 var minutes = Math.floor(delta / 60) % 60;
7942 delta -= minutes * 60;
7943
7944 var seconds = Math.floor(delta % 60);
7945
7946 //Zerar contador para data que ja passou
7947 if (days < 0) {
7948 dadosAberturaBolsa.days = 0;
7949 dadosAberturaBolsa.hours = '00';
7950 dadosAberturaBolsa.minutes = '00';
7951 dadosAberturaBolsa.seconds = '00';
7952 } else {
7953 dadosAberturaBolsa.days = days;
7954 dadosAberturaBolsa.hours = hours < 10 ? '0' + hours : hours;
7955 dadosAberturaBolsa.minutes = minutes < 10 ? '0' + minutes : minutes;
7956 dadosAberturaBolsa.seconds = seconds < 10 ? '0' + seconds : seconds;
7957 }
7958
7959 dadosAberturaBolsa.bolsaAberta = days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0;
7960 var horaExibeContador = 8;
7961 if (!permitirContador || (!isEmed && botaoBolsa == false)) {
7962 dadosAberturaBolsa.exibirContador = false;
7963 } else {
7964 dadosAberturaBolsa.exibirContador = days == 0 && horarioDia >= horaExibeContador && !dadosAberturaBolsa.bolsaAberta && (diaAberturaBolsa == dia);
7965 dadosAberturaBolsa.textoContador = dadosAberturaBolsa.hours + ':' + dadosAberturaBolsa.minutes + ":" + dadosAberturaBolsa.seconds;
7966 }
7967 dadosAberturaBolsa.bolsaJaAberta = tempoRestante < 0;
7968
7969 return dadosAberturaBolsa;
7970
7971 }
7972
7973 // Verifica se uma oferrta já chegou sua data de abertura
7974 function tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, now) {
7975 // console.log(dataAberturaBolsa);
7976 // console.log(horaAberturaBolsa);
7977
7978 //var today = new Date();
7979
7980
7981 //console.log( "TodayG "+ todayG);
7982
7983 //Precisa fazer formatação nos horários pois pode estar como 9h ou 9h30
7984 var partesHora = horaAberturaBolsa.split('h');
7985
7986 var partesHora = partesHora.filter(function (el) {
7987 return el != "";
7988 });
7989
7990 //formato 9h
7991 if (partesHora.length == 1)
7992 var aberturaBolsa = new Date(dataAberturaBolsa + 'T' + partesHora[0].trim().padStart(2, '0') + ":00");
7993
7994 else {
7995
7996 //format 9h3
7997 if (partesHora[1].length == 1)
7998 var aberturaBolsa = new Date(dataAberturaBolsa + 'T' + partesHora[0].trim().padStart(2, '0') + ':' + partesHora[1] + '0');
7999
8000 //formato 9h30
8001 else
8002 var aberturaBolsa = new Date(dataAberturaBolsa + 'T' + partesHora[0].trim().padStart(2, '0') + ':' + partesHora[1]);
8003 }
8004
8005 // console.log(aberturaBolsa);
8006 if (Number.isNaN(aberturaBolsa.getTime())) {
8007 throw new Error('Data ou hora de abertura invalida: ' + dataAberturaBolsa + ' ' + horaAberturaBolsa);
8008 }
8009 return aberturaBolsa - now;
8010 }
8011
8012 function formataDataAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa) {
8013 var dataPartes = dataAberturaBolsa.split('-');
8014
8015 return dataPartes[2] + '/' + dataPartes[1] + ' às ' + horaAberturaBolsa.replace('h', '').trim() + ' horas';
8016
8017 }
8018
8019 function formataValor(valor) {
8020
8021 if (!valor.toString().includes(".")) {
8022 valor = parseFloat(valor).toLocaleString('pt-BR') + ",00";
8023 } else {
8024 valor = parseFloat(valor).toLocaleString('pt-BR');
8025
8026 if (valor.split(",").length == 2) {
8027
8028 if (valor.split(",")[1].length == 1)
8029 valor += "0";
8030
8031 } else
8032 valor += ",00";
8033 }
8034
8035 return valor;
8036 }
8037
8038 function ajustarCasasDecimaisSemArredondar(numero, casas) {
8039 const str = numero + ''
8040 const arr = str.split('.')
8041 return parseFloat(arr[0].concat('.').concat(arr[1] ? arr[1].substring(0, casas) : '0'))
8042 }
8043
8044 function possuiCriteriosDesconto2022(dt) {
8045 return dt.substring(dt.lastIndexOf('/') + 1) >= 2022
8046 && (
8047 $('[name="tipoCurso"]').val() == 'livre'
8048 || ($('[name="tipoCurso"]').val() == 'tecnico' && $('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio')
8049 || $('[name="tipoCurso"]').val() == 'extensao'
8050 )
8051 }
8052
8053 function strToFloat(str) {
8054 const separator = str.includes(',') ? ',' : '.'
8055
8056 const numArr = str.split(separator)
8057 const inteiro = numArr[0].replaceAll('.', '').replaceAll(',', '.')
8058 const decimal = numArr[1] ? numArr[1].replaceAll('.', '').replaceAll(',', '.') : ''
8059 return parseFloat(inteiro.concat('.').concat(decimal ? decimal : '0'))
8060 }
8061
8062 /**
8063 * Compare date formatted as "YYYY-MM-DD" with the current date
8064 * Return:
8065 * -1 if dateStr < today
8066 * 0 if dateStr == today
8067 * 1 if dateStr > today
8068 */
8069 function compareDates(dateStr1, dateStr2) {
8070
8071 const convertDate = (dateStr) => {
8072 if (typeof dateStr !== 'string') throw new TypeError('dateStr must be a string with format YYYY-MM-DD');
8073 const match = dateStr.match(/^(\d{4})-(\d{2})-(\d{2})$/);
8074 if (!match) throw new Error('invalid format. Use YYYY-MM-DD');
8075 const [, yy, mm, dd] = match;
8076 return Date.UTC(Number(yy), Number(mm) - 1, Number(dd));
8077 }
8078
8079 const date1 = convertDate(dateStr1);
8080 const date2 = convertDate(dateStr2);
8081 if (date1 < date2) return -1;
8082 if (date1 > date2) return 1;
8083 return 0;
8084 }
8085
8086 const CampanhaMensalidade = Object.freeze({
8087 SEM_CAMPANHA: 'SEM_CAMPANHA',
8088 CAMPANHA_TECNICO_2026: 'CAMPANHA_TECNICO_2026',
8089 CAMPANHA_TECNICO_2027: 'CAMPANHA_TECNICO_2027'
8090 });
8091
8092 function possuiMensalidadeCampanha(oferta) {
8093 const dataInicio = oferta.dataInicio.split('/').reverse().join('-');
8094 const precoParcelaCartoes = parseFloat(oferta.precoParcelaCartoes.replace(',', '.'));
8095 const precoParcelaBoleto = parseFloat(oferta.precoParcelaBoleto.replace(',', '.'));
8096
8097 const modalidadeValida =
8098 $('[name="modalidades"]').val() == 'hab.-tecnica-de-nivel-medio' ||
8099 $('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio' ||
8100 $('[name="modalidades"]').val() == 'qualificacao-profissional';
8101
8102 if (!modalidadeValida) {
8103 return CampanhaMensalidade.SEM_CAMPANHA;
8104 }
8105
8106 const campanha2027 =
8107 oferta.precoVendaMaxParcelaOferta &&
8108 (
8109 oferta.precoVendaMaxParcelaOferta == 119 ||
8110 precoParcelaCartoes == 119 ||
8111 precoParcelaBoleto == 119
8112 ) &&
8113 compareDates(dataInicio, '2027-01-01') >= 0;
8114
8115 if (campanha2027) return CampanhaMensalidade.CAMPANHA_TECNICO_2027;
8116
8117 const campanha2026 =
8118 oferta.precoVendaMaxParcelaOferta &&
8119 (
8120 (
8121 (
8122 oferta.precoVendaMaxParcelaOferta == 99 ||
8123 precoParcelaCartoes == 99 ||
8124 precoParcelaBoleto == 99
8125 ) &&
8126 compareDates(dataInicio, '2025-12-31') <= 0
8127 )
8128 ||
8129 (
8130 (
8131 oferta.precoVendaMaxParcelaOferta == 109 ||
8132 precoParcelaCartoes == 109 ||
8133 precoParcelaBoleto == 109
8134 ) &&
8135 compareDates(dataInicio, '2026-01-01') >= 0
8136 )
8137 );
8138
8139 if (campanha2026) {
8140 return CampanhaMensalidade.CAMPANHA_TECNICO_2026;
8141 }
8142
8143 return CampanhaMensalidade.SEM_CAMPANHA;
8144 }
8145
8146 function htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade) {
8147 const campanhaMensalidade = possuiMensalidadeCampanha(oferta)
8148
8149 let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio)
8150 temDesconto = temDesconto && campanhaMensalidade === CampanhaMensalidade.SEM_CAMPANHA
8151
8152 // Define o texto singular ou plural
8153 var textoHorario = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
8154 "Horário e dia da aula:" :
8155 "Horário e dias das aulas:";
8156
8157 const btnLocalReal = function (oferta) {
8158
8159 // NOVA LÓGICA: Define o texto (Singular/Plural)
8160 var textoOndeAcontece = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
8161 "Onde a aula irá acontecer?" :
8162 "Onde as aulas vão acontecer?";
8163
8164 var btn = `<div class="container-local-realizacao ` + ((oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) ? '' : 'd-none-btn') + (localLivreOnline(oferta.localEspacoExterno) ? ' idioma-online' : '') + `">`;
8165
8166 btn += (localLivreOnline(oferta.localEspacoExterno)) ?
8167 `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="btn-idiomas__aula-online" href="#">
8168 <i class="fas fa-wifi"></i>Aulas Online - ao vivo</a>`
8169 : `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="ssp-card-oferta-curso__local-realizacao-content__title" href="#">
8170 <i class="fas fa-user"></i>` + textoOndeAcontece + `</a>`;
8171
8172 btn += `</div>`;
8173
8174 return btn;
8175
8176 }
8177
8178 // Card Oferta
8179
8180 let result = `
8181 <div class="slick-area__item card_oferta_` + index + ` codigoOferta_` + oferta.codigoOferta + ` ` + (temDesconto ? 'ssp-desconto-2022' : '') + `">
8182
8183 <div class="ssp-card-oferta-curso">
8184
8185 <div class="content-data-dias">
8186
8187 <div class="ssp-card-oferta__info-turma-iniciada" id="aviso-turma-iniciada-` + index + `" style="display:none">
8188 <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>
8189 </div>
8190
8191
8192 <div>
8193 <small class="ssp-card-oferta-curso__title-item">Período:</small>
8194 <h6 class="ssp-card-oferta-curso__item-data-periodo item-data-periodo_` + index + `">` + formataPeriodo(oferta.dataInicio, oferta.dataFim) + `</h6>
8195 </div>
8196
8197 <div class="content-horario-dias-semana">
8198
8199 <div class="horario">
8200 <small class="ssp-card-oferta-curso__title-item">` + textoHorario + `</small>
8201 </div> ` +
8202
8203 `<div class="ssp-card-oferta-curso__dia-hora_content">
8204 ` + diasSemanaHTML + `
8205 </div>
8206
8207 </div>
8208
8209 ` + btnLocalReal(oferta);
8210
8211 result = result + `
8212 </div>
8213 `
8214
8215 if (excecaoCursoGratuito(oferta)) {
8216 result += montaRestanteHTMLexcecaoCursoGratuito(index, oferta);
8217 return result;
8218 }
8219
8220 //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
8221 //Adicionada a validação dos preços da oferta em 07/06/2022 - Tarefa 9498
8222 const estaSemValorOferta = oferta.botaoCompraOferta == ''
8223 || oferta.botaoCompraOferta == 'false'
8224 || !oferta.precoVendaOferta
8225 || !oferta.precoCheioOferta
8226 || !oferta.precoVendaMaxParcelaOferta
8227 || strToFloat(oferta.precoVendaOferta) == 0
8228 || strToFloat(oferta.precoCheioOferta) == 0
8229 || strToFloat(oferta.precoVendaMaxParcelaOferta) == 0
8230
8231 //Trecho inicial do Bolsa de estudo
8232 if ($('[name="tipoCurso"]').val() != 'extensao') {
8233 result += `<div class="content-btn-bolsa codigoOferta_` + oferta.codigoOferta + (estaSemValorOferta ? ' pb-0' : '') + `">
8234 <div class="ssp-card-oferta__info-turma-content">
8235 <h6 class="ssp-card-oferta__info-turma mb-0">Bolsas de estudo</h6>
8236 </div>
8237 <div class="codigoOferta_` + oferta.codigoOferta + ` ssp-container-botao-bolsa"></div>
8238 </div>
8239 `
8240 }
8241
8242 if (estaSemValorOferta) {
8243 result = result + `
8244 <div class="content-buttons hide">
8245 </div>
8246 `
8247 return result;
8248 }
8249
8250
8251 //Trecho final do Bolsa de estudo e inclusao de botao de expansao do "Valores para compra"
8252 result += ` <div class="show-price-content codigoOferta_` + oferta.codigoOferta + `">
8253 <div class="ou-separator-desconto">Ou</div>
8254 <button type="button" class="btn-show-price">
8255 <p>Saiba mais sobre:</p>
8256 <div onclick="togglePriceCard('codigoOferta_` + oferta.codigoOferta + `')">
8257 <i class="fas fa-money-bill"></i>
8258 <span>Valores para compra</span>
8259 </div>
8260 </button>
8261 </div>
8262 `
8263
8264 result = result + `
8265 <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `">
8266 `
8267
8268 if (temDesconto && !ehCursoTrampolim) {
8269 result = result + `
8270 <div class="ssp-card-oferta__info-turma-content">
8271 <h6 class="ssp-card-oferta__info-turma">Valores para compra</h6>
8272 </div>
8273
8274 <div class="block-valor-desconto">
8275
8276 <div class="tag-label-desconto">
8277 <small class="ssp-card-oferta-curso__title-item">Valor com </small>
8278 <span class="ssp-card-oferta-curso__valor-desconto">50% de desconto*</span>
8279 </div>
8280
8281 <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>
8282
8283 <div class="ssp-card-oferta-curso__desconto-content">
8284 <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</span></p>
8285 <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta) / 2, 2)) + `</span></p>
8286 </div>
8287 `
8288
8289 if ($('[name="tipoCurso"]').val() == 'extensao') {
8290 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>`
8291 } else {
8292 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>`
8293 }
8294
8295 result = result + `
8296 <div class="ou-separator-desconto">Ou</div>
8297
8298 <div class="block-valor-total">
8299
8300 <small class="ssp-card-oferta-curso__title-item">Valor sem desconto:</small>
8301
8302 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8303
8304 <div class="ssp-card-oferta-curso__desconto-content">
8305 <p>Valor total: <strong>R$ ` + formataValor(strToFloat(oferta.precoVendaOferta)) + `</strong></p>
8306 </div>
8307
8308 </div>
8309 `
8310 } else {
8311
8312
8313 if (campanhaMensalidade === CampanhaMensalidade.CAMPANHA_TECNICO_2027) {
8314
8315 result = result + `
8316 <div class="block-valor-total">
8317 <div class="investimento" id="container_investimento_` + index + `">
8318 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
8319 <h6 class="ssp-card-oferta-curso__item-valor-investimento">
8320 <span>` + oferta.numeroMaxParcelasOferta + `x</span>
8321 R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaMaxParcelaOferta))) + `</h6>
8322 <div class="ssp-card-oferta-curso__desconto-content">
8323 <p>
8324 Valor total:
8325 <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">
8326 R$ ` + formataValor(oferta.precoVendaOferta) +
8327 `</span>`;
8328 if(oferta.precoDescontoOferta && oferta.percentualDescontoOferta){
8329 result = result + `
8330 ou
8331 <span class="ssp-card-oferta-curso__valor-desconto text-decoration-none">
8332 R$ ` + formataValor(oferta.precoDescontoOferta) + ` à vista (` + (oferta.percentualDescontoOferta) + `% de desconto)
8333 </span>`;
8334 }
8335 result = result + `
8336 </p>
8337 </div>
8338 </div>
8339 </div>
8340
8341 `;
8342
8343 } else {
8344
8345
8346 // itens que são diferentes entre técnico e livres comprado a extensão
8347 if ($('[name="tipoCurso"]').val() == 'extensao') {
8348 result = result + `
8349
8350 <div class="block-valor-total">
8351
8352 <div class="investimento" id="container_investimento_` + index + `">
8353
8354 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
8355
8356 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaMaxParcelaOferta))) + `</h6>
8357
8358 <div class="ssp-card-oferta-curso__desconto-content">
8359 <p>Ou: <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span> à vista</p>
8360 </div>
8361
8362 </div>
8363
8364 </div>
8365 `
8366 } else {
8367 result = result + `
8368 <div class="block-valor-total">
8369 <div class="investimento" id="container_investimento_` + index + `">
8370 `
8371
8372 // Não mostrar mensagem de 30% de desconto em casos especificos
8373 if (temDesconto) {
8374 result = result + `
8375 <small class="ssp-card-oferta-curso__title-item font-weight-bold">Valor com 30% de desconto:</small>
8376 `
8377 }
8378
8379 if (oferta.precoCheioOferta == oferta.precoVendaOferta) {
8380 result = result + `
8381 <small class="ssp-card-oferta-curso__title-item">Valor do curso:</small>
8382 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8383
8384 <div class="ssp-card-oferta-curso__desconto-content">
8385 <p>Ou <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p>
8386 </div>
8387 </div>
8388 </div>
8389 `
8390 } else {
8391 result = result + `
8392 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
8393 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8394
8395 <div class="ssp-card-oferta-curso__desconto-content">
8396 <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(oferta.precoCheioOferta) + `</span></p>
8397 <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p>
8398 </div>
8399 </div>
8400 </div>
8401 `
8402 }
8403 }
8404 }
8405 }
8406
8407 let dataBtnComprar = getObjBtnComprar(oferta);
8408
8409 result = result + `
8410
8411 <div class="ssp-card-oferta-curso__formas-pagamento-content" id="container_forma_pgto_` + index + `">
8412
8413 <span class="`+ (campanhaMensalidade === CampanhaMensalidade.CAMPANHA_TECNICO_2027 ? 'd-none' : '') +`">Saiba mais sobre:</span>
8414
8415 <div>
8416 <i class="ssp-card-oferta-curso__formas-pagamento-content__icon-credit-card"></i>
8417 <a id="myBtn_` + index + `" data-index="` + index + `" class="ssp-card-oferta-curso__formas-pagamento-content__title" style="font-weight: 600;" href="#">`
8418 + (campanhaMensalidade === CampanhaMensalidade.CAMPANHA_TECNICO_2027 ? 'Conferir formas de pagamento' : (temDesconto ? 'Descontos e pagamento' : 'Descontos e parcelamento'))
8419 + `</a>
8420 </div>
8421
8422 </div>
8423
8424 <div class="content-buttons">
8425
8426 <div class="ssp-btn-group__content botoes-oferta-container_` + index + `">
8427
8428 <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>
8429
8430 </div>
8431
8432 </div>
8433
8434 </div>
8435
8436 </div>
8437 `
8438
8439 return result
8440 }
8441
8442 function montaRestanteHTMLexcecaoCursoGratuito(index, oferta) {
8443
8444 let dataBtnComprarExcecao = getObjBtnComprar(oferta);
8445 let resultModalidade =
8446 `
8447 <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `">
8448 <div class="ssp-card-oferta__info-turma-content">
8449 <h6 class="ssp-card-oferta__info-turma">Curso gratuito</h6>
8450 </div>
8451 <div class="block-valor-total">
8452 <div class="investimento" id="container_investimento_` + index + `">
8453 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>R$ 0,00</h6>
8454 </div>
8455 </div>
8456 <div class="content-buttons">
8457
8458 <div class="ssp-btn-group__content botoes-oferta-container_` + index + `">
8459
8460 <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>
8461
8462 </div>
8463
8464 </div>
8465 </div>
8466 </div>
8467 `
8468 ;
8469 return resultModalidade;
8470
8471 }
8472
8473
8474 var htmlModalLocalRealizacao = '<div id="modalLocalRealizacao_{index}" class="ssp-modal">'
8475 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao">'
8476 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__title-content">'
8477
8478 htmlModalLocalRealizacao += '{tituloLocalRealizacao}'
8479
8480 htmlModalLocalRealizacao += '<i class="ssp-card-modal-local-realizacao__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>'
8481 htmlModalLocalRealizacao += '</div>'
8482 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__texto">'
8483 htmlModalLocalRealizacao += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>'
8484 htmlModalLocalRealizacao += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>'
8485 htmlModalLocalRealizacao += '<address>'
8486 htmlModalLocalRealizacao += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>'
8487 htmlModalLocalRealizacao += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>'
8488 htmlModalLocalRealizacao += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>'
8489 htmlModalLocalRealizacao += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>'
8490 htmlModalLocalRealizacao += '</address>'
8491 htmlModalLocalRealizacao += '<div class="btn ssp-modal-local-realizacao__btn-content">'
8492 htmlModalLocalRealizacao += '<a class="btn ssp-modal-local-realizacao__btn {classeEntendi} ssp-modal-local-realizacao__btn_{index}" href="#a">Entendi</a>'
8493 htmlModalLocalRealizacao += '</div>'
8494 htmlModalLocalRealizacao += '</div>'
8495 htmlModalLocalRealizacao += '</div>'
8496 htmlModalLocalRealizacao += '</div>';
8497
8498 var htmlModalAntesCompra = '<div id="modalAntesCompra_{index}" class="ssp-modal">'
8499 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao">'
8500 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__title-content">'
8501 htmlModalAntesCompra += '<h6 class="ssp-modal-local-realizacao__title"> LEMBRETE IMPORTANTE!</h6>'
8502 htmlModalAntesCompra += '<i class="ssp-card-modal-antes-compra__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>'
8503 htmlModalAntesCompra += '</div>'
8504 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__texto">'
8505 htmlModalAntesCompra += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>'
8506 htmlModalAntesCompra += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>'
8507 htmlModalAntesCompra += '<address>'
8508 htmlModalAntesCompra += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>'
8509 htmlModalAntesCompra += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>'
8510 htmlModalAntesCompra += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>'
8511 htmlModalAntesCompra += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>'
8512 htmlModalAntesCompra += '</address>'
8513 htmlModalAntesCompra += '<div class="btn ssp-modal-local-realizacao__btn-content">'
8514 htmlModalAntesCompra += '{componentBuyConfirmation}'
8515 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>'
8516 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>'
8517 htmlModalAntesCompra += '</div>'
8518 htmlModalAntesCompra += '</div>'
8519 htmlModalAntesCompra += '</div>'
8520 htmlModalAntesCompra += '</div>';
8521
8522 var htmlSlickAreaDiasSemana = '<div class="ssp-card-oferta-curso__dia-hora-item">'
8523 htmlSlickAreaDiasSemana += '<p class="ssp-card-oferta-curso__dia-hora-item__dia">'
8524 htmlSlickAreaDiasSemana += '<span data-dia-hora="dias-semana">{diasSemana}</span>'
8525 htmlSlickAreaDiasSemana += '<span data-dia-hora="horário">{horasSemana}</span>'
8526 htmlSlickAreaDiasSemana += '</p>'
8527 htmlSlickAreaDiasSemana += '</div>';
8528
8529
8530 //EMED - ELEMENTOS DINAMICOS
8531 const htmlSlickAreaEmed = function (oferta) {
8532 var btnid = 'myBtn_' + oferta.indice;
8533 const diasHorarios = function (oferta) {
8534 return oferta.diasDaSemanaOferta.join(', ').toLowerCase();
8535
8536 }
8537
8538
8539 return `
8540 <div class="ssp-ofertas-emed__card codigoOferta_`+ oferta.codigoOferta + `">
8541
8542 <div class="ssp-ofertas-emed__card-info-turma">
8543
8544 <div class="item-content">
8545 <i class="fas fa-calendar-alt calendar-icon-turma"></i>
8546 <p class="title-turma">`+ oferta.titulo + `</p>
8547 <span class="text-default" data-info="info-turma">Alunos na turma: <strong>até `+ oferta.qtdeTotalVagas + `</strong></span>
8548 </div>
8549
8550 <div class="content-previsao-inicio-termino">
8551
8552 <div class="item-content">
8553 <span class="text-default">Previsão de início:</span>
8554 <span class="text-default-lg">`+ formatarDataEmed(oferta.dataInicio, oferta.etapa, false) + `</span>
8555 </div>
8556
8557 <div class="item-divisor"></div>
8558
8559 <div class="item-content">
8560 <span class="text-default">Previsão de término:</span>
8561 <span class="text-default-lg">`+ formatarDataEmed(oferta.dataFim, oferta.etapa, true) + `</span>
8562 </div>
8563
8564 </div>
8565
8566
8567 <div class="item-divisor"></div>
8568
8569 <div class="item-content">
8570 <span class="text-default">Dias e horários das aulas:</span>
8571 <span class="text-default-lg" style="text-transform: capitalize;">`+ diasHorarios(oferta) + `</span>
8572 <span class="text-default-lg">`+ oferta.horaInicio.replace(':', 'h') + ' às ' + oferta.horaFimOferta.replace(':', 'h') + `</span>
8573 </div>
8574
8575 </div>
8576
8577 <div class="ssp-ofertas-emed__card-info-investimento">
8578 <p class="title-investimento">Investimento anual:</p>
8579
8580 <div class="item-content-investimento">
8581 <span class="txt-parcelas">Até `+ oferta.numeroMaxParcelasOferta + `x</span>
8582 <span class="txt-valor-parcela">R$ `+ formataValor(oferta.precoVendaMaxParcelaOferta) + `</span>
8583 </div>
8584
8585 <div class="item-content-investimento">
8586 <p class="txt-boleto-cartao">(boleto bancário ou cartão de crédito)</p>
8587 </div>
8588
8589 <div class="item-content-investimento">
8590 <i class="fas fa-credit-card icon-cartao-credito"></i>
8591 <a id="`+ btnid + `" data-index="` + oferta.indice + `" href="#" class="link-descontos-parcelamentos">Descontos e Parcelamentos</a>
8592 </div>
8593
8594 </div>
8595
8596 </div>
8597
8598 `;
8599 }
8600
8601
8602 async function loadCursosVocePodeGostar() {
8603
8604 const $section = document.getElementById('section-cursos-voce-pode-gostar');
8605 const $container = document.getElementById('slider-curso');
8606
8607 const ok = await PortalView.Card.initCursosQuePodeGostarSection({
8608 sectionElement: $section,
8609 containerElement: $container,
8610 listId: 'swiper-cursos-gostar-list',
8611 articleId: $('[name="articleId"]').val(),
8612 categoryId: $('[name="idTipoCurso"]').val(),
8613 // EMED nao possui vocabulario de temas mercadologicos consistente
8614 // entre cursos - recomenda so por tipo de curso, como no comportamento antigo.
8615 matchTemas: !isEmed,
8616 limit: 12
8617 });
8618
8619 $section.classList.toggle('d-none', !ok);
8620
8621 }
8622
8623 /*
8624 * Armazena a navegação em cookies, se habilitado
8625 */
8626 $(document).on("click", ".ck-curso", function () {
8627
8628 //Verifica se o cookie está habilitado
8629 if (getCookie('portalSenacCookie') != null) {
8630
8631 var articleId = $(this).data('ck');
8632 manageCookieArray('ck-cursos', articleId);
8633
8634 }
8635
8636 });
8637
8638
8639
8640
8641
8642 $(function () {
8643
8644 if ($('#unidades-ofertas').find('option').length == 0) {
8645
8646 $('.ssp-container-selecione-unidade').addClass('d-none')
8647
8648 }
8649
8650 });
8651
8652 function avisoNovasTurmas() {
8653
8654
8655 window.event.preventDefault()
8656
8657 //var unidadeSelecionada = $('#select-registro-interesse').val();
8658 //este select tem 2 valores separados por @ -> categoryId@codUnidade
8659 // var unidadeSelecionada = $('#unidades-ofertas').val();
8660
8661 //Código fixo quando Senac Ao Vivo
8662 var codUnidadeSelectRegInt = (isAoVivo) ? codUnidadeSenacAoVivo : $('#unidades-ofertas').val().split("@")[1];
8663
8664 // if(codUnidadeSelectRegInt && codUnidadeSelectRegInt.length){
8665
8666 //Se ja tiver logado , redireciona para o registro
8667 if (!Liferay.ThemeDisplay.isSignedIn()) {
8668 sspRequireAuthentication('#btn-aviso-novas-turmas');
8669 } else {
8670 abrirModalRegistroInteresse(codUnidadeSelectRegInt);
8671 verificaBtnEnviarRegistroInteresseAtivo();
8672 }
8673
8674 window.onclick = function (event) {
8675 $('[id="modal-registro-interesse"]').each(function (index, _modal) {
8676 if (event.target == _modal) {
8677 $('#modal-registro-interesse').addClass('d-none');
8678 $("body").removeClass("overflow-hidden")
8679 }
8680 });
8681 }
8682
8683 // }
8684 }
8685
8686
8687 function registroSelecionaTodosDias() {
8688
8689 if ($(this).hasClass('ssp-week-day-active')) {
8690 $(this).removeClass('ssp-week-day-active')
8691 $('.ssp-week-day').removeClass('ssp-week-day-active')
8692 } else {
8693 $(this).addClass('ssp-week-day-active')
8694 $('.ssp-week-day').addClass('ssp-week-day-active')
8695 }
8696
8697 verificaBtnEnviarRegistroInteresseAtivo();
8698 }
8699
8700 function registroSelecionaTodosPeriodos() {
8701
8702 if ($(this).is(':checked')) {
8703 $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', true);
8704 } else {
8705 $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', false);
8706 }
8707
8708 verificaBtnEnviarRegistroInteresseAtivo();
8709 }
8710 $('.turmas-registro-interesse input[type=checkbox]').on('click', function () {
8711 var $selecionado = $(this);
8712 if ($selecionado.is(":checked")) {
8713 $('.turmas-registro-interesse input[type=checkbox]').prop("checked", false);
8714 $selecionado.prop("checked", true);
8715 } else {
8716 $selecionado.prop("checked", false);
8717 }
8718 });
8719 function enviarRegistroInteresse() {
8720
8721 if (!Liferay.ThemeDisplay.isSignedIn()) {
8722 //Sem o cookie refaz o login
8723 $('#modal-registro-interesse').addClass('d-none');
8724 $('body').removeClass('overflow-hidden');
8725 $('#modal-login').removeClass('d-none');
8726 sspRequireAuthentication('#btn-aviso-novas-turmas');
8727 return;
8728 }
8729
8730 loadingSubmitButton('#enviar-registro-interesse-btn');
8731
8732 sspGetLoggedUser().then(function (user) {
8733
8734 var codigoUsr = (user && user.codPessoa) ? user.codPessoa : null;
8735
8736 if (codigoUsr == null) {
8737 console.log('Campo personalizado codPessoa não encontrado no usuário logado.', user);
8738 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
8739 $('#modal-registro-interesse-erro').removeClass('d-none');
8740 return;
8741 }
8742
8743 var codigoFT = $('[name="codigoFT"]').val();
8744
8745 var unidades = new Set();
8746
8747 var diasSemana = '';
8748
8749 //Senac ao vivo nao tem opçao de dias da semana nem unidades
8750 if (isAoVivo) {
8751 unidades.add(codUnidadeSenacAoVivo);
8752 } else {
8753 $.each($('.ssp-week-day').not('#todosDias'), function (k, v) {
8754 if ($(this).hasClass('ssp-week-day-active')) {
8755 diasSemana += $(this).text() + ',';
8756 }
8757 });
8758
8759 if (diasSemana.length > 0) diasSemana = diasSemana.slice(0, -1);
8760
8761 $.each($('.ssp-card-registro-interesse__select'), function (k, item) {
8762
8763 unidades.add(item.value);
8764 });
8765 }
8766
8767
8768 var periodos = '';
8769
8770 $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function (k, v) {
8771 if ($(this).is(':checked')) {
8772 periodos += $(this).val() + ',';
8773 }
8774 });
8775
8776 var turmas = '';
8777
8778 $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function (k, v) {
8779 if ($(this).is(':checked')) {
8780 turmas += $(this).val() + ',';
8781 }
8782 });
8783
8784 if (periodos.length > 0) periodos = periodos.slice(0, -1);
8785 if (turmas.length > 0) turmas = turmas.slice(0, -1);
8786
8787 var usuarioNotificado = false;
8788
8789 unidades.forEach(function (codigoUnidade) {
8790 var data = {
8791 codigoFT: codigoFT,
8792 codigo: codigoUsr,
8793 diasSemana: diasSemana,
8794 periodos: periodos,
8795 turmas, turmas,
8796 codigoUnidade: codigoUnidade,
8797 interesseBolsa: 'N',
8798 isEmed: isEmed ? 'S' : 'N'
8799 };
8800
8801 const url = urlRegistroInteresse;
8802
8803 $.ajax({
8804 url: url,
8805 method: 'POST',
8806 data: JSON.stringify(data),
8807 headers: {
8808 'Accept': 'application/json',
8809 'Content-Type': 'application/json'
8810 },
8811 }).done(
8812 function (retornoData) {
8813
8814 var retornoData = JSON.stringify(retornoData);
8815
8816 if (retornoData.length > 0) {
8817
8818 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
8819
8820 var retorno = JSON.parse(retornoData);
8821
8822 if (retorno.status == 200 || retorno.status == 201) {
8823
8824 //Evita que o usuário recebe um email para cada unidade de interesse
8825 if (usuarioNotificado) return;
8826
8827 //Mensagem de sucesso registro interesse
8828 $('#modal-registro-interesse-sucesso').removeClass('d-none');
8829
8830 var prefixUrl = themeDisplay.getLayoutRelativeURL();
8831
8832 if (prefixUrl.indexOf('staging/') > 1)
8833 prefixUrl = prefixUrl.substring(0, prefixUrl.lastIndexOf('staging/') + 8);
8834 else
8835 prefixUrl = HOST;
8836
8837 $('#btn-voltar-home').attr('href', prefixUrl);
8838
8839 //Busca os dados do nome do usuário logado
8840 var username = user.givenName || (user.name ? user.name.split(' ')[0] : '');
8841
8842 //Prioridade para nomeSocial
8843 if (user.socialName && user.socialName !== 'null' && user.socialName.length > 0) {
8844 username = user.socialName;
8845 }
8846
8847 username = username.replace(/['"]+/g, '');
8848
8849 var unidadesSel = getUnidadesSelecionadasRI();
8850
8851 //Disara um email para o usuário interessado
8852 var data = {
8853 emailInteressado: user.emailAddress,
8854 nomeInteressado: username,
8855 tituloCurso: $('.ssp-card-detalhe-curso__title').text(),
8856 unidades: unidadesSel.unidades,
8857 unidadesPrefix: unidadesSel.unidadesPrefix
8858 };
8859
8860 $.ajax({
8861 url: urlRegistroInteresseEmailInteressado,
8862 method: 'POST',
8863 data: JSON.stringify(data),
8864 headers: {
8865 'Accept': 'application/json',
8866 'Content-Type': 'application/json'
8867 },
8868 }).done(function (retornoData) { });
8869
8870 usuarioNotificado = true;
8871
8872 window.onclick = function (event) {
8873 $('[id="modal-registro-interesse-sucesso"]').each(function (index, _modal) {
8874 if (event.target == _modal) {
8875 $('#modal-registro-interesse-sucesso').addClass('d-none');
8876 $('#modal-registro-interesse').addClass('d-none');
8877 $("body").removeClass("overflow-hidden");
8878 }
8879 });
8880 }
8881
8882 } else {
8883 //Mensagem de erro registro interesse
8884 $('#modal-registro-interesse-erro').removeClass('d-none');
8885 }
8886 } else {
8887 //Mensagem de erro registro interesse
8888 $('#modal-registro-interesse-erro').removeClass('d-none');
8889 }
8890 }).fail(function () {
8891 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
8892 $('#modal-registro-interesse-erro').removeClass('d-none');
8893 });
8894 });
8895 }); // sspGetLoggedUser
8896 }
8897
8898 function verificaBtnEnviarRegistroInteresseAtivo() {
8899 var diasSemanaSelecionado = false;
8900 var periodoSelecionado = false;
8901 var turmaSelecionada = false;
8902 var politicaPrivacidadeSelecionado = false;
8903
8904
8905 $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function (k, v) {
8906 if ($(this).is(':checked'))
8907 periodoSelecionado = true;
8908 });
8909
8910 $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function (k, v) {
8911 if ($(this).is(':checked'))
8912 turmaSelecionada = true;
8913 });
8914
8915 if ($('#check-politica-privacidade').is(':checked')) politicaPrivacidadeSelecionado = true;
8916
8917 var ativo = true
8918
8919 //Caso tenha algum dos selects de unidade sem uma opção válida selecionada
8920 if (!isAoVivo)
8921 ativo = ativo && !Array.from($('.ssp-card-registro-interesse__select.unidades')).filter(sel => !$(sel).val()).length
8922
8923 ativo = ativo && periodoSelecionado && politicaPrivacidadeSelecionado;
8924
8925 if (!isAoVivo && !isEmed) {
8926
8927 $.each($('.ssp-week-day').not('#todosDias'), function (k, v) {
8928 if ($(this).hasClass('ssp-week-day-active'))
8929 diasSemanaSelecionado = true;
8930 });
8931 ativo = ativo && diasSemanaSelecionado;
8932
8933 }
8934
8935 if (isEmed)
8936 ativo = ativo && turmaSelecionada;
8937
8938 if (ativo)
8939 $('#enviar-registro-interesse-btn').attr("disabled", false);
8940 else
8941 $('#enviar-registro-interesse-btn').attr("disabled", true);
8942 }
8943
8944 function loadPlanoCurso() {
8945
8946 const urlGetPlanoCurso = urlPlanoCurso
8947
8948 .replace('\{codigoFT\}', $('[name="codigoFT"]').val())
8949 .replace('\{dataEfetiva\}', $('[name="dataEfetivaSTR"]').val());
8950
8951 $.ajax({
8952 url:urlGetPlanoCurso,
8953 method:'get',
8954 crossDomain: true,
8955 dataType: 'html',
8956 success: function( data ) {
8957
8958
8959 //Atualiza o link com o plano de curso do servi¿o (ja retorna o texto)
8960 $('#plano-curso').append('<br/>'+data);
8961 },
8962 error: function(data){
8963
8964 console.log('Não existe a URL do plano de curso');
8965
8966 }
8967
8968 });
8969 }
8970
8971 function checkCursoTrampolim(){
8972 return $('[name="codigoFT"]').val() == "24493";
8973 }
8974
8975 /*function verificaOfertaValida(oferta){
8976
8977 if(oferta['precoCheioOferta'] == '' || oferta['precoVendaOferta'] == '' || oferta['numeroMaxParcelasOferta'] == '' || oferta['precoVendaMaxParcelaOferta'] == '')
8978 return false;
8979
8980 var atual = new Date();
8981
8982 var dataOfertaPartes = oferta['dataInicio'].split('/');
8983
8984 var dataOferta = new Date(dataOfertaPartes[2], dataOfertaPartes[1] - 1, dataOfertaPartes[0]);
8985
8986 var dataLimiteMatriculaOfertaPartes = "";
8987 var dataLimiteMatriculaOferta = "";
8988
8989 if(oferta['dtLimiteMatricula'] != ""){
8990 dataLimiteMatriculaOfertaPartes = oferta['dtLimiteMatricula'].split('-');
8991 dataLimiteMatriculaOferta = new Date(dataLimiteMatriculaOfertaPartes[0], dataLimiteMatriculaOfertaPartes[1] - 1, dataLimiteMatriculaOfertaPartes[2] ,atual.getHours(),atual.getMinutes(),atual.getSeconds(),atual.getMilliseconds());
8992
8993 }
8994
8995
8996 //Só deve aparecer ofertas D-1 . Se ela iniciou, aparece se o campo dtLimiteMatr estiver preenchido e com data até o dia de hoje
8997 if(dataOferta <= atual)
8998 if(dataLimiteMatriculaOferta == "" || (dataLimiteMatriculaOferta != "" && atual.getTime() > dataLimiteMatriculaOferta.getTime()))
8999 return false;
9000
9001 return true;
9002 }*/
9003
9004
9005 function loadServerDate(){
9006 if (serverDateRequest) return serverDateRequest;
9007
9008 serverDateRequest = Promise.resolve($.ajax({
9009 url:urlGetServerT,
9010 method:'get',
9011 dataType: 'json',
9012 cache: 'false',
9013 headers: {
9014 'Cache-Control': 'no-store, no-cache, max-age=0',
9015 'Expires': '0',
9016 'Pragma': 'no-cache'
9017 },
9018 })).then(function (data) {
9019 var serverDate = new Date(data.year, data.month - 1, data.day, data.hour, data.minutes, data.seconds);
9020 if (Number.isNaN(serverDate.getTime())) {
9021 throw new Error('Horario retornado pelo servidor invalido');
9022 }
9023 todayG = serverDate;
9024 startTimer();
9025 }).finally(function () {
9026 serverDateRequest = null;
9027 });
9028
9029 return serverDateRequest;
9030 }
9031
9032 function handleVisibilityChange() {
9033
9034 if (!document[hidden] ){
9035 restartTimer();
9036 }
9037
9038 }
9039
9040 function restartTimer(){
9041
9042 if(todayG && restartTimeout == null && $('[id^="btnContadorBolsa_"], [id^="btnContadorComprar_"]').length){
9043 loadServerDate().catch(function (error) {
9044 console.error('Erro ao sincronizar horario do contador:', error);
9045 });
9046 restartTimeout = setTimeout(function(){
9047 restartTimeout = null;
9048 }, 60000);
9049 }
9050
9051 }
9052
9053 function startTimer(){
9054
9055 var mSeconds = todayG.getTime();
9056 if(interval01 != null){
9057 clearInterval(interval01);
9058 }
9059 interval01 = setInterval(function(){
9060 todayG.setTime(todayG.getTime() + 1000);
9061 }, 1000);
9062
9063 if(interval15 != null){
9064 clearInterval(interval15);
9065 }
9066 interval15 = setInterval(function(){
9067 mSeconds = mSeconds + 15000;
9068 todayG.setTime(mSeconds);
9069 }, 15000);
9070
9071 }
9072
9073 function checkIsAoVivo(){
9074 isAoVivo = $("input[name='formato']").attr("data-formato") == nomeFormatoAoVivoDxp;
9075 }
9076
9077
9078 //Ao clicar na setinha next do slider, busca dinamicamente uma proxima oferta
9079 function buscaProximaOferta(){
9080 //Zera variável que controla existência de ofertas com bolsa
9081 //ofertasComBolsa = false;
9082
9083 //Verificamos se a ultima oferta já foi exibida, para evitar de fazer novas buscas
9084 if(carregouUltimaOferta)
9085 return;
9086
9087 //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.
9088 var totalOfertasSlick = $('#turmas-container .slick-area__item').length;
9089 //Pegamos o índice da oferta do meio (central)
9090 var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));
9091
9092 var totalOfertasADireita = totalOfertasSlick - currentSliderIndex;
9093
9094 //Se o total de ofertas à direita for maior a 2 não precisa realizar a busca
9095 if (totalOfertasADireita > 2)
9096 return;
9097
9098 startOfertaParam = endOfertaParam;
9099 endOfertaParam += 16;
9100
9101 const codigoFT = $('[name="codigoFT"]').val();
9102 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
9103
9104 var unidadeCategoryId = '';
9105 var unidadeCodigoSelect = '';
9106
9107 if (isAoVivo) {
9108
9109 $.each(objsTela.unidades, function (k, unidade) {
9110 unidadeCategoryId += unidade['categoryId'] + ',';
9111 });
9112
9113 //tirando ultima virgula
9114 unidadeCategoryId = unidadeCategoryId.substring(0, unidadeCategoryId.length - 1);
9115
9116 } else {
9117 var splitted = $('#unidades-ofertas').val().split("@");
9118 unidadeCategoryId = splitted[0];
9119 unidadeCodigoSelect = splitted[1];
9120 }
9121
9122 var params = new URLSearchParams();
9123 params.set('codigoFTOferta', codigoFT)
9124 params.set('dataEfetivaOferta', dataEfetivaOferta)
9125 params.set('categoryIds', unidadeCategoryId)
9126 params.set('start', startOfertaParam)
9127 params.set('end', endOfertaParam)
9128 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
9129 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
9130 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
9131
9132 if ($('#chkBolsa').prop('checked')) {
9133 params.set('considerarDataBolsaFutura', true)
9134 }
9135
9136 const url = urlSearchOferta + '?' + params.toString()
9137
9138 Promise.resolve($.ajax({
9139 url: url,
9140 method: 'get',
9141 dataType: 'json'
9142 })).then(
9143 async function (data) {
9144
9145 if (data.length > 0) {
9146 var indiceOferta = startOfertaParam;
9147
9148 for (var index = 0; index < data.length; index++) {
9149
9150 var ofertaJSON = data[index];
9151 var oferta = getOfertaObjectFromJson(ofertaJSON, index);
9152
9153 //Verificamos se a oferta buscada já existe na tela (que ocorre quando chega na última oferta)
9154 if ($('.codigoOferta_' + oferta.codigoOferta).length > 0) {
9155 console.log('Ja tem a oferta ' + oferta.codigoOferta);
9156 carregouUltimaOferta = true;
9157 break;
9158 }
9159
9160 //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo
9161 ofertaUnidadeMap.set(oferta['codigoOferta'], mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));
9162
9163 ofertasMap.set(oferta.codigoOferta, oferta);
9164
9165 if (isAoVivo)
9166 objsTela.ofertasAoVivoTodasUnidades.push(oferta);
9167
9168 //O indice é igual ao ultimo elemento buscado - 1
9169 var i = indiceOferta;
9170 oferta['indice'] = i;
9171
9172 if (isAoVivo)
9173 codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta);
9174 else codigoUnidade = unidadeCodigoSelect;
9175
9176
9177 montaHTMLOferta(oferta, i, codigoUnidade, true);
9178 await montaHTMLModalFormaPgto(oferta, i, codigoUnidade);
9179
9180 montaHTMLModalLocalRealizacao(oferta, i);
9181 montaHTMLModalAntesCompra(oferta, i, codigoUnidade);
9182 verificaBotaoBolsaSS(oferta);
9183 verificaCursoAprendizagem(i, oferta.codigoOferta);
9184 verificaCursoTrampolim(i);
9185
9186 associaEventoBtnFormaPagamento(i);
9187 associaEventoBtnComprar(i);
9188 associaEventoBtnComprarDentroFormaPgto(i);
9189 associaEventoBtnLocalRealizacao(i);
9190 associaEventosFecharModal(i);
9191
9192 if ($('[name="tipoCurso"]').val() == 'extensao') {
9193 associaEventoBtnConheca(i);
9194 associaEventoBtnComprarConhecaDescontoOk(i);
9195 associaEventoBtnComprarConhecaDescontoNot(i);
9196 associaEventoBtnAlunoNao(i);
9197 associaEventoBtnAlunoSim(i);
9198
9199 }
9200
9201 indiceOferta++;
9202 }
9203
9204 controlaPaginaBolsa();
9205 }
9206 }
9207 ).catch(function (error) {
9208 console.error('Erro ao carregar proximas ofertas:', error);
9209 });
9210
9211 }
9212
9213 function setUrlParam(key, value) {
9214 const url = new URL(window.location.href)
9215
9216 if (value)
9217 url.searchParams.set(key, value);
9218 else
9219 url.searchParams.delete(key);
9220
9221 window.history.pushState({}, '', url.toString())
9222 }
9223
9224 function selectFilter(paramkey, el) {
9225 setUrlParam(paramkey, el.prop("checked"))
9226 const currentUnidadeFriendlyURLSelected = $('#unidades-ofertas').find('option').filter(':selected').attr('data-unidade-friendly-url')
9227 loadUnidades(!isAoVivo, $('[data-unidade-friendly-url="' + currentUnidadeFriendlyURLSelected + '"]').val())
9228
9229 if ($('#chkInscricao').prop("checked") || $('#chkBolsa').prop("checked")) $('#msgFiltroAplicado').show()
9230 else $('#msgFiltroAplicado').hide()
9231 }
9232
9233 function defineCurrentUrl(ev) {
9234 const currentUnidadeFriendlyURLSelected = $(ev.target).find('option').filter(':selected').attr('data-unidade-friendly-url')
9235
9236 const hasPathWeb = window.location.pathname.includes('/web')
9237 const hasPathGuest = window.location.pathname.includes('/guest')
9238
9239 let currentPath = window.location.pathname
9240 currentPath = hasPathWeb ? currentPath.substring(4) : currentPath
9241 currentPath = hasPathGuest ? currentPath.substring(6) : currentPath
9242
9243 objsTela.unidadesRegistroInteresse.forEach(unidade => currentPath = currentPath.replace('/' + unidade.friendlyURL, ''))
9244
9245 currentPath = (currentUnidadeFriendlyURLSelected ? '/' + currentUnidadeFriendlyURLSelected : '') + currentPath
9246 currentPath = hasPathGuest ? '/guest' + currentPath : currentPath
9247 currentPath = hasPathWeb ? '/web' + currentPath : currentPath
9248
9249 if (keepURL())
9250 window.history.replaceState(window.history.state, '', currentPath + window.location.search)
9251 }
9252
9253 let isKeepURL = true
9254 /** Verifica se é para manter a URL atual. Isso deve acontecer somente ao iniciar a página #9674 */
9255 function keepURL() {
9256 const aux = isKeepURL
9257 isKeepURL = false
9258 return !aux
9259 }
9260
9261 $(document).ready(function () {
9262
9263 if ("${normalizedCategoryName}" == "graduacao" || "${normalizedCategoryName}" == "pos-graduacao") {
9264 document.location.href = '/erro-404'
9265 }
9266
9267 ehCursoTrampolim = checkCursoTrampolim();
9268 checkIsAoVivo();
9269 loadPlanoCurso();
9270 loadCursosVocePodeGostar();
9271 loadPoliticaPrivacidade();
9272
9273 if (!isAoVivo) {
9274 $('#unidades-ofertas').change(ev => {
9275 if (isEmed) {
9276 toggleUnidadesOfertasLoading(true)
9277
9278 try {
9279 const request = mudarUnidade(ev)
9280 defineCurrentUrl(ev)
9281
9282 $.when(request).always(function () {
9283 toggleUnidadesOfertasLoading(false)
9284 })
9285 } catch (error) {
9286 console.error('Erro ao carregar turmas da unidade selecionada.', error)
9287 toggleUnidadesOfertasLoading(false)
9288 }
9289
9290 return;
9291 }
9292
9293 mudarUnidade(ev)
9294 defineCurrentUrl(ev)
9295 });
9296 }
9297
9298 const urlParams = new URLSearchParams(window.location.search)
9299 $('#chkInscricao').prop("checked", urlParams.get('inscricao') == 'true')
9300 $('#chkInscricao').change(ev => selectFilter('inscricao', $('#chkInscricao')))
9301
9302 if ($('#chkBolsa').length) {
9303 $('#chkBolsa').prop("checked", urlParams.get('bolsa') == 'true')
9304 $('#chkBolsa').change(ev => selectFilter('bolsa', $('#chkBolsa')))
9305 loadUnidades(!isAoVivo);
9306 } else {
9307 selectFilter('bolsa', $('#chkBolsa'))
9308 }
9309
9310 //Função para Montar breadcrumb Mobile
9311
9312 function breadcrumbMobile() {
9313
9314 const linkEl = $('.ssp-card-detalhe-curso__secunday-info-back-link');
9315
9316 if ($.trim(linkEl.html()) === 'Técnico') {
9317
9318 linkEl.attr("href", "/cursos-tecnicos");
9319
9320 } else if ($.trim(linkEl.html()) === 'Livre') {
9321
9322 if (isAoVivo) {
9323 linkEl.html('Senac Online<i class="fas fa-signal-stream icon-ao-vivo" aria-hidden="true"></i>ao vivo')
9324 linkEl.attr("href", "/cursos-livres-senac-online-ao-vivo");
9325 } else {
9326 linkEl.attr("href", "/cursos-livres");
9327 }
9328 } else if ($.trim(linkEl.html()) === 'Aprendizagem') {
9329
9330 linkEl.attr("href", "/jovem-aprendiz");
9331
9332 } else if ($.trim(linkEl.html()) === 'Extensão Universitária') {
9333
9334 linkEl.attr("href", "/extensao-universitaria");
9335
9336 } else if ($.trim(linkEl.html()) === 'Ensino Médio Técnico') {
9337
9338 linkEl.attr("href", "/ensino-medio-tecnico");
9339 }
9340
9341 }
9342
9343 breadcrumbMobile()
9344
9345 //Esconde elementos quando o curso é aprendizagem
9346 if ($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem) {
9347 $('.ssp-section-novas-turmas').remove();
9348 $("div[class^='botoes-oferta-container_']").remove();
9349 }
9350
9351 //retira os itens de dentro do container
9352 $('.bg-').css('background-color', '#e4e4e4')
9353 $('.container.py-3').removeClass('container py-3')
9354 //ajuste para versao 7.4
9355 $('.lfr-layout-structure-item-container.container-fluid.container-fluid-max-xl').removeClass()
9356
9357
9358 //Fecha modal registro de interesse
9359
9360 $('#btn-close-Modal-registro-interesse').click(function () {
9361
9362 $('#modal-registro-interesse').addClass('d-none')
9363 $("body").removeClass("overflow-hidden")
9364
9365 })
9366
9367 $("#modal-registro-interesse").click(function (event) {
9368
9369 if (event.target.id == $('#modal-registro-interesse')[0].id) {
9370 $(this).addClass('d-none')
9371 }
9372
9373 });
9374
9375
9376 //Aviso sobre interesse em turmas
9377 $('.ssp-card-registro-interesse').on('click', '#enviar-registro-interesse-btn', enviarRegistroInteresse);
9378 if (!isEmed) {
9379 $('.ssp-aviso-novas-turmas__content').on('click', '#btn-aviso-novas-turmas', avisoNovasTurmas);
9380 $('.ssp-card-registro-interesse').on('click', '#todosDias', registroSelecionaTodosDias);
9381 } else {
9382 $('.ssp-emed__card-slider-body').on('click', '#btnOptin', avisoNovasTurmas)
9383 }
9384 $('#div-campo-todos').on('change', 'input[type=checkbox]', registroSelecionaTodosPeriodos);
9385
9386 $('#btnLogin').click(function () {
9387
9388 login()
9389
9390 });
9391
9392 $('#btn-close-loginModal').click(function () {
9393 $('#modal-login').addClass('d-none')
9394 });
9395
9396 $('.ssp-week-day').not('#todosDias').click(function () {
9397
9398 $(this).toggleClass('ssp-week-day-active');
9399 verificaBtnEnviarRegistroInteresseAtivo();
9400
9401 });
9402
9403 $('#add-unidade-regsitro-interesse').click(function (e) {
9404 var element = $('.ssp-card-registro-interesse__select.unidades').first().clone();
9405 element.empty();
9406 element.append('<option value="" disabled selected>Selecione uma unidade</option>')
9407 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9408
9409 if (!unidade['selecionado']) {
9410 element.append('<option value="' + unidade['codigoUnidade'] + '">' + unidade['nome'] + '</option>');
9411 }
9412
9413 });
9414 element.change(changeSelectUnidades)
9415
9416
9417 element.css('margin-top', '10px');
9418
9419 if (element.find("option").length > 1 && $('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length) {
9420 element.attr("id", "select_" + cntSelectUnidades++)
9421 $('#select-unidades-registro-interesse').append(element);
9422 }
9423
9424 if ($('.ssp-card-registro-interesse__select.unidades').length == objsTela.unidadesRegistroInteresse.length) {
9425 $('#add-unidade-regsitro-interesse').addClass("d-none")
9426 }
9427
9428 verificaBtnEnviarRegistroInteresseAtivo();
9429 });
9430
9431 $('#remove-unidade-regsitro-interesse').click(function (e) {
9432
9433 if ($('.ssp-card-registro-interesse__select').length > 1) {
9434
9435 var element = $('.ssp-card-registro-interesse__select').last();
9436
9437 var valueSelecionado = element.val();
9438
9439 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9440
9441 if (unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado) {
9442 unidade['selecionado'] = false;
9443 unidade['selectSelecionado'] = "";
9444 }
9445
9446 });
9447 element.val("");
9448 cntSelectUnidades--;
9449 element.change()
9450
9451 element.remove();
9452 }
9453
9454 if ($('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length) {
9455 $('#add-unidade-regsitro-interesse').removeClass("d-none")
9456 }
9457
9458 verificaBtnEnviarRegistroInteresseAtivo();
9459 })
9460
9461 $('.ssp-card-registro-interesse__check-item').on('change', 'input[type=checkbox]', function () {
9462 verificaBtnEnviarRegistroInteresseAtivo();
9463 });
9464
9465 //Contador em ofertas de bolsas proximas
9466 var cancel = setInterval(atualizaTempoAberturasBolsas, 1000);
9467
9468 // Manipua o breadcrumb para as regras do Senac
9469
9470 if ($('ol.breadcrumb').find('li:first').text().trim() == "Cursos Pai")
9471 $('ol.breadcrumb').find('li:first').remove();
9472
9473 var li = $('ol.breadcrumb').find('li:first');
9474
9475 if (li.text().trim() == 'Cursos') {
9476
9477 var primeiro = li.clone();
9478 primeiro.html(htmlBreadcrumb('/', 'Cursos', 'Home'));
9479 li.parent().prepend(primeiro);
9480
9481 var tipoCurso = $('.ssp-header-curso__tag-formato').text().trim();
9482 var tipoBreadcrumb = '';
9483
9484 const isPresencialEad = (tipoCurso.toLowerCase().includes("presencial + ead"))
9485
9486 if (tipoCurso.includes("Cursos Livres")) {
9487 if (isPresencialEad) {
9488 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#cursos-livres', tipoCurso);
9489 } else {
9490 tipoBreadcrumb = htmlBreadcrumb(
9491 isAoVivo ? '/cursos-livres-senac-online-ao-vivo' : '/cursos-livres',
9492 isAoVivo ? nomeFormatoAoVivoDxp : tipoCurso);
9493 }
9494 } else if (tipoCurso.includes("Extensão")) {
9495 if (isPresencialEad) {
9496 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#extensao-universitaria', tipoCurso);
9497 } else {
9498 tipoBreadcrumb = htmlBreadcrumb('/extensao-universitaria', tipoCurso);
9499 }
9500 } else if (tipoCurso.includes("Ensino Médio Técnico")) {
9501 if (isPresencialEad) {
9502 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#ensino-medio-tecnico', tipoCurso);
9503 } else {
9504 tipoBreadcrumb = htmlBreadcrumb('/ensino-medio-tecnico', tipoCurso);
9505 }
9506 } else if (tipoCurso.includes("Jovem Aprendiz")) {
9507 if (isPresencialEad) {
9508 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#jovem-aprendiz', tipoCurso);
9509 } else {
9510 tipoBreadcrumb = htmlBreadcrumb('/jovem-aprendiz', tipoCurso);
9511 }
9512 } else {
9513 if (isPresencialEad) {
9514 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#cursos-tecnicos', tipoCurso);
9515 } else {
9516 tipoBreadcrumb = htmlBreadcrumb('/cursos-tecnicos', tipoCurso);
9517 }
9518 }
9519
9520 li.html(tipoBreadcrumb);
9521
9522 if ($('ol.breadcrumb').find('li').length == 4) $('ol.breadcrumb').find('li:last').remove();
9523
9524 }
9525
9526 $('#turmas-container').on('click', 'a.slick-next', function (e) {
9527
9528 e.preventDefault();
9529 buscaProximaOferta();
9530
9531 });
9532
9533 $('#turmas-container').on('click', 'button.slick-dots', function () {
9534
9535
9536
9537 });
9538
9539 $(".next-mobile").on("click", function (e) {
9540 e.preventDefault();
9541
9542 acoesMobileSliderOfertas("left");
9543 });
9544
9545 $(".prev-mobile").on("click", function (e) {
9546 e.preventDefault();
9547
9548 acoesMobileSliderOfertas("right");
9549 });
9550
9551 //ação de drag do card de ofertas no mobile
9552 $('.oferta-slick-area').on('swipe', function (event, slick, direction) {
9553 acoesMobileSliderOfertas(direction);
9554 });
9555
9556 loadAlternadores()
9557 let modalFormAprendizagem = document.querySelector('#modal-form');
9558 if (modalFormAprendizagem) {
9559 // Create dinamic close buttom form
9560 let btnCloseModalForm = document.querySelector('[data-modal="close-form-modal"]');
9561 btnCloseModalForm.addEventListener('click', closeModalFormAprendizagem);
9562
9563 }
9564
9565 $(".oferta-slick-area").on("click", ".btnModalAprendizagem", openModalFormAprendizagem);
9566
9567 });
9568
9569 function htmlBreadcrumb(link, title, display) {
9570
9571 return '<a class="breadcrumb-link" href="' + link + '" title="' + title + '"><span class="breadcrumb-text-truncate">' + (display || title) + '</span></a>';
9572
9573 }
9574
9575 function acoesMobileSliderOfertas(direcao) {
9576
9577 if (direcao == "right") {
9578 $("a.slick-prev").click();
9579
9580 if ($('.slick-current').attr('data-slick-index') == "0")
9581 $('.prev-mobile').addClass('nextPrevOpacity');
9582
9583 if ($(".next-mobile").hasClass('nextPrevOpacity'))
9584 $('.next-mobile').removeClass('nextPrevOpacity');
9585 }
9586
9587
9588 if (direcao == "left") {
9589 $("a.slick-next").click();
9590
9591 if ($(".prev-mobile").hasClass('nextPrevOpacity'))
9592 $('.prev-mobile').removeClass('nextPrevOpacity');
9593
9594 if (carregouUltimaOferta) {
9595 var totalCardOfertas = $('#turmas-container .slick-area__item').length;
9596 var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));
9597
9598 //o card do meio é o último
9599 if (totalCardOfertas == (currentSliderIndex + 1))
9600 $('.next-mobile').addClass('nextPrevOpacity');
9601 }
9602 }
9603 }
9604
9605 //habilitar/desabilitar registro de interesse
9606 function habilitarRegistroInteresse(habilitar) {
9607 var sectionRI = $('#section-registro-interesse')
9608
9609 if (isEmed) {
9610 sectionRI.hide()
9611 return;
9612 }
9613
9614 //Redmine #9309 - sempre irá mostrar
9615 habilitar = true
9616
9617 if (habilitar) sectionRI.show()
9618 else sectionRI.hide()
9619 }
9620
9621 function abrirModalRegistroInteresse(codUnidadeSelect) {
9622 $('#modal-registro-interesse').removeClass('d-none');
9623 $("body").addClass("overflow-hidden")
9624 if (!isEmed) {
9625 $('.ssp-card-registro-interesse__nome-curso').text($('.ssp-card-detalhe-curso__title').text());
9626 } else {
9627 $(".transferencia-emed-link").find('a').attr("href", "/ensino-medio-tecnico#onde-estudar")
9628 $('.ssp-card-registro-interesse__title-modal').text($('.ssp-card-detalhe-curso__title').text());
9629 }
9630
9631 $('.ssp-card-registro-interesse__select:not(#select_0)').remove();
9632 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9633 if (unidade['codigoUnidade'] == codUnidadeSelect) {
9634 unidade['selecionado'] = true;
9635 unidade['selectSelecionado'] = 'select_0';
9636 } else {
9637 unidade['selecionado'] = false;
9638 unidade['selectSelecionado'] = "";
9639 }
9640
9641 });
9642 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
9643 return ordenar(a, b, 'nome');
9644 });
9645
9646 $('#select_0').empty();
9647 $('#select_0').append('<option value="" disabled>Selecione uma unidade</option>')
9648 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9649
9650 $('#select_0').append('<option value="' + unidade['codigoUnidade'] + '" >' + unidade['nome'] + '</option>');
9651
9652 });
9653 $('#select_0').val(codUnidadeSelect);
9654
9655 if (isAoVivo) {
9656 $('#unidades-registro-interesse, #dias-registro-interesse').addClass('d-none');
9657 }
9658 if (objsTela.unidadesRegistroInteresse.length > 1) {
9659 $('#add-unidade-regsitro-interesse').removeClass("d-none")
9660 $('#add-unidade-regsitro-interesse').show()
9661 $('#remove-unidade-regsitro-interesse').show()
9662 } else {
9663 $('#add-unidade-regsitro-interesse').hide()
9664 $('#remove-unidade-regsitro-interesse').hide()
9665 }
9666 }
9667
9668 $('.ssp-card-registro-interesse__select.unidades').on('change', changeSelectUnidades)
9669
9670 function changeSelectUnidades() {
9671 var codUnidadeSelecionada = $(this).val();
9672 var idSelectSelecionado = $(this).attr('id')
9673 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9674 if (unidade['codigoUnidade'] == codUnidadeSelecionada) {
9675 unidade['selecionado'] = true;
9676 unidade['selectSelecionado'] = idSelectSelecionado;
9677 } else if (unidade['selectSelecionado'] == idSelectSelecionado && unidade['selecionado']) {
9678 unidade['selecionado'] = false;
9679 unidade['selectSelecionado'] = "";
9680 }
9681
9682 });
9683
9684 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
9685 return ordenar(a, b, 'nome');
9686 });
9687
9688 $('.ssp-card-registro-interesse__select.unidades:not(#' + idSelectSelecionado + ')').each(function () {
9689 var valueSelecionado = $(this).val();
9690 var idActualSelect = $(this).attr('id');
9691 $(this).empty();
9692 $(this).append('<option value="" disabled>Selecione uma unidade</option>')
9693 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9694
9695 if (unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado) {
9696 $("#" + idActualSelect).append('<option value="' + unidade['codigoUnidade'] + '" >' + unidade['nome'] + '</option>');
9697 } else if (!unidade['selecionado']) {
9698 $("#" + idActualSelect).append('<option value="' + unidade['codigoUnidade'] + '">' + unidade['nome'] + '</option>');
9699 }
9700
9701 });
9702 $(this).val(valueSelecionado)
9703 });
9704
9705 verificaBtnEnviarRegistroInteresseAtivo();
9706 }
9707
9708
9709 function ordenar(objA, objB, nomeAtributo) {
9710 let a = (nomeAtributo) ? objA[nomeAtributo] : objA;
9711 let b = (nomeAtributo) ? objB[nomeAtributo] : objB;
9712
9713 return a.toString().localeCompare(b.toString());
9714 }
9715
9716 function paramOrdem(xml) {
9717 if (isEmed) {
9718 var ordemPeriodo = ['MA', 'TA', 'NO'];
9719 return $.inArray(xml.find('[name="periodoDiaOferta"]').text().trim(), ordemPeriodo);
9720 } else {
9721 return xml.find('[name="dataInicioOferta"]').text();
9722 }
9723 }
9724
9725 function getEtapaSelecionadaEmed() {
9726 var btnEtapa = $('.ssp-ofertas-emed__filtro-content .btn--filtro-ativo');
9727 if (!btnEtapa) return '';
9728 return btnEtapa.val();
9729 }
9730
9731 function filtraOfertasEtapa(etapa, ofertas) {
9732 if (!etapa) return [];
9733 var ofertasEtapa = [];
9734 var turmas = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];
9735 var periodos = { ['MA']: 'Manhã', ['TA']: 'Tarde', ['NO']: 'Noite' };
9736 var ultimoPeriodo = null, indexPeriodo;
9737 ofertas = ofertas.sort(function (a, b) {
9738 return ordenar(a, b, 'periodoDiaOferta');
9739 });
9740
9741 $.each(ofertas, async (index, oferta) => {
9742 if (oferta['etapa'] == etapa) {
9743 if (oferta['periodoDiaOferta'] != ultimoPeriodo) indexPeriodo = 0;
9744 ultimoPeriodo = oferta['periodoDiaOferta'];
9745 oferta['titulo'] = 'Turma ' + turmas[indexPeriodo++] + ' - ' + (periodos[ultimoPeriodo] || '');
9746 ofertasEtapa.push(oferta);
9747 }
9748 });
9749
9750 return ofertasEtapa;
9751 }
9752
9753 function formatarDataEmed(data, etapa, isDataFim) {
9754
9755 try {
9756
9757 var splitdata = data.split('/');
9758 var meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
9759 var mes = meses[parseInt(splitdata[1]) - 1];
9760
9761 var ano = splitdata[2];
9762
9763 if (isDataFim) {
9764 ano = parseInt(splitdata[2]);
9765 }
9766
9767 return mes + '/' + ano;
9768 } catch (err) {
9769 return data;
9770 }
9771
9772 }
9773
9774 //EMED Mobile
9775 function sliderOfertasEmed() {
9776
9777 var tamScreen = $(window).width();
9778 if (tamScreen < 1024) {
9779 $('.ssp-slick-ofertas-emed').slick({
9780 slidesToShow: 1,
9781 slidesToScroll: 1,
9782 dots: false,
9783 infinite: false,
9784 adaptiveHeight: true,
9785 prevArrow: '<button class="btn slick-prev" type="button"><i class="fal fa-chevron-left"></i><span class="sr-only">Anterior</span></button>',
9786 nextArrow: '<button class="btn slick-next" type="button"><i class="fal fa-chevron-right"></i><span class="sr-only">Próximo</span></button>',
9787 responsive: [
9788
9789 {
9790 breakpoint: 1200,
9791 settings: {
9792 slidesToShow: 1,
9793 slidesToScroll: 1,
9794 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>',
9795 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>',
9796
9797 }
9798 },
9799 {
9800 breakpoint: 768,
9801 settings: {
9802 slidesToShow: 1,
9803 slidesToScroll: 1,
9804 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>',
9805 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>',
9806 }
9807 }
9808
9809 ]
9810
9811 });
9812
9813 }
9814
9815 }
9816
9817 function addItemBackpack(codOferta, originElemSelector, codUnidade, dataEfetiva) {
9818
9819 let backpackPostRequest = {};
9820 backpackPostRequest.codOferta = codOferta;
9821 backpackPostRequest.codUnidade = codUnidade;
9822 backpackPostRequest.dt_efetiva = dataEfetiva;
9823
9824
9825 mochila.requestAccess(function (backpackPostRequest) {
9826
9827 let urlMochila = '/o/senac-backpack-services/backpack';
9828
9829 if (getCookie("codMochila") != null) {
9830 backpackPostRequest.codMochila = getCookie("codMochila");
9831 urlMochila = '/o/senac-backpack-services/updateBackpack';
9832 }
9833 $.ajax({
9834 type: 'POST',
9835 url: urlMochila,
9836 headers: {
9837 "Content-Type": "application/json"
9838 },
9839 beforeSend: function (xhr) {
9840 xhr.setRequestHeader("Authorization", "Bearer " + getCookie("tokenMochila"));
9841 loadingSubmitButton(originElemSelector);
9842 $(originElemSelector + ' .loading-icon-button').css('height', 'unset');
9843 if ($(window).width() < 1024) {
9844 $(originElemSelector + ' .loading-icon-button span').css('margin-left', '10%');
9845 }
9846 },
9847 data: JSON.stringify(backpackPostRequest)
9848 }).done(function (data) {
9849
9850 let domain = '';
9851 if (getAmbiente() == 'hom' || getAmbiente() == 'prod')
9852 domain = '.sp.senac.br';
9853
9854 writeCookie(
9855 'codMochila',
9856 (getCookie("codMochila") == null) ? data.backpackCode : JSON.parse(data).backpackCode,
9857 24,
9858 domain
9859 );
9860 addItemSuccessMochila();
9861
9862 }).fail(function (xhr, status, error) {
9863
9864 $('#modal-backpack-error').removeClass('d-none');
9865
9866 }).always(function () {
9867
9868 cleanLoadingSubmitButton(
9869 originElemSelector,
9870 originElemSelector.indexOf('backpack') > 0 ? 'OK, desejo comprar' : 'COMPRAR'
9871 );
9872 $('[id^="modalAntesCompra_"]').each(function (index, modal) {
9873 modal.style.display = "none";
9874 });
9875
9876 });
9877
9878 }, backpackPostRequest);
9879
9880 }
9881
9882 function componentBuyConfirmation(codigoUnidade, oferta, dataEfetiva) {
9883
9884 var comp = null;
9885
9886 if ((oferta.destinoCompra !== null) && oferta.destinoCompra == "2" && !excecaoCursoGratuito(oferta)) {
9887
9888 comp = $("<button>")
9889 .addClass("btn btn-lg btn-success w-100 mt-3 btn-backpack")
9890 .attr("offerCode", oferta.codigoOferta)
9891 .attr("unitCode", codigoUnidade)
9892 .attr("effectiveDate", dataEfetiva)
9893 .text("OK, desejo comprar");
9894
9895 } else {
9896 var textoBotaoConfirmacao = "OK, desejo comprar";
9897
9898 if (excecaoCursoGratuito(oferta))
9899 textoBotaoConfirmacao = "Ok, desejo fazer a matrícula";
9900
9901 comp = $("<a>")
9902 .addClass("btn btn-lg btn-success w-100 mt-3")
9903 .text(textoBotaoConfirmacao)
9904 .attr("href", linkBotaoCompra.replace('\{codigoUnidade\}', codigoUnidade).replace('\{codigoOferta\}', oferta.codigoOferta))
9905 .attr("target", "_blank");
9906 }
9907
9908 comp.attr('id', 'btnCompraLocal_' + oferta.indice);
9909
9910 return comp[0].outerHTML;
9911
9912 }
9913
9914 function getUnidadesSelecionadasRI() {
9915 var unidadesRI = [];
9916
9917 try {
9918
9919 $('#select-unidades-registro-interesse').find('select').each((i, select) => {
9920 var unidadeSel = select.selectedOptions[0].innerText;
9921 if (!unidadesRI.includes(unidadeSel)) unidadesRI.push(unidadeSel);
9922 });
9923
9924 var unidadesExt = unidadesRI.join(', ');
9925
9926 const lastIndex = unidadesExt.lastIndexOf(',');
9927
9928 if (lastIndex > 0) unidadesExt = unidadesExt.substring(0, lastIndex) + ' ou ' + unidadesExt.substring(lastIndex + 1);
9929
9930 return {
9931 'unidadesPrefix': (unidadesRI.length > 1 ? ', nas unidades ' : (unidadesRI.length == 1 ? ', na unidade ' : '')),
9932 'unidades': unidadesExt
9933 };
9934
9935 } catch (err) {
9936
9937 return {
9938 'unidadesPrefix': '',
9939 'unidades': ''
9940 };
9941
9942 }
9943
9944 }
9945
9946
9947
9948
9949 function addItemSuccessMochila() {
9950
9951 mochila.check();
9952 $('#modal-backpack-success__nome-curso').html($('.ssp-card-detalhe-curso__title').text());
9953 $('#modal-backpack-success').removeClass('d-none');
9954
9955 }
9956
9957 $(document).on('click', '.btn-backpack', function (e) {
9958
9959 addItemBackpack(event.target.getAttribute("offerCode"), '.btn-backpack', event.target.getAttribute("unitCode"), event.target.getAttribute("effectiveDate"));
9960
9961 });
9962
9963 $('#btn-voltar-modal-backpack-error').click(function () {
9964 $('#modal-backpack-error').addClass('d-none');
9965 });
9966
9967 $('#btn-voltar-modal-backpack-error').click(function () {
9968 $('#modal-backpack-error').addClass('d-none');
9969 });
9970
9971 $('.btn-mochila-continuar-site-success, .modal-btn-close').click(function () {
9972 $('#modal-backpack-success').addClass('d-none');
9973 });
9974
9975 $('.btn-mochila-finalizar-compra-success').click(function () {
9976 // Montar object push - google tag manager - 6
9977 sendEventEcommerce("begin_checkout", ofertaSelecionada);
9978
9979 window.location.href = mochila.getServiceUrl();
9980
9981 //$('#modal-backpack-success').addClass('d-none');
9982 //$('[id^="myModal_"]').each((i,modal)=>modal.style.display = "none");
9983 });
9984
9985 function closeModalFormAprendizagem() {
9986 let modal = document.querySelector('#modal-form');
9987 modal.close();
9988 }
9989
9990
9991 function openModalFormAprendizagem(ev) {
9992
9993 const $container = document.getElementById('modal-form');
9994 if (!$container || !$container.nodeName == 'DIALOG') return;
9995
9996 const ofertaSel = ofertasMap.get(ev.target.getAttribute('data-codigo-oferta'));
9997
9998 function getUnidadeSelecionada() {
9999 const categoryUnidade = $('#unidades-ofertas').val().split('@')[0];
10000 return objsTela.unidades.find(u => u.categoryId == categoryUnidade) || {};
10001 }
10002
10003 async function request(url, { method = 'GET', headers = {}, body, beforeSend } = {}) {
10004 const init = { method, headers, body, credentials: 'same-origin' };
10005 const resp = await fetch(url, init);
10006 if (!resp.ok) throw new Error('Erro status ' + resp.status);
10007 return resp.text();
10008 }
10009
10010 async function loadHTMLForm() {
10011
10012 if ($container.querySelectorAll('form').length) {
10013 FormControl.changeCursoInfo(ofertaSel, getUnidadeSelecionada());
10014 return;
10015 }
10016
10017 const url = Liferay.ThemeDisplay.getPortalURL().concat('/documents/d/global/html-formulario-aprendizagem');
10018
10019 const formHTML = await request(url);
10020
10021 $container.innerHTML += formHTML;
10022
10023 let script = document.createElement('script');
10024 script.src = '/documents/d/global/js-aprendizagem-formulario';
10025 script.async = true;
10026
10027 script.onload = () => {
10028 console.log(`script loaded successfully.`);
10029 init(ofertaSel, getUnidadeSelecionada());
10030 };
10031
10032 script.onerror = () => {
10033 console.error(`Error loading script`);
10034 };
10035
10036 document.head.appendChild(script);
10037
10038 }
10039
10040 loadHTMLForm();
10041
10042 $container.showModal();
10043
10044 }
10045
10046 function addEventBolsa() {
10047 // Mostra o preco
10048 const btnShowPrices = document.querySelectorAll('.btn-show-price')
10049
10050 btnShowPrices.forEach(btnShowPrice => btnShowPrice.addEventListener('click', togglePriceCard))
10051
10052 if (!$('#chkBolsa').prop('checked'))
10053 togglePriceCard()
10054 }
10055
10056 function togglePriceCard(selector) {
10057 if (selector instanceof PointerEvent) return
10058
10059 if (!selector) selector = ''
10060 else selector = '.' + selector
10061
10062 const btnPrices = document.querySelectorAll('.show-price-content' + selector)
10063 const contentPrices = document.querySelectorAll('.content-valores-descontos' + selector)
10064 const contentBtnBolsas = document.querySelectorAll('.content-btn-bolsa' + selector)
10065
10066 btnPrices.forEach(btnPrice => btnPrice.classList.toggle('hide'))
10067 contentBtnBolsas.forEach(contentBtnBolsa => contentBtnBolsa.classList.toggle('modifier-content-show'))
10068 contentPrices.forEach(contentPrice => contentPrice.classList.toggle('hide-price'))
10069 }
10070
10071 function getRegiaoName(key) {
10072 switch (key) {
10073 case "MP":
10074 return "Unidades mais próximas de você";
10075 case "C":
10076 return "Capital";
10077 case "I":
10078 return "Interior";
10079 case "GS":
10080 return "Grande São Paulo e Litoral";
10081 default:
10082 return "Sem Região";
10083 }
10084 }
10085
10086 function criarOptionUnidadesPorRegiao(unidades) {
10087 let regioes = {}
10088 let unidadeFounded
10089
10090 // As duas primeiras devem ser unidades ate 20km
10091 const unidadesProximas = PortalUtils.Geolocation.getUnidadesProximas()
10092 .filter(u => u.distanciaAteUnidade <= 20000)
10093 .map(uProx => unidades.find(u => u.friendlyURL == uProx.friendlyURL))
10094 .filter(Boolean)
10095 .slice(0, 2);
10096
10097 if (unidadesProximas.length) {
10098 const urls = Array.from(unidadesProximas.map(u => u.friendlyURL));
10099 unidades.filter(un => urls.includes(un.friendlyURL))
10100 .forEach(un => un.codRegiaoUnidade = 'MP');
10101 }
10102
10103 unidades.forEach(unidade => {
10104 if (!regioes[unidade.codRegiaoUnidade || 'N'])
10105 regioes[unidade.codRegiaoUnidade || 'N'] = []
10106
10107 regioes[unidade.codRegiaoUnidade || 'N'].push(unidade)
10108 })
10109
10110 Array.from(['MP', 'C', 'I', 'GS', 'N'])
10111 .filter(key => Object.keys(regioes).includes(key))
10112 .forEach(key => {
10113 const unidadesDaRegiao = regioes[key]
10114
10115 const optionDisabled = $('<option>')
10116 optionDisabled.attr('label', getRegiaoName(key))
10117 optionDisabled.text(getRegiaoName(key));
10118 optionDisabled.attr('disabled', true)
10119 optionDisabled.addClass('ssp-option-group')
10120 $('#unidades-ofertas').append(optionDisabled)
10121
10122 $.each(unidadesDaRegiao, function (k, unidade) {
10123 if ($('#unidades-ofertas').find('[value="' + unidade['categoryId'] + '"]').length == 0) {
10124 var option = $('<option>');
10125 option.val(unidade['categoryId'] + "@" + unidade['codigoUnidade']);
10126 option.text(unidade['nome']);
10127 option.attr('data-unidade-friendly-url', unidade.friendlyURL)
10128 option.addClass('ssp-option')
10129
10130 $('#unidades-ofertas').append(option);
10131
10132 unidadeFounded = !unidadeFounded && getURLData().includes('/' + unidade.friendlyURL + '/') ? unidade : unidadeFounded
10133 }
10134 })
10135 })
10136
10137 return unidadeFounded
10138 }
10139
10140 function getURLData() {
10141 return URLGeral.replace(HOST, '')
10142 }
10143
10144 /**
10145 * Copia um objeto JSON
10146 */
10147 function cloneObj(original) {
10148 return JSON.parse(JSON.stringify(original));
10149 }
10150
10151 function getUrlConsultaBolsa(oferta) {
10152
10153 let url = '';
10154 if (isAmbienteTeste()) {
10155 if (oferta.destinoBolsa == '1') {
10156 url = 'https://hwse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO=' + oferta.codigoOferta
10157 } else {
10158 url = 'https://hom-wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/' + oferta.codigoOferta;
10159 }
10160 } else {
10161 if (oferta.destinoBolsa == '1') {
10162 url = 'https://wse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO=' + oferta.codigoOferta
10163 } else {
10164 url = 'https://wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/' + oferta.codigoOferta;
10165 }
10166
10167 }
10168
10169 return url;
10170 }
10171
10172 function execCompraEmed(oferta){
10173
10174 let linkInscricaoEmed = '', linkInscricaoEmedHml = '';
10175 if(oferta.etapa == '0010'){
10176 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';
10177 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';
10178 }
10179
10180 var ambTeste = ['localhost', 'hom', 'dev'];
10181 var link = linkInscricaoEmed;
10182 /*
10183 $.each(ambTeste, function(i, a){
10184 if(location.hostname.indexOf(a) >= 0){
10185 link = linkInscricaoEmedHml;
10186 return false;
10187 }
10188 });
10189 */
10190
10191 // Montar object push - google tag manager - 3
10192 ofertaSelecionada = itensEcommerce.get(oferta.codigoOferta)
10193 sendEventEcommerce("select_item", ofertaSelecionada);
10194 sendEventEcommerce("view_item", ofertaSelecionada);
10195 sendEventEcommerce("add_to_cart", ofertaSelecionada);
10196 sendEventEcommerce("begin_checkout", ofertaSelecionada);
10197
10198 var urlCompra = link.replace('\{codOferta\}', oferta.codigoOferta);
10199 window.open(urlCompra, '_blank');
10200 }
10201
10202 function formataDataComBarra(dataInvertidaComTraco) {
10203 return dataInvertidaComTraco.split('-').reverse().join('/');
10204 }
10205
10206
10207 let ctrlPressed = false;
10208 $(window).keydown(function (ev) {
10209 if (ev.which == 17) {
10210 ctrlPressed = true;
10211 return false;
10212 }
10213 if (ev.which == 82 && ctrlPressed) {
10214 return false;
10215 }
10216 return (ev.which != 116); // F5
10217 }).keyup(function (ev) {
10218 if (ev.which == 17) {
10219 ctrlPressed = false;
10220 }
10221 return true;
10222 });
10223
10224
10225 </script>
10226
10227 </#if>