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