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: underline;
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 = '';
5089 var codigoFTCursoAprendizagem = 18984;
5090 var globalGroupId = Liferay.ThemeDisplay.getCompanyGroupId();
5091 var isAoVivo = 0;
5092 var nomeFormatoAoVivoDxp = 'Senac Online - ao vivo';
5093 var ofertaUnidadeMap = new Map();
5094 var ultimaUnidade = 0;
5095 var regIndex = new RegExp('\{index\}', 'g');
5096 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';
5097 var carregouUltimaOferta = false;
5098 var ofertasMap = new Map();
5099 var codUnidadeSenacAoVivo = '108';
5100 var ofertasComBolsa = false;
5101
5102 //funcao para pegar host do ambiente, se eh teste ou prod (utilizado no servico da bolsa)- 9546
5103 function getServiceEnvironmentHost() {
5104 if (!isAmbienteTeste())
5105 return window.location.origin
5106 else
5107 return 'https://gesportal.sp.senac.br'
5108 }
5109
5110 var hostBolsa = getServiceEnvironmentHost()
5111
5112 // Montar object push - google tag manager - 1
5113 let itensEcommerce = null;
5114 let ofertaSelecionada = null;
5115
5116 const today = new Date;
5117
5118 //categoryId -> cod unidade
5119 var mapUnidadesIds = new Map();
5120 var objsTela = {
5121 unidades: [],
5122 unidadesRegistroInteresse: [],
5123 categoriesIds: [],
5124 ofertasAoVivoTodasUnidades: [],
5125 primeiroChange: true
5126 };
5127 var startOfertaParam = 0;
5128 var endOfertaParam = 25;
5129
5130 var ehCursoTrampolim = false;
5131
5132 const isHibrido = $('input[name="formato"]').data('formato') === 'Presencial + EAD';
5133
5134 var textoFormatoHibrido = "";
5135 var temTextoParaFormatoHibrido = false;
5136
5137 //Validar se o campo textoFormatoHibrido existe e se não está vazio
5138 if (isHibrido) {
5139 textoFormatoHibrido = $('input[name="textoFormatoHibrido"]').val();
5140 if (typeof textoFormatoHibrido !== 'undefined') {
5141 if (textoFormatoHibrido.trim() !== '') {
5142 temTextoParaFormatoHibrido = true;
5143 textoFormatoHibrido += '<br>';
5144 }
5145 }
5146 }
5147
5148 const HOST = window.location.origin;
5149 const URLGeral = window.location.href;
5150
5151 //EMED
5152 const anoTurmaEmed = '2027';
5153
5154 const tipoCursoNome = function () { return $('.ssp-header-curso__tag-formato').text().trim(); }
5155
5156 const isEmed = (tipoCursoNome().indexOf('Ensino Médio Técnico') > -1);
5157
5158 const statusEmed = Object.freeze({
5159 NAO_ENCONTRADA: 0,
5160 INSCRICAO: 1,
5161 ESPERA: 2,
5162 ESGOTADO: 3
5163 });
5164
5165 let unidadesToURL = []
5166
5167 const loadPoliticaPrivacidade = async function () {
5168
5169 if (PortalService !== 'undefined') {
5170 const politicaContent = await PortalService.getPoliticaPrivacidade();
5171 document.querySelectorAll('.ssp-card-registro-interesse__card-politica').forEach(el => {
5172 el.innerHTML = politicaContent;
5173 });
5174 }
5175
5176 }
5177
5178 const localLivreOnline = function (textoLocal) {
5179 textoLocal = textoLocal || ''
5180 textoLocal = textoLocal.replaceAll('online', 'on-line')
5181
5182 const textoOnline = 'Nesta turma, todas as aulas serão on-line e ao vivo pela plataforma digital Microsoft Teams';
5183
5184 return textoLocal.toUpperCase().includes(textoOnline.toUpperCase());
5185 }
5186
5187 const linkBolsa = function (oferta) {
5188 const hostBolsaUrl = new URL(isAmbienteTeste() ? 'https://hpsgq.sp.senac.br/queue-bootstrap' : 'https://psgq.sp.senac.br/queue-bootstrap');
5189
5190 hostBolsaUrl.searchParams.set('un', codigoUnidade);
5191 hostBolsaUrl.searchParams.set('cs', $('[name="codigoFT"]').val());
5192 hostBolsaUrl.searchParams.set('tu', oferta.codigoOferta);
5193 hostBolsaUrl.searchParams.set('qv', oferta.qtdeTotalVagasPSG);
5194
5195 return hostBolsaUrl.toString();
5196 }
5197
5198 $('.ssp-ofertas-emed__filtro-content .btn').on('click', function () {
5199
5200 var classAtivo = 'btn--filtro-ativo';
5201
5202 if (!$(this).hasClass(classAtivo)) {
5203
5204 $(this).siblings().removeClass(classAtivo);
5205
5206 $(this).addClass(classAtivo);
5207
5208 const $cardTransferencias = $('.card-transferencias-emed');
5209
5210 if ($(this).val() == '0') {
5211 hideCardSemTurmas(true);
5212 $('.ssp-slick-ofertas-emed').empty();
5213 if (!$('.ssp-slick-ofertas-emed').hasClass('d-none')) $('.ssp-slick-ofertas-emed').addClass('d-none');
5214 $('.prev-mobile, .next-mobile').addClass('d-none');
5215 $cardTransferencias.removeClass('d-none');
5216 } else {
5217 if (!$cardTransferencias.hasClass('d-none')) $cardTransferencias.addClass('d-none');
5218 $('.ssp-slick-ofertas-emed').removeClass('d-none');
5219 populaOfertas(objsTela.ofertas);
5220 }
5221
5222 }
5223
5224 });
5225
5226 //Cronometro
5227 var hidden, visibilityChange;
5228 var restartTimeout = null;
5229 var interval01, interval15;
5230
5231 if (typeof document.hidden !== "undefined") { // Opera 12.10 and Firefox 18 and later support
5232 hidden = "hidden";
5233 visibilityChange = "visibilitychange";
5234 } else if (typeof document.msHidden !== "undefined") {
5235 hidden = "msHidden";
5236 visibilityChange = "msvisibilitychange";
5237 } else if (typeof document.webkitHidden !== "undefined") {
5238 hidden = "webkitHidden";
5239 visibilityChange = "webkitvisibilitychange";
5240 }
5241
5242 // Verifica suporte a Visibility API
5243 if (typeof document.addEventListener === "undefined" || hidden === undefined) {
5244 console.log("Navegador incompativel com page visibility api");
5245 } else {
5246 // Evento para quando a visibilidade da pagina mudar
5247 document.addEventListener(visibilityChange, handleVisibilityChange, false);
5248 }
5249
5250 $(".ssp-saiba-mais-curso-accordion").on("click", ".ssp-saiba-mais-curso-accordion__heading", function () {
5251
5252 $(this).toggleClass("active").next().slideToggle();
5253
5254 $(".sp-saiba-mais-curso-accordion__contents").not($(this).next()).slideUp(300);
5255
5256 $(this).siblings().removeClass("active");
5257 });
5258
5259 function loadUnidadesRegistroInteresse(urlCursoInfo) {
5260 if (objsTela.unidadesRegistroInteresse && objsTela.unidadesRegistroInteresse.length)
5261 return
5262
5263 let urlUnidades = new URL(window.location.origin + urlCursoInfo)
5264 let paramsUnidades = new URLSearchParams(urlUnidades.search)
5265 paramsUnidades.delete('inscricaoAberta')
5266 paramsUnidades.delete('bolsaAberta')
5267 paramsUnidades.delete('buscarUnidadesComOferta')
5268 urlUnidades.search = '?' + paramsUnidades.toString()
5269 urlUnidades = urlUnidades.href
5270
5271 $.ajax({
5272 url: urlUnidades,
5273 method: 'get',
5274 async: false
5275 }).done(function (data) {
5276 if (data.length > 0) {
5277 const cursoInfo = JSON.parse(data);
5278 const unidadesOfertantes = cursoInfo.unidadesOfertantes;
5279
5280 $.each(unidadesOfertantes, function (k, item) {
5281 var unidade = {};
5282 unidade['categoryId'] = item['categoryId'];
5283 unidade['codigoUnidade'] = item['codigoUnidade'];
5284 unidade['nome'] = item['nomeUnidade'];
5285 unidade['enderecoUnidade'] = item['enderecoUnidade'];
5286 unidade['numero'] = item['numEnderecoUnidade'];
5287 unidade['complemento'] = item['complementoEnderecoUnidade'];
5288 unidade['bairro'] = item['bairroUnidade'];
5289 unidade['googlemapsUnidade'] = item['googlemapsUnidade'];
5290 unidade['friendlyURL'] = item['friendlyURL'];
5291 unidade['selecionado'] = false;
5292 unidade['selectSelecionado'] = "";
5293 unidade['ofertas'] = [];
5294
5295 if (!objsTela.unidadesRegistroInteresse.filter(uni => uni['categoryId'] == unidade['categoryId']).length)
5296 objsTela.unidadesRegistroInteresse.push(unidade)
5297 });
5298 }
5299 });
5300 }
5301
5302 function loadUnidades(showOptions, unidadeValue) {
5303 //Busca as unidades do curso
5304 let buscarUnidadesComOferta = false;
5305
5306 if (!isEmed && (!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked')))
5307 buscarUnidadesComOferta = true;
5308
5309 const urlCursoInfo = urlSearchCursoInfo
5310 .replace('\{groupId\}', groupId)
5311 .replace('\{cursosInfo\}', $('[name="articleId"]').val())
5312 .replace('\{inscricaoAberta\}', $('#chkInscricao').prop('checked'))
5313 .replace('\{bolsaAberta\}', $('#chkBolsa').prop('checked'))
5314 .replace('\{buscarUnidadesComOferta\}', buscarUnidadesComOferta);
5315
5316 loadUnidadesRegistroInteresse(urlCursoInfo)
5317
5318 $.ajax({
5319 url: urlCursoInfo,
5320 method: 'get',
5321 async: false,
5322 beforeSend: function () {
5323 loading('.oferta-slick-area');
5324 }
5325 }).done(
5326 function (data) {
5327
5328 if (data.length > 0) {
5329
5330 const cursoInfo = JSON.parse(data);
5331
5332 const unidades = buscarUnidadesComOferta ? cursoInfo.unidadesComOferta : cursoInfo.unidadesOfertantes;
5333
5334 if (!isAoVivo && (!buscarUnidadesComOferta || unidades.length > 0))
5335 $('.ssp-container-selecione-unidade').removeClass('d-none')
5336
5337 objsTela.unidades = []
5338 mapUnidadesIds = new Map();
5339
5340 $.each(unidades, function (k, item) {
5341
5342 var unidade = cloneObj(item)
5343 unidade['nome'] = item['nomeUnidade'];
5344 unidade['numero'] = item['numEnderecoUnidade'];
5345 unidade['complemento'] = item['complementoEnderecoUnidade'];
5346 unidade['bairro'] = item['bairroUnidade'];
5347 unidade['ofertas'] = [];
5348
5349 objsTela.unidades.push(unidade);
5350
5351 mapUnidadesIds.set(unidade['categoryId'], unidade['codigoUnidade']);
5352
5353 objsTela.unidades.forEach(unidade => unidadesToURL.filter(u => u.friendlyURL == unidade.friendlyURL).length ? '' : unidadesToURL.push(unidade))
5354 });
5355
5356
5357 populaSelectUnidades(undefined, showOptions, unidadeValue);
5358
5359 }
5360 });
5361
5362 }
5363
5364 function getOfertaObjectFromJson(ofertaJSON, index) {
5365
5366
5367 var oferta = {};
5368 var xml = $($.parseXML(ofertaJSON.content));
5369 oferta['ordenar'] = paramOrdem(xml);
5370 oferta['vagasTotal'] = xml.find('[name="vagasTotal"]').text().trim();
5371 var dataInicio = xml.find('[name="dataInicioOferta"]').text().split('-');
5372 var dataFim = xml.find('[name="dataFimOferta"]').text().split('-');
5373 oferta['dataInicio'] = dataInicio[2].trim() + '/' + dataInicio[1].trim() + '/' + dataInicio[0].trim();
5374 oferta['dataFim'] = dataFim[2].trim() + '/' + dataFim[1].trim() + '/' + dataFim[0].trim();
5375 oferta['horaInicio'] = xml.find('[name="horaInicioOferta"]').text();
5376 oferta['codigoOferta'] = xml.find('[name="codigoOferta"]').text().trim();
5377 var dias = [];
5378 oferta['horaFimOferta'] = xml.find('[name="horaFimOferta"]').text().trim();
5379 xml.find('[name="diasDaSemanaOferta"]').find('option').each(function (index, dia) {
5380 dias.push($(dia).text());
5381 });
5382 oferta['diasDaSemanaOferta'] = dias;
5383 oferta['periodoDiaOferta'] = xml.find('[name="periodoDiaOferta"]').text().trim();
5384 oferta['precoCheioOferta'] = xml.find('[name="precoCheioOferta"]').text().trim();
5385 oferta['precoVendaOferta'] = xml.find('[name="precoVendaOferta"]').text().trim();
5386 oferta['numeroMaxParcelasOferta'] = xml.find('[name="numeroMaxParcelasOferta"]').text().trim();
5387
5388 oferta['textoCartoesAceitos'] = pegarTextoCartoesAceitos(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
5389 oferta['numParcelaCartoes'] = pegaNumParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
5390 oferta['precoParcelaCartoes'] = pegaValorParcela(xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim());
5391 oferta['numParcelaBoleto'] = pegaNumParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim());
5392 oferta['precoParcelaBoleto'] = pegaValorParcela(xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim());
5393
5394 oferta['precoVendaMaxParcelaOferta'] = xml.find('[name="precoVendaMaxParcelaOferta"]').text().trim();
5395 oferta['formaDePagamentoOferta'] = xml.find('[name="formaDePagamentoOferta"]').text().trim();
5396 oferta['botaoCompraOferta'] = xml.find('[name="botaoCompraOferta"]').text().trim();
5397 oferta['vagasParaCompraOferta'] = xml.find('[name="vagasParaCompraOferta"]').text().trim();
5398 oferta['botaoBolsaOferta'] = xml.find('[name="botaoBolsaOferta"]').text().trim();
5399 oferta['vagasBolsaOferta'] = xml.find('[name="vagasBolsaOferta"]').text().trim();
5400 oferta['dataAberturaBolsaOferta'] = xml.find('[name="dataAberturaBolsaOferta"]').text().trim();
5401 oferta['horaAberturaBolsaOferta'] = xml.find('[name="horaAberturaBolsaOferta"]').text().trim();
5402 oferta['espacoExterno'] = xml.find('[name="espacoExterno"]').text().trim();
5403 oferta['localEspacoExterno'] = xml.find('[name="localEspacoExterno"]').text().trim();
5404 oferta['ruaEspacoExterno'] = xml.find('[name="ruaEspacoExterno"]').text().trim();
5405 oferta['numeroEspacoExterno'] = xml.find('[name="numeroEspacoExterno"]').text().trim();
5406 oferta['complementoEspacoExterno'] = xml.find('[name="complementoEspacoExterno"]').text().trim();
5407 oferta['bairroEspacoExterno'] = xml.find('[name="bairroEspacoExterno"]').text().trim();
5408 oferta['cidadeEspacoExterno'] = xml.find('[name="cidadeEspacoExterno"]').text().trim();
5409 oferta['ufEspacoExterno'] = xml.find('[name="ufEspacoExterno"]').text().trim();
5410 oferta['cepEspacoExterno'] = xml.find('[name="cepEspacoExterno"]').text().trim();
5411 oferta['qtdeTotalVagas'] = xml.find('[name="qtdeTotalVagas"]').text().trim();
5412 oferta['qtdeTotalVagasPSG'] = xml.find('[name="qtdeTotalVagasPSG"]').text().trim();
5413 oferta['horariosAllOferta'] = xml.find('[name="horariosAllOferta"]').text().trim();
5414 oferta['formaDePagamentoCartaoOferta'] = xml.find('[name="formaDePagamentoCartaoOferta"]').text().trim();
5415 oferta['formaDePagamentoBoletoOferta'] = xml.find('[name="formaDePagamentoBoletoOferta"]').text().trim();
5416 oferta['dtLimiteMatricula'] = xml.find('[name="dtLimiteMatricula"]').text().trim();
5417 oferta['dataAberturaMatricula'] = xml.find('[name="dataAberturaMatricula"]').text().trim();
5418 oferta['etapa'] = xml.find('[name="etapa"]').text().trim();
5419 oferta['destinoCompra'] = xml.find('[name="destinoCompra"]').text().trim();
5420 //adicao do destinoBolsa na oferta - 9546 - 11/07/2022
5421 oferta['destinoBolsa'] = xml.find('[name="destinoBolsa"]').text().trim();
5422
5423 // 18/07/2025 - Removido o dataAberturaBolsaOferta recebendo o dataAberturaMatricula
5424 // devido a mudança de regra que recebemos da área
5425
5426 return oferta;
5427 }
5428
5429 const getStatusEmed = (oferta) => {
5430
5431 if ("${listaEsperaAtiva?c}" !== "true") return statusEmed.INSCRICAO;
5432
5433 const urlStatusEsperaEmed = () => {
5434 let url = (isAmbienteTeste()) ?
5435 'https://hinscricao-educacional-backend.sp.senac.br/api/lista-espera/'
5436 : 'https://inscricao-educacional-ms.sp.senac.br/api/lista-espera/';
5437
5438 return url + oferta.codigoOferta;
5439 }
5440
5441 const callTl = async () => {
5442 if (getCookie('tl') == null) {
5443 return await $.ajax({
5444 url: '/o/senac-content-services/geraTokenServicosSenac',
5445 method: 'GET'
5446 });
5447 }
5448 return getCookie('tl');
5449 }
5450
5451 const callListaEspera = async () => {
5452 var tl = '';
5453 try {
5454 tl = await callTl();
5455 if (getCookie('tl') == null) {
5456 tl = JSON.parse(tl).token;
5457 writeCookie('tl', tl, 6, '');
5458 }
5459 } catch (err) {
5460 console.error(err);
5461 return {};
5462 }
5463
5464 return $.ajax({
5465 url: urlStatusEsperaEmed(),
5466 method: 'GET',
5467 beforeSend: function (xhr) {
5468 xhr.setRequestHeader("Authorization", tl);
5469 }
5470 })
5471 }
5472
5473 return new Promise(async function (resolve, reject) {
5474 const resp = await callListaEspera();
5475 if (typeof resp !== 'object') resp = JSON.parse(resp);
5476 let status = resp.STATUS;
5477 resolve(status);
5478 });
5479
5480 }
5481
5482 function getOfertasAoVivo(codigoFT, dataEfetivaOferta, categoryIds) {
5483
5484 if (categoryIds && categoryIds.length) {
5485 var params = new URLSearchParams();
5486 params.set('codigoFTOferta', codigoFT)
5487 params.set('dataEfetivaOferta', dataEfetivaOferta)
5488 params.set('categoryIds', categoryIds)
5489 params.set('start', startOfertaParam)
5490 params.set('end', endOfertaParam)
5491 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
5492 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
5493 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
5494
5495 if ($('#chkBolsa').prop('checked')) {
5496 params.set('considerarDataBolsaFutura', true)
5497 }
5498 const url = urlSearchOferta + '?' + params.toString()
5499
5500 $.ajax({
5501 url: url,
5502 method: 'get',
5503 dataType: 'json',
5504 async: false
5505 }).done(
5506 function (data) {
5507
5508 if (data.length > 0) {
5509 $('#ssp-alternadores').show()
5510 showedFilters = true
5511
5512 objsTela.ofertasAoVivoTodasUnidades = []
5513
5514 data.forEach(function (ofertaJSON, index) {
5515
5516 var oferta = getOfertaObjectFromJson(ofertaJSON, index);
5517
5518 //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo
5519 ofertaUnidadeMap.set(oferta['codigoOferta'], mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));
5520 objsTela.ofertasAoVivoTodasUnidades.push(oferta);
5521
5522 });
5523 } else {
5524 loadAlternadores(data)
5525 }
5526
5527 populaOfertas(objsTela.ofertasAoVivoTodasUnidades);
5528 addEventBolsa()
5529 }
5530 ).fail(function (e) {
5531 console.error(e)
5532 populaOfertas(objsTela.ofertasAoVivoTodasUnidades = []);
5533 })
5534 } else {
5535 loadAlternadores([])
5536 populaOfertas(objsTela.ofertasAoVivoTodasUnidades = [])
5537 }
5538
5539 if (isAoVivo) {
5540 if (objsTela.ofertasAoVivoTodasUnidades && objsTela.ofertasAoVivoTodasUnidades.length)
5541 hideCardSemTurmas(true)
5542 else
5543 hideCardSemTurmas(false)
5544 }
5545 }
5546
5547 function mudouToggleOferta(ofertas) {
5548 const oferta = ofertas && ofertas[0]
5549 if (!oferta)
5550 return true
5551
5552 const selecaoInscricao = $('#chkInscricao').prop('checked')
5553 const selecaoBolsa = $('#chkBolsa').prop('checked')
5554
5555 return oferta.selecaoInscricao != selecaoInscricao || oferta.selecaoBolsa != selecaoBolsa
5556 }
5557
5558 function loadAlternadores(ofertas) {
5559 if (showedFilters) {
5560 $('#ssp-alternadores').show()
5561 return
5562 }
5563
5564 if ($('#unidades-ofertas').is(":hidden") || $('#unidades-ofertas option').length <= 1) {
5565 if (isAoVivo) {
5566 if (ofertas && ofertas.length)
5567 $('#ssp-alternadores').show()
5568 else {
5569 if (!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked'))
5570 $('#ssp-alternadores').hide()
5571 else
5572 $('#ssp-alternadores').show()
5573 }
5574 } else {
5575 if (!$('#chkInscricao').prop('checked') && !$('#chkBolsa').prop('checked'))
5576 $('#ssp-alternadores').hide()
5577 else
5578 $('#ssp-alternadores').show()
5579 }
5580 } else
5581 $('#ssp-alternadores').show()
5582
5583 showedFilters = showedFilters || $('#ssp-alternadores').is(":visible")
5584 }
5585
5586 function getOfertas(codigoFT, dataEfetivaOferta, categoryId) {
5587
5588 var indiceUnidade = -1;
5589 const selecaoInscricao = $('#chkInscricao').prop('checked')
5590 const selecaoBolsa = $('#chkBolsa').prop('checked')
5591
5592 for (var i = 0; i < objsTela.unidades.length; i++)
5593 if (objsTela.unidades[i].categoryId == categoryId)
5594 indiceUnidade = i;
5595
5596 ultimaUnidade = indiceUnidade;
5597
5598 if (!objsTela.categoriesIds.includes(categoryId) || mudouToggleOferta(objsTela.unidades[indiceUnidade]['ofertas'])) {
5599 objsTela.unidades[indiceUnidade]['ofertas'] = []
5600
5601 var params = new URLSearchParams();
5602 params.set('codigoFTOferta', codigoFT)
5603 params.set('dataEfetivaOferta', dataEfetivaOferta)
5604 params.set('categoryIds', categoryId)
5605 params.set('start', startOfertaParam)
5606 params.set('end', endOfertaParam)
5607 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
5608 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
5609 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
5610
5611 if ($('#chkBolsa').prop('checked')) {
5612 params.set('considerarDataBolsaFutura', true)
5613 }
5614
5615 const url = urlSearchOferta + '?' + params.toString()
5616
5617 var deferredOfertas = $.Deferred();
5618
5619 $.ajax({
5620 url: url,
5621 method: 'get',
5622 dataType: 'json'
5623 }).done(
5624 async function (data) {
5625
5626 if (data.length > 0) {
5627 $('#ssp-alternadores').show()
5628 showedFilters = true
5629
5630 $('.ssp-container-selecione-unidade').show();
5631
5632 data.forEach(function (ofertaJSON, index) {
5633
5634 var oferta = getOfertaObjectFromJson(ofertaJSON, index);
5635
5636 //Preenche as ofertas da unidade
5637 objsTela.unidades[indiceUnidade]['ofertas'].push(oferta);
5638 objsTela.unidades[indiceUnidade]['ofertas'].forEach(o => {
5639 o.selecaoInscricao = selecaoInscricao
5640 o.selecaoBolsa = selecaoBolsa
5641 })
5642
5643 });
5644 } else {
5645 loadAlternadores()
5646 }
5647 objsTela.categoriesIds.push(categoryId);
5648 await populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']);
5649 addEventBolsa()
5650 deferredOfertas.resolve();
5651 }
5652 ).fail(function () {
5653 console.error('Erro ao buscar ofertas da unidade selecionada.');
5654 hideCardSemTurmas(false)
5655 deferredOfertas.reject();
5656 })
5657
5658 return deferredOfertas.promise()
5659
5660 //Se estiver na cache, valida as ofertas
5661 } else {
5662
5663 var deferredCache = $.Deferred();
5664 Promise.resolve(populaOfertas(objsTela.unidades[indiceUnidade]['ofertas']))
5665 .then(function () {
5666 deferredCache.resolve();
5667 })
5668 .catch(function () {
5669 deferredCache.reject();
5670 });
5671 return deferredCache.promise();
5672
5673 }
5674 }
5675
5676 function populaSelectUnidades(unidades, showOptions, unidadeValue) {
5677 var unidadePreSelecionada = false;
5678 var categoryIdUnidadePreSelecionada = '';
5679
5680 //Oredenacao
5681 objsTela.unidades.sort(function (a, b) {
5682 return ordenar(a, b, 'nome');
5683 });
5684
5685 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
5686 return ordenar(a, b, 'nome');
5687 });
5688
5689 //console.log(objsTela.unidades);
5690
5691 $.each(objsTela.unidades, function (k, item) {
5692
5693 if (getURLData().includes('/' + item.friendlyURL + '/')) {
5694 unidadePreSelecionada = true;
5695 categoryIdUnidadePreSelecionada = item['categoryId'];
5696 }
5697 });
5698
5699 //console.log('Unidade Pre '+unidadePreSelecionada);
5700
5701 if (objsTela.unidades.length == 0) {
5702 if (!showOptions)
5703 $('.ssp-container-selecione-unidade').addClass('d-none');
5704 $('.oferta-slick-area').empty();
5705 $('.prev-mobile').addClass('d-none');
5706 $('.next-mobile').addClass('d-none');
5707 //EMED remove msg registro interesse
5708 //if(isEmed) $('.ssp-card-oferta-curso__sem-vaga-description').addClass('d-none');
5709 }
5710
5711 if (isAoVivo) {
5712
5713 const codigoFT = $('[name="codigoFT"]').val();
5714 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
5715
5716 var unidadesCategoryAll = '';
5717
5718 $.each(objsTela.unidades, function (k, unidade) {
5719 unidadesCategoryAll += unidade['categoryId'] + ',';
5720 });
5721
5722 //tirando ultima virgula
5723 unidadesCategoryAll = unidadesCategoryAll.substring(0, unidadesCategoryAll.length - 1);
5724
5725 getOfertasAoVivo(codigoFT, dataEfetivaOferta, unidadesCategoryAll);
5726
5727 } else {
5728 $('#unidades-ofertas').empty()
5729
5730 if (objsTela.unidades && objsTela.unidades.length) {
5731 if (isEmed)
5732 $('#unidades-ofertas').append($('<option value="">Selecione uma unidade</option>'))
5733 else
5734 $('#unidades-ofertas').append($('<option value="">Clique na unidade de interesse</option>'))
5735
5736 } else
5737 $('#unidades-ofertas').append($('<option value="">Nenhum resultado encontrado</option>'))
5738
5739 let unidadeFounded = criarOptionUnidadesPorRegiao(objsTela.unidades)
5740
5741 //Dispara o evento para primeira unidade ou pela friendlyURl da unidade
5742 if (unidadeValue) {
5743 $('#unidades-ofertas').val(unidadeValue);
5744 $('#unidades-ofertas').change();
5745 } else if (unidadeFounded) {
5746 $('#unidades-ofertas').val(unidadeFounded['categoryId'] + "@" + unidadeFounded['codigoUnidade']);
5747 $('#unidades-ofertas').change();
5748 } else if (!unidadePreSelecionada) {
5749 $('#unidades-ofertas').change();
5750 }
5751
5752 $('.ssp-card-registro-interesse__select.unidades').empty()
5753 $('.ssp-card-registro-interesse__select.unidades').append('<option value="" disabled selected>Selecione uma unidade</option>')
5754 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
5755
5756 $('.ssp-card-registro-interesse__select.unidades').append('<option value="' + unidade['codigoUnidade'] + '">' + unidade['nome'] + '</option>');
5757 });
5758 }
5759
5760 }
5761
5762 function excecaoCursoGratuito(oferta) {
5763 return $('[name="modalidadeName"]').val() == 'acoes-educ.-curta-duracao' && $('[name="tipoCurso"]').val() == 'livre' && (strToFloat(oferta.precoVendaOferta) == 0);
5764 }
5765
5766
5767 function mudarUnidade(ev) {
5768 startOfertaParam = 0;
5769 endOfertaParam = 25;
5770 carregouUltimaOferta = false;
5771
5772 var elem = $(ev.target);
5773 var unidades = objsTela.unidades;
5774
5775 //verifica se selecionou alguma unidade
5776 if (!elem.val()) {
5777 $('#informe-novas-turmas, .ssp-ofertas-emed__section, .ssp-ofertas__box-endereco-unidade').addClass('d-none');
5778
5779 if (isEmed)
5780 $('#ssp-section-response').addClass('d-none')
5781
5782 hideCardSemTurmas($('#unidades-ofertas option').length > 1)
5783
5784 elem.val('')
5785 habilitarRegistroInteresse(false)
5786 //Zera variável que controla existência de ofertas com bolsa
5787 ofertasComBolsa = false;
5788 controlaPaginaBolsa();
5789
5790 return $.Deferred().resolve().promise();
5791 }
5792
5793 $('#informe-novas-turmas, .ssp-ofertas__box-endereco-unidade').removeClass('d-none');
5794 hideCardSemTurmas(true)
5795 if (isEmed) {
5796 $('.ssp-ofertas-emed__section').removeClass('d-none');
5797 $('#ssp-section-response').removeClass('d-none')
5798 $('.ssp-card-oferta-curso__section-title').addClass('d-none');
5799 $('.prev-mobile, .next-mobile').addClass('d-none');
5800 var nomeUnidade = $('#unidades-ofertas option:selected').text();
5801 let tamScreen = $(window).width();
5802
5803 if (tamScreen < 1024)
5804 $('#titulo-emed').text('Turmas ' + anoTurmaEmed);
5805 else
5806 $('#titulo-emed').text('Turmas ' + anoTurmaEmed + ' - ' + nomeUnidade);
5807
5808 }
5809
5810 const codigoFT = $('[name="codigoFT"]').val();
5811 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
5812
5813 //colocamos dentro do option categoryId@codUnidade
5814 splitted = elem.val().split("@");
5815 var categoryIdUnidade = splitted[0];
5816 var codUnidade = splitted[1];
5817 var ofertasPromise = $.Deferred().resolve().promise();
5818
5819 for (var i = 0; unidades.length > i; i++) {
5820
5821 if (unidades[i].categoryId == categoryIdUnidade) {
5822
5823 var unidade = unidades[i];
5824
5825 //Exibe o endereco da unidade
5826 const urlBuscaUnidade = urlUnidadeInfoDetalhe
5827 .replace('\{companyId\}', themeDisplay.getCompanyId())
5828 .replace('\{codigoUnidade\}', unidade.codigoUnidade);
5829
5830 $.ajax({
5831 url: urlBuscaUnidade,
5832 type: 'get',
5833 dataType: 'json',
5834 success: function (unidadeInfo) {
5835 if (unidadeInfo != null && typeof unidadeInfo !== 'undefined') {
5836
5837 var endereco = concatSTR(unidadeInfo.enderecoUnidade, unidadeInfo.numEnderecoUnidade, ', ');
5838 endereco = concatSTR(endereco, unidadeInfo.complementoEnderecoUnidade, ' - ');
5839 endereco = concatSTR(endereco, unidadeInfo.bairroUnidade, ' - ');
5840
5841 $('.ssp-ofertas__endereco-unidade').text(endereco);
5842 $('.ssp-ofertas__endereco-unidade').attr('href', unidadeInfo.googlemapsUnidade);
5843 }
5844 },
5845 error: function (data) {
5846 $('.ssp-ofertas__endereco-unidade').text('');
5847 $('.ssp-ofertas__endereco-unidade').attr('href', '#a');
5848 console.log('Unidade não encontrada');
5849 }
5850 })
5851
5852 ofertasPromise = getOfertas(codigoFT, dataEfetivaOferta, unidades[i].categoryId);
5853
5854 habilitarRegistroInteresse(!!(unidades && unidades.length));
5855 break;
5856 }
5857 }
5858
5859 return ofertasPromise;
5860 }
5861
5862 function toggleUnidadesOfertasLoading(isLoading) {
5863 var section = $('.ssp-ofertas-emed__section');
5864 var selectUnidades = $('#unidades-ofertas');
5865 var loadingHostClass = 'ssp-ofertas-emed__loading-host';
5866
5867 // O bloqueio do select permanece para todos os cursos.
5868 selectUnidades.prop('disabled', isLoading);
5869
5870 // O loading visual global foi substituido por loading por card no fluxo EMED.
5871 if (!isEmed) {
5872 return;
5873 }
5874
5875 section.removeClass('ssp-ofertas-emed--loading');
5876 section.find('.' + loadingHostClass).remove();
5877 section.attr('aria-busy', 'false');
5878 }
5879
5880 function toggleOfertaInvestimentoLoading(codigoOferta, isLoading) {
5881 if (!isEmed || !codigoOferta) {
5882 return;
5883 }
5884
5885 var cardInvestimento = $('.codigoOferta_' + codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
5886 var loadingHostClass = 'ssp-ofertas-emed__card-info-investimento-loading-host';
5887
5888 if (!cardInvestimento.length) {
5889 return;
5890 }
5891
5892 if (isLoading) {
5893 cardInvestimento.attr('aria-busy', 'true');
5894
5895 if (!cardInvestimento.find('.' + loadingHostClass).length) {
5896 cardInvestimento.append('<div class="' + loadingHostClass + '" role="status" aria-live="polite"></div>');
5897 }
5898
5899 loading(cardInvestimento.find('.' + loadingHostClass));
5900 return;
5901 }
5902
5903 cardInvestimento.find('.' + loadingHostClass).remove();
5904 cardInvestimento.attr('aria-busy', 'false');
5905 }
5906
5907 function hasOfertaInvestimentoButtons(codigoOferta) {
5908 var cardInvestimento = $('.codigoOferta_' + codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
5909
5910 if (!cardInvestimento.length) {
5911 return false;
5912 }
5913
5914 return cardInvestimento.find('[id^="btnComprarEmed_"], [id^="btnContadorComprar_"], [id^="btnBolsa_"], [id^="btnContadorBolsa_"]').length > 0;
5915 }
5916
5917 function waitForOfertaInvestimentoButtons(codigoOferta, maxWaitMs) {
5918 var deferred = $.Deferred();
5919 var waitLimit = typeof maxWaitMs === 'number' ? maxWaitMs : 4000;
5920 var intervalMs = 100;
5921 var elapsedMs = 0;
5922
5923 if (hasOfertaInvestimentoButtons(codigoOferta)) {
5924 deferred.resolve(true);
5925 return deferred.promise();
5926 }
5927
5928 var timer = setInterval(function () {
5929 elapsedMs += intervalMs;
5930
5931 if (hasOfertaInvestimentoButtons(codigoOferta)) {
5932 clearInterval(timer);
5933 deferred.resolve(true);
5934 return;
5935 }
5936
5937 if (elapsedMs >= waitLimit) {
5938 clearInterval(timer);
5939 deferred.resolve(false);
5940 }
5941 }, intervalMs);
5942
5943 return deferred.promise();
5944 }
5945
5946 function retryRenderOfertaInvestimentoButtons(codigoOferta) {
5947 var oferta = ofertasMap.get('' + codigoOferta) || ofertasMap.get(codigoOferta);
5948
5949 if (!oferta) {
5950 return;
5951 }
5952
5953 verificaBotoesEmed(oferta, true);
5954 }
5955
5956 function pegarTextoCartoesAceitos(campo) {
5957 indice = campo.indexOf(' em até ');
5958 inicio = 0;
5959 fim = indice;
5960
5961 return campo.substring(inicio, fim);
5962 }
5963
5964 function pegaNumParcela(campo) {
5965
5966 indice = campo.indexOf('até ');
5967 inicio = indice + 4;
5968 fim = indice + 6;
5969
5970 return campo.substring(inicio, fim);
5971
5972 }
5973
5974 function pegaValorParcela(campo) {
5975
5976 indice = campo.indexOf('R$');
5977 inicio = indice + 2;
5978 valorAmericano = campo.substring(inicio)
5979
5980 return formataValor(valorAmericano);
5981
5982 }
5983
5984 function montaHTMLOferta(oferta, index, codigoUnidade, posLoad) {
5985
5986 var retornoDiasHorarios = processaDiasHorariosOferta(oferta.horariosAllOferta);
5987 diasSemanaHTML = "";
5988
5989 for (var diaDaOferta of retornoDiasHorarios) {
5990 diasSemanaHTML += htmlSlickAreaDiasSemana.replace('\{diasSemana\}', diaDaOferta.dias);
5991 diasSemanaHTML = diasSemanaHTML.replace('\{horasSemana\}', diaDaOferta.horario)
5992 }
5993
5994 var ofertaHTML = "";
5995
5996 if (isEmed) {
5997
5998 ofertaHTML = htmlSlickAreaEmed(oferta);
5999 $('[name="codUnidadeSelecionada"]').val(codigoUnidade);
6000
6001 if (!posLoad) $('.ssp-slick-ofertas-emed').append(ofertaHTML)
6002 else $('.ssp-slick-ofertas-emed').slick('slickAdd', ofertaHTML);
6003 } else {
6004
6005
6006 ofertaHTML = htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade)
6007
6008 if (!posLoad)
6009 $('.oferta-slick-area').append(ofertaHTML);
6010 else
6011 $('.oferta-slick-area').slick('slickAdd', ofertaHTML);
6012
6013 ajustaTextoDiasHorarioOferta(oferta.codigoOferta);
6014
6015 }
6016
6017 if (turmasIniciadas(oferta.dataInicio))
6018 $("#aviso-turma-iniciada-" + index).show();
6019
6020 //remove os botões/itens de compra/bolsa caso seja preciso
6021 $('.oferta-slick-area').find('.d-none-btn').remove();
6022 }
6023
6024
6025 //RECEBE A STRING DE HORARIOS E RETORNA UMA LISTA DE OBJETOS COM OS DIAS E HORARIOS FORMATADOS
6026 //@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"
6027 function processaDiasHorariosOferta(horariosAllOferta) {
6028
6029 var dias = horariosAllOferta.trim().split(',');
6030 let arrayDiasSemana = [{ "Seg": "Segunda" }, { "Ter": "Terça" }, { "Qua": "Quarta" }, { "Qui": "Quinta" }, { "Sex": "Sexta" }, { "Sab": "Sábado" }, { "Dom": "Domingo" }]
6031
6032 var arrayDia = [];
6033 if (dias.length >= 1) {
6034 for (var k = 0; dias.length > k; k++) {
6035 var diasSplit = dias[k].trim().split(' ');
6036 var diasSemana = diasSplit.shift()
6037 var ultimaPos = diasSplit.length - 1;
6038 var horasStr = diasSplit[0] + ' às ' + diasSplit[ultimaPos]
6039 arrayDia.push({ horasStr, diasSemana });
6040 }
6041 }
6042
6043 arrayDia = groupByArray(arrayDia, 'horasStr', 'diasSemana');
6044 arrayDia = orderByArray(arrayDia, arrayDiasSemana);
6045
6046 var ret = diaHorarioOfertaFormatado(arrayDia, arrayDiasSemana);
6047 return ret;
6048 }
6049
6050 //cria um array de objetos Agrupando de acordo ao campo informado como chave.
6051 //@arr = Array multidimensional que tenha os campos key e valueAdd
6052 //@key = campo que será chave nesse array
6053 //@valueAdd = campo que será agrupado caso tenha a mesma informação passada no campo key
6054 const groupByArray = (arr, key, valueAdd) => {
6055 const initialValue = [];
6056 const retornoValue = [];
6057 arr.forEach((acc, cval) => {
6058 const myAttribute = cval[key];
6059 acc[key] in retornoValue ? retornoValue[acc[key]].push(acc[valueAdd]) : retornoValue[acc[key]] = [acc[valueAdd]];
6060 return acc;
6061 }, initialValue);
6062 return retornoValue;
6063 };
6064
6065
6066 //Cria um array de objetos a partir do primeiro array inserido e ordenados de acordo a ordem do segundo array informado.
6067 //@arrayOrdena = Array de objetos que tenha os campos que precisa ser ordenados
6068 //@ordem = array com a sequencia que queira ordenar - ex: seg, ter, qua, qua
6069 const orderByArray = (arrayOrdena, ordem) => {
6070
6071 let diasSem = [];
6072 const arrayOrdenado = [];
6073 let controle;
6074
6075 //percorre cada campo existente no ordem e busca o mesmo no arrayOrdena, encontrando insere no arrayOrdenado
6076 for (let campo of ordem) {
6077 Object.entries(arrayOrdena).forEach(([key, value]) => {
6078 for (let diaOferta of value) {
6079 if (diaOferta === Object.keys(campo)[0]) {
6080 arrayOrdenado[key] = arrayOrdena[key];
6081 }
6082 }
6083 })
6084 }
6085 return arrayOrdenado;
6086 };
6087
6088 //retorna o valor de um objeto dentro de um array
6089 //@objetoBusca = array de objetos que sera buscado o valor
6090 //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor
6091 function findValueInObject(objetoBusca, keyBusca) {
6092 var retorno = "";
6093 Object.entries(objetoBusca).forEach(([horario, dias]) => {
6094 Object.entries(dias).forEach(([key, val]) => {
6095 if (key.trim() == keyBusca.trim()) {
6096 retorno = val;
6097 }
6098 });
6099 });
6100 return retorno;
6101 }
6102
6103 //Recebe um objeto com valores dos dias da semana e define se sao dias seguidos ou alternados.
6104 //@arrayComDiasDaSemana = array com os dias da semana a serem validados - exemplo ['Qua','Qui','Sex']
6105 //@keyBusca = nome do campo a ser buscada no objeto para pegar o seu valor
6106 function diasSequenciaisOuAlternados(arrayComDiasDaSemana, arrayDiasDaSemana) {
6107
6108 let arrayValidador = [];
6109
6110 //cria um array com o index dos dias das semanas encontrados [0 = seg, 1 = ter ... 6 = dom]
6111 for (let diaOferta of arrayComDiasDaSemana) {
6112 for (let i = 0; i < arrayDiasDaSemana.length; i++) {
6113 if (diaOferta === Object.keys(arrayDiasDaSemana[i])[0]) {
6114 arrayValidador[i] = true;
6115 }
6116 }
6117 }
6118
6119 let keyCompair = 99;
6120 var sequencial = true;
6121
6122 //verifica quais posições foram criadas no array, e se os valores delas estão em sequencia.
6123 for (let keyValidator of Object.keys(arrayValidador)) {
6124 keyValidator = parseInt(keyValidator);
6125 if (keyCompair !== 99) {
6126 if (keyValidator === keyCompair) {
6127 sequencial = true;
6128 } else {
6129 sequencial = false;
6130 break;
6131 }
6132 }
6133 keyCompair = keyValidator + 1;
6134 }
6135 return sequencial;
6136 }
6137
6138
6139 //Exibe as informações de dia e horario de oferta de acordo a sua estrutura
6140 //Caso os dias sejam sequenciais exibe a primeiro e ultimo dia da semana ligados com a letra 'a' Ex: Segunda a Quinta
6141 //Caso os dias Nao sejam sequenciais exibem todos os dias separados por virgula Ex: Segunda, terça, sexta e domingo
6142 //@arrayAgrupadoEOrdenado = array de objetos que sera exibido
6143 //@arrayDiasDaSemana = array com os dias da semana, sendo chave a sigla da semana (ex: Qua) e o valor o nome esperado (ex: Quarta)
6144 function diaHorarioOfertaFormatado(arrayAgrupadoEOrdenado, arrayDiasDaSemana) {
6145
6146 var stringAux = "";
6147 var listRetorno = [];
6148
6149 Object.entries(arrayAgrupadoEOrdenado).forEach(([key, value]) => {
6150
6151 var sequencial = diasSequenciaisOuAlternados(value, arrayDiasDaSemana);
6152 var stringAux = "";
6153 var diaOferta = {};
6154
6155 if (sequencial) {
6156 switch (value.length) {
6157 case 1:
6158 stringAux = stringAux + findValueInObject(arrayDiasDaSemana, value[0]) + ": ";
6159 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6160 diaOferta.horario = key;
6161 break;
6162 case 2:
6163 stringAux = stringAux + findValueInObject(arrayDiasDaSemana, value[0]) + " e " + findValueInObject(arrayDiasDaSemana, value[value.length - 1]) + ": ";
6164 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6165 diaOferta.horario = key;
6166 break;
6167 default:
6168 stringAux = stringAux + findValueInObject(arrayDiasDaSemana, value[0]) + " a " + findValueInObject(arrayDiasDaSemana, value[value.length - 1]) + ": ";
6169
6170 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6171 diaOferta.horario = key;
6172 break;
6173 }
6174 } else {
6175 switch (value.length) {
6176 case 2:
6177 stringAux = stringAux + findValueInObject(arrayDiasDaSemana, value[0]) + " e " + findValueInObject(arrayDiasDaSemana, value[value.length - 1]) + ": ";
6178 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6179 diaOferta.horario = key;
6180 break;
6181 default:
6182 var ct = 0;
6183 var stringDias = "";
6184 for (let v of value) {
6185 ct++;
6186 ct == value.length ? stringDias = stringDias.substring(0, stringDias.length - 2) + " e " + findValueInObject(arrayDiasDaSemana, v) : stringDias += findValueInObject(arrayDiasDaSemana, v) + ", ";
6187 }
6188 stringAux = stringAux + stringDias + ": ";
6189 diaOferta.dias = stringAux.charAt(0).toUpperCase() + stringAux.slice(1).toLowerCase(); // somente a primeira maiúscula
6190 diaOferta.horario = key;
6191 break;
6192 }
6193 }
6194
6195 listRetorno.push(diaOferta);
6196 })
6197 return listRetorno;
6198 };
6199
6200
6201 //Distribui dia e horario com quebra de linha entre eles ou nao dependendo da resolução de tela e tamanho da string
6202 function ajustaTextoDiasHorarioOferta(codOferta) {
6203
6204 var classOferta = ".codigoOferta_" + codOferta;
6205 let oferta = $(classOferta);
6206
6207 let ofertaDiasSemana = $(oferta).find('*[data-dia-hora="dias-semana"]');
6208
6209 let widthDevice = window.screen.width;
6210 let tamLimDesktop = 185;
6211
6212 if (widthDevice <= 1024) {
6213 tamLimDesktop = 180;
6214 }
6215
6216 ofertaDiasSemana.each(function (index) {
6217
6218
6219 let widthDiaSemana = $(this).width();
6220
6221 let contentDiaHora = $(this).parent().parent().parent();
6222
6223 if (!(widthDiaSemana <= tamLimDesktop)) {
6224 $(this).css("display", "block");
6225 }
6226
6227 if (ofertaDiasSemana.length == parseInt(index + 1)) {
6228 contentDiaHora.css("opacity", "1");
6229 }
6230
6231 })
6232 }
6233
6234 function getObjBtnComprar(oferta) {
6235 let obj = {};
6236 obj['dataEspacoEx'] = (oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) ? 'true' : 'false';
6237 if ($('#manutencao-compra').val()) {
6238 obj['classeBotao'] = 'disabled manutencao';
6239 obj['textoBotao'] = $('#manutencao-compra').val();
6240 }
6241 else {
6242 obj['classeBotao'] = oferta.botaoCompraOferta == 'true' ? (oferta.vagasParaCompraOferta == 'true' ? '' : 'disabled') : 'd-none-btn';
6243 obj['textoBotao'] = oferta.vagasParaCompraOferta == 'true' ? 'COMPRAR' : 'Vagas esgotadas para compra';
6244 }
6245 return obj;
6246 }
6247
6248 function getObjFormaPagto(oferta, index, tipoCurso, codigoUnidade) {
6249
6250 var formaPagtoObj = {};
6251
6252 var regNumMaxParce = new RegExp('\{numeroMaxParcelasOferta\}', 'g');
6253 var regPrecMaxParce = new RegExp('\{precoVendaMaxParcelaOferta\}', 'g')
6254
6255 formaPagtoObj['regIndex'] = index;
6256 formaPagtoObj['precoCheioOferta'] = formataValor(oferta.precoCheioOferta);
6257 formaPagtoObj['textoCartoesAceitos'] = oferta.textoCartoesAceitos;
6258
6259 formaPagtoObj['numParcelaCartoes'] = oferta.numParcelaCartoes;
6260 formaPagtoObj['precoParcelaCartoes'] = oferta.precoParcelaCartoes;
6261 formaPagtoObj['numParcelaBoleto'] = oferta.numParcelaBoleto;
6262 formaPagtoObj['precoParcelaBoleto'] = oferta.precoParcelaBoleto;
6263 formaPagtoObj['precoVendaOferta'] = formataValor(oferta.precoVendaOferta);
6264
6265 formaPagtoObj['economia'] = formataValor(parseFloat(oferta.precoCheioOferta).toFixed(2) - parseFloat(oferta.precoVendaOferta).toFixed(2));
6266 formaPagtoObj['espacoExterno'] = oferta.espacoExterno == 'true' ? 'true' : 'false';
6267 formaPagtoObj['dataUnidade'] = codigoUnidade;
6268 formaPagtoObj['dataEvento'] = oferta.codigoOferta;
6269 formaPagtoObj['destinoCompra '] = oferta.destinoCompra;
6270
6271 //EMED nao restringe o botao
6272 if (isEmed) {
6273 let manutencao = $('#manutencao-compra').val();
6274 formaPagtoObj['textoBotaoComprar'] = manutencao || 'COMPRAR';
6275 formaPagtoObj['classeBotaoComprar'] = manutencao ? 'disabled manutencao' : '';
6276 } else {
6277 let btnComprar = getObjBtnComprar(oferta);
6278 formaPagtoObj['textoBotaoComprar'] = btnComprar.textoBotao;
6279 formaPagtoObj['classeBotaoComprar'] = btnComprar.classeBotao;
6280 }
6281
6282 formaPagtoObj['regNumMaxParce'] = oferta.numeroMaxParcelasOferta;
6283 formaPagtoObj['regPrecMaxParce'] = formataValor(oferta.precoVendaMaxParcelaOferta);
6284
6285 //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
6286 formaPagtoObj['precoAVistaPadraoExt'] = formataValor(oferta.precoVendaOferta);
6287 var precoContribuinteExtensao = (parseFloat(oferta.precoVendaOferta).toFixed(2) * 0.80).toFixed(2);
6288 formaPagtoObj['precoContrExt'] = formataValor(precoContribuinteExtensao);
6289 formaPagtoObj['economiaExt'] = formataValor(parseFloat(oferta.precoVendaOferta).toFixed(2) - precoContribuinteExtensao);
6290 formaPagtoObj['precoParcelaBoletoExt'] = formataValor((precoContribuinteExtensao / oferta.numParcelaBoleto).toFixed(2));
6291 formaPagtoObj['precoParcelaCartoesExt'] = formataValor((precoContribuinteExtensao / oferta.numParcelaCartoes).toFixed(2));
6292 formaPagtoObj['precoAVistaContrExt'] = formataValor((precoContribuinteExtensao * 0.92).toFixed(2));
6293
6294 return formaPagtoObj;
6295 }
6296
6297 function calculaPrecoAvista(precoVendaOferta) {
6298 return (parseFloat(precoVendaOferta).toFixed(2) * 0.92).toFixed(2);
6299 }
6300
6301 function getParcelasEntradaCartao(dataInicioCurso) {
6302
6303 const dCurso = new Date(dataInicioCurso.split("/").reverse().join("-"));
6304 const dHoje = new Date();
6305
6306 let diffAnos = dCurso.getUTCFullYear() - dHoje.getUTCFullYear();
6307 let diffMeses = dCurso.getUTCMonth() - dHoje.getUTCMonth();
6308 diffMeses = diffAnos * 12 + diffMeses;
6309
6310 return (diffMeses > 4) ? 4 : ((diffMeses <= 0) ? 1 : diffMeses);
6311
6312 }
6313
6314 function createModalFormaPagto(formaPagtoObj, oferta, index) {
6315 let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio)
6316 temDesconto = temDesconto && !possuiMensalidadeCampanha(oferta)
6317
6318 result = `
6319 <div id="modalFormaPagto" class="ssp-modal">
6320 <div class="ssp-card-modal-forma-pagamento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `">
6321 <div class="ssp-card-modal-forma-pagamento__header" style="border: 0; margin-bottom: 0 !important;">
6322 <h6 class="ssp-card-modal-forma-pagamento__header-title font-weight-bold" style="color:#454F63">Descontos e ` + (temDesconto ? 'pagamento' : 'parcelamento') + `</h6>
6323 <i class="ssp-card-modal-forma-pagamento__btn-close ssp-card-modal-forma-pagamento__btn-close_` + index + `"></i>
6324 </div>
6325 `
6326 + (temDesconto ? '' : '<div class="ssp-card-oferta-curso__line-divider mt-0 mb-5 mb-md-8"></div>') +
6327 `
6328 <div class="ssp-card-modal-forma-pagamento__body">
6329 `
6330 if (temDesconto) {
6331 result = result + `
6332 <div>
6333 <p class="my-0"><strong>Valor com </strong>
6334 <span class="ssp-card-oferta-curso__valor-desconto mt-0 mb-0">50% de desconto*</span>
6335 </p>
6336 </div>
6337 <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>`
6338
6339 if ($('[name="tipoCurso"]').val() == 'extensao') {
6340 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>`
6341 } else {
6342 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>`
6343 }
6344
6345
6346 result = result + `
6347 <div class="ssp-card-oferta-curso__line-divider mb-5 mb-md-2 mt-2"></div>
6348 <p class="my-0"><strong>Valor:</strong></p>
6349 <h6 class="ssp-card-oferta-curso__item-valor-investimento ` + (temDesconto ? 'ssp-desconto-2022' : '') + `"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
6350 <p class="mt-0 mb-0"><strong>Valor Total: </strong> ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</p>
6351 <div class="ssp-card-oferta-curso__line-divider mt-4 mb-md-3 mb-4"></div>
6352 <p class="my-0"><strong>Parcele e garanta mais tempo para pagar:</strong></p>
6353 `
6354 } else {
6355 if (formaPagtoObj.precoCheioOferta == formaPagtoObj.precoVendaOferta) {
6356 result = result + `
6357 <p class="ssp-card-modal-forma-pagamento__valor-desconto mt-n3">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p>
6358 <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
6359 <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>
6360 </div>
6361 `
6362 } else {
6363 const textoDesc = temDesconto ? 'Valor com 30% de desconto:' : 'Valor com desconto:'
6364
6365 result = result + `
6366 <small class="ssp-card-oferta-curso__title-item font-weight-bold" style="margin:0;font-size:16px;">` + textoDesc + `</small>
6367 <p class="ssp-card-modal-forma-pagamento__valor-cheio">R$ <span class="precoCheioOferta">` + formaPagtoObj.precoCheioOferta + `</span></p>
6368 <p class="ssp-card-modal-forma-pagamento__valor-desconto">R$ <span class="precoVendaOferta">` + formaPagtoObj.precoVendaOferta + `</span></p>
6369 <p class="ssp-card-modal-forma-pagamento__total-economia">Você economiza <span>R$ <span class="economia">` + formaPagtoObj.economia + `</span></span></p>
6370 <p class="txt-desconto-oito">Pague à vista e <span style="color:#FC7834;font-weight:bold"> ganhe mais 8% de desconto.</span></p>
6371 <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>
6372 </div>
6373 `
6374 }
6375 }
6376
6377 let textoParcelaCartoes, textoParcelaBoleto, textoParcelaCartaoComBoleto, textoPix, textoParcelaPixComBoleto
6378 if (temDesconto) {
6379 const precoParcelaCartoes = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaCartoes) / 2, 2))
6380 const precoParcelaBoleto = formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(formaPagtoObj.precoParcelaBoleto) / 2, 2))
6381
6382 if (formaPagtoObj.numParcelaCartoes)
6383 textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x</span> sem juros</p>`
6384
6385 if (formaPagtoObj.numParcelaBoleto) {
6386 textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x</span> sem juros</p>`
6387 textoPix = `<p>Valor total à vista com desconto</p>`
6388 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>`
6389 }
6390
6391
6392 } else {
6393 if (formaPagtoObj.numParcelaCartoes)
6394 textoParcelaCartoes = `<p>Em até <span><span class="numParcelaCartoes">` + formaPagtoObj.numParcelaCartoes + `</span>x de R$ <span class="precoParcelaCartoes">` + formaPagtoObj.precoParcelaCartoes + `</span></span> sem juros</p>`
6395
6396 if (formaPagtoObj.numParcelaBoleto) {
6397 textoParcelaBoleto = `<p>Em até <span><span class="numParcelaBoleto">` + formaPagtoObj.numParcelaBoleto + `</span>x de R$ <span class="precoParcelaBoleto">` + formaPagtoObj.precoParcelaBoleto + `</span></span> sem juros</p>`
6398 textoPix = `<p>Valor total à vista com desconto</p>`
6399 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>`
6400 }
6401 }
6402
6403 if (formaPagtoObj.numParcelaBoleto) {
6404 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>`;
6405 }
6406
6407 let cardPix = (textoPix) => `
6408 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6409 <i class="fa-brands fa-pix" style="margin-right:15px;font-size:18px"></i>
6410 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6411 <p><strong>Pix</strong></p>`
6412 + textoPix +
6413 `</div>
6414 </div>`;
6415
6416 let cardPixBoleto = (textoParcelaPixComBoleto) => `
6417 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
6418 <div style="display:flex;gap:5px;margin-right:6px">
6419 <i class="fa-brands fa-pix" style="font-size:14px"></i>
6420 <i class="fa-sharp-duotone fa-light fa-barcode" style="font-size:14px"></i>
6421 </div>
6422 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6423 <p><strong>Pix + boleto bancário</strong></p>`
6424 + textoParcelaPixComBoleto +
6425 `</div>
6426 </div>
6427 `;
6428
6429 if (temDesconto) {
6430 result = result + `
6431 <div class="ssp-card-modal-forma-pagamento__tipos">`
6432
6433 if (textoPix && $('[name="tipoCurso"]').val() == 'livre')
6434 result = result + cardPix(textoPix)
6435
6436 if (textoParcelaBoleto)
6437 result = result + `
6438 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6439 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
6440 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6441 <p><strong>Boleto Bancário</strong></p>`
6442 + textoParcelaBoleto +
6443 `</div>
6444 </div>`
6445
6446 if (textoParcelaCartoes)
6447 result = result + `
6448 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
6449 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
6450 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6451 <p><strong>Cartões</strong></p>
6452 <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>`
6453 + textoParcelaCartoes +
6454 `</div>
6455 </div>
6456 </div>
6457 `
6458
6459 if (textoParcelaPixComBoleto && $('[name="tipoCurso"]').val() == 'livre')
6460 result = result + cardPixBoleto(textoParcelaPixComBoleto)
6461
6462
6463 if (textoParcelaCartaoComBoleto)
6464 result = result + `
6465 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6466 <div style="display:flex;gap:5px;margin-right:6px">
6467 <i class="fa-regular fa-credit-card" style="font-size:14px"></i>
6468 <i class="fa-sharp-duotone fa-light fa-barcode" style="font-size:14px"></i>
6469 </div>
6470 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6471 <p><strong>Cartão + boleto bancário</strong></p>`
6472 + textoParcelaCartaoComBoleto +
6473 `</div>
6474 </div>`
6475
6476 if (textoPix && $('[name="tipoCurso"]').val() != 'livre')
6477 result = result + cardPix(textoPix)
6478
6479 if (textoParcelaPixComBoleto && $('[name="tipoCurso"]').val() != 'livre')
6480 result = result + cardPixBoleto(textoParcelaPixComBoleto)
6481
6482 } else {
6483 result = result + `
6484 <div class="ssp-card-modal-forma-pagamento__tipos">`
6485
6486 if (textoPix)
6487 result = result + cardPix(textoPix)
6488
6489 if (textoParcelaBoleto)
6490 result = result + `
6491 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start mt-4">
6492 <i class="ssp-card-modal-forma-pagamento__icon-boleto"></i>
6493 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6494 <p><strong>Boleto Bancário</strong></p>`
6495 + textoParcelaBoleto +
6496 `</div>
6497 </div>
6498 </div>
6499 `
6500
6501 if (textoParcelaCartoes)
6502 result = result + `
6503 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6504 <i class="ssp-card-modal-forma-pagamento__icon-credit-card"></i>
6505 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6506 <p><strong>Cartões</strong></p>
6507 <p>(<span class="textoCartoesAceitos">` + formaPagtoObj.textoCartoesAceitos + `</span>)</p>`
6508 + textoParcelaCartoes +
6509 `</div>
6510 </div>`
6511
6512 if (textoParcelaPixComBoleto)
6513 result = result + cardPixBoleto(textoParcelaPixComBoleto)
6514
6515 if (textoParcelaCartaoComBoleto)
6516 result = result + `
6517 <div class="ssp-card-modal-forma-pagamento__tipos-content align-items-start">
6518 <i class="ssp-card-modal-forma-pagamento__icon-boleto-e-cartao fa-solid fa-money-check-dollar"></i>
6519 <div class="ssp-card-modal-forma-pagamento__info-cartao">
6520 <p><strong>Cartão + boleto bancário</strong></p>`
6521 + textoParcelaCartaoComBoleto +
6522 `</div>
6523 </div>`
6524 }
6525
6526
6527
6528 if (temDesconto) {
6529 result = result + `
6530 <p class="txt-desconto-oito my-0">Pague à vista e ganhe <span style="color:#5ACC75;font-weight:bold">8% de desconto.</span></p>
6531 `
6532 }
6533
6534 result = result + `
6535 <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>`
6536
6537 if (temDesconto) {
6538 result = result + `
6539 <a class="btn btn-primary modal-extensao-btn-conheca mt-3" href="/descontos-e-parcelamentos" target="_blank">Conheça os descontos</a>
6540 `
6541 }
6542
6543 result = result + `
6544 </div>
6545 </div>
6546 `
6547
6548 return result;
6549 }
6550
6551 function montaHTMLModalFormaPgto(oferta, index, codigoUnidade) {
6552
6553 var tipoCurso = $('[name="tipoCurso"]').val();
6554
6555 var formaPagtoObj = getObjFormaPagto(oferta, index, tipoCurso, codigoUnidade);
6556
6557 var modalFormaPagto
6558 if (tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)) {
6559 modalFormaPagto = $('#modalFormaPagtoExt').clone();
6560
6561 $.each(formaPagtoObj, function (k, v) {
6562 if (modalFormaPagto.find('.' + k).length > 0)
6563 modalFormaPagto.find('.' + k).text(v);
6564 })
6565 } else if (isEmed) {
6566 modalFormaPagto = $('#modalPagtoEmed').clone();
6567
6568 $.each(formaPagtoObj, function (k, v) {
6569 if (modalFormaPagto.find('.' + k).length > 0)
6570 modalFormaPagto.find('.' + k).text(v);
6571 })
6572 } else
6573 modalFormaPagto = $(createModalFormaPagto(formaPagtoObj, oferta, index));
6574
6575 modalFormaPagto.removeAttr('id');
6576 modalFormaPagto.removeClass('d-none');
6577 modalFormaPagto.attr('id', 'myModal_' + index);
6578
6579 if (tipoCurso == 'extensao' && !possuiCriteriosDesconto2022(oferta.dataInicio)) {
6580
6581 var botoaoCompraOk = modalFormaPagto.find('.modal-extensao-aluno__btn.ok');
6582 botoaoCompraOk.attr('id', 'btnComprarConhecaDescontoOk_' + index);
6583
6584 botoaoCompraOk.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6585 botoaoCompraOk.attr('data-unidade', formaPagtoObj.dataUnidade);
6586 botoaoCompraOk.attr('data-evento', formaPagtoObj.dataEvento);
6587 botoaoCompraOk.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6588 botoaoCompraOk.attr('data-index', index);
6589 botoaoCompraOk.addClass(formaPagtoObj.classeBotaoComprar);
6590
6591 var botoaoCompraNot = modalFormaPagto.find('.modal-extensao-aluno__btn.not');
6592 botoaoCompraNot.attr('id', 'btnComprarConhecaDescontoNot_' + index);
6593
6594 botoaoCompraNot.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6595 botoaoCompraNot.attr('data-unidade', formaPagtoObj.dataUnidade);
6596 botoaoCompraNot.attr('data-evento', formaPagtoObj.dataEvento);
6597 botoaoCompraNot.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6598 botoaoCompraNot.attr('data-index', index);
6599 botoaoCompraNot.addClass(formaPagtoObj.classeBotaoComprar);
6600
6601 modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.sim').attr('id', 'btn-aluno-sim_' + index);
6602 modalFormaPagto.find('.modal-extensao-btn-aluno-sim-nao.nao').attr('id', 'btn-aluno-nao_' + index);
6603
6604 modalFormaPagto.find('.modal-extensao-voltar-icon').addClass('ssp-card-modal-forma-pagamento__btn-close_' + index);
6605
6606 modalFormaPagto.find('.modal-extensao-btn-conheca').attr('id', 'btnModalExtConheca_' + index);
6607
6608 modalFormaPagto.find('.modal-pergunta-aluno-ext').attr('id', 'modalExtAluno_' + index);
6609
6610 modalFormaPagto.find('.msg-alunoSim').attr('id', 'msg-alunoSim_' + index);
6611 modalFormaPagto.find('.msg-alunoNao').attr('id', 'msg-alunoNao_' + index);
6612
6613 var botaoCompra = modalFormaPagto.find('.modal-extensao__btn.mt-3');
6614
6615 } else {
6616
6617 modalFormaPagto.find('.mt-4').attr('id', 'content_boleto_' + index);
6618 modalFormaPagto.find('.ssp-card-modal-forma-pagamento__btn-close').addClass('ssp-card-modal-forma-pagamento__btn-close_' + index);
6619
6620 var botaoCompra = modalFormaPagto.find('.btn.w-100');
6621
6622 }
6623
6624 if (isEmed) {
6625
6626 var elementoPai = modalFormaPagto.find('.ssp-card-modal-forma-pagamento');
6627
6628 //Cria botao inscreva-se ajustado ao modal
6629 var dadosAbertura = calculaTempoAberturaBolsa(oferta.dataAberturaMatricula, oferta.horaAberturaBolsaOferta);
6630 if ($('#manutencao-compra').val()) {
6631 textoBotao = $('#manutencao-compra').val();
6632 classeBotao = 'disabled manutencao';
6633 } else {
6634 if (oferta.permiteListaEspera == statusEmed.ESPERA && dadosAbertura.bolsaJaAberta) {
6635 textoBotao = 'Lista de espera';
6636 classeBotao = 'btn-emed-lista-espera';
6637 } else {
6638 if (dadosAbertura.bolsaJaAberta || !oferta.dataAberturaMatricula || oferta.dataAberturaMatricula == '') {
6639 if (oferta.etapa == '0020' || oferta.etapa == '0030') {
6640 textoBotao = 'Lista de espera';
6641 classeBotao = 'btn-emed-lista-espera';
6642 } else {
6643 textoBotao = 'Fazer matrícula';
6644 classeBotao = '';
6645 }
6646 } else {
6647 textoBotao = 'Matrícula em ' + formataDataAberturaBolsa(oferta.dataAberturaMatricula, oferta.horaAberturaBolsaOferta);
6648 classeBotao = 'disabled';
6649 }
6650 }
6651 }
6652 criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, 'btnComprarEmedModal_' + index, elementoPai, index);
6653 preencheDadosEmedModal(oferta, modalFormaPagto);
6654
6655 } else {
6656 botaoCompra.attr('id', "btnComprarFormaPgto_" + index);
6657 botaoCompra.attr('data-espaco-ex', formaPagtoObj.espacoExterno);
6658 botaoCompra.attr('data-unidade', formaPagtoObj.dataUnidade);
6659 botaoCompra.attr('data-evento', formaPagtoObj.dataEvento);
6660 botaoCompra.attr('data-destino-compra', formaPagtoObj.destinoCompra);
6661 botaoCompra.attr('data-index', index);
6662 botaoCompra.addClass(formaPagtoObj.classeBotaoComprar);
6663 }
6664
6665 $('.oferta-slick-area_modal').append(modalFormaPagto);
6666 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6667
6668 //Evita o erro de exibição de Nan
6669 if (oferta.numParcelaBoleto.length == 0) {
6670 $('#content_boleto_' + index).remove();
6671 }
6672 }
6673
6674 function verificaTerminoDia(dataInicio, dataFim) {
6675 if (dataInicio === dataFim) {
6676 return true;
6677 }
6678 return false;
6679 }
6680
6681
6682 function montaHTMLModalLocalRealizacao(oferta, index) {
6683
6684 // Lógica para decidir o texto (Singular ou Plural)
6685 // Assume que oferta.dataInicio e oferta.dataFim existem
6686 var textoTitulo = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
6687 "ONDE A AULA IRÁ ACONTECER?" : // True: Mesmo dia (Singular)
6688 "ONDE AS AULAS VÃO ACONTECER?"; // False: Dias diferentes (Plural)
6689
6690 var tituloLocalRealizacao = (localLivreOnline(oferta.localEspacoExterno) && !isHibrido) ?
6691 '<i class="fas fa-wifi icon-wifi-title__modal"></i> <h6 class="title-idioma-online__modal"> Aulas Online - ao vivo</h6>'
6692 : '<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>';
6693
6694 if (textoFormatoHibrido.length > 0 && oferta.espacoExterno == "true")
6695 textoFormatoHibrido += '</br>';
6696
6697 var localRealizacaoHTMLModal = htmlModalLocalRealizacao
6698 .replace('\{nomeUnidade\}', $('#unidades-ofertas option:selected').text())
6699 .replace('\{textoFormatoHibrido\}', textoFormatoHibrido)
6700 .replace('\{localEspacoExterno\}', oferta.espacoExterno == "true" ? oferta.localEspacoExterno : "")
6701 .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none")
6702 .replace('\{classeEnderecoRealizacao\}', oferta.ruaEspacoExterno != "" ? "" : "d-none")
6703 .replace('\{ruaEspacoExterno\}', oferta.ruaEspacoExterno)
6704 .replace('\{numeroEspacoExterno\}', oferta.numeroEspacoExterno)
6705 .replace('\{complementoEspacoExterno\}', oferta.complementoEspacoExterno)
6706 .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6707 .replace('\{bairroEspacoExterno\}', oferta.bairroEspacoExterno)
6708 .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6709 .replace('\{cidadeEspacoExterno\}', oferta.cidadeEspacoExterno)
6710 .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6711 .replace('\{cepEspacoExterno\}', oferta.cepEspacoExterno)
6712 .replace(regIndex, index)
6713 .replace('\{tituloLocalRealizacao\}', tituloLocalRealizacao)
6714 .replace('\{classeEntendi\}', (localLivreOnline(oferta.localEspacoExterno)) ? "btn-modal-entendi__idioma-online" : "");
6715
6716 $('.oferta-slick-area_modal').append(localRealizacaoHTMLModal);
6717 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6718
6719 if (oferta.ruaEspacoExterno == "")
6720 $('.localEspacoExternoTexto_' + index).removeClass('ssp-modal-local-realizacao__subtitle');
6721 }
6722
6723 function montaHTMLModalAntesCompra(oferta, index, codigoUnidade) {
6724
6725 if (isEmed) {
6726
6727 $('#modalAntesCompraEmed_' + oferta.indice).remove();
6728 const antesCompraHTMLModal = $('#modalAntesCompraEmed').clone();
6729 antesCompraHTMLModal.attr('id', 'modalAntesCompraEmed_' + oferta.indice);
6730 antesCompraHTMLModal.find('.ssp-card-modal-antes-compra__btn-close').addClass('ssp-card-modal-antes-compra__btn-close_' + oferta.indice);
6731 antesCompraHTMLModal.find('.ssp-card-modal-selecionar-outro__btn-close').addClass('ssp-card-modal-selecionar-outro__btn-close_' + oferta.indice);
6732 antesCompraHTMLModal.insertAfter('#modalAntesCompraEmed');
6733
6734 if (oferta.etapa == '0010') {
6735 if (oferta.permiteListaEspera == statusEmed.ESPERA) {
6736 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010Espera').removeClass('d-none');
6737 antesCompraHTMLModal.find('#btnCompraLocalEmed').text('Ir para lista de espera');
6738 } else {
6739 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0010').removeClass('d-none');
6740 }
6741 } else {
6742 antesCompraHTMLModal.find('.textoEmedModalAntesCompra0020e0030').removeClass('d-none');
6743 }
6744
6745 const btnCompra = antesCompraHTMLModal.find('#btnCompraLocalEmed');
6746 btnCompra.attr('id', 'btnCompraLocalEmed_' + oferta.indice);
6747 btnCompra.attr('offercode', oferta.codigoOferta);
6748
6749 btnCompra.on('click', function (ev) {
6750 ev.preventDefault();
6751 execCompraEmed(oferta);
6752 });
6753
6754 } else {
6755
6756 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val());
6757
6758
6759 var antesCompraHTMLModal = htmlModalAntesCompra
6760 .replace('\{nomeUnidade\}', $('#unidades-ofertas option:selected').text())
6761 .replace('\{textoFormatoHibrido\}', textoFormatoHibrido)
6762 .replace('\{localEspacoExterno\}', oferta.espacoExterno == "true" ? oferta.localEspacoExterno : "")
6763 .replace('\{classeTextoInfoLocalRealizacao\}', (oferta.ruaEspacoExterno != "" && !isHibrido) ? "" : "d-none")
6764 .replace('\{classeEnderecoRealizacao\}', oferta.ruaEspacoExterno != "" ? "" : "d-none")
6765 .replace('\{ruaEspacoExterno\}', oferta.ruaEspacoExterno)
6766 .replace('\{numeroEspacoExterno\}', oferta.numeroEspacoExterno)
6767 .replace('\{complementoEspacoExterno\}', oferta.complementoEspacoExterno)
6768 .replace('\{classeBairroRealizacao\}', oferta.bairroEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6769 .replace('\{bairroEspacoExterno\}', oferta.bairroEspacoExterno)
6770 .replace('\{classeCidadeRealizacao\}', oferta.cidadeEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6771 .replace('\{cidadeEspacoExterno\}', oferta.cidadeEspacoExterno)
6772 .replace('\{classeCepRealizacao\}', oferta.cepEspacoExterno != "" && oferta.ruaEspacoExterno != "" ? "" : "d-none")
6773 .replace('\{cepEspacoExterno\}', oferta.cepEspacoExterno)
6774 .replace('\{componentBuyConfirmation\}', componentBuyConfirmation(codigoUnidade, oferta, dataEfetivaFormat))
6775 .replace('\{linkBtnBolsa\}', linkBolsa(oferta))
6776 .replace(regIndex, index);
6777
6778 $('.oferta-slick-area_modal').append(antesCompraHTMLModal);
6779 $('.oferta-slick-area_modal').find('.d-none-btn').remove();
6780 }
6781 }
6782
6783 async function populaOfertas(ofertas) {
6784
6785 //Zera variável que controla existência de ofertas com bolsa
6786 ofertasComBolsa = false;
6787
6788 objsTela.ofertas = ofertas;
6789
6790 if (ofertas && ofertas.length)
6791 $('#ssp-h3-turmas').show()
6792 else
6793 $('#ssp-h3-turmas').hide()
6794
6795 if (ofertas && ofertas.length > 1) {
6796 //remove dupl
6797 const ofertasDistintas = [];
6798 ofertas.forEach(oferta => {
6799 if (ofertasDistintas.filter(dist => dist.codigoOferta == oferta.codigoOferta).length == 0) {
6800 ofertasDistintas.push(oferta);
6801 }
6802 });
6803 ofertas = ofertasDistintas;
6804 }
6805
6806 if (isEmed) {
6807
6808 $('.btn-filtro[value="0"]').attr('disabled', '');
6809 $('.ssp-slick-ofertas-emed').empty();
6810 // executa a class do slick slider
6811 $('.ssp-slick-ofertas-emed').removeClass('slick-initialized slick-slider slick-dotted');
6812 ofertas = filtraOfertasEtapa(getEtapaSelecionadaEmed(), ofertas);
6813
6814 }
6815
6816 if (ofertas.length == 0) {
6817
6818 if ($('#unidades-ofertas').val() || $('#chkInscricao').prop('checked') || $('#chkBolsa').prop('checked'))
6819 hideCardSemTurmas(false)
6820
6821 $('.oferta-slick-area').empty();
6822 $('.prev-mobile, .next-mobile').addClass('d-none');
6823
6824 //Mostrar section registro interesse quando nao tiver oferta
6825 habilitarRegistroInteresse(true);
6826
6827 controlaPaginaBolsa()
6828 if (isEmed) $('.btn-filtro[value="0"]').removeAttr('disabled');
6829 return;
6830 }
6831 hideCardSemTurmas(true)
6832 if (!isEmed) $('.prev-mobile, .next-mobile').removeClass('d-none');
6833 habilitarRegistroInteresse(false);
6834
6835 $('.oferta-slick-area').empty();
6836 $('.oferta-slick-area_modal').empty();
6837 ofertas = ofertas.sort(function (a, b) {
6838 return ordenar(a, b, 'ordenar');
6839 });
6840 // executa a class do slick slider
6841 $('.oferta-slick-area').removeClass('slick-initialized slick-slider slick-dotted');
6842
6843 //busca o nome e codigoUnidade para o link do ecommerce
6844 var nomeUnidade;
6845 if (!isAoVivo) {
6846 var selectedUnidade = $('#unidades-ofertas').val().split('@')[0];
6847 for (var i = 0; objsTela.unidades.length > i; i++) {
6848 if (selectedUnidade == objsTela.unidades[i].categoryId) {
6849 codigoUnidade = objsTela.unidades[i].codigoUnidade;
6850 nomeUnidade = objsTela.unidades[i].nome;
6851 }
6852 }
6853 }
6854
6855 var pendenciasRenderizacao = [];
6856
6857 // Montar object push - google tag manager - 2
6858 let dadosCurso = {
6859 //Pegar do freemarker
6860 tituloComercial: $('[name="tituloComercial"]').val(),
6861 tipoCurso: $('[name="nomeCategoriaTipoCurso"]').val(),
6862 formato: $('[name="formato"]').data("formato")
6863 }
6864 try {
6865 itensEcommerce = GTMUtil.criaItensEcommerceOfertas(
6866 ofertas, $('[name="codigoFT"]').val(), dadosCurso, nomeUnidade, codigoUnidade
6867 );
6868 sendEventEcommerce("view_item_list", Array.from(itensEcommerce.values()));
6869 } catch (err) {
6870 console.error('[sendEventEcommerce]', err);
6871 itensEcommerce = new Map();
6872 }
6873
6874 for (var i = 0; ofertas.length > i; i++) {
6875
6876 var oferta = ofertas[i];
6877 var ofertaGratuita = excecaoCursoGratuito(oferta);
6878
6879 //guardando a oferta no map para chamar ajax com infos de bolsa em tempo real
6880 oferta['indice'] = i;
6881 ofertasMap.set(oferta.codigoOferta, oferta);
6882
6883 if (isAoVivo)
6884 codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta);
6885
6886 if (isEmed && oferta.etapa == '0010') {
6887 try {
6888 let status = await getStatusEmed(oferta);
6889 oferta['permiteListaEspera'] = status;
6890 } catch (err) {
6891 console.log(err);
6892 }
6893 }
6894 montaHTMLOferta(oferta, i, codigoUnidade, false);
6895
6896 if (!ofertaGratuita)
6897 montaHTMLModalFormaPgto(oferta, i, codigoUnidade);
6898
6899 montaHTMLModalLocalRealizacao(oferta, i);
6900 montaHTMLModalAntesCompra(oferta, i, codigoUnidade);
6901
6902 if (!ofertaGratuita) {
6903 const codigoOfertaAtual = oferta.codigoOferta;
6904
6905 if (isEmed) {
6906 toggleOfertaInvestimentoLoading(codigoOfertaAtual, true);
6907 }
6908
6909 var pendenciaBolsa = verificaBotaoBolsaSS(oferta);
6910
6911 if (isEmed) {
6912 pendenciasRenderizacao.push(
6913 $.Deferred(function (deferredCard) {
6914 $.when(pendenciaBolsa).always(function () {
6915 $.when(waitForOfertaInvestimentoButtons(codigoOfertaAtual)).always(function (isReady) {
6916 if (isReady) {
6917 toggleOfertaInvestimentoLoading(codigoOfertaAtual, false);
6918 deferredCard.resolve();
6919 } else {
6920 retryRenderOfertaInvestimentoButtons(codigoOfertaAtual);
6921
6922 $.when(waitForOfertaInvestimentoButtons(codigoOfertaAtual, 1200)).always(function () {
6923 toggleOfertaInvestimentoLoading(codigoOfertaAtual, false);
6924 deferredCard.resolve();
6925 });
6926
6927 return;
6928 }
6929 });
6930 });
6931 }).promise()
6932 );
6933 } else {
6934 pendenciasRenderizacao.push(pendenciaBolsa);
6935 }
6936 }
6937
6938 verificaCursoAprendizagem(i, oferta.codigoOferta);
6939 verificaCursoTrampolim(i, oferta.codigoOferta);
6940
6941 if (!ofertaGratuita)
6942 associaEventoBtnFormaPagamento(i);
6943
6944 associaEventoBtnComprar(i);
6945
6946 if (!ofertaGratuita)
6947 associaEventoBtnComprarDentroFormaPgto(i);
6948
6949 associaEventoBtnLocalRealizacao(i);
6950 associaEventosFecharModal(i);
6951
6952 if ($('[name="tipoCurso"]').val() == 'extensao') {
6953 associaEventoBtnConheca(i);
6954 associaEventoBtnComprarConhecaDescontoOk(i);
6955 associaEventoBtnComprarConhecaDescontoNot(i);
6956 associaEventoBtnAlunoNao(i);
6957 associaEventoBtnAlunoSim(i);
6958 }
6959
6960 }
6961
6962 if (pendenciasRenderizacao.length) {
6963 await Promise.all(pendenciasRenderizacao)
6964 }
6965
6966 if (isEmed) {
6967 sliderOfertasEmed();
6968 $('.btn-filtro[value="0"]').removeAttr('disabled');
6969 }
6970 else sliderOfertas();
6971
6972 controlaPaginaBolsa()
6973
6974 }
6975
6976 function hideCardSemTurmas(hide) {
6977 if (!isEmed) {
6978 if (hide)
6979 $('.ssp-card-oferta-curso__sem-vaga').addClass('d-none');
6980 else
6981 $('.ssp-card-oferta-curso__sem-vaga').removeClass('d-none');
6982 } else {
6983
6984
6985 if (hide || getEtapaSelecionadaEmed() == "0") {
6986 $('.sem-vaga-emed').addClass('d-none');
6987 } else {
6988 $('.sem-vaga-emed').removeClass('d-none');
6989 if ($('.sem-vaga-emed.emed-transferencias-space:not(.d-none)').length) return;
6990 var tamScreen = $(window).width();
6991 if (tamScreen < 768) {
6992 $('.slick-area-emed').slick({
6993 slidesToShow: 2,
6994 slidesToScroll: 2,
6995 autoplay: false,
6996 infinite: false,
6997 dots: false,
6998 arrows: false,
6999 centerPadding: 0,
7000 centerMode: false,
7001 responsive: [
7002 {
7003 breakpoint: 768,
7004 settings: {
7005 slidesToShow: 1,
7006 slidesToScroll: 1,
7007 variableWidth: false,
7008 infinite: false,
7009 centerPadding: 0,
7010 centerMode: false,
7011 dots: true,
7012 }
7013 }
7014 ]
7015 });
7016 }
7017 }
7018 }
7019 }
7020
7021 function verificaCursoAprendizagem(i, codigoOferta) {
7022
7023 //Esconde elementsos quando o curso é aprendizagem
7024 if ($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem) {
7025 $('#btnComprar_' + i).remove();
7026 $('#container_investimento_' + i).remove();
7027 $('#container_forma_pgto_' + i).remove();
7028
7029 var avisoAprendizagem = $('#aviso-curso-aprendizagem').clone();
7030 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>'
7031 avisoAprendizagem.removeAttr('id');
7032 avisoAprendizagem.removeClass('d-none');
7033 $('.card_oferta_' + i + ' .ssp-card-oferta-curso').append(avisoAprendizagem);
7034 $('.card_oferta_' + i + ' .ssp-card-oferta-curso').append(btnFormAprendizagem);
7035 }
7036 }
7037
7038 function verificaCursoTrampolim(i, codOferta) {
7039 if (ehCursoTrampolim) {
7040 $('#btnComprar_' + i).remove();
7041 $('#container_investimento_' + i).remove();
7042 $('#container_forma_pgto_' + i).remove();
7043 $('.ssp-card-oferta-curso .codigoOferta_' + codOferta).hide();
7044
7045 var avisoTrampolim = $('#avisoTrampolim').clone();
7046 avisoTrampolim.removeAttr('id');
7047 avisoTrampolim.removeClass('d-none');
7048 $('.card_oferta_' + i + ' .ssp-card-oferta-curso').append(avisoTrampolim);
7049 }
7050 }
7051
7052 function verificaBotoesEmed(dadosOferta, verificaBolsa) {
7053
7054 var elementoPai = $('.codigoOferta_' + dadosOferta.codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
7055
7056 // Evita duplicidade quando o fluxo assíncrono reprocessa a mesma oferta.
7057 elementoPai.find('[id^="btnComprarEmed_"], [id^="btnContadorComprar_"], [id^="btnBolsa_"], [id^="btnContadorBolsa_"]').remove();
7058
7059 //INICIO - Logica para Matricula
7060
7061 //adicionamos uma nova variável em 18/07/2025 quando surgiu a necessidade de uma data diferente de matricula em relação a data de bolsa
7062 var dadosAberturaMatricula = calculaTempoAberturaBolsa(dadosOferta.dataAberturaMatricula, dadosOferta.horaAberturaBolsaOferta);
7063
7064 var textoBotaoMatricula = '';
7065 var exibirBotaoMatricula = true;
7066 var classeBotaoMatricula = '';
7067 var htmlBotaoMatricula = '';
7068
7069 if (dadosAberturaMatricula.exibirContador) {
7070 textoBotaoMatricula = dadosAberturaMatricula.textoContador;
7071 exibirBotaoMatricula = false;
7072 }
7073
7074 //exibe o botão sem cronômetro
7075 if (exibirBotaoMatricula) {
7076 if ($('#manutencao-compra').val()) {
7077 textoBotaoMatricula = $('#manutencao-compra').val();
7078 classeBotaoMatricula = 'disabled manutencao';
7079 } else {
7080
7081 if (dadosOferta.permiteListaEspera == statusEmed.ESPERA && dadosAberturaMatricula.bolsaJaAberta) {
7082 textoBotaoMatricula = 'Lista de espera';
7083 classeBotaoMatricula = 'btn-emed-lista-espera';
7084 } else {
7085 classeBotaoMatricula = '';
7086 if (dadosAberturaMatricula.bolsaJaAberta || !dadosOferta.dataAberturaMatricula || dadosOferta.dataAberturaMatricula == '') {
7087 textoBotaoMatricula = 'Fazer matrícula';
7088
7089 if (dadosOferta.etapa == '0020' || dadosOferta.etapa == '0030') {
7090 textoBotaoMatricula = 'Lista de espera';
7091 classeBotaoMatricula = 'btn-emed-lista-espera';
7092 }
7093 } else {
7094 textoBotaoMatricula = 'Matrícula em ' + formataDataAberturaBolsa(dadosOferta.dataAberturaMatricula, dadosOferta.horaAberturaBolsaOferta);
7095 }
7096 if (!dadosAberturaMatricula.bolsaJaAberta)
7097 classeBotaoMatricula = 'disabled';
7098 }
7099 }
7100
7101 criaBotaoInscreverEmed(dadosOferta, textoBotaoMatricula, classeBotaoMatricula, 'btnComprarEmed_' + dadosOferta.indice, elementoPai);
7102
7103 } else { //exibe o cronometro para matricula
7104
7105 //codigoOferta como index para usar o ofertasMap
7106 htmlBotaoMatricula = '<button id="btnContadorComprar_' + dadosOferta.indice + '" data-index="' + dadosOferta.codigoOferta + '" class="btn btn-card-investimento --inscreva-se">Matrícula em <span>' + textoBotaoMatricula + '</span></button>';
7107 elementoPai.append(htmlBotaoMatricula);
7108 }
7109
7110 //INICIO - Logica para Botão Bolsa
7111
7112 if (!verificaBolsa || !dadosOferta.dataAberturaBolsaOferta || dadosOferta.dataAberturaBolsaOferta == '') {
7113 dadosOferta.vagasBolsaOferta = false;
7114 dadosOferta.botaoBolsaOferta = false;
7115 }
7116
7117 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
7118 var dadosAberturaBolsa = calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
7119
7120 var textoBotaoBolsa = '';
7121 var classeBotaoBolsa = '';
7122 var exibirBotaoBolsa = false;
7123 var exibirContadorBolsa = false;
7124 var htmlBotaoBolsa = '';
7125
7126 //verifica se o botão de concorrer a bolsa deve aparecer
7127 //Oferta EMED possui bolsa apenas no 1o ano
7128 if (dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta && !dadosAberturaBolsa.exibirContador) {
7129 exibirBotaoBolsa = true;
7130 if ($('#manutencao-bolsa').val()) {
7131 classeBotaoBolsa = 'disabled manutencao';
7132 textoBotaoBolsa = $('#manutencao-bolsa').val();
7133 } else {
7134 if (dadosOferta.vagasBolsaOferta) {
7135 classeBotaoBolsa = dadosAberturaBolsa.bolsaJaAberta ? '' : 'disabled';
7136 textoBotaoBolsa = dadosAberturaBolsa.bolsaJaAberta ? 'Bolsa de estudo' : 'Bolsa em ' + formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
7137 } else {
7138 classeBotaoBolsa = 'disabled';
7139 textoBotaoBolsa = 'Bolsas de Estudo Esgotadas';
7140 }
7141 }
7142 }
7143
7144 //Verifica se o botão do cronômetro deve aparecer
7145 if (dadosAberturaBolsa.exibirContador) {
7146 textoBotao = dadosAberturaBolsa.textoContador;
7147 textoBotaoBolsa = dadosAberturaBolsa.textoContador;
7148 exibirContadorBolsa = true;
7149 exibirBotaoBolsa = false;
7150 }
7151
7152 if (exibirBotaoBolsa) {
7153
7154 if (!ofertasComBolsa) ofertasComBolsa = true;
7155
7156 criaBotaoBolsaEmed(dadosOferta, textoBotaoBolsa, classeBotaoBolsa);
7157
7158 } else if (exibirContadorBolsa) {
7159
7160 if (!ofertasComBolsa && dadosOferta.etapa == '0010') ofertasComBolsa = true;
7161
7162 if (dadosOferta.etapa == '0010' && dadosOferta.botaoBolsaOferta) {
7163 htmlBotaoBolsa = '<button id="btnContadorBolsa_' + dadosOferta.indice + '" data-index="' + dadosOferta.codigoOferta + '" class="btn btn-card-investimento --bolsas">Bolsa em <span>' + textoBotaoBolsa + '</span></button>';
7164 elementoPai.append(htmlBotaoBolsa);
7165 }
7166 }
7167
7168 }
7169
7170 function criaBotaoInscreverEmedModal(oferta, textoBotao, classeBotao, idBotao, elementoPai, index) {
7171 criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai);
7172 var btnInscr = elementoPai.find('#btnComprarEmedModal_' + index);
7173 btnInscr.removeClass(btnInscr.classList);
7174 btnInscr.addClass('btn btn-lg btn-success w-100');
7175 btnInscr.attr('style', 'margin-top: 20px;font-weight:600');
7176
7177 //Reposiciona o botao voltar
7178 var btnVoltar = elementoPai.find('.ssp-btn-emed__voltar-curso');
7179 elementoPai.find('.ssp-btn-emed__voltar-curso').remove();
7180 elementoPai.append(btnVoltar);
7181 btnVoltar.addClass('ssp-btn-emed__voltar-curso_' + index);
7182 btnVoltar.click(() => {
7183 $('[id^="myModal_"]').each(function (index, modal) {
7184 modal.style.display = "none";
7185 })
7186 });
7187 }
7188
7189 function preencheDadosEmedModal(oferta, $modal) {
7190 const parcelaEntrada = 1;
7191 $modal.find('.numParcelaCartoesBoleto').text(oferta.numeroMaxParcelasOferta - parcelaEntrada);
7192 $modal.find('.precoParcelaCartoesBoleto').text(formataValor(oferta.precoVendaMaxParcelaOferta));
7193 $modal.find('.numParcelaEmedModal').text(oferta.numeroMaxParcelasOferta - parcelaEntrada);
7194 $modal.find('.precoParcelaEmedModal').text(formataValor(oferta.precoVendaMaxParcelaOferta));
7195 }
7196
7197
7198 function criaBotaoInscreverEmed(oferta, textoBotao, classeBotao, idBotao, elementoPai) {
7199 if (oferta.permiteListaEspera && oferta.permiteListaEspera == statusEmed.NAO_ENCONTRADA) return;
7200 var htmlBotao = '<button id="' + idBotao + '" data-index="' + oferta.indice + '" class="btn btn-card-investimento --inscreva-se ' + classeBotao + '"><span>' + textoBotao + '</span></button>';
7201 elementoPai.append(htmlBotao);
7202
7203 if (!classeBotao.includes('disabled')) {
7204
7205 elementoPai.on("click", '#' + idBotao, function (ev) {
7206 ev.preventDefault();
7207 const _modal = $('#modalAntesCompraEmed_' + $(this).data('index'));
7208 _modal.css('display', 'flex');
7209
7210
7211 });
7212
7213 }
7214
7215 }
7216
7217 function criaBotaoBolsaEmed(oferta, textoBotaoBolsa, classeBotaoBolsa = "") {
7218
7219 var htmlBotao = '<a id="btnBolsa_' + oferta.indice + '" data-index="' + oferta.indice + '" class="btn btn-card-investimento --bolsas ' + classeBotaoBolsa + '">' + textoBotaoBolsa + '</a>';
7220 $('.codigoOferta_' + oferta.codigoOferta + ' .ssp-ofertas-emed__card-info-investimento').append(htmlBotao);
7221
7222 if (!classeBotaoBolsa.includes('disabled')) {
7223 // Associa o evento de clique no botão de bolsa
7224 $('#btnBolsa_' + oferta.indice).attr('href', linkBolsa(oferta));
7225 $('#btnBolsa_' + oferta.indice).attr('target', '_blank');
7226 //$('#btnBolsa_'+oferta.indice).attr('style', 'text-transform:uppercase;');
7227
7228 }
7229 }
7230
7231 function criaBotaoBolsa(oferta, textoBotaoBolsa, classeBotaoBolsa = "") {
7232
7233 const botao = $('<a>' + textoBotaoBolsa + '</a>');
7234 botao.attr('id', 'btnBolsa_' + oferta.indice);
7235 botao.attr('data-index', oferta.indice);
7236 botao.attr('class', 'btn btn-lg btn-info w-100 mt-3 ' + (classeBotaoBolsa || ''));
7237 botao.css('font-size', '14px');
7238 botao.css('font-weight', '600');
7239 botao.css('background-color', '#004EFF');
7240 if (!classeBotaoBolsa.includes('disabled')) {
7241 if (oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) {
7242 botao.attr('data-espaco-ex', 'true');
7243 botao.click((ev) => {
7244 ev.preventDefault();
7245 $('#btnCompraLocal_' + oferta.indice).hide();
7246 $('#btnBolsaLocal_' + oferta.indice).show();
7247 const _modal = $('#modalAntesCompra_' + oferta.indice);
7248 _modal.css('display', 'flex');
7249 });
7250 } else {
7251 botao.attr('href', linkBolsa(oferta));
7252 botao.attr('target', '_blank');
7253 }
7254 }
7255
7256 return botao;
7257
7258 }
7259
7260 function verificaBotaoBolsaSS(oferta, codigoUnidade) {
7261
7262 if (!isEmed && (!oferta.dataAberturaBolsaOferta || oferta.dataAberturaBolsaOferta == '')) return;
7263
7264 if (!ehCursoTrampolim) {
7265 $.ajax({
7266 url: getUrlConsultaBolsa(oferta),
7267 type: 'get',
7268 dataType: 'json',
7269 beforeSend: function (xhr) {
7270 xhr.setRequestHeader("Authorization", "KGG4KMW5s0CVowr7d6y6Ww==");
7271 },
7272 })
7273 .done(function (infosBolsa) {
7274
7275
7276 if (infosBolsa != null && typeof infosBolsa !== 'undefined') {
7277
7278 var codigoOfertaRetornoBolsa = infosBolsa.DATA[0].COD_EVENTO;
7279 var retornoOfertaBolsaSenac = infosBolsa.DATA[0];
7280
7281 //Sobrescreve as flags de bolsa com o retorno do serviço SS
7282 ofertasMap.get(codigoOfertaRetornoBolsa).vagasBolsaOferta = retornoOfertaBolsaSenac.TEM_VAGA_BOLSA;
7283 ofertasMap.get(codigoOfertaRetornoBolsa).botaoBolsaOferta = retornoOfertaBolsaSenac.BOTAO_BOLSA;
7284
7285 var dadosOferta = ofertasMap.get(codigoOfertaRetornoBolsa);
7286
7287 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
7288 var dadosAberturaBolsa = calculaTempoAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta, dadosOferta.botaoBolsaOferta);
7289 var textoBotaoBolsa = '';
7290 var classeBotaoBolsa = '';
7291 var textoBotaoContadorBolsa = '';
7292 var exibirBotaoBolsa = false;
7293 var exibirContadorBolsa = false;
7294
7295 //EMED
7296 if (isEmed) {
7297 verificaBotoesEmed(ofertasMap.get(codigoOfertaRetornoBolsa), true);
7298 return;
7299 }
7300
7301 //Verifica o texto do botão de bolsa
7302 if ($('#manutencao-bolsa').val()) textoBotaoBolsa = $('#manutencao-bolsa').val();
7303 else {
7304
7305 if (retornoOfertaBolsaSenac.TEM_VAGA_BOLSA) {
7306
7307 if (dadosAberturaBolsa.bolsaJaAberta)
7308 textoBotaoBolsa = "Inscrever para bolsa de estudo";
7309
7310 else
7311 textoBotaoBolsa = "Inscrições para bolsas a partir de " + formataDataAberturaBolsa(dadosOferta.dataAberturaBolsaOferta, dadosOferta.horaAberturaBolsaOferta);
7312
7313 if (!ofertasComBolsa) {
7314 ofertasComBolsa = true;
7315 }
7316 } else
7317 textoBotaoBolsa = "Vagas esgotadas para bolsas de estudo";
7318 }
7319
7320 //verifica se o botão de concorrer a bolsa deve aparecer
7321 if (retornoOfertaBolsaSenac.BOTAO_BOLSA && !dadosAberturaBolsa.exibirContador) {
7322
7323 exibirBotaoBolsa = true;
7324
7325 if (!ofertasComBolsa) ofertasComBolsa = true;
7326
7327 if (retornoOfertaBolsaSenac.TEM_VAGA_BOLSA && dadosAberturaBolsa.bolsaJaAberta && !$('#manutencao-bolsa').val()) {
7328 classeBotaoBolsa = '';
7329 } else {
7330 classeBotaoBolsa = 'disabled';
7331 }
7332 }
7333
7334 //Verifica se o botão do cronômetro deve aparecer
7335 if (dadosAberturaBolsa.exibirContador && !$('#manutencao-bolsa').val()) {
7336 textoBotaoContadorBolsa = dadosAberturaBolsa.textoContador;
7337 exibirContadorBolsa = true;
7338 }
7339
7340 if (exibirBotaoBolsa)
7341 $('.codigoOferta_' + codigoOfertaRetornoBolsa + ' .ssp-card-oferta-curso .ssp-container-botao-bolsa').append(criaBotaoBolsa(dadosOferta, textoBotaoBolsa, classeBotaoBolsa))
7342 else if (exibirContadorBolsa)
7343 $('.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>')
7344 else {
7345 $('.codigoOferta_' + codigoOfertaRetornoBolsa + '.content-btn-bolsa').hide()
7346 $('.show-price-content.codigoOferta_' + oferta.codigoOferta + ' .ou-separator-desconto').hide()
7347 }
7348
7349 } else {
7350 //EMED
7351 if (isEmed) {
7352 verificaBotoesEmed(oferta, false);
7353 }
7354 }
7355
7356 controlaPaginaBolsa()
7357 })
7358 .fail(function () {
7359 $('.content-btn-bolsa.codigoOferta_' + oferta.codigoOferta).hide()
7360 $('.show-price-content.codigoOferta_' + oferta.codigoOferta + ' .ou-separator-desconto').hide()
7361
7362 //EMED
7363 if (isEmed) {
7364 verificaBotoesEmed(oferta, false);
7365 }
7366 });
7367
7368
7369 }
7370
7371 }
7372
7373 function controlaPaginaBolsa() {
7374 if (ofertasComBolsa)
7375 $("#ssp-abrir-pagina-bolsa").removeClass("d-none")
7376 else
7377 $("#ssp-abrir-pagina-bolsa").addClass("d-none")
7378 }
7379
7380 function associaEventoBtnFormaPagamento(i) {
7381 var modal = document.getElementById("myModal_" + i);
7382
7383 var btn = document.getElementById("myBtn_" + i);
7384
7385 if (btn != null) {
7386 btn.onclick = function (ev) {
7387 event.preventDefault()
7388
7389 $('#modalExtAluno_' + i).addClass('d-none');
7390
7391 var elem = $(ev.target);
7392 var _modal = document.getElementById(
7393 'myModal_' + elem.data('index'));
7394 _modal.style.display = "block";
7395 $('#myModal_' + i).find('.modal-extensao_content:first-child').removeClass('d-none');
7396
7397 }
7398 }
7399
7400
7401
7402
7403 }
7404
7405
7406 function actionBtnComprar(elem) {
7407
7408 // Montar object push - google tag manager - 3
7409 ofertaSelecionada = itensEcommerce.get(elem.attr('data-evento'))
7410 sendEventEcommerce("select_item", ofertaSelecionada);
7411 sendEventEcommerce("view_item", ofertaSelecionada);
7412
7413 //Verifica se deve exibir o modal com a localização
7414 if (elem.attr('data-espaco-ex') == 'true') {
7415 $('#btnCompraLocal_' + elem.data('index')).show();
7416
7417 //Limpa onclicks para nao repetir execucao
7418 $('#modalAntesCompra_' + elem.data('index')).off('click', '#btnCompraLocal_' + elem.data('index'))
7419 $('#modalAntesCompra_' + elem.data('index')).on('click', '#btnCompraLocal_' + elem.data('index'), function () {
7420 // Montar object push - google tag manager - 4
7421 sendEventEcommerce("add_to_cart", ofertaSelecionada);
7422 if (elem.attr('data-destino-compra') != '2')
7423 sendEventEcommerce("begin_checkout", ofertaSelecionada);
7424 })
7425 $('#btnBolsaLocal_' + elem.data('index')).hide();
7426 const _modal = $('#modalAntesCompra_' + elem.data('index'));
7427 _modal.css('display', 'flex');
7428 } else {
7429 var urlCompra = linkBotaoCompra.replace('\{codigoUnidade\}', elem.attr('data-unidade')).replace('\{codigoOferta\}', elem.attr('data-evento'));
7430
7431 if (elem.attr('data-destino-compra') == '2') {
7432 var dataEfetivaFormat = formataDataComBarra($('[name="dataEfetivaSTR"]').val());
7433
7434 addItemBackpack(elem.attr('data-evento'), '#' + elem.attr('id'), elem.attr('data-unidade'), dataEfetivaFormat);
7435
7436 } else {
7437 window.open(urlCompra, '_blank');
7438 }
7439 }
7440
7441
7442
7443 }
7444
7445 function associaEventoBtnComprar(i) {
7446 var btnComprar = document.getElementById("btnComprar_" + i);
7447
7448 if (btnComprar != null && !btnComprar.classList.contains('disabled')) {
7449 btnComprar.onclick = function (ev) {
7450
7451 ev.preventDefault()
7452 var elem = $(ev.target);
7453 actionBtnComprar(elem);
7454
7455 }
7456 }
7457 }
7458
7459 function associaEventoBtnComprarDentroFormaPgto(i) {
7460 var btnComprarFormaPgto = document.getElementById("btnComprarFormaPgto_" + i);
7461
7462 if (btnComprarFormaPgto != null && !btnComprarFormaPgto.classList.contains('disabled')) {
7463 btnComprarFormaPgto.onclick = function (ev) {
7464 event.preventDefault()
7465 var elem = $('#btnComprarFormaPgto_' + i);
7466 actionBtnComprar(elem);
7467 }
7468 }
7469 }
7470
7471 function associaEventoBtnComprarConhecaDescontoOk(i) {
7472 var btnComprarConhecaDescontoOk = document.getElementById("btnComprarConhecaDescontoOk_" + i);
7473
7474 if (btnComprarConhecaDescontoOk != null) {
7475 btnComprarConhecaDescontoOk.onclick = function (ev) {
7476 event.preventDefault()
7477 var elem = $(ev.target);
7478 actionBtnComprar(elem);
7479 }
7480 }
7481 }
7482
7483 function associaEventoBtnComprarConhecaDescontoNot(i) {
7484 var btnComprarConhecaDescontoNot = document.getElementById("btnComprarConhecaDescontoNot_" + i);
7485
7486 if (btnComprarConhecaDescontoNot != null) {
7487 btnComprarConhecaDescontoNot.onclick = function (ev) {
7488 event.preventDefault()
7489 var elem = $(ev.target);
7490 actionBtnComprar(elem);
7491 }
7492 }
7493 }
7494
7495 function associaEventoBtnAlunoNao(i) {
7496 var btnAlunoNao = document.getElementById("btn-aluno-nao_" + i);
7497
7498 if (btnAlunoNao != null) {
7499 btnAlunoNao.onclick = function (ev) {
7500 event.preventDefault()
7501 var elem = $(ev.target);
7502 elem.addClass('modal-extensao-btn-aluno-sim-ativo'),
7503 elem.closest('.sim').removeClass('modal-extensao-btn-aluno-sim-ativo');
7504 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo')
7505 $('#msg-alunoNao_' + i).removeClass('d-none');
7506 $('#msg-alunoSim_' + i).addClass('d-none');
7507 }
7508 }
7509 }
7510
7511 function associaEventoBtnAlunoSim(i) {
7512 var btnAlunoSim = document.getElementById("btn-aluno-sim_" + i);
7513
7514 if (btnAlunoSim != null) {
7515 btnAlunoSim.onclick = function (ev) {
7516 event.preventDefault()
7517 var elem = $(ev.target);
7518 elem.addClass('modal-extensao-btn-aluno-sim-ativo'),
7519 elem.closest('.nao').removeClass('modal-extensao-btn-aluno-sim-ativo');
7520 elem.parent().siblings().find('button').removeClass('modal-extensao-btn-aluno-sim-ativo')
7521 $('#msg-alunoSim_' + i).removeClass('d-none');
7522 $('#msg-alunoNao_' + i).addClass('d-none');
7523
7524 }
7525 }
7526 }
7527
7528 function associaEventoBtnConheca(i) {
7529 var btnModalExtConheca = document.getElementById("btnModalExtConheca_" + i);
7530
7531 if (btnModalExtConheca != null) {
7532 btnModalExtConheca.onclick = function (ev) {
7533 event.preventDefault();
7534 var elem = $(ev.target);
7535 elem.closest('.modal-extensao_content').addClass('d-none');
7536 $('#modalExtAluno_' + i).removeClass('d-none');
7537 $('#msg-alunoSim_' + i).addClass('d-none');
7538 $('#msg-alunoNao_' + i).addClass('d-none');
7539 $('#btn-aluno-sim_' + i).removeClass('modal-extensao-btn-aluno-sim-ativo');
7540 $('#btn-aluno-nao_' + i).removeClass('modal-extensao-btn-aluno-sim-ativo');
7541
7542 }
7543 }
7544 }
7545
7546 function associaEventoBtnLocalRealizacao(i) {
7547 var btnLocalRealizacao = document.getElementById("btnLocalRealizacao_" + i);
7548
7549 if (btnLocalRealizacao != null) {
7550 btnLocalRealizacao.onclick = function (ev) {
7551 event.preventDefault();
7552 var elem = $(ev.target);
7553 var _modal = document.getElementById(
7554 'modalLocalRealizacao_' + elem.data('index'));
7555 _modal.style.display = "flex";
7556 }
7557 }
7558 }
7559
7560 function associaEventosFecharModal(i) {
7561
7562 var span = document.getElementsByClassName("ssp-card-modal-forma-pagamento__btn-close_" + i);
7563 var closeModalLocalRealizacao = document.getElementsByClassName("ssp-card-modal-local-realizacao__btn-close_" + i)[0];
7564 var closeModalAntesCompra = document.getElementsByClassName("ssp-card-modal-antes-compra__btn-close_" + i)[0];
7565 var closeModalSelecionarOutro = document.getElementsByClassName("ssp-card-modal-selecionar-outro__btn-close_" + i)[0];
7566 var btnEntendiLocalRealizacao = document.getElementsByClassName("ssp-modal-local-realizacao__btn_" + i)[0];
7567 var closeModalBotaoBolsa = document.getElementById("btnBolsaLocal_" + i)
7568
7569 if (isEmed) {
7570 var closeModalFormaPagamento = document.getElementsByClassName("ssp-btn-emed__voltar-curso_" + i);
7571 for (const val of closeModalFormaPagamento) {
7572
7573 val.onclick = function () {
7574 $('[id^="myModal_"]').each(function (index, modal) {
7575 modal.style.display = "none";
7576 });
7577 }
7578 };
7579 }
7580
7581 //event close modal
7582 for (const val of span) {
7583
7584 val.onclick = function () {
7585 $('[id^="myModal_"]').each(function (index, modal) {
7586 modal.style.display = "none";
7587 });
7588 }
7589 };
7590
7591 closeModalLocalRealizacao.onclick = function () {
7592
7593 $('[id^="modalLocalRealizacao_"]').each(function (index, modal) {
7594 modal.style.display = "none";
7595
7596 });
7597 }
7598
7599 closeModalAntesCompra.onclick = function () {
7600
7601 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function (index, modal) {
7602 modal.style.display = "none";
7603 });
7604 }
7605
7606 closeModalSelecionarOutro.onclick = function () {
7607
7608 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function (index, modal) {
7609 modal.style.display = "none";
7610 });
7611 }
7612
7613 btnEntendiLocalRealizacao.onclick = function () {
7614
7615 $('[id^="modalLocalRealizacao_"]').each(function (index, modal) {
7616 modal.style.display = "none";
7617 });
7618 }
7619
7620 if (closeModalBotaoBolsa != null) {
7621 closeModalBotaoBolsa.onclick = function () {
7622
7623 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function (index, modal) {
7624 modal.style.display = "none";
7625 });
7626 }
7627 }
7628
7629 // When the user clicks anywhere outside of the modal, close it
7630 window.onclick = function (event) {
7631
7632 $('[id^="myModal_"]').each(function (index, _modal) {
7633 if (event.target == _modal)
7634 _modal.style.display = "none";
7635 });
7636 $('[id^="modalLocalRealizacao_"]').each(function (index, _modal) {
7637 if (event.target == _modal)
7638 _modal.style.display = "none";
7639 });
7640
7641 $('[id^="modalAntesCompra_"], [id^="modalAntesCompraEmed_"]').each(function (index, _modal) {
7642 if (event.target == _modal)
7643 _modal.style.display = "none";
7644 });
7645 }
7646 }
7647
7648 function turmasIniciadas(dataInicioCurso) {
7649
7650 var hoje = new Date();
7651 var dataInicioPartes = dataInicioCurso.split('/');
7652 var dataInicioCursoOferta = new Date(dataInicioPartes[2], dataInicioPartes[1] - 1, dataInicioPartes[0], hoje.getHours(), hoje.getMinutes(), hoje.getSeconds(), hoje.getMilliseconds());
7653
7654 return dataInicioCursoOferta.getTime() <= hoje.getTime();
7655 }
7656
7657
7658 function concatSTR(str1, str2, separador) {
7659
7660 if (str2) {
7661
7662 return str1 + separador + str2;
7663 }
7664 return str1;
7665 }
7666
7667 //Formata exibicao de datas conforme especificacao GCR
7668 function formataPeriodo(dataInicio, dataFim) {
7669
7670 // Se as datas são iguais, retornar apenas a data final
7671 if (dataInicio === dataFim) {
7672 return dataFim;
7673 }
7674
7675 var dtInicioPartes = dataInicio.split('/');
7676 var dtFimPartes = dataFim.split('/');
7677
7678 //Não exibir o número zero antes dos números e o dia 1 como 1º
7679 var dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim())) + '/' + parseInt(dtInicioPartes[1].trim()) + '/' + dtInicioPartes[2].trim();
7680 var dFimFormatada = (parseInt(dtFimPartes[0].trim()) == 1 ? '1º' : parseInt(dtFimPartes[0].trim())) + '/' + parseInt(dtFimPartes[1].trim()) + '/' + dtFimPartes[2].trim();
7681
7682 //Quando um curso inicia e finaliza dentro do mesmo ano: 17/2 a 25/4/2020
7683 if (dtInicioPartes[2].trim() == dtFimPartes[2].trim()) {
7684
7685 dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim())) + '/' + parseInt(dtInicioPartes[1].trim());
7686
7687 //Quando um curso inicia e finaliza dentro do mesmo mês: 5 a 30/4/2020
7688 if (dtInicioPartes[1].trim() == dtFimPartes[1].trim())
7689 dInicioFormatada = (parseInt(dtInicioPartes[0].trim()) == 1 ? '1º' : parseInt(dtInicioPartes[0].trim()));
7690 }
7691
7692 return dInicioFormatada + ' a ' + dFimFormatada;
7693 }
7694
7695 //Decrementa os contadores de abertudas de bolsa
7696 function atualizaTempoAberturasBolsas() {
7697
7698 var btnsContador = (isEmed) ? $('[id^="btnContadorBolsa_"], [id^="btnContadorComprar_"]') : $('[id^="btnContadorBolsa_"]');
7699
7700 btnsContador.each(function () {
7701
7702 var index = $(this).data('index');
7703 var elId = $(this).attr('id');
7704 var btnContent = $(this).parent('.ssp-btn-group__content');
7705
7706 if (isEmed) {
7707 //EMED filtra ofertas e usa outra lista para referenciar as ofertas carregadas
7708 var dadosAberturaBolsa = calculaTempoAberturaBolsa((elId.indexOf('btnContadorBolsa') >= 0) ? ofertasMap.get('' + index).dataAberturaBolsaOferta : ofertasMap.get('' + index).dataAberturaMatricula, ofertasMap.get('' + index).horaAberturaBolsaOferta);
7709 } else {
7710 //calcula o tempo até abertura da bolsa, se houver (apenas depois das 08hrs)
7711 var dadosAberturaBolsa = calculaTempoAberturaBolsa(objsTela.ofertas[index].dataAberturaBolsaOferta, objsTela.ofertas[index].horaAberturaBolsaOferta, objsTela.ofertas[index].botaoBolsaOferta);
7712 }
7713
7714 $(this).find('span').text(dadosAberturaBolsa.hours + ':' + dadosAberturaBolsa.minutes + ':' + dadosAberturaBolsa.seconds);
7715
7716 //Se esgotou o contador
7717 if (dadosAberturaBolsa.hours == 0 && dadosAberturaBolsa.minutes == 0 && dadosAberturaBolsa.seconds == 0) {
7718
7719 //remove o contador
7720 $(this).remove();
7721
7722 //Habilitar inscrição EMED
7723 if (isEmed) {
7724 var ofertaEmed = ofertasMap.get('' + index);
7725 var btnIndex = elId.slice(elId.indexOf('_') + 1);
7726 var elementoPai = $('.codigoOferta_' + ofertaEmed.codigoOferta + ' .ssp-ofertas-emed__card-info-investimento');
7727
7728 if (elId.indexOf('btnContadorBolsa') >= 0) {
7729 if ($('#manutencao-bolsa').val())
7730 criaBotaoBolsaEmed(ofertaEmed, $('#manutencao-bolsa').val(), 'disabled manutencao');
7731 else if (ofertaEmed.vagasBolsaOferta == true || ofertaEmed.vagasBolsaOferta == "true")
7732 criaBotaoBolsaEmed(ofertaEmed, 'Bolsa de estudo', '');
7733 else
7734 criaBotaoBolsaEmed(ofertaEmed, 'Bolsas de Estudo Esgotadas', 'disabled');
7735 } else if (elId.indexOf('btnContadorComprar') >= 0) {
7736
7737 var textoBotao, classeBotao;
7738
7739 textoBotao = $('#manutencao-compra').val() || 'Fazer matrícula';
7740 classeBotao = $('#manutencao-compra').val() ? 'disabled manutencao' : '';
7741
7742 //Garante a ordenação dos botoes (matricula depois bolsa)
7743 const botaoBolsa = document.getElementById('btnBolsa_' + btnIndex) || document.getElementById('btnContadorBolsa_' + btnIndex);
7744
7745 botaoBolsa?.remove(); // Remove se existir
7746
7747 criaBotaoInscreverEmed(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmed_' + ofertaEmed.indice, elementoPai);
7748
7749 if (botaoBolsa) {
7750 elementoPai.append(botaoBolsa);
7751 }
7752
7753 //Altera o botao do modal de pagamento
7754 var modal = $('#myModal_' + btnIndex).find('.ssp-card-modal-forma-pagamento');
7755 var btnModal = modal.find('#btnComprarEmedModal_' + btnIndex);
7756 if (btnModal) {
7757 btnModal.remove();
7758 criaBotaoInscreverEmedModal(ofertaEmed, textoBotao, classeBotao, 'btnComprarEmedModal_' + btnIndex, modal, btnIndex);
7759 preencheDadosEmedModal(ofertaEmed, modal);
7760 }
7761
7762
7763 }
7764
7765 } else {
7766
7767 //Checa as condições das vagas do botão de bolsa
7768 var btnBolsaHTML = null;
7769 if ($('#manutencao-bolsa').val())
7770 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], $('#manutencao-bolsa').val(), 'disabled manutencao');
7771 else if (objsTela.ofertas[index].vagasBolsaOferta == true || objsTela.ofertas[index].vagasBolsaOferta == "true")
7772 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Inscrever para bolsa de estudo');
7773 else
7774 btnBolsaHTML = criaBotaoBolsa(objsTela.ofertas[index], 'Vagas esgotadas para bolsas de estudo', 'disabled');
7775
7776 $('.codigoOferta_' + objsTela.ofertas[index].codigoOferta + '.ssp-container-botao-bolsa').append(btnBolsaHTML);
7777
7778
7779 }
7780 }
7781
7782 });
7783
7784 }
7785
7786 // Retorna um objeto com o tempo de abertura da bolsa, em horas, minutos e segundos
7787 function calculaTempoAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa, botaoBolsa) {
7788
7789 var dadosAberturaBolsa = {
7790 days: '',
7791 hours: '',
7792 minutes: '',
7793 seconds: '',
7794 bolsaJaAberta: false,
7795 exibirContador: false,
7796 textoContador: ''
7797 };
7798
7799 if (dataAberturaBolsa.length == 0 || horaAberturaBolsa.length == 0)
7800 return dadosAberturaBolsa;
7801
7802 var now = todayG;
7803 var dia = now.getDate();
7804 var horarioDia = now.getHours();
7805
7806 var tempoRestante = tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa);
7807
7808 //console.log('tempo restante '+tempoRestante);
7809
7810 var diaAberturaBolsa = dataAberturaBolsa.split('-')[2];
7811
7812 var delta = tempoRestante / 1000;
7813
7814 var days = Math.floor(delta / 86400);
7815
7816 delta -= days * 86400;
7817
7818 var hours = Math.floor(delta / 3600) % 24;
7819 delta -= hours * 3600;
7820
7821 var minutes = Math.floor(delta / 60) % 60;
7822 delta -= minutes * 60;
7823
7824 var seconds = Math.floor(delta % 60);
7825
7826 //Zerar contador para data que ja passou
7827 if (days < 0) {
7828 dadosAberturaBolsa.days = 0;
7829 dadosAberturaBolsa.hours = '00';
7830 dadosAberturaBolsa.minutes = '00';
7831 dadosAberturaBolsa.seconds = '00';
7832 } else {
7833 dadosAberturaBolsa.days = days;
7834 dadosAberturaBolsa.hours = hours < 10 ? '0' + hours : hours;
7835 dadosAberturaBolsa.minutes = minutes < 10 ? '0' + minutes : minutes;
7836 dadosAberturaBolsa.seconds = seconds < 10 ? '0' + seconds : seconds;
7837 }
7838
7839 dadosAberturaBolsa.bolsaAberta = days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0;
7840 var horaExibeContador = 8;
7841 if (!isEmed && botaoBolsa == false) {
7842 dadosAberturaBolsa.exibirContador = false;
7843 } else {
7844 dadosAberturaBolsa.exibirContador = days == 0 && horarioDia >= horaExibeContador && !dadosAberturaBolsa.bolsaAberta && (diaAberturaBolsa == dia);
7845 dadosAberturaBolsa.textoContador = dadosAberturaBolsa.hours + ':' + dadosAberturaBolsa.minutes + ":" + dadosAberturaBolsa.seconds;
7846 }
7847 dadosAberturaBolsa.bolsaJaAberta = tempoRestante < 0;
7848
7849 return dadosAberturaBolsa;
7850
7851 }
7852
7853 // Verifica se uma oferrta já chegou sua data de abertura
7854 function tempoRestanteAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa) {
7855 // console.log(dataAberturaBolsa);
7856 // console.log(horaAberturaBolsa);
7857
7858 //var today = new Date();
7859
7860
7861 //console.log( "TodayG "+ todayG);
7862
7863 //Precisa fazer formatação nos horários pois pode estar como 9h ou 9h30
7864 var partesHora = horaAberturaBolsa.split('h');
7865
7866 var partesHora = partesHora.filter(function (el) {
7867 return el != "";
7868 });
7869
7870 //formato 9h
7871 if (partesHora.length == 1)
7872 var aberturaBolsa = new Date(dataAberturaBolsa + 'T' + horaAberturaBolsa.replace('h', '').trim() + ":00");
7873
7874 else {
7875
7876 //format 9h3
7877 if (partesHora[1].length == 1)
7878 var aberturaBolsa = new Date(dataAberturaBolsa + 'T' + partesHora[0].replace('h', '').trim() + ':' + partesHora[1] + '0');
7879
7880 //formato 9h30
7881 else
7882 var aberturaBolsa = new Date(dataAberturaBolsa + 'T' + partesHora[0].replace('h', '').trim() + ':' + partesHora[1]);
7883 }
7884
7885 // console.log(aberturaBolsa);
7886 return aberturaBolsa - todayG;
7887 }
7888
7889 function formataDataAberturaBolsa(dataAberturaBolsa, horaAberturaBolsa) {
7890 var dataPartes = dataAberturaBolsa.split('-');
7891
7892 return dataPartes[2] + '/' + dataPartes[1] + ' às ' + horaAberturaBolsa.replace('h', '').trim() + ' horas';
7893
7894 }
7895
7896 function formataValor(valor) {
7897
7898 if (!valor.toString().includes(".")) {
7899 valor = parseFloat(valor).toLocaleString('pt-BR') + ",00";
7900 } else {
7901 valor = parseFloat(valor).toLocaleString('pt-BR');
7902
7903 if (valor.split(",").length == 2) {
7904
7905 if (valor.split(",")[1].length == 1)
7906 valor += "0";
7907
7908 } else
7909 valor += ",00";
7910 }
7911
7912 return valor;
7913 }
7914
7915 function ajustarCasasDecimaisSemArredondar(numero, casas) {
7916 const str = numero + ''
7917 const arr = str.split('.')
7918 return parseFloat(arr[0].concat('.').concat(arr[1] ? arr[1].substring(0, casas) : '0'))
7919 }
7920
7921 function possuiCriteriosDesconto2022(dt) {
7922 return dt.substring(dt.lastIndexOf('/') + 1) >= 2022
7923 && (
7924 $('[name="tipoCurso"]').val() == 'livre'
7925 || ($('[name="tipoCurso"]').val() == 'tecnico' && $('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio')
7926 || $('[name="tipoCurso"]').val() == 'extensao'
7927 )
7928 }
7929
7930 function strToFloat(str) {
7931 const separator = str.includes(',') ? ',' : '.'
7932
7933 const numArr = str.split(separator)
7934 const inteiro = numArr[0].replaceAll('.', '').replaceAll(',', '.')
7935 const decimal = numArr[1] ? numArr[1].replaceAll('.', '').replaceAll(',', '.') : ''
7936 return parseFloat(inteiro.concat('.').concat(decimal ? decimal : '0'))
7937 }
7938
7939 /**
7940 * Compare date formatted as "YYYY-MM-DD" with the current date
7941 * Return:
7942 * -1 if dateStr < today
7943 * 0 if dateStr == today
7944 * 1 if dateStr > today
7945 */
7946 function compareDates(dateStr1, dateStr2) {
7947
7948 const convertDate = (dateStr) => {
7949 if (typeof dateStr !== 'string') throw new TypeError('dateStr must be a string with format YYYY-MM-DD');
7950 const match = dateStr.match(/^(\d{4})-(\d{2})-(\d{2})$/);
7951 if (!match) throw new Error('invalid format. Use YYYY-MM-DD');
7952 const [, yy, mm, dd] = match;
7953 return Date.UTC(Number(yy), Number(mm) - 1, Number(dd));
7954 }
7955
7956 const date1 = convertDate(dateStr1);
7957 const date2 = convertDate(dateStr2);
7958 if (date1 < date2) return -1;
7959 if (date1 > date2) return 1;
7960 return 0;
7961 }
7962
7963
7964 function possuiMensalidadeCampanha(oferta) {
7965
7966 const dataInicio = oferta.dataInicio.split('/').reverse().join('-');
7967 const precoParcelaCartoes = parseFloat(oferta.precoParcelaCartoes.replace(',', '.'));
7968 const precoParcelaBoleto = parseFloat(oferta.precoParcelaBoleto.replace(',', '.'));
7969
7970 if (!oferta.precoVendaMaxParcelaOferta
7971 || (oferta.precoVendaMaxParcelaOferta != 99 && precoParcelaCartoes != 99 && precoParcelaBoleto != 99 && compareDates(dataInicio, '2025-12-31') <= 0)
7972 || (oferta.precoVendaMaxParcelaOferta != 109 && precoParcelaCartoes != 109 && precoParcelaBoleto != 109 && compareDates(dataInicio, '2026-01-01') >= 0)
7973 )
7974 return false
7975
7976 if ($('[name="modalidades"]').val() == 'hab.-tecnica-de-nivel-medio')
7977 return true
7978
7979 if ($('[name="modalidades"]').val() == 'espec.-tecnica-de-nivel-medio')
7980 return true
7981
7982 if ($('[name="modalidades"]').val() == 'qualificacao-profissional')
7983 return true
7984
7985 return false
7986 }
7987
7988 function htmlSlickArea(index, oferta, diasSemanaHTML, codigoUnidade) {
7989 let temDesconto = possuiCriteriosDesconto2022(oferta.dataInicio)
7990 temDesconto = temDesconto && !possuiMensalidadeCampanha(oferta)
7991
7992 // Define o texto singular ou plural
7993 var textoHorario = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
7994 "Horário e dia da aula:" :
7995 "Horário e dias das aulas:";
7996
7997 const btnLocalReal = function (oferta) {
7998
7999 // NOVA LÓGICA: Define o texto (Singular/Plural)
8000 var textoOndeAcontece = verificaTerminoDia(oferta.dataInicio, oferta.dataFim) ?
8001 "Onde a aula irá acontecer?" :
8002 "Onde as aulas vão acontecer?";
8003
8004 var btn = `<div class="container-local-realizacao ` + ((oferta.espacoExterno == 'true' || (isHibrido && temTextoParaFormatoHibrido)) ? '' : 'd-none-btn') + (localLivreOnline(oferta.localEspacoExterno) ? ' idioma-online' : '') + `">`;
8005
8006 btn += (localLivreOnline(oferta.localEspacoExterno)) ?
8007 `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="btn-idiomas__aula-online" href="#">
8008 <i class="fas fa-wifi"></i>Aulas Online - ao vivo</a>`
8009 : `<a id="btnLocalRealizacao_` + index + `" data-index="` + index + `" class="ssp-card-oferta-curso__local-realizacao-content__title" href="#">
8010 <i class="fas fa-user"></i>` + textoOndeAcontece + `</a>`;
8011
8012 btn += `</div>`;
8013
8014 return btn;
8015
8016 }
8017
8018 // Card Oferta
8019
8020 let result = `
8021 <div class="slick-area__item card_oferta_` + index + ` codigoOferta_` + oferta.codigoOferta + ` ` + (temDesconto ? 'ssp-desconto-2022' : '') + `">
8022
8023 <div class="ssp-card-oferta-curso">
8024
8025 <div class="content-data-dias">
8026
8027 <div class="ssp-card-oferta__info-turma-iniciada" id="aviso-turma-iniciada-` + index + `" style="display:none">
8028 <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>
8029 </div>
8030
8031
8032 <div>
8033 <small class="ssp-card-oferta-curso__title-item">Período:</small>
8034 <h6 class="ssp-card-oferta-curso__item-data-periodo item-data-periodo_` + index + `">` + formataPeriodo(oferta.dataInicio, oferta.dataFim) + `</h6>
8035 </div>
8036
8037 <div class="content-horario-dias-semana">
8038
8039 <div class="horario">
8040 <small class="ssp-card-oferta-curso__title-item">` + textoHorario + `</small>
8041 </div> ` +
8042
8043 `<div class="ssp-card-oferta-curso__dia-hora_content">
8044 ` + diasSemanaHTML + `
8045 </div>
8046
8047 </div>
8048
8049 ` + btnLocalReal(oferta);
8050
8051 result = result + `
8052 </div>
8053 `
8054
8055 if (excecaoCursoGratuito(oferta)) {
8056 result += montaRestanteHTMLexcecaoCursoGratuito(index, oferta);
8057 return result;
8058 }
8059
8060 //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
8061 //Adicionada a validação dos preços da oferta em 07/06/2022 - Tarefa 9498
8062 const estaSemValorOferta = oferta.botaoCompraOferta == ''
8063 || oferta.botaoCompraOferta == 'false'
8064 || !oferta.precoVendaOferta
8065 || !oferta.precoCheioOferta
8066 || !oferta.precoVendaMaxParcelaOferta
8067 || strToFloat(oferta.precoVendaOferta) == 0
8068 || strToFloat(oferta.precoCheioOferta) == 0
8069 || strToFloat(oferta.precoVendaMaxParcelaOferta) == 0
8070
8071 //Trecho inicial do Bolsa de estudo
8072 result += `<div class="content-btn-bolsa codigoOferta_` + oferta.codigoOferta + (estaSemValorOferta ? ' pb-0' : '') + `">
8073 <div class="ssp-card-oferta__info-turma-content">
8074 <h6 class="ssp-card-oferta__info-turma mb-0">Bolsas de estudo</h6>
8075 </div>
8076 <div class="codigoOferta_` + oferta.codigoOferta + ` ssp-container-botao-bolsa"></div>
8077 </div>
8078 `
8079
8080 if (estaSemValorOferta) {
8081 result = result + `
8082 <div class="content-buttons hide">
8083 </div>
8084 `
8085 return result;
8086 }
8087
8088
8089 //Trecho final do Bolsa de estudo e inclusao de botao de expansao do "Valores para compra"
8090 result += ` <div class="show-price-content codigoOferta_` + oferta.codigoOferta + `">
8091 <div class="ou-separator-desconto">Ou</div>
8092 <button type="button" class="btn-show-price">
8093 <p>Saiba mais sobre:</p>
8094 <div onclick="togglePriceCard('codigoOferta_` + oferta.codigoOferta + `')">
8095 <i class="fas fa-money-bill"></i>
8096 <span>Valores para compra</span>
8097 </div>
8098 </button>
8099 </div>
8100 `
8101
8102 result = result + `
8103 <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `">
8104 `
8105
8106 if (temDesconto && !ehCursoTrampolim) {
8107 result = result + `
8108 <div class="ssp-card-oferta__info-turma-content">
8109 <h6 class="ssp-card-oferta__info-turma">Valores para compra</h6>
8110 </div>
8111
8112 <div class="block-valor-desconto">
8113
8114 <div class="tag-label-desconto">
8115 <small class="ssp-card-oferta-curso__title-item">Valor com </small>
8116 <span class="ssp-card-oferta-curso__valor-desconto">50% de desconto*</span>
8117 </div>
8118
8119 <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>
8120
8121 <div class="ssp-card-oferta-curso__desconto-content">
8122 <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta), 2)) + `</span></p>
8123 <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaOferta) / 2, 2)) + `</span></p>
8124 </div>
8125 `
8126
8127 if ($('[name="tipoCurso"]').val() == 'extensao') {
8128 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>`
8129 } else {
8130 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>`
8131 }
8132
8133 result = result + `
8134 <div class="ou-separator-desconto">Ou</div>
8135
8136 <div class="block-valor-total">
8137
8138 <small class="ssp-card-oferta-curso__title-item">Valor sem desconto:</small>
8139
8140 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8141
8142 <div class="ssp-card-oferta-curso__desconto-content">
8143 <p>Valor total: <strong>R$ ` + formataValor(strToFloat(oferta.precoVendaOferta)) + `</strong></p>
8144 </div>
8145
8146 </div>
8147 `
8148 } else {
8149
8150 // itens que são diferentes entre técnico e livres comprado a extensão
8151 if ($('[name="tipoCurso"]').val() == 'extensao') {
8152 result = result + `
8153
8154 <div class="block-valor-total">
8155
8156 <div class="investimento" id="container_investimento_` + index + `">
8157
8158 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
8159
8160 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(ajustarCasasDecimaisSemArredondar(strToFloat(oferta.precoVendaMaxParcelaOferta))) + `</h6>
8161
8162 <div class="ssp-card-oferta-curso__desconto-content">
8163 <p>Ou: <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span> à vista</p>
8164 </div>
8165
8166 </div>
8167
8168 </div>
8169 `
8170 } else {
8171 result = result + `
8172 <div class="block-valor-total">
8173 <div class="investimento" id="container_investimento_` + index + `">
8174 `
8175
8176 // Não mostrar mensagem de 30% de desconto em casos especificos
8177 if (temDesconto) {
8178 result = result + `
8179 <small class="ssp-card-oferta-curso__title-item font-weight-bold">Valor com 30% de desconto:</small>
8180 `
8181 }
8182
8183 if (oferta.precoCheioOferta == oferta.precoVendaOferta) {
8184 result = result + `
8185 <small class="ssp-card-oferta-curso__title-item">Valor do curso:</small>
8186 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8187
8188 <div class="ssp-card-oferta-curso__desconto-content">
8189 <p>Ou <span class="ssp-card-oferta-curso__valor-antigo text-decoration-none">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p>
8190 </div>
8191 </div>
8192 </div>
8193 `
8194 } else {
8195 result = result + `
8196 <small class="ssp-card-oferta-curso__title-item">Investimento:</small>
8197 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>` + oferta.numeroMaxParcelasOferta + `x</span>R$ ` + formataValor(oferta.precoVendaMaxParcelaOferta) + `</h6>
8198
8199 <div class="ssp-card-oferta-curso__desconto-content">
8200 <p>De: <span class="ssp-card-oferta-curso__valor-antigo">R$ ` + formataValor(oferta.precoCheioOferta) + `</span></p>
8201 <p>Por: <span class="ssp-card-oferta-curso__valor-desconto">R$ ` + formataValor(oferta.precoVendaOferta) + `</span></p>
8202 </div>
8203 </div>
8204 </div>
8205 `
8206 }
8207 }
8208 }
8209
8210 let dataBtnComprar = getObjBtnComprar(oferta);
8211
8212 // itens que são diferentes entre técnico e livres comprado a extensão
8213 result = result + `
8214
8215 <div class="ssp-card-oferta-curso__formas-pagamento-content" id="container_forma_pgto_` + index + `">
8216
8217 <span>Saiba mais sobre:</span>
8218
8219 <div>
8220 <i class="ssp-card-oferta-curso__formas-pagamento-content__icon-credit-card"></i>
8221 <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>
8222 </div>
8223
8224 </div>
8225
8226 <div class="content-buttons">
8227
8228 <div class="ssp-btn-group__content botoes-oferta-container_` + index + `">
8229
8230 <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>
8231
8232 </div>
8233
8234 </div>
8235
8236 </div>
8237
8238 </div>
8239 `
8240
8241 return result
8242 }
8243
8244 function montaRestanteHTMLexcecaoCursoGratuito(index, oferta) {
8245
8246 let dataBtnComprarExcecao = getObjBtnComprar(oferta);
8247 let resultModalidade =
8248 `
8249 <div class="content-valores-descontos hide-price codigoOferta_` + oferta.codigoOferta + `">
8250 <div class="ssp-card-oferta__info-turma-content">
8251 <h6 class="ssp-card-oferta__info-turma">Curso gratuito</h6>
8252 </div>
8253 <div class="block-valor-total">
8254 <div class="investimento" id="container_investimento_` + index + `">
8255 <h6 class="ssp-card-oferta-curso__item-valor-investimento"><span>R$ 0,00</h6>
8256 </div>
8257 </div>
8258 <div class="content-buttons">
8259
8260 <div class="ssp-btn-group__content botoes-oferta-container_` + index + `">
8261
8262 <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>
8263
8264 </div>
8265
8266 </div>
8267 </div>
8268 </div>
8269 `
8270 ;
8271 return resultModalidade;
8272
8273 }
8274
8275
8276 var htmlModalLocalRealizacao = '<div id="modalLocalRealizacao_{index}" class="ssp-modal">'
8277 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao">'
8278 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__title-content">'
8279
8280 htmlModalLocalRealizacao += '{tituloLocalRealizacao}'
8281
8282 htmlModalLocalRealizacao += '<i class="ssp-card-modal-local-realizacao__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>'
8283 htmlModalLocalRealizacao += '</div>'
8284 htmlModalLocalRealizacao += '<div class="ssp-modal-local-realizacao__texto">'
8285 htmlModalLocalRealizacao += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>'
8286 htmlModalLocalRealizacao += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>'
8287 htmlModalLocalRealizacao += '<address>'
8288 htmlModalLocalRealizacao += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>'
8289 htmlModalLocalRealizacao += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>'
8290 htmlModalLocalRealizacao += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>'
8291 htmlModalLocalRealizacao += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>'
8292 htmlModalLocalRealizacao += '</address>'
8293 htmlModalLocalRealizacao += '<div class="btn ssp-modal-local-realizacao__btn-content">'
8294 htmlModalLocalRealizacao += '<a class="btn ssp-modal-local-realizacao__btn {classeEntendi} ssp-modal-local-realizacao__btn_{index}" href="#a">Entendi</a>'
8295 htmlModalLocalRealizacao += '</div>'
8296 htmlModalLocalRealizacao += '</div>'
8297 htmlModalLocalRealizacao += '</div>'
8298 htmlModalLocalRealizacao += '</div>';
8299
8300 var htmlModalAntesCompra = '<div id="modalAntesCompra_{index}" class="ssp-modal">'
8301 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao">'
8302 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__title-content">'
8303 htmlModalAntesCompra += '<h6 class="ssp-modal-local-realizacao__title"> LEMBRETE IMPORTANTE!</h6>'
8304 htmlModalAntesCompra += '<i class="ssp-card-modal-antes-compra__btn-close_{index} ssp-card-modal-forma-pagamento__btn-close"></i>'
8305 htmlModalAntesCompra += '</div>'
8306 htmlModalAntesCompra += '<div class="ssp-modal-local-realizacao__texto">'
8307 htmlModalAntesCompra += '<p class="{classeTextoInfoLocalRealizacao}">A unidade {nomeUnidade} realizará as aulas em outro endereço, conforme informações abaixo:</p>'
8308 htmlModalAntesCompra += '<p><span class="ssp-modal-local-realizacao__subtitle localEspacoExternoTexto_{index}">{textoFormatoHibrido}{localEspacoExterno}</span></p>'
8309 htmlModalAntesCompra += '<address>'
8310 htmlModalAntesCompra += '<span id="endereco_realizacao_{index}" class="{classeEnderecoRealizacao}">{ruaEspacoExterno}, {numeroEspacoExterno} {complementoEspacoExterno}<br></span>'
8311 htmlModalAntesCompra += '<span id="bairro_realizacao_{index}" class="{classeBairroRealizacao}">Bairro: {bairroEspacoExterno}<br></span>'
8312 htmlModalAntesCompra += '<span id="cidade_realizacao_{index}" class="{classeCidadeRealizacao}">Cidade: {cidadeEspacoExterno} - SP<br></span>'
8313 htmlModalAntesCompra += '<span id="cep_realizacao_{index}" class="{classeCepRealizacao}">CEP: {cepEspacoExterno}</span>'
8314 htmlModalAntesCompra += '</address>'
8315 htmlModalAntesCompra += '<div class="btn ssp-modal-local-realizacao__btn-content">'
8316 htmlModalAntesCompra += '{componentBuyConfirmation}'
8317 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>'
8318 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>'
8319 htmlModalAntesCompra += '</div>'
8320 htmlModalAntesCompra += '</div>'
8321 htmlModalAntesCompra += '</div>'
8322 htmlModalAntesCompra += '</div>';
8323
8324 var htmlSlickAreaDiasSemana = '<div class="ssp-card-oferta-curso__dia-hora-item">'
8325 htmlSlickAreaDiasSemana += '<p class="ssp-card-oferta-curso__dia-hora-item__dia">'
8326 htmlSlickAreaDiasSemana += '<span data-dia-hora="dias-semana">{diasSemana}</span>'
8327 htmlSlickAreaDiasSemana += '<span data-dia-hora="horário">{horasSemana}</span>'
8328 htmlSlickAreaDiasSemana += '</p>'
8329 htmlSlickAreaDiasSemana += '</div>';
8330
8331
8332 //EMED - ELEMENTOS DINAMICOS
8333 const htmlSlickAreaEmed = function (oferta) {
8334 var btnid = 'myBtn_' + oferta.indice;
8335 const diasHorarios = function (oferta) {
8336 return oferta.diasDaSemanaOferta.join(', ').toLowerCase();
8337
8338 }
8339
8340
8341 return `
8342 <div class="ssp-ofertas-emed__card codigoOferta_`+ oferta.codigoOferta + `">
8343
8344 <div class="ssp-ofertas-emed__card-info-turma">
8345
8346 <div class="item-content">
8347 <i class="fas fa-calendar-alt calendar-icon-turma"></i>
8348 <p class="title-turma">`+ oferta.titulo + `</p>
8349 <span class="text-default" data-info="info-turma">Alunos na turma: <strong>até `+ oferta.qtdeTotalVagas + `</strong></span>
8350 </div>
8351
8352 <div class="content-previsao-inicio-termino">
8353
8354 <div class="item-content">
8355 <span class="text-default">Previsão de início:</span>
8356 <span class="text-default-lg">`+ formatarDataEmed(oferta.dataInicio, oferta.etapa, false) + `</span>
8357 </div>
8358
8359 <div class="item-divisor"></div>
8360
8361 <div class="item-content">
8362 <span class="text-default">Previsão de término:</span>
8363 <span class="text-default-lg">`+ formatarDataEmed(oferta.dataFim, oferta.etapa, true) + `</span>
8364 </div>
8365
8366 </div>
8367
8368
8369 <div class="item-divisor"></div>
8370
8371 <div class="item-content">
8372 <span class="text-default">Dias e horários das aulas:</span>
8373 <span class="text-default-lg" style="text-transform: capitalize;">`+ diasHorarios(oferta) + `</span>
8374 <span class="text-default-lg">`+ oferta.horaInicio.replace(':', 'h') + ' às ' + oferta.horaFimOferta.replace(':', 'h') + `</span>
8375 </div>
8376
8377 </div>
8378
8379 <div class="ssp-ofertas-emed__card-info-investimento">
8380 <p class="title-investimento">Investimento anual:</p>
8381
8382 <div class="item-content-investimento">
8383 <span class="txt-parcelas">Até `+ oferta.numeroMaxParcelasOferta + `x</span>
8384 <span class="txt-valor-parcela">R$ `+ formataValor(oferta.precoVendaMaxParcelaOferta) + `</span>
8385 </div>
8386
8387 <div class="item-content-investimento">
8388 <p class="txt-boleto-cartao">(boleto bancário ou cartão de crédito)</p>
8389 </div>
8390
8391 <div class="item-content-investimento">
8392 <i class="fas fa-credit-card icon-cartao-credito"></i>
8393 <a id="`+ btnid + `" data-index="` + oferta.indice + `" href="#" class="link-descontos-parcelamentos">Descontos e Parcelamentos</a>
8394 </div>
8395
8396 </div>
8397
8398 </div>
8399
8400 `;
8401 }
8402
8403
8404 async function loadCursosVocePodeGostar() {
8405
8406 const $section = document.getElementById('section-cursos-voce-pode-gostar');
8407 const $container = document.getElementById('slider-curso');
8408
8409 const ok = await PortalView.Card.initCursosQuePodeGostarSection({
8410 sectionElement: $section,
8411 containerElement: $container,
8412 listId: 'swiper-cursos-gostar-list',
8413 articleId: $('[name="articleId"]').val(),
8414 categoryId: $('[name="idTipoCurso"]').val(),
8415 // EMED nao possui vocabulario de temas mercadologicos consistente
8416 // entre cursos - recomenda so por tipo de curso, como no comportamento antigo.
8417 matchTemas: !isEmed,
8418 limit: 12
8419 });
8420
8421 $section.classList.toggle('d-none', !ok);
8422
8423 }
8424
8425 /*
8426 * Armazena a navegação em cookies, se habilitado
8427 */
8428 $(document).on("click", ".ck-curso", function () {
8429
8430 //Verifica se o cookie está habilitado
8431 if (getCookie('portalSenacCookie') != null) {
8432
8433 var articleId = $(this).data('ck');
8434 manageCookieArray('ck-cursos', articleId);
8435
8436 }
8437
8438 });
8439
8440
8441
8442
8443
8444 $(function () {
8445
8446 if ($('#unidades-ofertas').find('option').length == 0) {
8447
8448 $('.ssp-container-selecione-unidade').addClass('d-none')
8449
8450 }
8451
8452 });
8453
8454 function avisoNovasTurmas() {
8455
8456
8457 window.event.preventDefault()
8458
8459 //var unidadeSelecionada = $('#select-registro-interesse').val();
8460 //este select tem 2 valores separados por @ -> categoryId@codUnidade
8461 // var unidadeSelecionada = $('#unidades-ofertas').val();
8462
8463 //Código fixo quando Senac Ao Vivo
8464 var codUnidadeSelectRegInt = (isAoVivo) ? codUnidadeSenacAoVivo : $('#unidades-ofertas').val().split("@")[1];
8465
8466 // if(codUnidadeSelectRegInt && codUnidadeSelectRegInt.length){
8467
8468 //Se ja tiver logado , redireciona para o registro
8469 if (!Liferay.ThemeDisplay.isSignedIn()) {
8470 sspRequireAuthentication('#btn-aviso-novas-turmas');
8471 } else {
8472 abrirModalRegistroInteresse(codUnidadeSelectRegInt);
8473 verificaBtnEnviarRegistroInteresseAtivo();
8474 }
8475
8476 window.onclick = function (event) {
8477 $('[id="modal-registro-interesse"]').each(function (index, _modal) {
8478 if (event.target == _modal) {
8479 $('#modal-registro-interesse').addClass('d-none');
8480 $("body").removeClass("overflow-hidden")
8481 }
8482 });
8483 }
8484
8485 // }
8486 }
8487
8488
8489 function registroSelecionaTodosDias() {
8490
8491 if ($(this).hasClass('ssp-week-day-active')) {
8492 $(this).removeClass('ssp-week-day-active')
8493 $('.ssp-week-day').removeClass('ssp-week-day-active')
8494 } else {
8495 $(this).addClass('ssp-week-day-active')
8496 $('.ssp-week-day').addClass('ssp-week-day-active')
8497 }
8498
8499 verificaBtnEnviarRegistroInteresseAtivo();
8500 }
8501
8502 function registroSelecionaTodosPeriodos() {
8503
8504 if ($(this).is(':checked')) {
8505 $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', true);
8506 } else {
8507 $('.ssp-card-registro-interesse__check-itens-content.periodos-registro-interesse input[type=checkbox]').prop('checked', false);
8508 }
8509
8510 verificaBtnEnviarRegistroInteresseAtivo();
8511 }
8512 $('.turmas-registro-interesse input[type=checkbox]').on('click', function () {
8513 var $selecionado = $(this);
8514 if ($selecionado.is(":checked")) {
8515 $('.turmas-registro-interesse input[type=checkbox]').prop("checked", false);
8516 $selecionado.prop("checked", true);
8517 } else {
8518 $selecionado.prop("checked", false);
8519 }
8520 });
8521 function enviarRegistroInteresse() {
8522
8523 if (!Liferay.ThemeDisplay.isSignedIn()) {
8524 //Sem o cookie refaz o login
8525 $('#modal-registro-interesse').addClass('d-none');
8526 $('body').removeClass('overflow-hidden');
8527 $('#modal-login').removeClass('d-none');
8528 sspRequireAuthentication('#btn-aviso-novas-turmas');
8529 return;
8530 }
8531
8532 loadingSubmitButton('#enviar-registro-interesse-btn');
8533
8534 sspGetLoggedUser().then(function (user) {
8535
8536 var codigoUsr = (user && user.codPessoa) ? user.codPessoa : null;
8537
8538 if (codigoUsr == null) {
8539 console.log('Campo personalizado codPessoa não encontrado no usuário logado.', user);
8540 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
8541 $('#modal-registro-interesse-erro').removeClass('d-none');
8542 return;
8543 }
8544
8545 var codigoFT = $('[name="codigoFT"]').val();
8546
8547 var unidades = new Set();
8548
8549 var diasSemana = '';
8550
8551 //Senac ao vivo nao tem opçao de dias da semana nem unidades
8552 if (isAoVivo) {
8553 unidades.add(codUnidadeSenacAoVivo);
8554 } else {
8555 $.each($('.ssp-week-day').not('#todosDias'), function (k, v) {
8556 if ($(this).hasClass('ssp-week-day-active')) {
8557 diasSemana += $(this).text() + ',';
8558 }
8559 });
8560
8561 if (diasSemana.length > 0) diasSemana = diasSemana.slice(0, -1);
8562
8563 $.each($('.ssp-card-registro-interesse__select'), function (k, item) {
8564
8565 unidades.add(item.value);
8566 });
8567 }
8568
8569
8570 var periodos = '';
8571
8572 $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function (k, v) {
8573 if ($(this).is(':checked')) {
8574 periodos += $(this).val() + ',';
8575 }
8576 });
8577
8578 var turmas = '';
8579
8580 $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function (k, v) {
8581 if ($(this).is(':checked')) {
8582 turmas += $(this).val() + ',';
8583 }
8584 });
8585
8586 if (periodos.length > 0) periodos = periodos.slice(0, -1);
8587 if (turmas.length > 0) turmas = turmas.slice(0, -1);
8588
8589 var usuarioNotificado = false;
8590
8591 unidades.forEach(function (codigoUnidade) {
8592 var data = {
8593 codigoFT: codigoFT,
8594 codigo: codigoUsr,
8595 diasSemana: diasSemana,
8596 periodos: periodos,
8597 turmas, turmas,
8598 codigoUnidade: codigoUnidade,
8599 interesseBolsa: 'N',
8600 isEmed: isEmed ? 'S' : 'N'
8601 };
8602
8603 const url = urlRegistroInteresse;
8604
8605 $.ajax({
8606 url: url,
8607 method: 'POST',
8608 data: JSON.stringify(data),
8609 headers: {
8610 'Accept': 'application/json',
8611 'Content-Type': 'application/json'
8612 },
8613 }).done(
8614 function (retornoData) {
8615
8616 var retornoData = JSON.stringify(retornoData);
8617
8618 if (retornoData.length > 0) {
8619
8620 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
8621
8622 var retorno = JSON.parse(retornoData);
8623
8624 if (retorno.status == 200 || retorno.status == 201) {
8625
8626 //Evita que o usuário recebe um email para cada unidade de interesse
8627 if (usuarioNotificado) return;
8628
8629 //Mensagem de sucesso registro interesse
8630 $('#modal-registro-interesse-sucesso').removeClass('d-none');
8631
8632 var prefixUrl = themeDisplay.getLayoutRelativeURL();
8633
8634 if (prefixUrl.indexOf('staging/') > 1)
8635 prefixUrl = prefixUrl.substring(0, prefixUrl.lastIndexOf('staging/') + 8);
8636 else
8637 prefixUrl = HOST;
8638
8639 $('#btn-voltar-home').attr('href', prefixUrl);
8640
8641 //Busca os dados do nome do usuário logado
8642 var username = user.givenName || (user.name ? user.name.split(' ')[0] : '');
8643
8644 //Prioridade para nomeSocial
8645 if (user.socialName && user.socialName !== 'null' && user.socialName.length > 0) {
8646 username = user.socialName;
8647 }
8648
8649 username = username.replace(/['"]+/g, '');
8650
8651 var unidadesSel = getUnidadesSelecionadasRI();
8652
8653 //Disara um email para o usuário interessado
8654 var data = {
8655 emailInteressado: user.emailAddress,
8656 nomeInteressado: username,
8657 tituloCurso: $('.ssp-card-detalhe-curso__title').text(),
8658 unidades: unidadesSel.unidades,
8659 unidadesPrefix: unidadesSel.unidadesPrefix
8660 };
8661
8662 $.ajax({
8663 url: urlRegistroInteresseEmailInteressado,
8664 method: 'POST',
8665 data: JSON.stringify(data),
8666 headers: {
8667 'Accept': 'application/json',
8668 'Content-Type': 'application/json'
8669 },
8670 }).done(function (retornoData) { });
8671
8672 usuarioNotificado = true;
8673
8674 window.onclick = function (event) {
8675 $('[id="modal-registro-interesse-sucesso"]').each(function (index, _modal) {
8676 if (event.target == _modal) {
8677 $('#modal-registro-interesse-sucesso').addClass('d-none');
8678 $('#modal-registro-interesse').addClass('d-none');
8679 $("body").removeClass("overflow-hidden");
8680 }
8681 });
8682 }
8683
8684 } else {
8685 //Mensagem de erro registro interesse
8686 $('#modal-registro-interesse-erro').removeClass('d-none');
8687 }
8688 } else {
8689 //Mensagem de erro registro interesse
8690 $('#modal-registro-interesse-erro').removeClass('d-none');
8691 }
8692 }).fail(function () {
8693 cleanLoadingSubmitButton('#enviar-registro-interesse-btn');
8694 $('#modal-registro-interesse-erro').removeClass('d-none');
8695 });
8696 });
8697 }); // sspGetLoggedUser
8698 }
8699
8700 function verificaBtnEnviarRegistroInteresseAtivo() {
8701 var diasSemanaSelecionado = false;
8702 var periodoSelecionado = false;
8703 var turmaSelecionada = false;
8704 var politicaPrivacidadeSelecionado = false;
8705
8706
8707 $.each($('.periodos-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function (k, v) {
8708 if ($(this).is(':checked'))
8709 periodoSelecionado = true;
8710 });
8711
8712 $.each($('.turmas-registro-interesse input[type=checkbox]').not('#check-todos-periodos'), function (k, v) {
8713 if ($(this).is(':checked'))
8714 turmaSelecionada = true;
8715 });
8716
8717 if ($('#check-politica-privacidade').is(':checked')) politicaPrivacidadeSelecionado = true;
8718
8719 var ativo = true
8720
8721 //Caso tenha algum dos selects de unidade sem uma opção válida selecionada
8722 if (!isAoVivo)
8723 ativo = ativo && !Array.from($('.ssp-card-registro-interesse__select.unidades')).filter(sel => !$(sel).val()).length
8724
8725 ativo = ativo && periodoSelecionado && politicaPrivacidadeSelecionado;
8726
8727 if (!isAoVivo && !isEmed) {
8728
8729 $.each($('.ssp-week-day').not('#todosDias'), function (k, v) {
8730 if ($(this).hasClass('ssp-week-day-active'))
8731 diasSemanaSelecionado = true;
8732 });
8733 ativo = ativo && diasSemanaSelecionado;
8734
8735 }
8736
8737 if (isEmed)
8738 ativo = ativo && turmaSelecionada;
8739
8740 if (ativo)
8741 $('#enviar-registro-interesse-btn').attr("disabled", false);
8742 else
8743 $('#enviar-registro-interesse-btn').attr("disabled", true);
8744 }
8745
8746 function loadPlanoCurso() {
8747
8748 const urlGetPlanoCurso = urlPlanoCurso
8749
8750 .replace('\{codigoFT\}', $('[name="codigoFT"]').val())
8751 .replace('\{dataEfetiva\}', $('[name="dataEfetivaSTR"]').val());
8752
8753 $.ajax({
8754 url: urlGetPlanoCurso,
8755 method: 'get',
8756 crossDomain: true,
8757 dataType: 'html',
8758 success: function (data) {
8759
8760
8761 //Atualiza o link com o plano de curso do servi¿o (ja retorna o texto)
8762 $('#plano-curso').append('<br/>' + data);
8763 },
8764 error: function (data) {
8765
8766 console.log('Não existe a URL do plano de curso');
8767
8768 }
8769
8770 });
8771 }
8772
8773 function checkCursoTrampolim() {
8774 return $('[name="codigoFT"]').val() == "24493";
8775 }
8776
8777 /*function verificaOfertaValida(oferta){
8778
8779 if(oferta['precoCheioOferta'] == '' || oferta['precoVendaOferta'] == '' || oferta['numeroMaxParcelasOferta'] == '' || oferta['precoVendaMaxParcelaOferta'] == '')
8780 return false;
8781
8782 var atual = new Date();
8783
8784 var dataOfertaPartes = oferta['dataInicio'].split('/');
8785
8786 var dataOferta = new Date(dataOfertaPartes[2], dataOfertaPartes[1] - 1, dataOfertaPartes[0]);
8787
8788 var dataLimiteMatriculaOfertaPartes = "";
8789 var dataLimiteMatriculaOferta = "";
8790
8791 if(oferta['dtLimiteMatricula'] != ""){
8792 dataLimiteMatriculaOfertaPartes = oferta['dtLimiteMatricula'].split('-');
8793 dataLimiteMatriculaOferta = new Date(dataLimiteMatriculaOfertaPartes[0], dataLimiteMatriculaOfertaPartes[1] - 1, dataLimiteMatriculaOfertaPartes[2] ,atual.getHours(),atual.getMinutes(),atual.getSeconds(),atual.getMilliseconds());
8794
8795 }
8796
8797
8798 //Só deve aparecer ofertas D-1 . Se ela iniciou, aparece se o campo dtLimiteMatr estiver preenchido e com data até o dia de hoje
8799 if(dataOferta <= atual)
8800 if(dataLimiteMatriculaOferta == "" || (dataLimiteMatriculaOferta != "" && atual.getTime() > dataLimiteMatriculaOferta.getTime()))
8801 return false;
8802
8803 return true;
8804 }*/
8805
8806
8807 function loadServerDate() {
8808
8809 $.ajax({
8810 url: urlGetServerT,
8811 method: 'get',
8812 dataType: 'json',
8813 cache: 'false',
8814 headers: {
8815 'Cache-Control': 'no-store, no-cache, max-age=0',
8816 'Expires': '0',
8817 'Pragma': 'no-cache'
8818 },
8819 success: function (data) {
8820 todayG = new Date(data.year, (data.month - 1), data.day, (data.hour), data.minutes, data.seconds);
8821 startTimer();
8822 }
8823 });
8824
8825 }
8826
8827 function handleVisibilityChange() {
8828
8829 if (!document[hidden]) {
8830 restartTimer();
8831 }
8832
8833 }
8834
8835 function restartTimer() {
8836
8837 if (restartTimeout == null) {
8838 loadServerDate();
8839 restartTimeout = setTimeout(function () {
8840 restartTimeout = null;
8841 }, 5000);
8842 }
8843
8844 }
8845
8846 function startTimer() {
8847
8848 var mSeconds = todayG.getTime();
8849 if (interval01 != null) {
8850 clearInterval(interval01);
8851 }
8852 interval01 = setInterval(function () {
8853 todayG.setTime(todayG.getTime() + 1000);
8854 }, 1000);
8855
8856 if (interval15 != null) {
8857 clearInterval(interval15);
8858 }
8859 interval15 = setInterval(function () {
8860 mSeconds = mSeconds + 15000;
8861 todayG.setTime(mSeconds);
8862 }, 15000);
8863
8864 }
8865
8866 function checkIsAoVivo() {
8867 isAoVivo = $("input[name='formato']").attr("data-formato") == nomeFormatoAoVivoDxp;
8868 }
8869
8870
8871 //Ao clicar na setinha next do slider, busca dinamicamente uma proxima oferta
8872 function buscaProximaOferta() {
8873 //Zera variável que controla existência de ofertas com bolsa
8874 //ofertasComBolsa = false;
8875
8876 //Verificamos se a ultima oferta já foi exibida, para evitar de fazer novas buscas
8877 if (carregouUltimaOferta)
8878 return;
8879
8880 //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.
8881 var totalOfertasSlick = $('#turmas-container .slick-area__item').length;
8882 //Pegamos o índice da oferta do meio (central)
8883 var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));
8884
8885 var totalOfertasADireita = totalOfertasSlick - currentSliderIndex;
8886
8887 //Se o total de ofertas à direita for maior a 2 não precisa realizar a busca
8888 if (totalOfertasADireita > 2)
8889 return;
8890
8891 startOfertaParam = endOfertaParam;
8892 endOfertaParam += 16;
8893
8894 const codigoFT = $('[name="codigoFT"]').val();
8895 const dataEfetivaOferta = $('[name="dataEfetivaSTR"]').val();
8896
8897 var unidadeCategoryId = '';
8898 var unidadeCodigoSelect = '';
8899
8900 if (isAoVivo) {
8901
8902 $.each(objsTela.unidades, function (k, unidade) {
8903 unidadeCategoryId += unidade['categoryId'] + ',';
8904 });
8905
8906 //tirando ultima virgula
8907 unidadeCategoryId = unidadeCategoryId.substring(0, unidadeCategoryId.length - 1);
8908
8909 } else {
8910 var splitted = $('#unidades-ofertas').val().split("@");
8911 unidadeCategoryId = splitted[0];
8912 unidadeCodigoSelect = splitted[1];
8913 }
8914
8915 var params = new URLSearchParams();
8916 params.set('codigoFTOferta', codigoFT)
8917 params.set('dataEfetivaOferta', dataEfetivaOferta)
8918 params.set('categoryIds', unidadeCategoryId)
8919 params.set('start', startOfertaParam)
8920 params.set('end', endOfertaParam)
8921 params.set('inscricaoAberta', $('#chkInscricao').prop('checked'))
8922 params.set('bolsaAberta', $('#chkBolsa').prop('checked'))
8923 params.set('cursoArticleId', $('[name="articleId"]').val() || '');
8924
8925 if ($('#chkBolsa').prop('checked')) {
8926 params.set('considerarDataBolsaFutura', true)
8927 }
8928
8929 const url = urlSearchOferta + '?' + params.toString()
8930
8931 $.ajax({
8932 url: url,
8933 method: 'get',
8934 dataType: 'json'
8935 }).done(
8936 function (data) {
8937
8938 if (data.length > 0) {
8939 var indiceOferta = startOfertaParam;
8940
8941 for (var index = 0; index < data.length; index++) {
8942
8943 var ofertaJSON = data[index];
8944 var oferta = getOfertaObjectFromJson(ofertaJSON, index);
8945
8946 //Verificamos se a oferta buscada já existe na tela (que ocorre quando chega na última oferta)
8947 if ($('.codigoOferta_' + oferta.codigoOferta).length > 0) {
8948 console.log('Ja tem a oferta ' + oferta.codigoOferta);
8949 carregouUltimaOferta = true;
8950 break;
8951 }
8952
8953 //guardo em um map a oferta e qual unidade é, para utilizar depois no populaOferta para o aoVivo
8954 ofertaUnidadeMap.set(oferta['codigoOferta'], mapUnidadesIds.get(parseInt(ofertaJSON.unidadeCategoryIds)));
8955
8956 ofertasMap.set(oferta.codigoOferta, oferta);
8957
8958 if (isAoVivo)
8959 objsTela.ofertasAoVivoTodasUnidades.push(oferta);
8960
8961 //O indice é igual ao ultimo elemento buscado - 1
8962 var i = indiceOferta;
8963 oferta['indice'] = i;
8964
8965 if (isAoVivo)
8966 codigoUnidade = ofertaUnidadeMap.get(oferta.codigoOferta);
8967 else codigoUnidade = unidadeCodigoSelect;
8968
8969
8970 montaHTMLOferta(oferta, i, codigoUnidade, true);
8971 montaHTMLModalFormaPgto(oferta, i, codigoUnidade);
8972
8973 montaHTMLModalLocalRealizacao(oferta, i);
8974 montaHTMLModalAntesCompra(oferta, i, codigoUnidade);
8975 verificaBotaoBolsaSS(oferta);
8976 verificaCursoAprendizagem(i, oferta.codigoOferta);
8977 verificaCursoTrampolim(i);
8978
8979 associaEventoBtnFormaPagamento(i);
8980 associaEventoBtnComprar(i);
8981 associaEventoBtnComprarDentroFormaPgto(i);
8982 associaEventoBtnLocalRealizacao(i);
8983 associaEventosFecharModal(i);
8984
8985 if ($('[name="tipoCurso"]').val() == 'extensao') {
8986 associaEventoBtnConheca(i);
8987 associaEventoBtnComprarConhecaDescontoOk(i);
8988 associaEventoBtnComprarConhecaDescontoNot(i);
8989 associaEventoBtnAlunoNao(i);
8990 associaEventoBtnAlunoSim(i);
8991
8992 }
8993
8994 indiceOferta++;
8995 }
8996
8997 controlaPaginaBolsa();
8998 }
8999 }
9000 );
9001
9002 }
9003
9004 function setUrlParam(key, value) {
9005 const url = new URL(window.location.href)
9006
9007 if (value)
9008 url.searchParams.set(key, value);
9009 else
9010 url.searchParams.delete(key);
9011
9012 window.history.pushState({}, '', url.toString())
9013 }
9014
9015 function selectFilter(paramkey, el) {
9016 setUrlParam(paramkey, el.prop("checked"))
9017 const currentUnidadeFriendlyURLSelected = $('#unidades-ofertas').find('option').filter(':selected').attr('data-unidade-friendly-url')
9018 loadUnidades(!isAoVivo, $('[data-unidade-friendly-url="' + currentUnidadeFriendlyURLSelected + '"]').val())
9019
9020 if ($('#chkInscricao').prop("checked") || $('#chkBolsa').prop("checked")) $('#msgFiltroAplicado').show()
9021 else $('#msgFiltroAplicado').hide()
9022 }
9023
9024 function defineCurrentUrl(ev) {
9025 const currentUnidadeFriendlyURLSelected = $(ev.target).find('option').filter(':selected').attr('data-unidade-friendly-url')
9026
9027 const hasPathWeb = window.location.pathname.includes('/web')
9028 const hasPathGuest = window.location.pathname.includes('/guest')
9029
9030 let currentPath = window.location.pathname
9031 currentPath = hasPathWeb ? currentPath.substring(4) : currentPath
9032 currentPath = hasPathGuest ? currentPath.substring(6) : currentPath
9033
9034 objsTela.unidadesRegistroInteresse.forEach(unidade => currentPath = currentPath.replace('/' + unidade.friendlyURL, ''))
9035
9036 currentPath = (currentUnidadeFriendlyURLSelected ? '/' + currentUnidadeFriendlyURLSelected : '') + currentPath
9037 currentPath = hasPathGuest ? '/guest' + currentPath : currentPath
9038 currentPath = hasPathWeb ? '/web' + currentPath : currentPath
9039
9040 if (keepURL())
9041 window.history.replaceState(window.history.state, '', currentPath + window.location.search)
9042 }
9043
9044 let isKeepURL = true
9045 /** Verifica se é para manter a URL atual. Isso deve acontecer somente ao iniciar a página #9674 */
9046 function keepURL() {
9047 const aux = isKeepURL
9048 isKeepURL = false
9049 return !aux
9050 }
9051
9052 loadServerDate();
9053 $(document).ready(function () {
9054
9055 if ("${normalizedCategoryName}" == "graduacao" || "${normalizedCategoryName}" == "pos-graduacao") {
9056 document.location.href = '/erro-404'
9057 }
9058
9059 ehCursoTrampolim = checkCursoTrampolim();
9060 checkIsAoVivo();
9061 loadPlanoCurso();
9062 loadCursosVocePodeGostar();
9063 loadPoliticaPrivacidade();
9064
9065 if (!isAoVivo) {
9066 $('#unidades-ofertas').change(ev => {
9067 if (isEmed) {
9068 toggleUnidadesOfertasLoading(true)
9069
9070 try {
9071 const request = mudarUnidade(ev)
9072 defineCurrentUrl(ev)
9073
9074 $.when(request).always(function () {
9075 toggleUnidadesOfertasLoading(false)
9076 })
9077 } catch (error) {
9078 console.error('Erro ao carregar turmas da unidade selecionada.', error)
9079 toggleUnidadesOfertasLoading(false)
9080 }
9081
9082 return;
9083 }
9084
9085 mudarUnidade(ev)
9086 defineCurrentUrl(ev)
9087 });
9088 }
9089
9090 const urlParams = new URLSearchParams(window.location.search)
9091 $('#chkInscricao').prop("checked", urlParams.get('inscricao') == 'true')
9092 $('#chkInscricao').change(ev => selectFilter('inscricao', $('#chkInscricao')))
9093
9094 if ($('#chkBolsa').length) {
9095 $('#chkBolsa').prop("checked", urlParams.get('bolsa') == 'true')
9096 $('#chkBolsa').change(ev => selectFilter('bolsa', $('#chkBolsa')))
9097 loadUnidades(!isAoVivo);
9098 } else {
9099 selectFilter('bolsa', $('#chkBolsa'))
9100 }
9101
9102 //Função para Montar breadcrumb Mobile
9103
9104 function breadcrumbMobile() {
9105
9106 const linkEl = $('.ssp-card-detalhe-curso__secunday-info-back-link');
9107
9108 if ($.trim(linkEl.html()) === 'Técnico') {
9109
9110 linkEl.attr("href", "/cursos-tecnicos");
9111
9112 } else if ($.trim(linkEl.html()) === 'Livre') {
9113
9114 if (isAoVivo) {
9115 linkEl.html('Senac Online<i class="fas fa-signal-stream icon-ao-vivo" aria-hidden="true"></i>ao vivo')
9116 linkEl.attr("href", "/cursos-livres-senac-online-ao-vivo");
9117 } else {
9118 linkEl.attr("href", "/cursos-livres");
9119 }
9120 } else if ($.trim(linkEl.html()) === 'Aprendizagem') {
9121
9122 linkEl.attr("href", "/jovem-aprendiz");
9123
9124 } else if ($.trim(linkEl.html()) === 'Extensão Universitária') {
9125
9126 linkEl.attr("href", "/extensao-universitaria");
9127
9128 } else if ($.trim(linkEl.html()) === 'Ensino Médio Técnico') {
9129
9130 linkEl.attr("href", "/ensino-medio-tecnico");
9131 }
9132
9133 }
9134
9135 breadcrumbMobile()
9136
9137 //Esconde elementos quando o curso é aprendizagem
9138 if ($('[name="codigoFT"]').val() == codigoFTCursoAprendizagem) {
9139 $('.ssp-section-novas-turmas').remove();
9140 $("div[class^='botoes-oferta-container_']").remove();
9141 }
9142
9143 //retira os itens de dentro do container
9144 $('.bg-').css('background-color', '#e4e4e4')
9145 $('.container.py-3').removeClass('container py-3')
9146 //ajuste para versao 7.4
9147 $('.lfr-layout-structure-item-container.container-fluid.container-fluid-max-xl').removeClass()
9148
9149
9150 //Fecha modal registro de interesse
9151
9152 $('#btn-close-Modal-registro-interesse').click(function () {
9153
9154 $('#modal-registro-interesse').addClass('d-none')
9155 $("body").removeClass("overflow-hidden")
9156
9157 })
9158
9159 $("#modal-registro-interesse").click(function (event) {
9160
9161 if (event.target.id == $('#modal-registro-interesse')[0].id) {
9162 $(this).addClass('d-none')
9163 }
9164
9165 });
9166
9167
9168 //Aviso sobre interesse em turmas
9169 $('.ssp-card-registro-interesse').on('click', '#enviar-registro-interesse-btn', enviarRegistroInteresse);
9170 if (!isEmed) {
9171 $('.ssp-aviso-novas-turmas__content').on('click', '#btn-aviso-novas-turmas', avisoNovasTurmas);
9172 $('.ssp-card-registro-interesse').on('click', '#todosDias', registroSelecionaTodosDias);
9173 } else {
9174 $('.ssp-emed__card-slider-body').on('click', '#btnOptin', avisoNovasTurmas)
9175 }
9176 $('#div-campo-todos').on('change', 'input[type=checkbox]', registroSelecionaTodosPeriodos);
9177
9178 $('#btnLogin').click(function () {
9179
9180 login()
9181
9182 });
9183
9184 $('#btn-close-loginModal').click(function () {
9185 $('#modal-login').addClass('d-none')
9186 });
9187
9188 $('.ssp-week-day').not('#todosDias').click(function () {
9189
9190 $(this).toggleClass('ssp-week-day-active');
9191 verificaBtnEnviarRegistroInteresseAtivo();
9192
9193 });
9194
9195 $('#add-unidade-regsitro-interesse').click(function (e) {
9196 var element = $('.ssp-card-registro-interesse__select.unidades').first().clone();
9197 element.empty();
9198 element.append('<option value="" disabled selected>Selecione uma unidade</option>')
9199 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9200
9201 if (!unidade['selecionado']) {
9202 element.append('<option value="' + unidade['codigoUnidade'] + '">' + unidade['nome'] + '</option>');
9203 }
9204
9205 });
9206 element.change(changeSelectUnidades)
9207
9208
9209 element.css('margin-top', '10px');
9210
9211 if (element.find("option").length > 1 && $('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length) {
9212 element.attr("id", "select_" + cntSelectUnidades++)
9213 $('#select-unidades-registro-interesse').append(element);
9214 }
9215
9216 if ($('.ssp-card-registro-interesse__select.unidades').length == objsTela.unidadesRegistroInteresse.length) {
9217 $('#add-unidade-regsitro-interesse').addClass("d-none")
9218 }
9219
9220 verificaBtnEnviarRegistroInteresseAtivo();
9221 });
9222
9223 $('#remove-unidade-regsitro-interesse').click(function (e) {
9224
9225 if ($('.ssp-card-registro-interesse__select').length > 1) {
9226
9227 var element = $('.ssp-card-registro-interesse__select').last();
9228
9229 var valueSelecionado = element.val();
9230
9231 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9232
9233 if (unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado) {
9234 unidade['selecionado'] = false;
9235 unidade['selectSelecionado'] = "";
9236 }
9237
9238 });
9239 element.val("");
9240 cntSelectUnidades--;
9241 element.change()
9242
9243 element.remove();
9244 }
9245
9246 if ($('.ssp-card-registro-interesse__select.unidades').length < objsTela.unidadesRegistroInteresse.length) {
9247 $('#add-unidade-regsitro-interesse').removeClass("d-none")
9248 }
9249
9250 verificaBtnEnviarRegistroInteresseAtivo();
9251 })
9252
9253 $('.ssp-card-registro-interesse__check-item').on('change', 'input[type=checkbox]', function () {
9254 verificaBtnEnviarRegistroInteresseAtivo();
9255 });
9256
9257 //Contador em ofertas de bolsas proximas
9258 var cancel = setInterval(atualizaTempoAberturasBolsas, 1000);
9259
9260 // Manipua o breadcrumb para as regras do Senac
9261
9262 if ($('ol.breadcrumb').find('li:first').text().trim() == "Cursos Pai")
9263 $('ol.breadcrumb').find('li:first').remove();
9264
9265 var li = $('ol.breadcrumb').find('li:first');
9266
9267 if (li.text().trim() == 'Cursos') {
9268
9269 var primeiro = li.clone();
9270 primeiro.html(htmlBreadcrumb('/', 'Cursos', 'Home'));
9271 li.parent().prepend(primeiro);
9272
9273 var tipoCurso = $('.ssp-header-curso__tag-formato').text().trim();
9274 var tipoBreadcrumb = '';
9275
9276 const isPresencialEad = (tipoCurso.toLowerCase().includes("presencial + ead"))
9277
9278 if (tipoCurso.includes("Cursos Livres")) {
9279 if (isPresencialEad) {
9280 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#cursos-livres', tipoCurso);
9281 } else {
9282 tipoBreadcrumb = htmlBreadcrumb(
9283 isAoVivo ? '/cursos-livres-senac-online-ao-vivo' : '/cursos-livres',
9284 isAoVivo ? nomeFormatoAoVivoDxp : tipoCurso);
9285 }
9286 } else if (tipoCurso.includes("Extensão")) {
9287 if (isPresencialEad) {
9288 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#extensao-universitaria', tipoCurso);
9289 } else {
9290 tipoBreadcrumb = htmlBreadcrumb('/extensao-universitaria', tipoCurso);
9291 }
9292 } else if (tipoCurso.includes("Ensino Médio Técnico")) {
9293 if (isPresencialEad) {
9294 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#ensino-medio-tecnico', tipoCurso);
9295 } else {
9296 tipoBreadcrumb = htmlBreadcrumb('/ensino-medio-tecnico', tipoCurso);
9297 }
9298 } else if (tipoCurso.includes("Jovem Aprendiz")) {
9299 if (isPresencialEad) {
9300 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#jovem-aprendiz', tipoCurso);
9301 } else {
9302 tipoBreadcrumb = htmlBreadcrumb('/jovem-aprendiz', tipoCurso);
9303 }
9304 } else {
9305 if (isPresencialEad) {
9306 tipoBreadcrumb = htmlBreadcrumb('/presencial-ead#cursos-tecnicos', tipoCurso);
9307 } else {
9308 tipoBreadcrumb = htmlBreadcrumb('/cursos-tecnicos', tipoCurso);
9309 }
9310 }
9311
9312 li.html(tipoBreadcrumb);
9313
9314 if ($('ol.breadcrumb').find('li').length == 4) $('ol.breadcrumb').find('li:last').remove();
9315
9316 }
9317
9318 $('#turmas-container').on('click', 'a.slick-next', function (e) {
9319
9320 e.preventDefault();
9321 buscaProximaOferta();
9322
9323 });
9324
9325 $('#turmas-container').on('click', 'button.slick-dots', function () {
9326
9327
9328
9329 });
9330
9331 $(".next-mobile").on("click", function (e) {
9332 e.preventDefault();
9333
9334 acoesMobileSliderOfertas("left");
9335 });
9336
9337 $(".prev-mobile").on("click", function (e) {
9338 e.preventDefault();
9339
9340 acoesMobileSliderOfertas("right");
9341 });
9342
9343 //ação de drag do card de ofertas no mobile
9344 $('.oferta-slick-area').on('swipe', function (event, slick, direction) {
9345 acoesMobileSliderOfertas(direction);
9346 });
9347
9348 loadAlternadores()
9349 let modalFormAprendizagem = document.querySelector('#modal-form');
9350 if (modalFormAprendizagem) {
9351 // Create dinamic close buttom form
9352 let btnCloseModalForm = document.querySelector('[data-modal="close-form-modal"]');
9353 btnCloseModalForm.addEventListener('click', closeModalFormAprendizagem);
9354
9355 }
9356
9357 $(".oferta-slick-area").on("click", ".btnModalAprendizagem", openModalFormAprendizagem);
9358
9359 });
9360
9361 function htmlBreadcrumb(link, title, display) {
9362
9363 return '<a class="breadcrumb-link" href="' + link + '" title="' + title + '"><span class="breadcrumb-text-truncate">' + (display || title) + '</span></a>';
9364
9365 }
9366
9367 function acoesMobileSliderOfertas(direcao) {
9368
9369 if (direcao == "right") {
9370 $("a.slick-prev").click();
9371
9372 if ($('.slick-current').attr('data-slick-index') == "0")
9373 $('.prev-mobile').addClass('nextPrevOpacity');
9374
9375 if ($(".next-mobile").hasClass('nextPrevOpacity'))
9376 $('.next-mobile').removeClass('nextPrevOpacity');
9377 }
9378
9379
9380 if (direcao == "left") {
9381 $("a.slick-next").click();
9382
9383 if ($(".prev-mobile").hasClass('nextPrevOpacity'))
9384 $('.prev-mobile').removeClass('nextPrevOpacity');
9385
9386 if (carregouUltimaOferta) {
9387 var totalCardOfertas = $('#turmas-container .slick-area__item').length;
9388 var currentSliderIndex = parseInt($('.slick-current').attr('data-slick-index'));
9389
9390 //o card do meio é o último
9391 if (totalCardOfertas == (currentSliderIndex + 1))
9392 $('.next-mobile').addClass('nextPrevOpacity');
9393 }
9394 }
9395 }
9396
9397 //habilitar/desabilitar registro de interesse
9398 function habilitarRegistroInteresse(habilitar) {
9399 var sectionRI = $('#section-registro-interesse')
9400
9401 if (isEmed) {
9402 sectionRI.hide()
9403 return;
9404 }
9405
9406 //Redmine #9309 - sempre irá mostrar
9407 habilitar = true
9408
9409 if (habilitar) sectionRI.show()
9410 else sectionRI.hide()
9411 }
9412
9413 function abrirModalRegistroInteresse(codUnidadeSelect) {
9414 $('#modal-registro-interesse').removeClass('d-none');
9415 $("body").addClass("overflow-hidden")
9416 if (!isEmed) {
9417 $('.ssp-card-registro-interesse__nome-curso').text($('.ssp-card-detalhe-curso__title').text());
9418 } else {
9419 $(".transferencia-emed-link").find('a').attr("href", "/ensino-medio-tecnico#onde-estudar")
9420 $('.ssp-card-registro-interesse__title-modal').text($('.ssp-card-detalhe-curso__title').text());
9421 }
9422
9423 $('.ssp-card-registro-interesse__select:not(#select_0)').remove();
9424 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9425 if (unidade['codigoUnidade'] == codUnidadeSelect) {
9426 unidade['selecionado'] = true;
9427 unidade['selectSelecionado'] = 'select_0';
9428 } else {
9429 unidade['selecionado'] = false;
9430 unidade['selectSelecionado'] = "";
9431 }
9432
9433 });
9434 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
9435 return ordenar(a, b, 'nome');
9436 });
9437
9438 $('#select_0').empty();
9439 $('#select_0').append('<option value="" disabled>Selecione uma unidade</option>')
9440 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9441
9442 $('#select_0').append('<option value="' + unidade['codigoUnidade'] + '" >' + unidade['nome'] + '</option>');
9443
9444 });
9445 $('#select_0').val(codUnidadeSelect);
9446
9447 if (isAoVivo) {
9448 $('#unidades-registro-interesse, #dias-registro-interesse').addClass('d-none');
9449 }
9450 if (objsTela.unidadesRegistroInteresse.length > 1) {
9451 $('#add-unidade-regsitro-interesse').removeClass("d-none")
9452 $('#add-unidade-regsitro-interesse').show()
9453 $('#remove-unidade-regsitro-interesse').show()
9454 } else {
9455 $('#add-unidade-regsitro-interesse').hide()
9456 $('#remove-unidade-regsitro-interesse').hide()
9457 }
9458 }
9459
9460 $('.ssp-card-registro-interesse__select.unidades').on('change', changeSelectUnidades)
9461
9462 function changeSelectUnidades() {
9463 var codUnidadeSelecionada = $(this).val();
9464 var idSelectSelecionado = $(this).attr('id')
9465 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9466 if (unidade['codigoUnidade'] == codUnidadeSelecionada) {
9467 unidade['selecionado'] = true;
9468 unidade['selectSelecionado'] = idSelectSelecionado;
9469 } else if (unidade['selectSelecionado'] == idSelectSelecionado && unidade['selecionado']) {
9470 unidade['selecionado'] = false;
9471 unidade['selectSelecionado'] = "";
9472 }
9473
9474 });
9475
9476 objsTela.unidadesRegistroInteresse.sort(function (a, b) {
9477 return ordenar(a, b, 'nome');
9478 });
9479
9480 $('.ssp-card-registro-interesse__select.unidades:not(#' + idSelectSelecionado + ')').each(function () {
9481 var valueSelecionado = $(this).val();
9482 var idActualSelect = $(this).attr('id');
9483 $(this).empty();
9484 $(this).append('<option value="" disabled>Selecione uma unidade</option>')
9485 $.each(objsTela.unidadesRegistroInteresse, function (k, unidade) {
9486
9487 if (unidade['selecionado'] && unidade['codigoUnidade'] == valueSelecionado) {
9488 $("#" + idActualSelect).append('<option value="' + unidade['codigoUnidade'] + '" >' + unidade['nome'] + '</option>');
9489 } else if (!unidade['selecionado']) {
9490 $("#" + idActualSelect).append('<option value="' + unidade['codigoUnidade'] + '">' + unidade['nome'] + '</option>');
9491 }
9492
9493 });
9494 $(this).val(valueSelecionado)
9495 });
9496
9497 verificaBtnEnviarRegistroInteresseAtivo();
9498 }
9499
9500
9501 function ordenar(objA, objB, nomeAtributo) {
9502 let a = (nomeAtributo) ? objA[nomeAtributo] : objA;
9503 let b = (nomeAtributo) ? objB[nomeAtributo] : objB;
9504
9505 return a.toString().localeCompare(b.toString());
9506 }
9507
9508 function paramOrdem(xml) {
9509 if (isEmed) {
9510 var ordemPeriodo = ['MA', 'TA', 'NO'];
9511 return $.inArray(xml.find('[name="periodoDiaOferta"]').text().trim(), ordemPeriodo);
9512 } else {
9513 return xml.find('[name="dataInicioOferta"]').text();
9514 }
9515 }
9516
9517 function getEtapaSelecionadaEmed() {
9518 var btnEtapa = $('.ssp-ofertas-emed__filtro-content .btn--filtro-ativo');
9519 if (!btnEtapa) return '';
9520 return btnEtapa.val();
9521 }
9522
9523 function filtraOfertasEtapa(etapa, ofertas) {
9524 if (!etapa) return [];
9525 var ofertasEtapa = [];
9526 var turmas = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];
9527 var periodos = { ['MA']: 'Manhã', ['TA']: 'Tarde', ['NO']: 'Noite' };
9528 var ultimoPeriodo = null, indexPeriodo;
9529 ofertas = ofertas.sort(function (a, b) {
9530 return ordenar(a, b, 'periodoDiaOferta');
9531 });
9532
9533 $.each(ofertas, async (index, oferta) => {
9534 if (oferta['etapa'] == etapa) {
9535 if (oferta['periodoDiaOferta'] != ultimoPeriodo) indexPeriodo = 0;
9536 ultimoPeriodo = oferta['periodoDiaOferta'];
9537 oferta['titulo'] = 'Turma ' + turmas[indexPeriodo++] + ' - ' + (periodos[ultimoPeriodo] || '');
9538 ofertasEtapa.push(oferta);
9539 }
9540 });
9541
9542 return ofertasEtapa;
9543 }
9544
9545 function formatarDataEmed(data, etapa, isDataFim) {
9546
9547 try {
9548
9549 var splitdata = data.split('/');
9550 var meses = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
9551 var mes = meses[parseInt(splitdata[1]) - 1];
9552
9553 var ano = splitdata[2];
9554
9555 if (isDataFim) {
9556 ano = parseInt(splitdata[2]);
9557 }
9558
9559 return mes + '/' + ano;
9560 } catch (err) {
9561 return data;
9562 }
9563
9564 }
9565
9566 //EMED Mobile
9567 function sliderOfertasEmed() {
9568
9569 var tamScreen = $(window).width();
9570 if (tamScreen < 1024) {
9571 $('.ssp-slick-ofertas-emed').slick({
9572 slidesToShow: 1,
9573 slidesToScroll: 1,
9574 dots: false,
9575 infinite: false,
9576 adaptiveHeight: true,
9577 prevArrow: '<button class="btn slick-prev" type="button"><i class="fal fa-chevron-left"></i><span class="sr-only">Anterior</span></button>',
9578 nextArrow: '<button class="btn slick-next" type="button"><i class="fal fa-chevron-right"></i><span class="sr-only">Próximo</span></button>',
9579 responsive: [
9580
9581 {
9582 breakpoint: 1200,
9583 settings: {
9584 slidesToShow: 1,
9585 slidesToScroll: 1,
9586 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>',
9587 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>',
9588
9589 }
9590 },
9591 {
9592 breakpoint: 768,
9593 settings: {
9594 slidesToShow: 1,
9595 slidesToScroll: 1,
9596 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>',
9597 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>',
9598 }
9599 }
9600
9601 ]
9602
9603 });
9604
9605 }
9606
9607 }
9608
9609 function addItemBackpack(codOferta, originElemSelector, codUnidade, dataEfetiva) {
9610
9611 let backpackPostRequest = {};
9612 backpackPostRequest.codOferta = codOferta;
9613 backpackPostRequest.codUnidade = codUnidade;
9614 backpackPostRequest.dt_efetiva = dataEfetiva;
9615
9616
9617 mochila.requestAccess(function (backpackPostRequest) {
9618
9619 let urlMochila = '/o/senac-backpack-services/backpack';
9620
9621 if (getCookie("codMochila") != null) {
9622 backpackPostRequest.codMochila = getCookie("codMochila");
9623 urlMochila = '/o/senac-backpack-services/updateBackpack';
9624 }
9625 $.ajax({
9626 type: 'POST',
9627 url: urlMochila,
9628 headers: {
9629 "Content-Type": "application/json"
9630 },
9631 beforeSend: function (xhr) {
9632 xhr.setRequestHeader("Authorization", "Bearer " + getCookie("tokenMochila"));
9633 loadingSubmitButton(originElemSelector);
9634 $(originElemSelector + ' .loading-icon-button').css('height', 'unset');
9635 if ($(window).width() < 1024) {
9636 $(originElemSelector + ' .loading-icon-button span').css('margin-left', '10%');
9637 }
9638 },
9639 data: JSON.stringify(backpackPostRequest)
9640 }).done(function (data) {
9641
9642 let domain = '';
9643 if (getAmbiente() == 'hom' || getAmbiente() == 'prod')
9644 domain = '.sp.senac.br';
9645
9646 writeCookie(
9647 'codMochila',
9648 (getCookie("codMochila") == null) ? data.backpackCode : JSON.parse(data).backpackCode,
9649 24,
9650 domain
9651 );
9652 addItemSuccessMochila();
9653
9654 }).fail(function (xhr, status, error) {
9655
9656 $('#modal-backpack-error').removeClass('d-none');
9657
9658 }).always(function () {
9659
9660 cleanLoadingSubmitButton(
9661 originElemSelector,
9662 originElemSelector.indexOf('backpack') > 0 ? 'OK, desejo comprar' : 'COMPRAR'
9663 );
9664 $('[id^="modalAntesCompra_"]').each(function (index, modal) {
9665 modal.style.display = "none";
9666 });
9667
9668 });
9669
9670 }, backpackPostRequest);
9671
9672 }
9673
9674 function componentBuyConfirmation(codigoUnidade, oferta, dataEfetiva) {
9675
9676 var comp = null;
9677
9678 if ((oferta.destinoCompra !== null) && oferta.destinoCompra == "2" && !excecaoCursoGratuito(oferta)) {
9679
9680 comp = $("<button>")
9681 .addClass("btn btn-lg btn-success w-100 mt-3 btn-backpack")
9682 .attr("offerCode", oferta.codigoOferta)
9683 .attr("unitCode", codigoUnidade)
9684 .attr("effectiveDate", dataEfetiva)
9685 .text("OK, desejo comprar");
9686
9687 } else {
9688 var textoBotaoConfirmacao = "OK, desejo comprar";
9689
9690 if (excecaoCursoGratuito(oferta))
9691 textoBotaoConfirmacao = "Ok, desejo fazer a matrícula";
9692
9693 comp = $("<a>")
9694 .addClass("btn btn-lg btn-success w-100 mt-3")
9695 .text(textoBotaoConfirmacao)
9696 .attr("href", linkBotaoCompra.replace('\{codigoUnidade\}', codigoUnidade).replace('\{codigoOferta\}', oferta.codigoOferta))
9697 .attr("target", "_blank");
9698 }
9699
9700 comp.attr('id', 'btnCompraLocal_' + oferta.indice);
9701
9702 return comp[0].outerHTML;
9703
9704 }
9705
9706 function getUnidadesSelecionadasRI() {
9707 var unidadesRI = [];
9708
9709 try {
9710
9711 $('#select-unidades-registro-interesse').find('select').each((i, select) => {
9712 var unidadeSel = select.selectedOptions[0].innerText;
9713 if (!unidadesRI.includes(unidadeSel)) unidadesRI.push(unidadeSel);
9714 });
9715
9716 var unidadesExt = unidadesRI.join(', ');
9717
9718 const lastIndex = unidadesExt.lastIndexOf(',');
9719
9720 if (lastIndex > 0) unidadesExt = unidadesExt.substring(0, lastIndex) + ' ou ' + unidadesExt.substring(lastIndex + 1);
9721
9722 return {
9723 'unidadesPrefix': (unidadesRI.length > 1 ? ', nas unidades ' : (unidadesRI.length == 1 ? ', na unidade ' : '')),
9724 'unidades': unidadesExt
9725 };
9726
9727 } catch (err) {
9728
9729 return {
9730 'unidadesPrefix': '',
9731 'unidades': ''
9732 };
9733
9734 }
9735
9736 }
9737
9738
9739
9740
9741 function addItemSuccessMochila() {
9742
9743 mochila.check();
9744 $('#modal-backpack-success__nome-curso').html($('.ssp-card-detalhe-curso__title').text());
9745 $('#modal-backpack-success').removeClass('d-none');
9746
9747 }
9748
9749 $(document).on('click', '.btn-backpack', function (e) {
9750
9751 addItemBackpack(event.target.getAttribute("offerCode"), '.btn-backpack', event.target.getAttribute("unitCode"), event.target.getAttribute("effectiveDate"));
9752
9753 });
9754
9755 $('#btn-voltar-modal-backpack-error').click(function () {
9756 $('#modal-backpack-error').addClass('d-none');
9757 });
9758
9759 $('#btn-voltar-modal-backpack-error').click(function () {
9760 $('#modal-backpack-error').addClass('d-none');
9761 });
9762
9763 $('.btn-mochila-continuar-site-success, .modal-btn-close').click(function () {
9764 $('#modal-backpack-success').addClass('d-none');
9765 });
9766
9767 $('.btn-mochila-finalizar-compra-success').click(function () {
9768 // Montar object push - google tag manager - 6
9769 sendEventEcommerce("begin_checkout", ofertaSelecionada);
9770
9771 window.location.href = mochila.getServiceUrl();
9772
9773 //$('#modal-backpack-success').addClass('d-none');
9774 //$('[id^="myModal_"]').each((i,modal)=>modal.style.display = "none");
9775 });
9776
9777 function closeModalFormAprendizagem() {
9778 let modal = document.querySelector('#modal-form');
9779 modal.close();
9780 }
9781
9782
9783 function openModalFormAprendizagem(ev) {
9784
9785 const $container = document.getElementById('modal-form');
9786 if (!$container || !$container.nodeName == 'DIALOG') return;
9787
9788 const ofertaSel = ofertasMap.get(ev.target.getAttribute('data-codigo-oferta'));
9789
9790 function getUnidadeSelecionada() {
9791 const categoryUnidade = $('#unidades-ofertas').val().split('@')[0];
9792 return objsTela.unidades.find(u => u.categoryId == categoryUnidade) || {};
9793 }
9794
9795 async function request(url, { method = 'GET', headers = {}, body, beforeSend } = {}) {
9796 const init = { method, headers, body, credentials: 'same-origin' };
9797 const resp = await fetch(url, init);
9798 if (!resp.ok) throw new Error('Erro status ' + resp.status);
9799 return resp.text();
9800 }
9801
9802 async function loadHTMLForm() {
9803
9804 if ($container.querySelectorAll('form').length) {
9805 FormControl.changeCursoInfo(ofertaSel, getUnidadeSelecionada());
9806 return;
9807 }
9808
9809 const url = Liferay.ThemeDisplay.getPortalURL().concat('/documents/d/global/html-formulario-aprendizagem');
9810
9811 const formHTML = await request(url);
9812
9813 $container.innerHTML += formHTML;
9814
9815 let script = document.createElement('script');
9816 script.src = '/documents/d/global/js-aprendizagem-formulario';
9817 script.async = true;
9818
9819 script.onload = () => {
9820 console.log(`script loaded successfully.`);
9821 init(ofertaSel, getUnidadeSelecionada());
9822 };
9823
9824 script.onerror = () => {
9825 console.error(`Error loading script`);
9826 };
9827
9828 document.head.appendChild(script);
9829
9830 }
9831
9832 loadHTMLForm();
9833
9834 $container.showModal();
9835
9836 }
9837
9838 function addEventBolsa() {
9839 // Mostra o preco
9840 const btnShowPrices = document.querySelectorAll('.btn-show-price')
9841
9842 btnShowPrices.forEach(btnShowPrice => btnShowPrice.addEventListener('click', togglePriceCard))
9843
9844 if (!$('#chkBolsa').prop('checked'))
9845 togglePriceCard()
9846 }
9847
9848 function togglePriceCard(selector) {
9849 if (selector instanceof PointerEvent) return
9850
9851 if (!selector) selector = ''
9852 else selector = '.' + selector
9853
9854 const btnPrices = document.querySelectorAll('.show-price-content' + selector)
9855 const contentPrices = document.querySelectorAll('.content-valores-descontos' + selector)
9856 const contentBtnBolsas = document.querySelectorAll('.content-btn-bolsa' + selector)
9857
9858 btnPrices.forEach(btnPrice => btnPrice.classList.toggle('hide'))
9859 contentBtnBolsas.forEach(contentBtnBolsa => contentBtnBolsa.classList.toggle('modifier-content-show'))
9860 contentPrices.forEach(contentPrice => contentPrice.classList.toggle('hide-price'))
9861 }
9862
9863 function getRegiaoName(key) {
9864 switch (key) {
9865 case "MP":
9866 return "Unidades mais próximas de você";
9867 case "C":
9868 return "Capital";
9869 case "I":
9870 return "Interior";
9871 case "GS":
9872 return "Grande São Paulo e Litoral";
9873 default:
9874 return "Sem Região";
9875 }
9876 }
9877
9878 function criarOptionUnidadesPorRegiao(unidades) {
9879 let regioes = {}
9880 let unidadeFounded
9881
9882 // As duas primeiras devem ser unidades ate 20km
9883 const unidadesProximas = PortalUtils.Geolocation.getUnidadesProximas()
9884 .filter(u => u.distanciaAteUnidade <= 20000)
9885 .map(uProx => unidades.find(u => u.friendlyURL == uProx.friendlyURL))
9886 .filter(Boolean)
9887 .slice(0, 2);
9888
9889 if (unidadesProximas.length) {
9890 const urls = Array.from(unidadesProximas.map(u => u.friendlyURL));
9891 unidades.filter(un => urls.includes(un.friendlyURL))
9892 .forEach(un => un.codRegiaoUnidade = 'MP');
9893 }
9894
9895 unidades.forEach(unidade => {
9896 if (!regioes[unidade.codRegiaoUnidade || 'N'])
9897 regioes[unidade.codRegiaoUnidade || 'N'] = []
9898
9899 regioes[unidade.codRegiaoUnidade || 'N'].push(unidade)
9900 })
9901
9902 Array.from(['MP', 'C', 'I', 'GS', 'N'])
9903 .filter(key => Object.keys(regioes).includes(key))
9904 .forEach(key => {
9905 const unidadesDaRegiao = regioes[key]
9906
9907 const optionDisabled = $('<option>')
9908 optionDisabled.attr('label', getRegiaoName(key))
9909 optionDisabled.text(getRegiaoName(key));
9910 optionDisabled.attr('disabled', true)
9911 optionDisabled.addClass('ssp-option-group')
9912 $('#unidades-ofertas').append(optionDisabled)
9913
9914 $.each(unidadesDaRegiao, function (k, unidade) {
9915 if ($('#unidades-ofertas').find('[value="' + unidade['categoryId'] + '"]').length == 0) {
9916 var option = $('<option>');
9917 option.val(unidade['categoryId'] + "@" + unidade['codigoUnidade']);
9918 option.text(unidade['nome']);
9919 option.attr('data-unidade-friendly-url', unidade.friendlyURL)
9920 option.addClass('ssp-option')
9921
9922 $('#unidades-ofertas').append(option);
9923
9924 unidadeFounded = !unidadeFounded && getURLData().includes('/' + unidade.friendlyURL + '/') ? unidade : unidadeFounded
9925 }
9926 })
9927 })
9928
9929 return unidadeFounded
9930 }
9931
9932 function getURLData() {
9933 return URLGeral.replace(HOST, '')
9934 }
9935
9936 /**
9937 * Copia um objeto JSON
9938 */
9939 function cloneObj(original) {
9940 return JSON.parse(JSON.stringify(original));
9941 }
9942
9943 function getUrlConsultaBolsa(oferta) {
9944
9945 let url = '';
9946 if (isAmbienteTeste()) {
9947 if (oferta.destinoBolsa == '1') {
9948 url = 'https://hwse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO=' + oferta.codigoOferta
9949 } else {
9950 url = 'https://hom-wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/' + oferta.codigoOferta;
9951 }
9952 } else {
9953 if (oferta.destinoBolsa == '1') {
9954 url = 'https://wse.sp.senac.br/rest/wss/cursos/bolsa/v1/?COD_EVENTO=' + oferta.codigoOferta
9955 } else {
9956 url = 'https://wse-bolsas.sp.senac.br/api/cursos/bolsa/v1/' + oferta.codigoOferta;
9957 }
9958
9959 }
9960
9961 return url;
9962 }
9963
9964 function execCompraEmed(oferta) {
9965 let linkInscricaoEmed = '', linkInscricaoEmedHml = '';
9966 if (oferta.etapa == '0010') {
9967 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';
9968 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';
9969 }
9970
9971 var ambTeste = ['localhost', 'hom', 'dev'];
9972 var link = linkInscricaoEmed;
9973 /*
9974 $.each(ambTeste, function(i, a){
9975 if(location.hostname.indexOf(a) >= 0){
9976 link = linkInscricaoEmedHml;
9977 return false;
9978 }
9979 });
9980 */
9981
9982 // Montar object push - google tag manager - 3
9983 ofertaSelecionada = itensEcommerce.get(oferta.codigoOferta)
9984 sendEventEcommerce("select_item", ofertaSelecionada);
9985 sendEventEcommerce("view_item", ofertaSelecionada);
9986 sendEventEcommerce("add_to_cart", ofertaSelecionada);
9987 sendEventEcommerce("begin_checkout", ofertaSelecionada);
9988
9989 var urlCompra = link.replace('\{codOferta\}', oferta.codigoOferta);
9990 window.open(urlCompra, '_blank');
9991 }
9992
9993 function formataDataComBarra(dataInvertidaComTraco) {
9994 return dataInvertidaComTraco.split('-').reverse().join('/');
9995 }
9996
9997
9998 let ctrlPressed = false;
9999 $(window).keydown(function (ev) {
10000 if (ev.which == 17) {
10001 ctrlPressed = true;
10002 return false;
10003 }
10004 if (ev.which == 82 && ctrlPressed) {
10005 return false;
10006 }
10007 return (ev.which != 116); // F5
10008 }).keyup(function (ev) {
10009 if (ev.which == 17) {
10010 ctrlPressed = false;
10011 }
10012 return true;
10013 });
10014
10015
10016 </script>
10017
10018 </#if>