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