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