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